@unified-product-graph/core 0.32.1 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -519,6 +519,23 @@ type MarketingPlatform = 'discord' | 'email' | 'google' | 'instagram' | 'linkedi
519
519
  * - `low`: speculative match, human review recommended
520
520
  * - `manual`: mapping was set explicitly by a human */
521
521
  type UPGMappingConfidence = 'high' | 'medium' | 'low' | 'manual';
522
+ /** One external link beyond the canonical artifact.
523
+ *
524
+ * Generalises the `ServiceProperties.links` shape, which was the only
525
+ * list-of-links declaration in the spec before 0.33.0, up to the base node so
526
+ * that any node can hold more than one outward pointer.
527
+ */
528
+ interface UPGExternalLink {
529
+ /** URI. Same posture as `UPGBaseNode.external_ref`: https:// for cloud tools,
530
+ * file:// or a relative path for local files. */
531
+ url: string;
532
+ /** Human label for the link. */
533
+ label?: string;
534
+ /** What kind of thing is on the other end, e.g. "pull_request", "design",
535
+ * "runbook". A free string with a documented convention rather than an enum:
536
+ * the set is open by nature and a closed one would be wrong within a release. */
537
+ kind?: string;
538
+ }
522
539
  /** The structural base shared by every node in a product graph.
523
540
  *
524
541
  * All entity types extend this interface, either directly (using `properties`
@@ -595,16 +612,48 @@ interface UPGBaseNode {
595
612
  * external tool to mint it. A graph that outlives its source tool needs a key
596
613
  * of its own.
597
614
  *
598
- * MINTING. The prefix is `product.key_prefix`; a product with no prefix mints
599
- * no keys. The next number is `max(existing) + 1`, derived from the graph — no
615
+ * MINTING. The next number is `max(existing) + 1`, derived from the graph. No
600
616
  * counter is serialised, because a counter is store state rather than a fact
601
617
  * about the thing (the same cut that keeps `composition.rev`, which is a fact,
602
618
  * and excludes a concurrency token, which is not).
603
619
  *
604
- * NOT ENFORCED IN 0.32.0. The uniqueness and immutability invariants are
605
- * stated here and no check fires on them. A duplicate-key detector needs a
606
- * labeled corpus including the near-miss — two products in one workspace
607
- * legitimately sharing a prefix — and that corpus does not exist yet.
620
+ * WHICH PREFIX (0.33.0, normative). A create names its prefix explicitly, or it
621
+ * is chosen from the prefixes declared by the product's teams
622
+ * (`team.key_prefix`). `product.key_prefix` applies only when no team declares
623
+ * one, and is `@deprecated` for that reason. Key uniqueness is scoped to the
624
+ * product across entity types; a prefix names a team within that scope, not a
625
+ * separate number line. A product where nothing declares a prefix mints no keys.
626
+ *
627
+ * NOT ENFORCED. The uniqueness and immutability invariants are stated here and
628
+ * no check fires on them. A duplicate-key detector needs a labeled corpus
629
+ * including the near-miss, two products in one workspace legitimately sharing a
630
+ * prefix, and that corpus does not exist yet.
631
+ *
632
+ * PORTFOLIO-WIDE UNIQUENESS IS DEFINED AND UNENFORCED (0.33.0). Within a
633
+ * portfolio, one `(prefix, number)` pair should identify one node. Uniqueness
634
+ * is enforced per product (the store index is `(product_id, key)`), so two
635
+ * products minting under one prefix produce the same citation for two different
636
+ * things. This is measured rather than feared: a fixture reproduces the
637
+ * collision through the ordinary create path, including the quiet case where
638
+ * nobody declares a prefix and it is inferred from existing keys. No check
639
+ * enforces it, and no per-product check ever can, because each product reports
640
+ * its own key as valid.
641
+ *
642
+ * MINTING IS PRODUCT-SCOPED (normative, 0.33.0). The `(product_id, key)` index
643
+ * is the enforced invariant and the scope of a key sequence is the product.
644
+ * `team` is `portfolio_shared`, so one team can be referenced from two
645
+ * products; minting does not travel with it. A portfolio-shared team's prefix
646
+ * is NOT a minting candidate in a second product, refusal is NO-KEY and never
647
+ * an exception, and the rule applies on the MINT path including a prefix that
648
+ * was INFERRED from existing keys rather than requested by any caller.
649
+ * Portfolio-shared team minting is deferred until a supra-product uniqueness
650
+ * design exists. See `team.key_prefix` for the rule in full.
651
+ *
652
+ * WHERE THE BEHAVIOUR LIVES, because this is a contract and not an
653
+ * implementation. Nothing in this package mints a key. Deriving the next number
654
+ * requires reading every keyed node in the product, and that read must page
655
+ * explicitly, so the minter is the graph service and the agent surface accepts
656
+ * a caller-supplied key on create without ever deriving one.
608
657
  *
609
658
  * @example "LTN-311"
610
659
  */
@@ -656,9 +705,105 @@ interface UPGBaseNode {
656
705
  external_ref?: string;
657
706
  /** Identifier in the external tool's system (for sync / round-trip) */
658
707
  external_id?: string;
659
- /** Type-specific properties */
708
+ /**
709
+ * Additional external links. `external_ref` names THE canonical artifact and
710
+ * stays the single answer to "where does this live"; this list holds
711
+ * everything else that points outward. A node may carry this with no
712
+ * `external_ref` when no single link is canonical.
713
+ *
714
+ * @remarks
715
+ * WHY A LIST AND NOT AN ENTITY. A measured tracker import produced 703
716
+ * attachments across 1,032 issues: 524 fitted on `external_ref` and 162
717
+ * overflowed into a vendor-namespaced property bag key with nowhere declared to
718
+ * go. A link has no lifecycle, no owner, no description and no independent
719
+ * identity, so minting a `link` type for it would pay roughly fourteen
720
+ * registration points for a scalar fact about a node.
721
+ *
722
+ * WHY NOT `external_refs`. That name is one character from `external_ref` and
723
+ * means the opposite thing (all the others, versus the canonical one). Two
724
+ * fields whose names differ by a plural and whose semantics differ by
725
+ * canonicality is a misreading waiting to happen in every consumer.
726
+ *
727
+ * @example
728
+ * [{ url: 'https://github.com/acme/api/pull/812', label: 'PR 812', kind: 'pull_request' }]
729
+ */
730
+ external_links?: UPGExternalLink[];
731
+ /**
732
+ * When the node was created. Store metadata lifted into the spec at 0.33.0 so
733
+ * that a declared view query can express a window over it.
734
+ *
735
+ * @volatile
736
+ * @remarks
737
+ * TAGGED `@volatile` DELIBERATELY. These two timestamps are maintained by
738
+ * whatever store holds the graph rather than authored, so they are not design
739
+ * knowledge and a reader must not treat them as stable facts about the thing.
740
+ * They are declared anyway because `UPGViewClause` can open a `date` window and
741
+ * two of the six date dimensions a real board filters on are these; leaving them
742
+ * undeclared would ship a query language that cannot say what the surface most
743
+ * often says, which is the failure the clause list exists to fix.
744
+ */
745
+ created_at?: ISODateTime;
746
+ /**
747
+ * When the node was last modified. Store metadata, same posture as
748
+ * `created_at`.
749
+ *
750
+ * @volatile
751
+ */
752
+ updated_at?: ISODateTime;
753
+ /**
754
+ * Type-specific properties.
755
+ *
756
+ * @remarks
757
+ * NAMESPACED EXTENSION KEYS (the 0.31.0 rule, extended to this bag at 0.33.0).
758
+ * A key that a tool owns and the spec does not declare is written
759
+ * `<tool>:<key>`, with a colon. An underscore key such as
760
+ * `linear_state_history` is indistinguishable from a misspelled spec property:
761
+ * no migration can target it and no validator can tell it apart from a typo,
762
+ * and that undetectability is the whole reason the rule exists. The rule was
763
+ * written for `WorkspaceCanvas` and applies here for the same reason.
764
+ *
765
+ * ONE UNDECLARED EXTENSION IS KNOWN, MEASURED AND DELIBERATELY LEFT UNDECLARED.
766
+ * A tracker import carries raw ordered state-transition history for every issue
767
+ * (1,032 issues, 2,862 transitions in the measured corpus) under a namespaced
768
+ * key. It has no declared shape because nothing reads it: declaring a shape for
769
+ * records nobody queries is dead schema, and it would freeze one vendor's
770
+ * transition model into the format before a second source has been seen. The
771
+ * pull-forward condition is the first reader. Silence and a decision look
772
+ * identical six months later, so this is written down as a decision.
773
+ */
660
774
  properties?: Record<string, unknown>;
661
775
  }
776
+ /**
777
+ * Every top-level field declared by `UPGBaseNode`, as runtime data.
778
+ *
779
+ * This is the SINGLE SOURCE for "what is a base-node field". Consumers that
780
+ * classify top-level keys (drift detectors, patch mergers, serialisers) must
781
+ * derive from this rather than enumerate their own list.
782
+ *
783
+ * Order follows the interface declaration order and is not significant; callers
784
+ * that need a canonical serialisation order use `NODE_KEY_ORDER` in
785
+ * `format/canonical.ts`, which is deliberately a SUPERSET (it also orders
786
+ * tolerated non-base keys such as `lifecycle_status` and `sort_order`).
787
+ */
788
+ declare const UPG_BASE_NODE_FIELDS: readonly (keyof UPGBaseNode)[];
789
+ /** `UPG_BASE_NODE_FIELDS` as a lookup set, for membership tests. */
790
+ declare const UPG_BASE_NODE_FIELD_SET: ReadonlySet<string>;
791
+ /**
792
+ * Base-node fields that `id` aside are NOT freely mergeable by a generic
793
+ * shallow patch, because each needs its own handling:
794
+ *
795
+ * - `id` identity; changing it would orphan every edge.
796
+ * - `type` narrowed to `UPGEntityType`, and a type change carries a
797
+ * property migration, so it routes through a migration path.
798
+ * - `slug` a change rotates the old value into `aliases` (see
799
+ * `rotateSlug`), so it is never a plain assignment.
800
+ * - `aliases` replaced outright when patched directly, which must happen
801
+ * AFTER the slug rotation that would otherwise append to it.
802
+ * - `properties` deep-merged rather than replaced.
803
+ *
804
+ * Exported so a merger can state the exclusions once and derive the rest.
805
+ */
806
+ declare const UPG_BASE_NODE_SPECIAL_MERGE_FIELDS: ReadonlySet<string>;
662
807
 
663
808
  /**
664
809
  * UPG Property Registry: Runtime schema for entity types
@@ -5795,6 +5940,20 @@ declare const UPG_EDGE_CATALOG: {
5795
5940
  source_type: string;
5796
5941
  target_type: string;
5797
5942
  };
5943
+ person_member_of_team: {
5944
+ forward_verb: string;
5945
+ reverse_verb: string;
5946
+ classification: "semantic";
5947
+ source_type: string;
5948
+ target_type: string;
5949
+ };
5950
+ person_reports_to_person: {
5951
+ forward_verb: string;
5952
+ reverse_verb: string;
5953
+ classification: "semantic";
5954
+ source_type: string;
5955
+ target_type: string;
5956
+ };
5798
5957
  team_staffed_with_role: {
5799
5958
  forward_verb: string;
5800
5959
  reverse_verb: string;
@@ -5970,12 +6129,13 @@ declare const UPG_EDGE_CATALOG: {
5970
6129
  source_type: string;
5971
6130
  target_type: string;
5972
6131
  };
5973
- project_delivers_epic: {
6132
+ project_delivers_work_item: {
5974
6133
  forward_verb: string;
5975
6134
  reverse_verb: string;
5976
- classification: "cross-domain";
6135
+ classification: "semantic";
5977
6136
  source_type: string;
5978
6137
  target_type: string;
6138
+ deliberate_only: true;
5979
6139
  };
5980
6140
  milestone_gates_release: {
5981
6141
  forward_verb: string;
@@ -8617,7 +8777,7 @@ declare function isDeliberateOnlyEdge(type: string): boolean;
8617
8777
  /**
8618
8778
  * Canonical allow-list of edges that use the `'node'` wildcard endpoint.
8619
8779
  *
8620
- * Ten semantic families are sanctioned. The count and the partition are
8780
+ * Fourteen semantic families are sanctioned. The count and the partition are
8621
8781
  * asserted in `spec-integrity.test.ts`, so this list cannot silently fall out
8622
8782
  * of step with the array below the way it did between 0.28.0 and 0.31.0:
8623
8783
  *
@@ -8667,6 +8827,14 @@ declare function isDeliberateOnlyEdge(type: string): boolean;
8667
8827
  * and for the same reason. Widened from `planning_cycle_schedules_user_story`,
8668
8828
  * whose story-only endpoint could not hold the `task` a tracker import
8669
8829
  * actually produces; see `UPG_EDGE_MIGRATIONS` for the rename rule.
8830
+ * 14. **Project membership** (0.33.0): a project delivers work across the same
8831
+ * bounded {feature, epic, user_story, task, bug} family as families 7 and 13.
8832
+ * Widened from `project_delivers_epic`, whose epic-only endpoint left 651
8833
+ * measured project memberships stranded on a vendor property because the
8834
+ * type a tracker import actually produces is `task`. The verb stays
8835
+ * `delivers` and NOT `contains`, because a containment verb would oblige a
8836
+ * `UPG_VALID_CHILDREN` pair that a wildcard endpoint can never supply; the
8837
+ * parent axis is containment and the project axis is a reference.
8670
8838
  *
8671
8839
  * Adding a new polymorphic edge requires extending this array AND the
8672
8840
  * spec-integrity regression test, which forces a conscious decision and
@@ -11303,14 +11471,23 @@ interface ProductProperties {
11303
11471
  described_configuration?: string;
11304
11472
  /**
11305
11473
  * Prefix for keys minted onto this product's nodes (e.g. `"LTN"`, giving
11306
- * `LTN-1`, `LTN-2`, …). A product with no prefix mints no keys.
11474
+ * `LTN-1`, `LTN-2`, ...). Retained as the single-team unasked default.
11475
+ * @deprecated since 0.33.0, removeIn 1.0.0. Use `team.key_prefix`. This field's own summary called the prefix "the namespace a tracker calls a team", and a single string cannot express a product with two of them: a two-team product has never been expressible, which is a defect rather than an unused feature. Ignored whenever any team in the product declares a prefix. Deprecated rather than removed because removal would strand every graph that has a product prefix and no `team` nodes.
11307
11476
  *
11308
11477
  * @remarks
11309
- * Pairs with `UPGBaseNode.key`, which holds the minted value. The prefix sits
11310
- * on the product because the key's uniqueness scope is the product, across
11311
- * entity types; the namespace a tracker calls a "team". Only the prefix is
11312
- * serialised: the next number is `max(existing) + 1`, derived from the graph,
11313
- * because a counter is a fact about a store rather than about the product.
11478
+ * Pairs with `UPGBaseNode.key`, which holds the minted value and states the
11479
+ * resolution order normatively. Only the prefix is serialised: the next number
11480
+ * is `max(existing) + 1`, derived from the graph, because a counter is a fact
11481
+ * about a store rather than about the product.
11482
+ *
11483
+ * WHY THIS IS NOT A DEFAULT WITH `team.key_prefix` AS AN OVERRIDE. A default
11484
+ * and an override describe one fact at two scopes. These describe different
11485
+ * facts, and this one is correct only when the product has exactly one team,
11486
+ * which is an accident of arity rather than a scope. Keeping it live as a
11487
+ * fallback would also reintroduce the defect: a prefix that still resolves wins
11488
+ * on ladder order, so a legacy-prefixed product with two teams would offer no
11489
+ * choice at all and mint everything under the legacy prefix silently, with
11490
+ * migration order deciding the behaviour per graph.
11314
11491
  *
11315
11492
  * @example "LTN"
11316
11493
  */
@@ -11371,7 +11548,7 @@ interface StrategicThemeProperties {
11371
11548
  owner?: string;
11372
11549
  /**
11373
11550
  * Bounded period this theme is active (a theme is time-bound, within a pillar).
11374
- * @deprecated since 0.20.0. Promote the period to a `planning_cycle` node and link it with the `strategic_theme_scoped_to_planning_cycle` edge, which points at a shared, dated, nestable interval instead of a drifting per-theme string. Kept (not removed) for back-compat; removal is a later major. `strategic_pillar.time_horizon` stays as-is (a durable pillar horizon is genuinely open-ended, not a dated cycle).
11551
+ * @deprecated since 0.20.0, removeIn 1.0.0. Promote the period to a `planning_cycle` node and link it with the `strategic_theme_scoped_to_planning_cycle` edge, which points at a shared, dated, nestable interval instead of a drifting per-theme string. Kept (not removed) for back-compat. The removal version is stated at 0.33.0 because an undated deprecation is how this field survived twelve minors; the promotion is documented rather than automated and no `drop_props` migration ships. `strategic_pillar.time_horizon` stays as-is (a durable pillar horizon is genuinely open-ended, not a dated cycle).
11375
11552
  * @example "Q1 2026", "FY26"
11376
11553
  */
11377
11554
  time_horizon?: string;
@@ -14057,7 +14234,11 @@ interface OutcomeProperties {
14057
14234
  * }
14058
14235
  */
14059
14236
  interface ObjectiveProperties {
14060
- /** Planning timeframe (e.g. "Q1 2026", "H1 2026") */
14237
+ /**
14238
+ * Planning timeframe (e.g. "Q1 2026", "H1 2026").
14239
+ * @deprecated since 0.33.0, removeIn 1.0.0. Promote the period to a `planning_cycle` node and link it with the `objective_scoped_to_planning_cycle` edge, which has existed since 0.20.0 and points at a shared, dated, nestable interval instead of a drifting per-objective string. Until promoted, the value is a display label and nothing schedules on it. The promotion is documented rather than automated and no `drop_props` migration ships: which cycle a free-text string means, and whether one exists yet, is a judgement, and dropping the string before the cycle exists destroys the only record of the intent.
14240
+ * @example "Q1 2026", "H1 2026"
14241
+ */
14061
14242
  timeframe?: string;
14062
14243
  /** Overall progress (0–100) */
14063
14244
  progress?: number;
@@ -14552,6 +14733,30 @@ interface ChangelogProperties {
14552
14733
  * deferred alongside the same question for canvas keys rather than answered
14553
14734
  * twice in two places with two different answers.
14554
14735
  *
14736
+ * PLANNING ENTITIES RELATE TO TIME THROUGH AN EDGE, NOT A FREE-TEXT FIELD
14737
+ * (0.33.0, ruled). A free-text period on a planning entity is a display label
14738
+ * that nothing can schedule on, join across, or nest; the edge to a
14739
+ * `planning_cycle` is the queryable form and both edges the ruling needs already
14740
+ * exist (`objective_scoped_to_planning_cycle` and
14741
+ * `strategic_theme_scoped_to_planning_cycle`, both shipped 0.20.0). Accordingly
14742
+ * `objective.timeframe` and `strategic_theme.time_horizon` are `@deprecated` with
14743
+ * `removeIn` 1.0.0.
14744
+ *
14745
+ * THE CLASS HAS A BOUNDARY, AND IT IS A TEST RATHER THAN A SLOGAN. The class is
14746
+ * the entities that can be SCHEDULED IN a planning cycle: the ones that have, or
14747
+ * could have, a `*_scoped_to_planning_cycle` or `planning_cycle_schedules_*`
14748
+ * edge. That is `objective` and `strategic_theme`, and nothing else in the
14749
+ * census. NAMED EXEMPTIONS, because a broader reading would wrongly capture all
14750
+ * five: `strategic_pillar.time_horizon` (a durable pillar horizon is genuinely
14751
+ * open-ended, not a dated cycle, and its own JSDoc already says so),
14752
+ * `vision.timeframe` (a vision is not scheduled in a cycle),
14753
+ * `roadmap.timeframe` (a roadmap is a plan OF cycles, not a thing inside one),
14754
+ * `roadmap_item.quarter` (pairs with real `start_date` and `target_date`
14755
+ * ISODates), `journey_phase.timeframe` (not a planning entity at all), and
14756
+ * `market_trend.timeframe` (a forecast window for something the org does not
14757
+ * schedule, which is the clearest case of all: nothing can be scoped to a cycle
14758
+ * that the org does not control).
14759
+ *
14555
14760
  * @example
14556
14761
  * const properties: PlanningCycleProperties = {
14557
14762
  * cadence_kind: 'iteration',
@@ -17426,6 +17631,59 @@ interface TeamProperties {
17426
17631
  size?: number;
17427
17632
  /** Team's mission statement */
17428
17633
  mission?: string;
17634
+ /**
17635
+ * Prefix this team mints node keys with (e.g. `"ENTP"`, giving `ENTP-1`,
17636
+ * `ENTP-2`, ...).
17637
+ *
17638
+ * @remarks
17639
+ * SUPERSEDES `product.key_prefix` FOR THIS PRODUCT. The moment any team
17640
+ * declares a prefix, the product-level prefix stops being consulted and the
17641
+ * declared team prefixes become the candidate set a create surface offers. A
17642
+ * product-level prefix that still resolved would win on order alone, and a
17643
+ * multi-team product would then silently mint everything under it, which is the
17644
+ * defect this field exists to end.
17645
+ *
17646
+ * A DECLARED PREFIX IS A CANDIDATE BEFORE IT IS OBSERVED. Candidates derived
17647
+ * only from keys that already exist cannot see a team's first create, which is
17648
+ * the one that most needs asking about.
17649
+ *
17650
+ * UNIQUENESS IS PRODUCT-SCOPED, AND A TEAM PREFIX DOES NOT WIDEN IT. The key
17651
+ * sequence runs per product across entity types, so two teams in one product
17652
+ * share one number line and never collide with each other. A team prefix names
17653
+ * a team WITHIN that scope; it does not create a sequence that spans products.
17654
+ *
17655
+ * MINTING IS PRODUCT-SCOPED (normative, 0.33.0). `team` is `portfolio_shared`,
17656
+ * so one team node can be referenced from two products. Minting is not
17657
+ * portfolio-scoped with it. The rule, and it is a requirement rather than a
17658
+ * recommendation:
17659
+ *
17660
+ * 1. A portfolio-shared team's prefix is NOT a minting candidate in a second
17661
+ * product. The first product a team mints under is the only product that
17662
+ * prefix mints in.
17663
+ * 2. Refusal is NO-KEY. The node is created without a key. Refusal MUST NOT be
17664
+ * an exception: a keyless create is a legal outcome everywhere else in the
17665
+ * ladder, and throwing here would break creates that succeed today on every
17666
+ * surface. Throwing stays reserved for a broken invariant, not for policy.
17667
+ * 3. The rule applies on the MINT path, not the picker path, and it covers the
17668
+ * INFERRED case. A prefix that was never requested by anyone, and was
17669
+ * derived from keys that already exist in the second product, is refused on
17670
+ * the same terms as one a caller named. A guard that only inspects an
17671
+ * explicitly requested prefix misses the quiet path, and the quiet path is
17672
+ * the one a fixture reproduces.
17673
+ *
17674
+ * WHY THE SCOPE STOPS AT THE PRODUCT. Key uniqueness is enforced by a
17675
+ * `(product_id, key)` index, which permits the same key under two product ids
17676
+ * by construction. A prefix that minted in two products would therefore run two
17677
+ * independent sequences under one name and hand two different nodes the same
17678
+ * citation, with nothing objecting. Portfolio-shared team minting is DEFERRED
17679
+ * until a supra-product uniqueness design exists, rather than approximated.
17680
+ *
17681
+ * This rule states the CONTRACT. The behaviour belongs to whatever mints keys,
17682
+ * which is not this package: see `UPGBaseNode.key`.
17683
+ *
17684
+ * @example "ENTP"
17685
+ */
17686
+ key_prefix?: string;
17429
17687
  }
17430
17688
  /** Role entity.
17431
17689
  *
@@ -17551,7 +17809,38 @@ interface DependencyProperties {
17551
17809
  /** Whether a workaround exists if the dependency is not resolved in time */
17552
17810
  workaround_available?: boolean;
17553
17811
  }
17554
- /** Department entity.
17812
+ /** Department entity. A department is the single org tier above a team.
17813
+ * Division, org unit and business unit are alternative LABELS for this type, not
17814
+ * separate types.
17815
+ *
17816
+ * @remarks
17817
+ * THE LABEL RULING, STATED HERE BECAUSE ONE LINE IN A LABEL ARRAY WAS TOO QUIET.
17818
+ * `division`, `org unit` and `business unit` have been `alt_labels` on this type
17819
+ * since 0.1.0 and the ruling is right: a synonym is not a tier. It was also
17820
+ * findable only from the labels file, and a pre-scan for org modelling duly
17821
+ * reported `division` and `org_unit` as entity types. Two phantom types reached a
17822
+ * commissioning brief before a census caught them.
17823
+ *
17824
+ * THE BOUNDARY AGAINST `organization`, because one phrase reaching two types is
17825
+ * the confusion this ruling exists to end. "Business unit" names a structural
17826
+ * tier INSIDE a company and belongs here. Its alt_labels on `organization` are
17827
+ * org, company, enterprise and organisation, deliberately not this one.
17828
+ *
17829
+ * THE TEST IS INCORPORATION, AND THE NODE IS THE OPERATING COMPANY. A separately
17830
+ * incorporated operating company is an `organization`; a division inside one
17831
+ * company is a `department`. Do not read the incorporation test as "one node per
17832
+ * legal entity", which is a different and wrong rule: an `organization` is the
17833
+ * operating company as people experience it, and one organisation can span
17834
+ * several legal entities wherever structure follows tax or jurisdiction rather
17835
+ * than how the work is run. `legal_entity` is `organization`'s own declared
17836
+ * neighbour for exactly that reason. The test picks the boundary; it does not
17837
+ * pick the noun.
17838
+ *
17839
+ * DEPARTMENTS ARE FLAT, AND THAT IS THE CONSTRAINT THE RULING RAISES.
17840
+ * `team_contains_team` exists and `department_contains_department` does not, so a
17841
+ * three-level org chart is expressed as nested TEAMS under one department. That
17842
+ * is a deliberate constraint rather than a gap, and it is what makes a separate
17843
+ * division tier unnecessary rather than merely undesirable.
17555
17844
  *
17556
17845
  * @example
17557
17846
  * const properties: DepartmentProperties = {
@@ -18378,7 +18667,6 @@ interface ApprovalRecordProperties {
18378
18667
  * }
18379
18668
  */
18380
18669
  interface AgentSkillProperties {
18381
- /** Display name of the skill */
18382
18670
  /** Event or command that activates this skill */
18383
18671
  skill_trigger?: string;
18384
18672
  /** Human-readable description of what the skill does */
@@ -18400,7 +18688,10 @@ interface AgentHookProperties {
18400
18688
  hook_event?: string;
18401
18689
  /** Action performed when the hook fires */
18402
18690
  hook_action?: string;
18403
- /** Operational status of the hook */
18691
+ /**
18692
+ * Operational status of the hook.
18693
+ * @deprecated since 0.33.0, removeIn 1.0.0. Use the base `status` field. `agent_hook` moved from the WORK_ITEM lifecycle to OPERATIONAL at 0.33.0, whose phases carry this axis directly: `active` maps to `active` and `disabled` maps to `paused`. A `*_status` property beside the base `status` is the shadow that Pattern D collapsed fourteen times at 0.15.0, and a type that models its own status in a property is a type whose lifecycle did not fit. `error` maps to `paused`: OPERATIONAL has no failure phase, and runtime health is store or telemetry state rather than a fact about the thing, which is the same cut that keeps `composition.rev` and excludes a concurrency token. Put the failure detail in `description` or a diagnostic property.
18694
+ */
18404
18695
  hook_status?: 'active' | 'disabled' | 'error';
18405
18696
  /** Number of times this hook has fired */
18406
18697
  execution_count?: number;
@@ -20387,7 +20678,7 @@ interface PartnerRevenueShareProperties {
20387
20678
  * icon: 'compass',
20388
20679
  * }
20389
20680
  */
20390
- interface WorkspaceProperties {
20681
+ interface WorkspaceProperties extends UPGQueryDrivenLayer {
20391
20682
  /** Who can see this workspace */
20392
20683
  visibility?: 'private' | 'shared' | 'public';
20393
20684
  /** Free-text description. Pairs with the closed-enum `workspace_purpose`. */
@@ -20653,6 +20944,136 @@ interface UPGViewPredicate {
20653
20944
  * property at all; `false` admits those that do not. */
20654
20945
  present?: boolean;
20655
20946
  }
20947
+ /** The axis a clause selects on. */
20948
+ type UPGViewDimension = 'type' | 'status' | 'status_category' | 'tag' | 'classification' | 'property' | 'date' | 'edge';
20949
+ /** A relative or absolute time window, DECLARED rather than resolved.
20950
+ *
20951
+ * @remarks
20952
+ * A window is evaluated at READ time in the reader's session, never frozen at
20953
+ * save. A saved view that says "this quarter" must mean this quarter to whoever
20954
+ * opens it, which an absolute range captured at save cannot do.
20955
+ *
20956
+ * THE CALENDAR AND THE CADENCE ARE NAMED SEPARATELY AND DELIBERATELY. `calendar`
20957
+ * is the wall clock. A team's own cadence is NOT a window at all: it resolves
20958
+ * through the ACTIVE-CYCLE DESIGNATION, which is an edge clause with
20959
+ * `target_status: ['active']`, not a date bracket. Field data settles why: of 19
20960
+ * cycles in a real tracker every one is dateless and exactly one carries status
20961
+ * `active`, so a date-bracketed reading of "current cycle" resolves to nothing on
20962
+ * the only graph that has real cycle data. Conflating them makes the filter lie.
20963
+ *
20964
+ * @example
20965
+ * const w: UPGTimeWindow = { kind: 'calendar', anchor: 'current', unit: 'quarter' }
20966
+ */
20967
+ type UPGTimeWindow = {
20968
+ kind: 'calendar';
20969
+ anchor: 'current' | 'previous' | 'next';
20970
+ unit: 'week' | 'month' | 'quarter' | 'year';
20971
+ } | {
20972
+ kind: 'rolling';
20973
+ anchor: 'last_n' | 'next_n';
20974
+ unit: 'day' | 'week' | 'month' | 'quarter';
20975
+ count: number;
20976
+ } | {
20977
+ kind: 'absolute';
20978
+ from?: ISODate;
20979
+ to?: ISODate;
20980
+ };
20981
+ /** A condition on a node's edges: the gap 0.32.0 opened by shipping assignment
20982
+ * and cadence AS EDGES alongside a query that could not mention one.
20983
+ *
20984
+ * @remarks
20985
+ * `UPGViewQuery.from_focus` does not cover this. It walks from the composition's
20986
+ * focused set, so it can say "everything under this epic" and cannot say
20987
+ * "assigned to anyone" or "in the active cycle".
20988
+ *
20989
+ * TWO AXES NAME A MOVING TARGET WITHOUT HOLDING AN ID, and they are deliberately
20990
+ * parallel. On the CADENCE axis it is `target_status`: the active cycle is the
20991
+ * one whose status is `active` (the invariant stated on
20992
+ * `PlanningCycleProperties`), so an edge clause over
20993
+ * `planning_cycle_schedules_work_item` with `target_status: ['active']` selects
20994
+ * the current cycle portably. On the PERSON axis it is `target_designation`:
20995
+ * `'viewer'` selects whoever is reading, resolved in the reader's session.
20996
+ *
20997
+ * `target_ids` is the exception and is admitted knowingly, on the same terms as
20998
+ * `UPGViewQuery.classified_as`.
20999
+ *
21000
+ * @example
21001
+ * const cycle: UPGViewEdgeClause = {
21002
+ * edge_type: 'planning_cycle_schedules_work_item',
21003
+ * direction: 'in',
21004
+ * target_status: ['active'],
21005
+ * }
21006
+ *
21007
+ * @example
21008
+ * const mine: UPGViewEdgeClause = {
21009
+ * edge_type: 'node_assigned_to_person',
21010
+ * direction: 'out',
21011
+ * target_designation: 'viewer',
21012
+ * }
21013
+ */
21014
+ interface UPGViewEdgeClause {
21015
+ /** Canonical edge type. */
21016
+ edge_type: string;
21017
+ /** Which way to walk it from the candidate node. */
21018
+ direction: 'out' | 'in' | 'both';
21019
+ /** Admitted endpoint ids. Omitted means any edge of this type satisfies it. */
21020
+ target_ids?: string[];
21021
+ /** Admitted endpoint phase ids. The designation form on the cadence axis. */
21022
+ target_status?: string[];
21023
+ /**
21024
+ * Selects the endpoint by ROLE rather than by identity. `'viewer'` is whoever
21025
+ * is reading the view, resolved in the reader's session at READ time.
21026
+ *
21027
+ * @remarks
21028
+ * WHY THIS IS NOT AN ID, and it is the whole point of the field. A saved view
21029
+ * that means "assigned to me" cannot store an id, because the id it stores is
21030
+ * one particular person and the view is then permanently about a colleague. A
21031
+ * shipped surface reached for the sentinel `'@me'` inside `target_ids`, which
21032
+ * round-trips and whose MEANING does not travel: a consumer that has not
21033
+ * agreed to that sentinel reads it as a node id and resolves nothing. A
21034
+ * sentinel in an id field is a private protocol wearing a public shape.
21035
+ *
21036
+ * THE PARALLEL IS DELIBERATE. This is the person axis' answer to the same
21037
+ * question `target_status: ['active']` answers on the cadence axis: name the
21038
+ * moving target by what it IS to the reader, not by which row it happens to be
21039
+ * today. Both resolve at read time, both are portable, and neither holds a
21040
+ * foreign key in a scalar.
21041
+ *
21042
+ * DESIGNATION, NOT SERIALISATION. A tool may serialise this however it likes
21043
+ * at its own boundary, `'@me'` included; the spec stores the designation. A
21044
+ * closed union rather than a free string, because an open one is how the
21045
+ * sentinel arose in the first place.
21046
+ */
21047
+ target_designation?: 'viewer';
21048
+ }
21049
+ /** One clause of a selection: the faithful form.
21050
+ *
21051
+ * It can express negation, declared time windows and edge conditions, none of
21052
+ * which the named fields on {@link UPGViewQuery} can hold.
21053
+ *
21054
+ * @remarks
21055
+ * A named-field shape cannot carry per-clause negation without a `not_*` twin
21056
+ * for every field, which is combinatorial and grows with every dimension added,
21057
+ * and which still could not express "not (A and B)" as distinct from "(not A)
21058
+ * and (not B)". A uniform clause list carries it with one flag.
21059
+ *
21060
+ * @example
21061
+ * const c: UPGViewClause = { dimension: 'tag', values: ['spike'], negate: true }
21062
+ */
21063
+ interface UPGViewClause {
21064
+ /** The axis this clause selects on. */
21065
+ dimension: UPGViewDimension;
21066
+ /** Property name when `dimension` is `property`; the date field when `date`. */
21067
+ field?: string;
21068
+ /** Admitted values. */
21069
+ values?: string[];
21070
+ /** Present exactly when `dimension` is `date`. */
21071
+ window?: UPGTimeWindow;
21072
+ /** Present exactly when `dimension` is `edge`. */
21073
+ edge?: UPGViewEdgeClause;
21074
+ /** Negates this clause and only this clause. */
21075
+ negate?: boolean;
21076
+ }
20656
21077
  /** A declarative, portable selection over the graph.
20657
21078
  *
20658
21079
  * Selection ONLY. What a surface should look like once the nodes are chosen is
@@ -20713,9 +21134,54 @@ interface UPGViewQuery {
20713
21134
  edge_types: string[];
20714
21135
  /** Which way to walk them. */
20715
21136
  direction: 'out' | 'in' | 'both';
20716
- /** Hops. Absent means 1. */
20717
- depth?: number;
20718
- };
21137
+ /**
21138
+ * Hops. Absent means 1. `'unbounded'` walks the relation transitively until
21139
+ * it stops producing new nodes.
21140
+ *
21141
+ * @remarks
21142
+ * WHY A NAMED ARM RATHER THAN A LARGE NUMBER. A relative selection over a
21143
+ * tree ("everything under this epic") is transitive by nature and has no
21144
+ * correct finite depth: the right answer is a property of the data, not of
21145
+ * the query. A surface that wants transitivity and has only a number picks a
21146
+ * big one, and a shipped one picked 64. That is a sentinel, it is
21147
+ * indistinguishable from a caller who genuinely meant 64, and it silently
21148
+ * truncates the first graph deeper than the guess.
21149
+ *
21150
+ * A consumer that cannot walk transitively should refuse the clause rather
21151
+ * than substitute a depth of its own choosing, which would quietly return a
21152
+ * different answer to the question asked.
21153
+ */
21154
+ depth?: number | 'unbounded';
21155
+ };
21156
+ /**
21157
+ * The faithful representation of the selection: every clause, including the
21158
+ * negations, declared windows and edge conditions the named fields above
21159
+ * cannot hold.
21160
+ *
21161
+ * @remarks
21162
+ * PRECEDENCE. A reader that finds `clauses` uses it and IGNORES the named
21163
+ * fields. A reader that finds only named fields lifts them into clauses. A
21164
+ * writer emitting both keeps the named fields positive-only, because they have
21165
+ * nowhere to put a negation.
21166
+ *
21167
+ * THE NAMED FIELDS ARE NOT DEPRECATED. They are the readable form of the common
21168
+ * case and most selections never need a clause. This is one canonical form plus
21169
+ * a positive-only shorthand with a stated precedence rule, which is the shape a
21170
+ * field application arrived at independently for the same reason.
21171
+ *
21172
+ * A `date` clause over `created_at` or `updated_at` reads store metadata, which
21173
+ * is declared on `UPGBaseNode` and tagged `@volatile`. Such a window is
21174
+ * portable but the values it reads are maintained by the store rather than
21175
+ * authored.
21176
+ *
21177
+ * @example
21178
+ * [
21179
+ * { dimension: 'type', values: ['task', 'bug'] },
21180
+ * { dimension: 'tag', values: ['spike'], negate: true },
21181
+ * { dimension: 'edge', edge: { edge_type: 'node_assigned_to_person', direction: 'out' } },
21182
+ * ]
21183
+ */
21184
+ clauses?: UPGViewClause[];
20719
21185
  }
20720
21186
  /** Advisory rendering intent. A consumer MAY ignore every field here.
20721
21187
  *
@@ -20738,7 +21204,65 @@ interface UPGViewPresentation {
20738
21204
  direction: 'asc' | 'desc';
20739
21205
  }>;
20740
21206
  /** Requested layout family. Advisory. */
20741
- layout?: 'board' | 'table' | 'list' | 'cards' | 'timeline' | 'gallery';
21207
+ layout?: 'board' | 'table' | 'list' | 'cards' | 'timeline' | 'gallery' | 'tree';
21208
+ /**
21209
+ * Edge types to nest by, outermost first, when `layout` is `'tree'`. Advisory,
21210
+ * like everything else here.
21211
+ *
21212
+ * @remarks
21213
+ * `group_by` partitions a flat set on a value and cannot express nesting,
21214
+ * because a tree's levels are EDGES rather than property values. Naming the
21215
+ * edge types keeps the nesting portable: a consumer that does not know a
21216
+ * layout family can still read which relation the author meant to nest on.
21217
+ *
21218
+ * A consumer may ignore this entirely, render flat, and remain conformant.
21219
+ */
21220
+ nest_by?: string[];
21221
+ }
21222
+ /** A layer whose membership is produced by a query rather than by placement.
21223
+ *
21224
+ * Extended by both `CompositionProperties` and `WorkspaceProperties` (0.33.0).
21225
+ *
21226
+ * @remarks
21227
+ * WHY BOTH HALVES CARRY IT. `composition` is the durable published print and
21228
+ * `workspace` is the transient canvas it is published from. A layer is
21229
+ * query-driven while it is being worked on, not only after it is published, so
21230
+ * declaring the query only on the published half makes the fact something
21231
+ * invented at publish time rather than something recorded.
21232
+ *
21233
+ * WHY ONE INTERFACE RATHER THAN TWO DECLARATIONS. The alternative is two copies
21234
+ * of the same JSDoc that must stay identical, which is how a shipped type summary
21235
+ * came to cite an edge that does not exist. Note that the lift is not free at the
21236
+ * runtime layer: `UPG_PROPERTY_SCHEMA` is a flat per-type map, so `workspace`
21237
+ * gets its own entries there regardless. What is shared is the definition.
21238
+ */
21239
+ interface UPGQueryDrivenLayer {
21240
+ /**
21241
+ * When present, membership is DERIVED: members are produced by running this
21242
+ * query rather than authored by placement.
21243
+ *
21244
+ * @remarks
21245
+ * This is the portable statement of what the layer shows. On a composition,
21246
+ * `CompositionMember.href` remains the publishing tool's own resolved route
21247
+ * and stays opaque to everyone else; a member may carry both, and then the
21248
+ * href is a fast path while the query is the meaning. A consumer that cannot
21249
+ * parse the href can still render the layer, which is the whole reason the
21250
+ * declaration is here rather than in a tool-namespaced bag key.
21251
+ *
21252
+ * A layer with no `member_query` is authored, which is what every composition
21253
+ * written before 0.32.0 is.
21254
+ *
21255
+ * DECLARED ON BOTH HALVES OF THE PAIR since 0.33.0. A layer is query-driven
21256
+ * while it is being worked on, not only once it is published, so declaring the
21257
+ * query only on the durable composition would make it a fact invented at
21258
+ * publish time rather than one recorded.
21259
+ */
21260
+ member_query?: UPGViewQuery;
21261
+ /**
21262
+ * Advisory rendering intent for the layer as a whole. A consumer may ignore it
21263
+ * entirely and still be conformant.
21264
+ */
21265
+ presentation?: UPGViewPresentation;
20742
21266
  }
20743
21267
  interface CompositionMember {
20744
21268
  /** Stable id of the block within this composition. */
@@ -20774,7 +21298,7 @@ interface CompositionMember {
20774
21298
  */
20775
21299
  derived?: boolean;
20776
21300
  }
20777
- interface CompositionProperties {
21301
+ interface CompositionProperties extends UPGQueryDrivenLayer {
20778
21302
  /**
20779
21303
  * The frozen member arrangement, captured at publish. Layout and pointers
20780
21304
  * only, never resolved content.
@@ -20794,27 +21318,6 @@ interface CompositionProperties {
20794
21318
  published_at: ISODateTime;
20795
21319
  /** Publisher handle or email. Display scalar, same posture as `WorkspaceProperties.owner`. */
20796
21320
  published_by?: string;
20797
- /**
20798
- * When present, membership is DERIVED: members are produced by running this
20799
- * query rather than authored by placement.
20800
- *
20801
- * @remarks
20802
- * This is the portable statement of what the composition shows.
20803
- * `CompositionMember.href` remains the publishing tool's own resolved route
20804
- * and stays opaque to everyone else; a member may carry both, and then the
20805
- * href is a fast path while the query is the meaning. A consumer that cannot
20806
- * parse the href can still render the layer, which is the whole reason the
20807
- * declaration is here rather than in a tool-namespaced bag key.
20808
- *
20809
- * A composition with no `member_query` is authored, which is what every
20810
- * composition written before 0.32.0 is.
20811
- */
20812
- member_query?: UPGViewQuery;
20813
- /**
20814
- * Advisory rendering intent for the composition as a whole. A consumer may
20815
- * ignore it entirely and still be conformant.
20816
- */
20817
- presentation?: UPGViewPresentation;
20818
21321
  }
20819
21322
  /** Capture: a dated, hashed rendition of something already in the graph.
20820
21323
  *
@@ -20957,27 +21460,29 @@ interface FrameworkExerciseProperties {
20957
21460
  * `governance`, not the type.
20958
21461
  *
20959
21462
  * @remarks
20960
- * CONFORMANCE HAS NO TYPED EDGE TODAY, and this paragraph exists because the
20961
- * sentence above reads as though it does. "Products implement, expose, or
20962
- * conform to" names three relationships, and the catalog carries none of them:
20963
- * everything pointing at `specification` comes from `primitive`,
20964
- * `operating_lifecycle`, another `specification`, or `organization`. Nothing
20965
- * comes from `product` or `feature`.
20966
- *
20967
- * The cost was measured rather than predicted. A published entity doc, written
20968
- * by someone reading this very summary, cited
20969
- * `product_implements_specification`, `product_exposes_specification` and
20970
- * `feature_conforms_to_specification`. All three are plausible, all three follow
20971
- * this sentence's own verbs, and none of them has ever existed. The reader did
20972
- * nothing wrong; the type promised a relationship and the catalog did not
20973
- * deliver one.
20974
- *
20975
- * So, stated plainly until the gap is closed: the central question this type
20976
- * invites, WHICH PRODUCTS CONFORM TO THIS SPECIFICATION, is not expressible in
20977
- * typed form. A claim can ride the universal `node_constrains_node`, which is
20978
- * honest but unqueryable as conformance. Minting a real edge is a MINOR, filed
20979
- * for 0.33.0 rather than smuggled into a patch, and when it lands this remark
20980
- * comes out.
21463
+ * THE THREE RELATIONSHIPS ARE REAL, AND THEY ARE PORTFOLIO CROSS-EDGES RATHER
21464
+ * THAN CATALOG EDGES. This paragraph replaces one that said the opposite. The
21465
+ * verbs in the summary above resolve to `product_implements_specification`,
21466
+ * `product_exposes_specification` and `feature_conforms_to_specification`, all
21467
+ * three of which have existed since 0.9.12 in `UPG_CROSS_ONLY_EDGE_TYPES`. They
21468
+ * are portfolio-native by design: a governed specification is a registry
21469
+ * canonical, so a product links to it at `registry/{node_id}`, the same shape as
21470
+ * `instance_of`. Nothing in the within-graph edge catalog points from `product`
21471
+ * or `feature` at `specification`, and that is deliberate rather than missing.
21472
+ *
21473
+ * WHY THIS CORRECTION MATTERS TO ANYONE READING A DOC THAT CITES THEM. An
21474
+ * editorial sweep flagged those three names in a published entity doc as
21475
+ * fabricated, on the strength of a catalog-only search. They are not fabricated.
21476
+ * A citation check that reads only the edge catalog will report every legitimate
21477
+ * cross-only edge as a phantom, which is a false positive with the same shape as
21478
+ * a real one. Check both registries before calling a name invented.
21479
+ *
21480
+ * THE GAP THAT DOES REMAIN, stated rather than closed. A `specification` node
21481
+ * held inside a SINGLE product graph, with no portfolio around it, has no
21482
+ * conformance edge available, because the cross-only tier needs a registry
21483
+ * target. A claim can ride the universal `node_constrains_node`, which is honest
21484
+ * and unqueryable as conformance. Closing that case is banked, with its condition
21485
+ * the first single-product graph that models a specification it conforms to.
20981
21486
  *
20982
21487
  * @example
20983
21488
  * const properties: SpecificationProperties = {
@@ -25398,6 +25903,21 @@ interface UPGHeader {
25398
25903
  /** Tamper-evidence over the canonical body */
25399
25904
  integrity: UPGHeaderIntegrity;
25400
25905
  }
25906
+ /**
25907
+ * Canonical serialisation order for a node's top-level keys.
25908
+ *
25909
+ * Deliberately a SUPERSET of `UPG_BASE_NODE_FIELDS`: it also orders tolerated
25910
+ * non-base keys (`lifecycle_status`, `sort_order`) so that a graph carrying one
25911
+ * still serialises deterministically. `base-node-fields.test.ts` asserts the
25912
+ * subset relation in the other direction, which is the one that can regress: a
25913
+ * base field declared and never added here would silently drop out of canonical
25914
+ * ordering. Never assert equality, which would fail on the two tolerated keys
25915
+ * and push the next author to delete them.
25916
+ *
25917
+ * Exported at 0.33.0 so that assertion can be written; consumers that need to
25918
+ * classify base fields use `UPG_BASE_NODE_FIELDS`, not this.
25919
+ */
25920
+ declare const NODE_KEY_ORDER: string[];
25401
25921
  /** Element counts for a single-product document, as stamped into `$upg.counts`. */
25402
25922
  declare function deriveSingleCounts(doc: UPGDocument): Record<string, number>;
25403
25923
  /**
@@ -25538,7 +26058,7 @@ declare function checkHeaderSealText(text: string): UPGHeaderSealReport;
25538
26058
  * it stamps the `upg_version` field of every `.upg` file written by the SDK.
25539
26059
  * The `check:version-lockstep` gate enforces this at release time.
25540
26060
  */
25541
- declare const UPG_VERSION: "0.32.1";
26061
+ declare const UPG_VERSION: "0.33.0";
25542
26062
  /**
25543
26063
  * The `.upg` JSON document format version. Written to the `upg_version` field.
25544
26064
  * Evolves independently from `UPG_VERSION` (the catalogue version).
@@ -25663,4 +26183,4 @@ declare const UPG_EDGE_COUNT: number;
25663
26183
  */
25664
26184
  declare const UPG_META_COUNT: number;
25665
26185
 
25666
- export { type A11yAnnotationProperties, type A11yAuditProperties, type A11yGuidelineProperties, type A11yIssueProperties, type A11yStandardProperties, ACTIVE_WHEN_PROPERTY, ANALYTICS_DATA_PLAYBOOK, type AcceptanceCriterionProperties, type AccessPolicyProperties, type AccountProperties, type AcquisitionChannelProperties, type AdCreativeProperties, type AffinityClusterProperties, type AgentDefinitionProperties, type AgentHookProperties, type AgentSessionProperties, type AgentSkillProperties, type AgentTaskProperties, type AggregateProperties, type AiCostTrackerProperties, type AiDatasetProperties, type AiExperimentProperties, type AiGuardrailProperties, type AiModelProperties, type AiTraceProperties, type AlertRuleProperties, type AnnotationProperties, type AntiPatternInputs, type AntiPatternViolation, type AnyUPGEntityType, type ApiContractProperties, type ApiEcosystemProperties, type ApiEndpointProperties, type ApproachBinding, type ApproachFilter, type ApproachRun, type ApproachRuntime, type ApprovalRecordProperties, type AssumptionProperties, type AttributionModelProperties, type AuditLogPolicyProperties, BUSINESS_GROWTH_METRIC_DRIVEN_PLAYBOOK, BUSINESS_GTM_GROWTH_PLAYBOOK, BUSINESS_MARKETING_AUDIENCE_FIRST_PLAYBOOK, type BehavioralSegmentProperties, type BenchmarkCheck, type BetaProgramProperties, type BoundedContextProperties, type BrandAssetProperties, type BrandColourProperties, type BrandIdentityProperties, type BrandImageryProperties, type BrandLogoProperties, type BrandTypographyProperties, type BrandVoiceProperties, type BugProperties, type BuildArtifactProperties, type BusinessModelProperties, CLASSIFICATION_EDGE_PROPERTY_SCHEMA, CONFIGURATION_QUALIFIER_EDGE_PROPERTY_SCHEMA, CONFIGURATION_VARIANCE_EDGE_PROPERTY_SCHEMA, CONTENT_DEPTH_WARNING_RULES, COVERAGE_ANTI_PATTERNS, type Cadence, type CapabilityProperties, type CapacityPlanProperties, type CaptureProperties, type CauseConfidence, type CeremonyProperties, type CertificationProperties, type ChangeRequestProperties, type ChangelogProperties, type ChurnReasonProperties, type CiPipelineProperties, type ClassificationAxisProperties, type ClassificationCapability, type ClassificationCapabilitySurface, type ClassificationCommitment, type ClassificationValueProperties, type CodeRepositoryProperties, type CohortProperties, type ComfortLevel, type CommandProperties, type CommunityInitiativeProperties, type CompetitiveAnalysisProperties, type CompetitiveBattleCardProperties, type CompetitorFeatureProperties, type CompetitorProperties, type CompetitorSignalProperties, type ComplianceFrameworkProperties, type ComplianceRequirementProperties, type CompositionMember, type CompositionProperties, type Confidence, type Configuration, type ConfigurationAxisKind, type ConfigurationAxisProperties, type ConfigurationDriftFinding, type ConfigurationDriftKind, type ConformanceLevel, type ConstraintKind, type ConstraintOrigin, type ConstraintProperties, type ConstraintStatus, type ContactProperties, type ContentCalendarProperties, type ContentPieceProperties, type ContentStrategyProperties, type ContentThemeProperties, type ContractClauseProperties, type ContractProperties, type CostStructureProperties, type CountBenchmark, type Cron, type CrossProductEligibleEdgeType, type CrossProductScope, type CulturalAdaptationProperties, type CustomerFeedbackProperties, type CustomerHealthScoreProperties, type CustomerJourneyStageProperties, type CustomerRelationshipProperties, DEFAULT_ENTITY_EMOJI, DEFERRED_PROPOSED_BY_CONTRACT, DEFER_EDGE_PROPERTY_SCHEMA, DISCOVERY_RESEARCH_VALIDATION_PLAYBOOK, type DashboardProperties, type DataClassificationProperties, type DataContractProperties, type DataDomainProperties, type DataFlowProperties, type DataLineageProperties, type DataModelProperties, type DataPipelineProperties, type DataProductProperties, type DataQualityRuleProperties, type DataSensitivity, type DataSourceProperties, type DatabaseSchemaProperties, type DealProperties, type DecisionProperties, type DeliberateOnlyEdgeType, type DeliverableProperties, type DemandGenProgramProperties, type DepartmentProperties, type DependencyProperties, type DeploymentProperties, type DeprecatedUPGEntityType, type DesignComponentProperties, type DesignConceptProperties, type DesignGuidelineProperties, type DesignPatternProperties, type DesignQuestionProperties, type DesignSprintProperties, type DesignSystemProperties, type DesignTokenProperties, type DesiredOutcomeProperties, type DeveloperPortalProperties, type DifficultyLevel, type DiscountStrategyProperties, type DistributionChannelProperties, type DocumentProperties, type DocumentationTemplateProperties, type DomainActivation, type DomainCountCheck, type DomainEntityProperties, type DomainEventProperties, type DomainGuideStep, type DomainPopulationCheck, type Duration, ENGINEERING_PLATFORM_PLAYBOOK, ENTITY_EMOJI, EXPERIENCE_DESIGN_BRAND_PLAYBOOK, type EdgeCountVsPropertyCheck, type EducationProgramProperties, type EmailSequenceProperties, type EmptyCell, type EmptyCellRationaleKind, type EntityCheck, type EntitySequenceStep, type EntityTypeMeta, type EntityTypeResolution, type EntryMode, type EpicProperties, type ErrorBudgetProperties, type EvalBenchmarkProperties, type EvalRunProperties, type EvaluateAntiPatternsOptions, type EventProperties, type EventSchemaProperties, type EvidenceDirection, type EvidenceProperties, type ExperimentPlanProperties, type ExperimentProperties, type ExperimentRunProperties, type ExternalApiProperties, FOUNDATIONS_PLAYBOOK, type FeasibilityStudyProperties, type FeatureAreaProperties, type FeatureFlagProperties, type FeatureProperties, type FeatureRequestProperties, type FeedbackProgramProperties, type FeedbackThemeProperties, type FeedbackVoteProperties, type FixProperties, type ForecastProperties, type FrameworkCategory, type FrameworkComputedProperty, type FrameworkConstant, type FrameworkDataSpec, type FrameworkEducation, type FrameworkEntityTypeSpec, type FrameworkExerciseProperties, type FrameworkInvocationStep, type FrameworkLayout, type FrameworkLevel, type FrameworkOrigin, type FrameworkPresentationSpec, type FrameworkPropertyRequirement, type FrameworkScoringMethod, type FrameworkSlot, type FrameworkSlotPredicate, type FrameworkSlotPredicateAtom, type FrameworkStep, type FrameworkStructureSpec, type FrameworkValidationResult, type FrequencyRating, type FunnelProperties, type FunnelStage, type FunnelStepProperties, type GlossaryTermProperties, type GrowthCampaignProperties, type GrowthLoopProperties, type GtmStrategyProperties, type GuardrailStatus, type HallucinationReportProperties, type HealthStatus, type HelpVideoProperties, type HypothesisEvidenceProperties, type HypothesisProperties, type ISO4217, type ISODate, type ISODateTime, type IdealCustomerProfileProperties, type IncidentProperties, type IncidentSeverity, type InfrastructureComponentProperties, type InitiativeProperties, type InsightProperties, type IntegrationPartnerProperties, type IntegrationPatternProperties, type IntelligenceCondition, type InteractionSpecProperties, type InternalDocProperties, type InterviewGuideProperties, type InvestigationProperties, type InvoiceProperties, type IpAssetProperties, type JobProperties, type JobStepProperties, type JourneyActionProperties, type JourneyPhaseProperties, type JourneyStepProperties, type JourneyType, type KeyActivityProperties, type KeyResourceProperties, type KeyResultProperties, type KnowledgeBaseArticleProperties, LEGACY_PRODUCT_STAGES, type LaunchProperties, type LeadProperties, type LearningPathProperties, type LearningProperties, type LegalEntityProperties, type LibraryDependencyProperties, type LifecyclePhase, type LifecycleRenderShape, type LifecycleRenderState, type LifecycleRenderTransition, type LifecycleState, type LocaleConfigProperties, type LocaleProperties, type LogLevel, type LowMedHigh, MARKDOWN_FORMAT_VERSION, MARKET_COMPETITIVE_PLAYBOOK, type MarketSegmentProperties, type MarketTrendProperties, type MarketingCampaignPlanProperties, type MarketingChannelProperties, type MarketingPlatform, type MarketingStrategyProperties, type MarketplaceListingProperties, type MatrixSlot, type MaturityLevel, type MessagingProperties, type MetricCategory, type MetricDataPoint, type MetricDesignation, type MetricHealth, type MetricImpactLevel, type MetricIndicatorDirection, type MetricProperties, type MetricQualityAssessmentProperties, type MetricScore, type MetricSegmentType, type MetricStatisticalFunction, type MilestoneProperties, type MissionProperties, type ModelComparisonProperties, type ModifiedProperty, type MonitorProperties, type NamedGroup, type NeedMaturity, type NeedProperties, type NeedValence, type NpsCampaignProperties, OPERATIONS_QUALITY_PLAYBOOK, type ObjectionProperties, type ObjectiveProperties, type ObservationProperties, type OnCallRotationProperties, type OperatingLifecycleProperties, type OperatingStageProperties, type OpportunityProperties, type OrganizationProperties, type OrphanCheck, type OutcomeProperties, PRESENT_UNDER_PROPERTY, PRODUCT_DELIVERY_PLAYBOOK, PROPERTY_MODIFIERS, PROPERTY_MODIFIER_SEMANTICS, PROPERTY_SCALE_MAP, type ParticipantProperties, type PartnerProgramProperties, type PartnerRevenueShareProperties, type PartnerTierProperties, type PartnershipProperties, type PathResolution, type PaywallProperties, type PenetrationTestProperties, type PersonProperties, type PersonaProperties, type PipelineSalesProperties, type PipelineStageProperties, type PlanningCycleProperties, type PlaybookBinding, type PlaybookFilter, type PlaybookProperties, type PlaybookRun, type PlaybookRuntime, type PortfolioProperties, type PositioningProperties, type PostmortemProperties, type PressReleaseProperties, type PricingStrategyProperties, type PricingTierProperties, type PrimitiveProperties, type Priority, type PrivacyPolicyProperties, type ProductAreaProperties, type ProductProperties, type ProductStageCoercion, type ProgramProperties, type ProjectProperties, type ProjectableEdge, type ProjectableNode, type ProjectionResult, type PromptTemplateProperties, type PromptVersionProperties, type ProofPointProperties, type PropertyDefinition, type PropertyModifier, type PropertySchema, type Protocol, type PrototypeProperties, type ProxyConfidence, type ProxyReason, QUALIFIABLE_EDGE_TYPES, type QaSessionProperties, type QueueTopicProperties, type QuoteDocumentProperties, type QuoteProperties, RECORD_ENTITY_TYPES, REFLECT_MODES, REGISTRY_PRODUCT_ID, type RatioBenchmark, type ReadModelProperties, type RebuttalProperties, type ReflectMode, type RegionalPricingProperties, type RegressionTestProperties, type RelationalColumn, type RelationalComputedColumn, type RelationalEdgeStep, type RelationalFieldColumn, type RelationalProjectionColumn, type RelationalSurfaceSpec, type RelationshipBenchmark, type RelationshipCheck, type ReleaseProperties, type ReleaseStrategyProperties, type ReportProperties, type ResearchPlanProperties, type ResearchQuestionProperties, type ResearchStudyProperties, type ResolvedStep, type ResourceAllocationProperties, type RetrospectiveProperties, type RevenueStreamProperties, type ReviewGateProperties, type RiskProperties, type RiskRegisterProperties, type RoadmapItemProperties, type RoadmapProperties, type RoadmapThemeProperties, type RoleProperties, type RootCauseProperties, type RuleStrength, type RunContext, type RunbookProperties, STRATEGY_OUTCOMES_PLAYBOOK, type SalesMotionProperties, type ScreenProperties, type ScreenStateProperties, type SecurityAuditProperties, type SecurityControlProperties, type SecurityPolicyProperties, type SecurityReviewProperties, type Semver, type SeoKeywordProperties, type SerializeOptions, type ServiceBlueprintProperties, type ServiceLevelAgreementProperties, type ServiceLevelIndicatorProperties, type ServiceLevelObjectiveProperties, type ServiceProperties, type SignalChannel, type SignalSentiment, type SignalUrgency, type SkillProperties, type SocialPostProperties, type SolutionProperties, type SpecificationProperties, type StageRange, type StakeholderProperties, type StatusCategory, type StatusReportProperties, type Step, type StepKind, type StepOutput, type StepOutputKind, type StoryTaskProperties, type StrategicPillarProperties, type StrategicQuestionProperties, type StrategicThemeProperties, type StructurePattern, type SubSequenceStep, type SubscriptionProperties, type SuccessMilestoneProperties, type SupportTicketProperties, type SurfaceArbitrationState, type SurfaceCardinality, type SurfaceCompositionMode, type SurfaceExtensibility, type SurfaceId, type SurfaceInstanceScope, type SurfaceKind, type SurfacePersistence, type SurfaceProperties, type SurveyResponseProperties, type SwitchingCostProperties, type SymptomProperties, THIN_GRAPH_THRESHOLD, type TableColumn, type TargetCustomerSegmentProperties, type TaskProperties, type TeamOkrProperties, type TeamProperties, type TechnicalDebtItemProperties, type TerritoryProperties, type TestCaseProperties, type TestCoverageReportProperties, type TestEnvironmentProperties, type TestPlanProperties, type TestResultProperties, type TestSuiteProperties, type ThreatModelProperties, type ThreatProperties, type Timeframe, type TotalEntityCountCheck, type TouchpointProperties, type TranslationBundleProperties, type TranslationKeyProperties, type TrialConfigProperties, type TutorialProperties, type UPGAnchorEntity, type UPGAntiPattern, type UPGAntiPatternConcern, type UPGAntiPatternSeverity, type UPGApproach, type UPGApproachEnvelope, type UPGApproachId, type UPGAreaTaxonomyEntry, type UPGAssessment, type UPGBaseNode, type UPGBenchmarkSource, type UPGBoundaryDirection, type UPGBoundaryEdge, type UPGCrossEdge, type UPGCrossEdgeType, type UPGCrossOnlyEdgeType, type UPGCuratedAntiPattern, type UPGDocument, type UPGDomain, type UPGDomainBridge, type UPGDomainId, type UPGDomainPattern, type UPGDomainRing, type UPGDomainUsageGuide, type UPGEdge, type UPGEdgeCountSpec, type UPGEdgeDefinition, type UPGEdgeMigration, type UPGEdgeMigrationEndpoints, type UPGEdgePickHint, type UPGEdgeType, type UPGEntityFilterSpec, type UPGEntityType, type UPGEntityTypeMaturity, type UPGEnumScaleDefinition, type UPGEnumScaleValue, type UPGFramework, type UPGFrameworkMeta, type UPGHeader, type UPGHeaderCountsMismatch, type UPGHeaderIntegrity, type UPGHeaderIntegrityMismatch, type UPGHeaderProvenance, type UPGHeaderSealReport, type UPGIntegrity, type UPGLens, type UPGLensIntelligencePrompt, type UPGLifecycle, type UPGMappingConfidence, type UPGMemberKindKey, type UPGNode, type UPGOrganization, type UPGPlaybook, type UPGPortfolio, type UPGPortfolioDocument, type UPGPortfolioKind, type UPGPresenceExceptSpec, type UPGProduct, type UPGProductArea, type UPGProductStage, type UPGPropertyMap, type UPGPropertyMigration, type UPGPropertyMigrationChange, type UPGRegion, type UPGRegionEntityMembership, type UPGRegionEntityRole, type UPGRegionId, type UPGRegionShape, type UPGRegistry, type UPGScalarToEdgeMigration, type UPGScaleDefinition, type UPGScalePoint, type UPGSource, type UPGSplitEdge, type UPGSplitMigration, type UPGSplitRoute, type UPGSplitRouteTarget, type UPGSplitTarget, type UPGTreeChild, type UPGTreeGapPolicy, type UPGTreePattern, type UPGTreePatternDetail, type UPGTreePatternEdge, type UPGTreePatternSummary, type UPGTypeLabel, type UPGTypeMigration, type UPGValidationError, type UPGValidationProfile, type UPGValidationResult, type UPGValidationWarning, type UPGViewPredicate, type UPGViewPresentation, type UPGViewQuery, type UPGWildcardEndpoint, UPG_ACTIVE_TYPES, UPG_ANTI_PATTERNS, UPG_ANTI_PATTERN_CONCERNS, UPG_APPROACHES, UPG_APPROACHES_BY_ID, UPG_AREA_TAXONOMY, UPG_AREA_TAXONOMY_BY_COVERAGE_KEY, UPG_CANONICAL_FORMAT_VERSION, UPG_CONTAINMENT_FREE_TYPES, UPG_COUNT_BENCHMARKS, UPG_CROSS_EDGE_TYPES, UPG_CROSS_ELIGIBLE_CATALOG_EDGE_TYPES, UPG_CROSS_ONLY_EDGE_TYPES, UPG_DELIBERATE_ONLY_EDGE_TYPES, UPG_DEPRECATED_TYPES, UPG_DOMAINS, UPG_DOMAIN_ACTIVATION, UPG_DOMAIN_COUNT, UPG_DOMAIN_GUIDES, UPG_DOMAIN_RINGS, UPG_EDGE_CATALOG, UPG_EDGE_COUNT, UPG_EDGE_COUNT_SPECS, UPG_EDGE_MIGRATIONS, UPG_EDGE_PAIR_MAP, UPG_EDGE_TYPES, UPG_ENTITY_COUNT, UPG_ENTITY_FILTER_SPECS, UPG_ENTITY_META, UPG_ENTITY_META_BY_ID, UPG_ENTITY_META_BY_NAME, UPG_ENTITY_TO_DOMAIN, UPG_ENUM_SCALES, UPG_FORMAT_VERSION, UPG_FRAMEWORKS, UPG_FRAMEWORKS_BY_CATEGORY, UPG_FRAMEWORKS_BY_ID, UPG_FRAMEWORK_CATEGORIES, UPG_LENSES, UPG_LIFECYCLES, UPG_LIFECYCLE_FREE_TYPES, UPG_LIFECYCLE_PLANNED_TYPES, UPG_META_COUNT, UPG_MIGRATIONS, UPG_PLAYBOOKS, UPG_POLYMORPHIC_EDGE_KEYS, UPG_PORTFOLIO_KINDS, UPG_PORTFOLIO_SHARED_TYPES, UPG_PRESENCE_EXCEPT_SPECS, UPG_PRODUCT_STAGES, UPG_PRODUCT_STAGE_COERCION_MAP, UPG_PROPERTY_MIGRATIONS, UPG_PROPERTY_SCHEMA, UPG_RATIO_BENCHMARKS, UPG_REGIONS, UPG_REGION_COUNT, UPG_REGION_MAP, UPG_RELATIONSHIP_BENCHMARKS, UPG_SCALAR_TO_EDGE_MIGRATIONS, UPG_SCALES, UPG_SPLIT_MIGRATIONS, UPG_STATUS_MIGRATIONS, UPG_STRUCTURE_PATTERNS, UPG_TREE_PATTERNS, UPG_TREE_PATTERNS_BY_ID, UPG_TYPES, UPG_TYPES_SET, UPG_TYPE_ALIASES, UPG_TYPE_LABELS, UPG_TYPE_LABELS_MAP, UPG_TYPE_NAMES, UPG_VALIDATION_PROFILES, UPG_VALID_CHILDREN, UPG_VERSION, UPG_WILDCARD_ENDPOINT, USERS_NEEDS_PLAYBOOK, type UnitEconomicsProperties, UnknownEntityTypeError, type UserAdvisoryBoardProperties, type UserFlowProperties, type UserJourneyProperties, type UserStoryProperties, VARIES_BY_EDGE, type ValueObjectProperties, type ValuePropositionProperties, type ValueStreamProperties, type VariantProperties, type VisionProperties, type VulnerabilityProperties, WORKSPACE_ARRANGEMENT_EDGE_PROPERTY_SCHEMA, type WalkMigrationChainResult, type WalkthroughProperties, type WebinarProperties, type WireframeProperties, type WorkflowArtifactProperties, type WorkflowRunProperties, type WorkflowTemplateProperties, type WorkspaceCanvas, type WorkspaceProperties, backfillSlug, buildTypeAliases, canBeChildOf, checkConfigurationDrift, checkHeaderSeal, checkHeaderSealText, checkToEdgeCountSpec, classifyEntityFilter, coerceProductStage, collectSlugsForType, collectTargetEntities, compareVersions, computeBodyChecksum, concernEvaluatedFor, concernFor, concernGatesFor, crossProductScope, deriveCounts, derivePortfolioCounts, deriveSingleCounts, describeTreePattern, edgeCarriesProperties, edgeCountSpecKey, entityFilterKey, enumerateProjections, evaluateAntiPatterns, findInvalidStatusMigrationTargets, formatUpgText, friendlyToAssessment, generateSlug, getAnchorEntity, getAntiPatternById, getAntiPatterns, getAntiPatternsBySeverity, getAntiPatternsForStage, getAreaTaxonomyEntry, getBenchmark, getBenchmarksByDomain, getBusinessAreasForRegion, getCanonicalPlaybookForRegion, getCoverageKeysForRegion, getDefaultLens, getDeprecatedTypes, getDomainForType, getDomainIdForType, getDomainsInRing, getEdgePropertySchema, getEntityModifierSummary, getEnumScale, getEnumValueMeta, getGuideForDomain, getLens, getLensIds, getLensPlaybook, getLensesForDomain, getLifecycleForType, getLifecycleRenderShape, getMigrationMap, getPlaybookById, getPlaybooksForRegion, getPropertiesForScale, getPropertyDefaultScale, getPropertyMigrations, getPropertyModifier, getPropertySchema, getRegion, getRegionForEntityType, getReplacementType, getRingForDomain, getScalarToEdgeMigrations, getScale, getSplitMigrations, getTreePattern, getTypeId, getTypeName, getTypes, getUPGEdgeMigrations, getValidChildren, getVisibleTypes, hasStatusMigration, isAggregateShapedProperty, isCanonical, isCanonicalProductStage, isContainmentFreeType, isCrossCapable, isCrossProductEligible, isCuratedCrossEligible, isDeliberateOnlyEdge, isDeprecatedType, isDomainGuideStep, isEntitySequenceStep, isFrameworkInvocationStep, isLegacyProductStage, isLifecycleFreeType, isLifecyclePlannedType, isPolymorphicEdge, isPortfolio, isPortfolioSharedType, isRecordEntity, isRegisteredPolymorphicEdge, isRuntimeStateShapedProperty, isSubSequenceStep, isThinCoverageAdvisory, isUPGDocument, listPropertiesByModifier, listStatusMigrations, listTreePatternSummaries, migrateEdge, migrateNode, migrateNodeProperties, migrateProductStage, migrateStatusValue, normalizeDocument, parseUpg, pickCanonicalEdge, predicatesProvablyDisjoint, presenceExceptKey, projectGraph, readActiveWhen, readStringArray, relationalCoveredEntityTypes, resolveAllEdges, resolveContainmentEdge, resolveEntityType, resolveLabel, resolveRelationalPath, resolveSlugCollision, resolveTreePatternEdges, ringOrderedDomainIds, rotateSlug, serializeCanonical, validateEdgeProperties, validateProductStageStrict, validateUPGDocument, validateUPGFramework, validationProfileFor, walkMigrationChainToCanonical };
26186
+ export { type A11yAnnotationProperties, type A11yAuditProperties, type A11yGuidelineProperties, type A11yIssueProperties, type A11yStandardProperties, ACTIVE_WHEN_PROPERTY, ANALYTICS_DATA_PLAYBOOK, type AcceptanceCriterionProperties, type AccessPolicyProperties, type AccountProperties, type AcquisitionChannelProperties, type AdCreativeProperties, type AffinityClusterProperties, type AgentDefinitionProperties, type AgentHookProperties, type AgentSessionProperties, type AgentSkillProperties, type AgentTaskProperties, type AggregateProperties, type AiCostTrackerProperties, type AiDatasetProperties, type AiExperimentProperties, type AiGuardrailProperties, type AiModelProperties, type AiTraceProperties, type AlertRuleProperties, type AnnotationProperties, type AntiPatternInputs, type AntiPatternViolation, type AnyUPGEntityType, type ApiContractProperties, type ApiEcosystemProperties, type ApiEndpointProperties, type ApproachBinding, type ApproachFilter, type ApproachRun, type ApproachRuntime, type ApprovalRecordProperties, type AssumptionProperties, type AttributionModelProperties, type AuditLogPolicyProperties, BUSINESS_GROWTH_METRIC_DRIVEN_PLAYBOOK, BUSINESS_GTM_GROWTH_PLAYBOOK, BUSINESS_MARKETING_AUDIENCE_FIRST_PLAYBOOK, type BehavioralSegmentProperties, type BenchmarkCheck, type BetaProgramProperties, type BoundedContextProperties, type BrandAssetProperties, type BrandColourProperties, type BrandIdentityProperties, type BrandImageryProperties, type BrandLogoProperties, type BrandTypographyProperties, type BrandVoiceProperties, type BugProperties, type BuildArtifactProperties, type BusinessModelProperties, CLASSIFICATION_EDGE_PROPERTY_SCHEMA, CONFIGURATION_QUALIFIER_EDGE_PROPERTY_SCHEMA, CONFIGURATION_VARIANCE_EDGE_PROPERTY_SCHEMA, CONTENT_DEPTH_WARNING_RULES, COVERAGE_ANTI_PATTERNS, type Cadence, type CapabilityProperties, type CapacityPlanProperties, type CaptureProperties, type CauseConfidence, type CeremonyProperties, type CertificationProperties, type ChangeRequestProperties, type ChangelogProperties, type ChurnReasonProperties, type CiPipelineProperties, type ClassificationAxisProperties, type ClassificationCapability, type ClassificationCapabilitySurface, type ClassificationCommitment, type ClassificationValueProperties, type CodeRepositoryProperties, type CohortProperties, type ComfortLevel, type CommandProperties, type CommunityInitiativeProperties, type CompetitiveAnalysisProperties, type CompetitiveBattleCardProperties, type CompetitorFeatureProperties, type CompetitorProperties, type CompetitorSignalProperties, type ComplianceFrameworkProperties, type ComplianceRequirementProperties, type CompositionMember, type CompositionProperties, type Confidence, type Configuration, type ConfigurationAxisKind, type ConfigurationAxisProperties, type ConfigurationDriftFinding, type ConfigurationDriftKind, type ConformanceLevel, type ConstraintKind, type ConstraintOrigin, type ConstraintProperties, type ConstraintStatus, type ContactProperties, type ContentCalendarProperties, type ContentPieceProperties, type ContentStrategyProperties, type ContentThemeProperties, type ContractClauseProperties, type ContractProperties, type CostStructureProperties, type CountBenchmark, type Cron, type CrossProductEligibleEdgeType, type CrossProductScope, type CulturalAdaptationProperties, type CustomerFeedbackProperties, type CustomerHealthScoreProperties, type CustomerJourneyStageProperties, type CustomerRelationshipProperties, DEFAULT_ENTITY_EMOJI, DEFERRED_PROPOSED_BY_CONTRACT, DEFER_EDGE_PROPERTY_SCHEMA, DISCOVERY_RESEARCH_VALIDATION_PLAYBOOK, type DashboardProperties, type DataClassificationProperties, type DataContractProperties, type DataDomainProperties, type DataFlowProperties, type DataLineageProperties, type DataModelProperties, type DataPipelineProperties, type DataProductProperties, type DataQualityRuleProperties, type DataSensitivity, type DataSourceProperties, type DatabaseSchemaProperties, type DealProperties, type DecisionProperties, type DeliberateOnlyEdgeType, type DeliverableProperties, type DemandGenProgramProperties, type DepartmentProperties, type DependencyProperties, type DeploymentProperties, type DeprecatedUPGEntityType, type DesignComponentProperties, type DesignConceptProperties, type DesignGuidelineProperties, type DesignPatternProperties, type DesignQuestionProperties, type DesignSprintProperties, type DesignSystemProperties, type DesignTokenProperties, type DesiredOutcomeProperties, type DeveloperPortalProperties, type DifficultyLevel, type DiscountStrategyProperties, type DistributionChannelProperties, type DocumentProperties, type DocumentationTemplateProperties, type DomainActivation, type DomainCountCheck, type DomainEntityProperties, type DomainEventProperties, type DomainGuideStep, type DomainPopulationCheck, type Duration, ENGINEERING_PLATFORM_PLAYBOOK, ENTITY_EMOJI, EXPERIENCE_DESIGN_BRAND_PLAYBOOK, type EdgeCountVsPropertyCheck, type EducationProgramProperties, type EmailSequenceProperties, type EmptyCell, type EmptyCellRationaleKind, type EntityCheck, type EntitySequenceStep, type EntityTypeMeta, type EntityTypeResolution, type EntryMode, type EpicProperties, type ErrorBudgetProperties, type EvalBenchmarkProperties, type EvalRunProperties, type EvaluateAntiPatternsOptions, type EventProperties, type EventSchemaProperties, type EvidenceDirection, type EvidenceProperties, type ExperimentPlanProperties, type ExperimentProperties, type ExperimentRunProperties, type ExternalApiProperties, FOUNDATIONS_PLAYBOOK, type FeasibilityStudyProperties, type FeatureAreaProperties, type FeatureFlagProperties, type FeatureProperties, type FeatureRequestProperties, type FeedbackProgramProperties, type FeedbackThemeProperties, type FeedbackVoteProperties, type FixProperties, type ForecastProperties, type FrameworkCategory, type FrameworkComputedProperty, type FrameworkConstant, type FrameworkDataSpec, type FrameworkEducation, type FrameworkEntityTypeSpec, type FrameworkExerciseProperties, type FrameworkInvocationStep, type FrameworkLayout, type FrameworkLevel, type FrameworkOrigin, type FrameworkPresentationSpec, type FrameworkPropertyRequirement, type FrameworkScoringMethod, type FrameworkSlot, type FrameworkSlotPredicate, type FrameworkSlotPredicateAtom, type FrameworkStep, type FrameworkStructureSpec, type FrameworkValidationResult, type FrequencyRating, type FunnelProperties, type FunnelStage, type FunnelStepProperties, type GlossaryTermProperties, type GrowthCampaignProperties, type GrowthLoopProperties, type GtmStrategyProperties, type GuardrailStatus, type HallucinationReportProperties, type HealthStatus, type HelpVideoProperties, type HypothesisEvidenceProperties, type HypothesisProperties, type ISO4217, type ISODate, type ISODateTime, type IdealCustomerProfileProperties, type IncidentProperties, type IncidentSeverity, type InfrastructureComponentProperties, type InitiativeProperties, type InsightProperties, type IntegrationPartnerProperties, type IntegrationPatternProperties, type IntelligenceCondition, type InteractionSpecProperties, type InternalDocProperties, type InterviewGuideProperties, type InvestigationProperties, type InvoiceProperties, type IpAssetProperties, type JobProperties, type JobStepProperties, type JourneyActionProperties, type JourneyPhaseProperties, type JourneyStepProperties, type JourneyType, type KeyActivityProperties, type KeyResourceProperties, type KeyResultProperties, type KnowledgeBaseArticleProperties, LEGACY_PRODUCT_STAGES, type LaunchProperties, type LeadProperties, type LearningPathProperties, type LearningProperties, type LegalEntityProperties, type LibraryDependencyProperties, type LifecyclePhase, type LifecycleRenderShape, type LifecycleRenderState, type LifecycleRenderTransition, type LifecycleState, type LocaleConfigProperties, type LocaleProperties, type LogLevel, type LowMedHigh, MARKDOWN_FORMAT_VERSION, MARKET_COMPETITIVE_PLAYBOOK, type MarketSegmentProperties, type MarketTrendProperties, type MarketingCampaignPlanProperties, type MarketingChannelProperties, type MarketingPlatform, type MarketingStrategyProperties, type MarketplaceListingProperties, type MatrixSlot, type MaturityLevel, type MessagingProperties, type MetricCategory, type MetricDataPoint, type MetricDesignation, type MetricHealth, type MetricImpactLevel, type MetricIndicatorDirection, type MetricProperties, type MetricQualityAssessmentProperties, type MetricScore, type MetricSegmentType, type MetricStatisticalFunction, type MilestoneProperties, type MissionProperties, type ModelComparisonProperties, type ModifiedProperty, type MonitorProperties, NODE_KEY_ORDER, type NamedGroup, type NeedMaturity, type NeedProperties, type NeedValence, type NpsCampaignProperties, OPERATIONS_QUALITY_PLAYBOOK, type ObjectionProperties, type ObjectiveProperties, type ObservationProperties, type OnCallRotationProperties, type OperatingLifecycleProperties, type OperatingStageProperties, type OpportunityProperties, type OrganizationProperties, type OrphanCheck, type OutcomeProperties, PRESENT_UNDER_PROPERTY, PRODUCT_DELIVERY_PLAYBOOK, PROPERTY_MODIFIERS, PROPERTY_MODIFIER_SEMANTICS, PROPERTY_SCALE_MAP, type ParticipantProperties, type PartnerProgramProperties, type PartnerRevenueShareProperties, type PartnerTierProperties, type PartnershipProperties, type PathResolution, type PaywallProperties, type PenetrationTestProperties, type PersonProperties, type PersonaProperties, type PipelineSalesProperties, type PipelineStageProperties, type PlanningCycleProperties, type PlaybookBinding, type PlaybookFilter, type PlaybookProperties, type PlaybookRun, type PlaybookRuntime, type PortfolioProperties, type PositioningProperties, type PostmortemProperties, type PressReleaseProperties, type PricingStrategyProperties, type PricingTierProperties, type PrimitiveProperties, type Priority, type PrivacyPolicyProperties, type ProductAreaProperties, type ProductProperties, type ProductStageCoercion, type ProgramProperties, type ProjectProperties, type ProjectableEdge, type ProjectableNode, type ProjectionResult, type PromptTemplateProperties, type PromptVersionProperties, type ProofPointProperties, type PropertyDefinition, type PropertyModifier, type PropertySchema, type Protocol, type PrototypeProperties, type ProxyConfidence, type ProxyReason, QUALIFIABLE_EDGE_TYPES, type QaSessionProperties, type QueueTopicProperties, type QuoteDocumentProperties, type QuoteProperties, RECORD_ENTITY_TYPES, REFLECT_MODES, REGISTRY_PRODUCT_ID, type RatioBenchmark, type ReadModelProperties, type RebuttalProperties, type ReflectMode, type RegionalPricingProperties, type RegressionTestProperties, type RelationalColumn, type RelationalComputedColumn, type RelationalEdgeStep, type RelationalFieldColumn, type RelationalProjectionColumn, type RelationalSurfaceSpec, type RelationshipBenchmark, type RelationshipCheck, type ReleaseProperties, type ReleaseStrategyProperties, type ReportProperties, type ResearchPlanProperties, type ResearchQuestionProperties, type ResearchStudyProperties, type ResolvedStep, type ResourceAllocationProperties, type RetrospectiveProperties, type RevenueStreamProperties, type ReviewGateProperties, type RiskProperties, type RiskRegisterProperties, type RoadmapItemProperties, type RoadmapProperties, type RoadmapThemeProperties, type RoleProperties, type RootCauseProperties, type RuleStrength, type RunContext, type RunbookProperties, STRATEGY_OUTCOMES_PLAYBOOK, type SalesMotionProperties, type ScreenProperties, type ScreenStateProperties, type SecurityAuditProperties, type SecurityControlProperties, type SecurityPolicyProperties, type SecurityReviewProperties, type Semver, type SeoKeywordProperties, type SerializeOptions, type ServiceBlueprintProperties, type ServiceLevelAgreementProperties, type ServiceLevelIndicatorProperties, type ServiceLevelObjectiveProperties, type ServiceProperties, type SignalChannel, type SignalSentiment, type SignalUrgency, type SkillProperties, type SocialPostProperties, type SolutionProperties, type SpecificationProperties, type StageRange, type StakeholderProperties, type StatusCategory, type StatusReportProperties, type Step, type StepKind, type StepOutput, type StepOutputKind, type StoryTaskProperties, type StrategicPillarProperties, type StrategicQuestionProperties, type StrategicThemeProperties, type StructurePattern, type SubSequenceStep, type SubscriptionProperties, type SuccessMilestoneProperties, type SupportTicketProperties, type SurfaceArbitrationState, type SurfaceCardinality, type SurfaceCompositionMode, type SurfaceExtensibility, type SurfaceId, type SurfaceInstanceScope, type SurfaceKind, type SurfacePersistence, type SurfaceProperties, type SurveyResponseProperties, type SwitchingCostProperties, type SymptomProperties, THIN_GRAPH_THRESHOLD, type TableColumn, type TargetCustomerSegmentProperties, type TaskProperties, type TeamOkrProperties, type TeamProperties, type TechnicalDebtItemProperties, type TerritoryProperties, type TestCaseProperties, type TestCoverageReportProperties, type TestEnvironmentProperties, type TestPlanProperties, type TestResultProperties, type TestSuiteProperties, type ThreatModelProperties, type ThreatProperties, type Timeframe, type TotalEntityCountCheck, type TouchpointProperties, type TranslationBundleProperties, type TranslationKeyProperties, type TrialConfigProperties, type TutorialProperties, type UPGAnchorEntity, type UPGAntiPattern, type UPGAntiPatternConcern, type UPGAntiPatternSeverity, type UPGApproach, type UPGApproachEnvelope, type UPGApproachId, type UPGAreaTaxonomyEntry, type UPGAssessment, type UPGBaseNode, type UPGBenchmarkSource, type UPGBoundaryDirection, type UPGBoundaryEdge, type UPGCrossEdge, type UPGCrossEdgeType, type UPGCrossOnlyEdgeType, type UPGCuratedAntiPattern, type UPGDocument, type UPGDomain, type UPGDomainBridge, type UPGDomainId, type UPGDomainPattern, type UPGDomainRing, type UPGDomainUsageGuide, type UPGEdge, type UPGEdgeCountSpec, type UPGEdgeDefinition, type UPGEdgeMigration, type UPGEdgeMigrationEndpoints, type UPGEdgePickHint, type UPGEdgeType, type UPGEntityFilterSpec, type UPGEntityType, type UPGEntityTypeMaturity, type UPGEnumScaleDefinition, type UPGEnumScaleValue, type UPGExternalLink, type UPGFramework, type UPGFrameworkMeta, type UPGHeader, type UPGHeaderCountsMismatch, type UPGHeaderIntegrity, type UPGHeaderIntegrityMismatch, type UPGHeaderProvenance, type UPGHeaderSealReport, type UPGIntegrity, type UPGLens, type UPGLensIntelligencePrompt, type UPGLifecycle, type UPGMappingConfidence, type UPGMemberKindKey, type UPGNode, type UPGOrganization, type UPGPlaybook, type UPGPortfolio, type UPGPortfolioDocument, type UPGPortfolioKind, type UPGPresenceExceptSpec, type UPGProduct, type UPGProductArea, type UPGProductStage, type UPGPropertyMap, type UPGPropertyMigration, type UPGPropertyMigrationChange, type UPGQueryDrivenLayer, type UPGRegion, type UPGRegionEntityMembership, type UPGRegionEntityRole, type UPGRegionId, type UPGRegionShape, type UPGRegistry, type UPGScalarToEdgeMigration, type UPGScaleDefinition, type UPGScalePoint, type UPGSource, type UPGSplitEdge, type UPGSplitMigration, type UPGSplitRoute, type UPGSplitRouteTarget, type UPGSplitTarget, type UPGTimeWindow, type UPGTreeChild, type UPGTreeGapPolicy, type UPGTreePattern, type UPGTreePatternDetail, type UPGTreePatternEdge, type UPGTreePatternSummary, type UPGTypeLabel, type UPGTypeMigration, type UPGValidationError, type UPGValidationProfile, type UPGValidationResult, type UPGValidationWarning, type UPGViewClause, type UPGViewDimension, type UPGViewEdgeClause, type UPGViewPredicate, type UPGViewPresentation, type UPGViewQuery, type UPGWildcardEndpoint, UPG_ACTIVE_TYPES, UPG_ANTI_PATTERNS, UPG_ANTI_PATTERN_CONCERNS, UPG_APPROACHES, UPG_APPROACHES_BY_ID, UPG_AREA_TAXONOMY, UPG_AREA_TAXONOMY_BY_COVERAGE_KEY, UPG_BASE_NODE_FIELDS, UPG_BASE_NODE_FIELD_SET, UPG_BASE_NODE_SPECIAL_MERGE_FIELDS, UPG_CANONICAL_FORMAT_VERSION, UPG_CONTAINMENT_FREE_TYPES, UPG_COUNT_BENCHMARKS, UPG_CROSS_EDGE_TYPES, UPG_CROSS_ELIGIBLE_CATALOG_EDGE_TYPES, UPG_CROSS_ONLY_EDGE_TYPES, UPG_DELIBERATE_ONLY_EDGE_TYPES, UPG_DEPRECATED_TYPES, UPG_DOMAINS, UPG_DOMAIN_ACTIVATION, UPG_DOMAIN_COUNT, UPG_DOMAIN_GUIDES, UPG_DOMAIN_RINGS, UPG_EDGE_CATALOG, UPG_EDGE_COUNT, UPG_EDGE_COUNT_SPECS, UPG_EDGE_MIGRATIONS, UPG_EDGE_PAIR_MAP, UPG_EDGE_TYPES, UPG_ENTITY_COUNT, UPG_ENTITY_FILTER_SPECS, UPG_ENTITY_META, UPG_ENTITY_META_BY_ID, UPG_ENTITY_META_BY_NAME, UPG_ENTITY_TO_DOMAIN, UPG_ENUM_SCALES, UPG_FORMAT_VERSION, UPG_FRAMEWORKS, UPG_FRAMEWORKS_BY_CATEGORY, UPG_FRAMEWORKS_BY_ID, UPG_FRAMEWORK_CATEGORIES, UPG_LENSES, UPG_LIFECYCLES, UPG_LIFECYCLE_FREE_TYPES, UPG_LIFECYCLE_PLANNED_TYPES, UPG_META_COUNT, UPG_MIGRATIONS, UPG_PLAYBOOKS, UPG_POLYMORPHIC_EDGE_KEYS, UPG_PORTFOLIO_KINDS, UPG_PORTFOLIO_SHARED_TYPES, UPG_PRESENCE_EXCEPT_SPECS, UPG_PRODUCT_STAGES, UPG_PRODUCT_STAGE_COERCION_MAP, UPG_PROPERTY_MIGRATIONS, UPG_PROPERTY_SCHEMA, UPG_RATIO_BENCHMARKS, UPG_REGIONS, UPG_REGION_COUNT, UPG_REGION_MAP, UPG_RELATIONSHIP_BENCHMARKS, UPG_SCALAR_TO_EDGE_MIGRATIONS, UPG_SCALES, UPG_SPLIT_MIGRATIONS, UPG_STATUS_MIGRATIONS, UPG_STRUCTURE_PATTERNS, UPG_TREE_PATTERNS, UPG_TREE_PATTERNS_BY_ID, UPG_TYPES, UPG_TYPES_SET, UPG_TYPE_ALIASES, UPG_TYPE_LABELS, UPG_TYPE_LABELS_MAP, UPG_TYPE_NAMES, UPG_VALIDATION_PROFILES, UPG_VALID_CHILDREN, UPG_VERSION, UPG_WILDCARD_ENDPOINT, USERS_NEEDS_PLAYBOOK, type UnitEconomicsProperties, UnknownEntityTypeError, type UserAdvisoryBoardProperties, type UserFlowProperties, type UserJourneyProperties, type UserStoryProperties, VARIES_BY_EDGE, type ValueObjectProperties, type ValuePropositionProperties, type ValueStreamProperties, type VariantProperties, type VisionProperties, type VulnerabilityProperties, WORKSPACE_ARRANGEMENT_EDGE_PROPERTY_SCHEMA, type WalkMigrationChainResult, type WalkthroughProperties, type WebinarProperties, type WireframeProperties, type WorkflowArtifactProperties, type WorkflowRunProperties, type WorkflowTemplateProperties, type WorkspaceCanvas, type WorkspaceProperties, backfillSlug, buildTypeAliases, canBeChildOf, checkConfigurationDrift, checkHeaderSeal, checkHeaderSealText, checkToEdgeCountSpec, classifyEntityFilter, coerceProductStage, collectSlugsForType, collectTargetEntities, compareVersions, computeBodyChecksum, concernEvaluatedFor, concernFor, concernGatesFor, crossProductScope, deriveCounts, derivePortfolioCounts, deriveSingleCounts, describeTreePattern, edgeCarriesProperties, edgeCountSpecKey, entityFilterKey, enumerateProjections, evaluateAntiPatterns, findInvalidStatusMigrationTargets, formatUpgText, friendlyToAssessment, generateSlug, getAnchorEntity, getAntiPatternById, getAntiPatterns, getAntiPatternsBySeverity, getAntiPatternsForStage, getAreaTaxonomyEntry, getBenchmark, getBenchmarksByDomain, getBusinessAreasForRegion, getCanonicalPlaybookForRegion, getCoverageKeysForRegion, getDefaultLens, getDeprecatedTypes, getDomainForType, getDomainIdForType, getDomainsInRing, getEdgePropertySchema, getEntityModifierSummary, getEnumScale, getEnumValueMeta, getGuideForDomain, getLens, getLensIds, getLensPlaybook, getLensesForDomain, getLifecycleForType, getLifecycleRenderShape, getMigrationMap, getPlaybookById, getPlaybooksForRegion, getPropertiesForScale, getPropertyDefaultScale, getPropertyMigrations, getPropertyModifier, getPropertySchema, getRegion, getRegionForEntityType, getReplacementType, getRingForDomain, getScalarToEdgeMigrations, getScale, getSplitMigrations, getTreePattern, getTypeId, getTypeName, getTypes, getUPGEdgeMigrations, getValidChildren, getVisibleTypes, hasStatusMigration, isAggregateShapedProperty, isCanonical, isCanonicalProductStage, isContainmentFreeType, isCrossCapable, isCrossProductEligible, isCuratedCrossEligible, isDeliberateOnlyEdge, isDeprecatedType, isDomainGuideStep, isEntitySequenceStep, isFrameworkInvocationStep, isLegacyProductStage, isLifecycleFreeType, isLifecyclePlannedType, isPolymorphicEdge, isPortfolio, isPortfolioSharedType, isRecordEntity, isRegisteredPolymorphicEdge, isRuntimeStateShapedProperty, isSubSequenceStep, isThinCoverageAdvisory, isUPGDocument, listPropertiesByModifier, listStatusMigrations, listTreePatternSummaries, migrateEdge, migrateNode, migrateNodeProperties, migrateProductStage, migrateStatusValue, normalizeDocument, parseUpg, pickCanonicalEdge, predicatesProvablyDisjoint, presenceExceptKey, projectGraph, readActiveWhen, readStringArray, relationalCoveredEntityTypes, resolveAllEdges, resolveContainmentEdge, resolveEntityType, resolveLabel, resolveRelationalPath, resolveSlugCollision, resolveTreePatternEdges, ringOrderedDomainIds, rotateSlug, serializeCanonical, validateEdgeProperties, validateProductStageStrict, validateUPGDocument, validateUPGFramework, validationProfileFor, walkMigrationChainToCanonical };