@unified-product-graph/core 0.33.1 → 0.35.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/CHANGELOG.md +104 -0
- package/README.md +1 -1
- package/dist/index.cjs +2622 -1807
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +821 -65
- package/dist/index.d.ts +821 -65
- package/dist/index.js +2337 -1529
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -154,18 +154,61 @@ declare function friendlyToAssessment(scaleId: string, word: string): {
|
|
|
154
154
|
* `packages/upg-spec/src/properties/domains/` (audited at v0.4.0).
|
|
155
155
|
*/
|
|
156
156
|
declare const PROPERTY_SCALE_MAP: Record<string, string>;
|
|
157
|
+
/**
|
|
158
|
+
* Per-ENTITY scale overrides (0.35.0). Beats `PROPERTY_SCALE_MAP` for the one
|
|
159
|
+
* entity named, and only that entity.
|
|
160
|
+
*
|
|
161
|
+
* This activates the per-entity disambiguation `getPropertyDefaultScale` has
|
|
162
|
+
* reserved since v0.4.0. It exists for a narrow, real class: a property name
|
|
163
|
+
* that means one thing on most entities and its opposite on one.
|
|
164
|
+
*
|
|
165
|
+
* `risk.impact` is that case. `impact_5` is benefit-framed ("Minimal →
|
|
166
|
+
* Transformative") and reads high-is-good, which on discovery and market
|
|
167
|
+
* entities is correct — a high-impact opportunity is good news. On a `risk`,
|
|
168
|
+
* the same word means severity of consequences, and a catastrophic risk was
|
|
169
|
+
* rendering GREEN. `severity_5` ("Mild inconvenience → Blocker") is the
|
|
170
|
+
* risk-shaped ladder and reads low-is-good, so the traffic-light story arrives
|
|
171
|
+
* from the existing polarity map with no bespoke bucketing.
|
|
172
|
+
*
|
|
173
|
+
* `risk.probability` is the second entry, and it is the same instrument used
|
|
174
|
+
* for the opposite purpose (Captain-ratified 2026-08-22). `probability` is
|
|
175
|
+
* DEPRECATED on `risk` in favour of `likelihood`, and the name-level map holds
|
|
176
|
+
* it at `confidence_5` for `forecast.probability`, which is a bare sales
|
|
177
|
+
* percentage and genuinely belongs there. Leaving `risk.probability` on that
|
|
178
|
+
* name-level entry meant the deprecated field and its replacement rendered on
|
|
179
|
+
* DIFFERENT ladders for the whole deprecation window: the same stored 4 reading
|
|
180
|
+
* "Confident" through the old name and "Likely" through the new one, on one
|
|
181
|
+
* card, from one graph. A staged deprecation exists so a reader can migrate
|
|
182
|
+
* WITHOUT their data changing meaning, and a ladder swap at the rename is
|
|
183
|
+
* exactly that meaning changing. So the override pins the legacy spelling to
|
|
184
|
+
* `likelihood_5` — the ladder the field always should have had — and the two
|
|
185
|
+
* names agree until 1.0.0 drops the old one.
|
|
186
|
+
*
|
|
187
|
+
* Note what this does NOT do: `forecast.probability` is untouched and still
|
|
188
|
+
* resolves to `confidence_5` through the name-level map. Being able to correct
|
|
189
|
+
* ONE entity without disturbing the other is the entire reason this layer
|
|
190
|
+
* exists, and this is the first time it has been used for that rather than for
|
|
191
|
+
* a polarity fix.
|
|
192
|
+
*
|
|
193
|
+
* Keep this layer SMALL. A name that needs an override on three entities is a
|
|
194
|
+
* name that should be split, not overridden; renaming `risk.probability` to
|
|
195
|
+
* `likelihood` in the same release is that lesson applied. The two entries here
|
|
196
|
+
* are both `risk`, both from one audit, and both close when 1.0.0 lands.
|
|
197
|
+
*/
|
|
198
|
+
declare const PROPERTY_SCALE_MAP_BY_ENTITY: Record<string, Record<string, string>>;
|
|
157
199
|
/**
|
|
158
200
|
* Return the default scale ID for a given entity-type / property-name pair.
|
|
159
201
|
*
|
|
160
|
-
* Resolution order:
|
|
161
|
-
* 1.
|
|
162
|
-
*
|
|
202
|
+
* Resolution order (0.35.0 — the entity layer is new; the other two are not):
|
|
203
|
+
* 1. `PROPERTY_SCALE_MAP_BY_ENTITY[entityType][propertyName]` — a per-entity
|
|
204
|
+
* override, for a name that means something different on one entity.
|
|
205
|
+
* 2. `PROPERTY_SCALE_MAP[propertyName]` — the property-level default.
|
|
206
|
+
* 3. `'scale_5'` (generic 1–5 ordinal).
|
|
163
207
|
*
|
|
164
|
-
*
|
|
165
|
-
*
|
|
208
|
+
* Adding layer 1 is non-breaking: every pair with no entity override resolves
|
|
209
|
+
* exactly as before.
|
|
166
210
|
*
|
|
167
|
-
* @param entityType
|
|
168
|
-
* Currently unused; reserved for future per-entity overrides.
|
|
211
|
+
* @param entityType - The UPG entity type string (e.g. `'problem_statement'`).
|
|
169
212
|
* @param propertyName - The property name on that entity (e.g. `'severity'`).
|
|
170
213
|
* @returns A scale ID string (always a key of `UPG_SCALES` or `'scale_5'`).
|
|
171
214
|
*
|
|
@@ -173,10 +216,15 @@ declare const PROPERTY_SCALE_MAP: Record<string, string>;
|
|
|
173
216
|
* getPropertyDefaultScale('problem_statement', 'reach') // → 'reach_5'
|
|
174
217
|
* getPropertyDefaultScale('problem_statement', 'frequency') // → 'frequency_5'
|
|
175
218
|
* getPropertyDefaultScale('problem_statement', 'severity') // → 'severity_5'
|
|
176
|
-
* getPropertyDefaultScale('risk', 'risk_level') // → '
|
|
219
|
+
* getPropertyDefaultScale('risk', 'risk_level') // → 'severity_5'
|
|
220
|
+
* getPropertyDefaultScale('risk', 'likelihood') // → 'likelihood_5'
|
|
221
|
+
* getPropertyDefaultScale('risk', 'impact') // → 'severity_5' (entity override)
|
|
222
|
+
* getPropertyDefaultScale('risk', 'probability') // → 'likelihood_5' (entity override; deprecated name, same ladder as `likelihood`)
|
|
223
|
+
* getPropertyDefaultScale('forecast', 'probability') // → 'confidence_5' (unchanged)
|
|
224
|
+
* getPropertyDefaultScale('opportunity', 'impact') // → 'impact_5' (unchanged)
|
|
177
225
|
* getPropertyDefaultScale('anything', 'unknown_property') // → 'scale_5'
|
|
178
226
|
*/
|
|
179
|
-
declare function getPropertyDefaultScale(
|
|
227
|
+
declare function getPropertyDefaultScale(entityType: string, propertyName: string): string;
|
|
180
228
|
/**
|
|
181
229
|
* Inverse of `PROPERTY_SCALE_MAP`: the canonical property names that default to
|
|
182
230
|
* a given scale, in declaration order. Useful for documentation surfaces that
|
|
@@ -185,6 +233,13 @@ declare function getPropertyDefaultScale(_entityType: string, propertyName: stri
|
|
|
185
233
|
* Returns an empty array for scales no property defaults to (e.g. the generic
|
|
186
234
|
* `'scale_5'` fallback, which is never an explicit entry).
|
|
187
235
|
*
|
|
236
|
+
* Scope: the NAME-level map only. Per-entity overrides
|
|
237
|
+
* (`PROPERTY_SCALE_MAP_BY_ENTITY`, 0.35.0) are deliberately not folded in,
|
|
238
|
+
* because a bare property name cannot express "impact, but only on risk" and a
|
|
239
|
+
* documentation surface that listed `impact` under both ladders would be
|
|
240
|
+
* telling the reader less than it does now. Read that map directly when the
|
|
241
|
+
* question is per-entity.
|
|
242
|
+
*
|
|
188
243
|
* @example
|
|
189
244
|
* getPropertiesForScale('effort_5') // → ['effort', 'effort_estimate', 'effort_to_fix']
|
|
190
245
|
*/
|
|
@@ -617,32 +672,81 @@ interface UPGBaseNode {
|
|
|
617
672
|
* about the thing (the same cut that keeps `composition.rev`, which is a fact,
|
|
618
673
|
* and excludes a concurrency token, which is not).
|
|
619
674
|
*
|
|
620
|
-
* WHICH PREFIX (
|
|
621
|
-
* in
|
|
622
|
-
*
|
|
623
|
-
*
|
|
624
|
-
*
|
|
625
|
-
* product's
|
|
626
|
-
*
|
|
627
|
-
*
|
|
628
|
-
*
|
|
629
|
-
*
|
|
630
|
-
*
|
|
675
|
+
* WHICH PREFIX (normative; ladder stated as built in 0.33.1, candidate set
|
|
676
|
+
* narrowed in 0.34.0). Three rungs, tried in order.
|
|
677
|
+
*
|
|
678
|
+
* 1. A create NAMES its prefix explicitly.
|
|
679
|
+
* 2. Otherwise the CANDIDATE SET is consulted. It is the UNION of the prefixes
|
|
680
|
+
* DECLARED by the product's teams (`team.key_prefix`) and the prefixes
|
|
681
|
+
* OBSERVED on the product's existing keys. One candidate resolves; more
|
|
682
|
+
* than one, and the create surface asks. `product.key_prefix` is consulted
|
|
683
|
+
* only when no team declares one, and is `@deprecated` for that reason.
|
|
684
|
+
* 3. A product with an empty candidate set and no explicit prefix mints no
|
|
685
|
+
* keys.
|
|
686
|
+
*
|
|
687
|
+
* THE OBSERVED RUNG IS A REAL MINT PATH, and 0.33.0 published two sentences that
|
|
688
|
+
* disagreed about whether it existed. This paragraph used to end "A product where
|
|
689
|
+
* nothing declares a prefix mints no keys", which deletes it; the two paragraphs
|
|
690
|
+
* below both name a prefix INFERRED from existing keys, and `team.key_prefix`
|
|
691
|
+
* rule 3 presupposes it by construction. The field settles it: the only keyed
|
|
692
|
+
* graph in the estate carries 1,032 keys minted by inference in a product that
|
|
693
|
+
* declares no prefix at all, and under the deleted rung that graph could not
|
|
694
|
+
* exist. Corrected in the 0.33.1 patch and restated here.
|
|
695
|
+
*
|
|
696
|
+
* A DECLARATION ADDS A CANDIDATE; IT DOES NOT REMOVE ONE (0.34.0). Declaring a
|
|
697
|
+
* team prefix suppresses `product.key_prefix` and nothing else. It never
|
|
698
|
+
* suppresses an OBSERVED prefix, which is evidence of a namespace already in
|
|
699
|
+
* use. The full argument, the measurement behind it and the reason it ships as a
|
|
700
|
+
* change rather than as a patch are on `team.key_prefix`.
|
|
631
701
|
*
|
|
632
|
-
*
|
|
633
|
-
*
|
|
634
|
-
*
|
|
635
|
-
*
|
|
702
|
+
* Key uniqueness is scoped to the product across entity types; a prefix names a
|
|
703
|
+
* team within that scope, not a separate number line.
|
|
704
|
+
*
|
|
705
|
+
* ENFORCED WITHIN THE PRODUCT (0.34.1). A create naming a key another node in
|
|
706
|
+
* this product already holds is REFUSED, across entity types, with a typed
|
|
707
|
+
* `DuplicateNodeKeyError`. Immutability was already enforced on the update
|
|
708
|
+
* path from 0.33.0, through the typed field and through `properties` both.
|
|
709
|
+
*
|
|
710
|
+
* THE REFUSAL IS AN ERROR AND NOT A SILENT NO-KEY, and the distinction is the
|
|
711
|
+
* one the minting rules draw two paragraphs down. A portfolio-shared team's
|
|
712
|
+
* prefix mints nothing in a second product, and there the refusal IS no-key
|
|
713
|
+
* and never an exception — because nobody asked for that key; it was inferred.
|
|
714
|
+
* A duplicate arrives the other way round: the caller NAMED it. Returning
|
|
715
|
+
* success for a node whose citation was quietly dropped is the failure mode
|
|
716
|
+
* the 0.32.2 field guards exist to end.
|
|
717
|
+
*
|
|
718
|
+
* ENFORCED ON CREATE, NOT ON OPEN. A graph minted before the check existed may
|
|
719
|
+
* hold a collision, and a store that refuses to load it leaves its owner no
|
|
720
|
+
* way to repair it. The index is therefore built first-wins at load and the
|
|
721
|
+
* invariant is held at the only moment it can still be honoured.
|
|
722
|
+
*
|
|
723
|
+
* THE PRECEDING TWO PARAGRAPHS SHIPPED AS AN OVERCLAIM AND ARE CORRECTED HERE.
|
|
724
|
+
* 0.33.0 wrote "uniqueness is enforced per product (the store index is
|
|
725
|
+
* `(product_id, key)`)" as settled fact, and 0.34.0 restated the within-product
|
|
726
|
+
* case as stated-but-unchecked without reconciling the two. Neither was
|
|
727
|
+
* describing anything that ran: no index existed and no check fired, on any
|
|
728
|
+
* release through 0.34.0. It was measured on the only keyed graph in the
|
|
729
|
+
* estate — 1,032 keys, and a second node claiming one of them was accepted
|
|
730
|
+
* without a warning. This matters more than a wrong sentence usually would,
|
|
731
|
+
* because the portfolio detector below names the per-product invariant as its
|
|
732
|
+
* premise: a portfolio check that assumes each product is internally clean was
|
|
733
|
+
* resting on nothing. 0.34.1 makes the sentence true rather than deleting it.
|
|
636
734
|
*
|
|
637
735
|
* PORTFOLIO-WIDE UNIQUENESS IS DEFINED AND UNENFORCED (0.33.0). Within a
|
|
638
736
|
* portfolio, one `(prefix, number)` pair should identify one node. Uniqueness
|
|
639
|
-
* is enforced per product (the store index is `(product_id, key)
|
|
640
|
-
* products minting under one prefix produce
|
|
641
|
-
* things. This is measured rather than
|
|
737
|
+
* is enforced per product (the store index is `(product_id, key)`, and from
|
|
738
|
+
* 0.34.1 that index exists), so two products minting under one prefix produce
|
|
739
|
+
* the same citation for two different things. This is measured rather than
|
|
740
|
+
* feared: a fixture reproduces the
|
|
642
741
|
* collision through the ordinary create path, including the quiet case where
|
|
643
|
-
* nobody declares a prefix and it is inferred from existing keys. No
|
|
644
|
-
*
|
|
645
|
-
*
|
|
742
|
+
* nobody declares a prefix and it is inferred from existing keys. No PER-PRODUCT
|
|
743
|
+
* check can ever see it, because each product reports its own key as valid —
|
|
744
|
+
* which is why the detector that ships in 0.34.0 is a PORTFOLIO-scope
|
|
745
|
+
* anti-pattern (`duplicate-key-across-products`) rather than a graph validation.
|
|
746
|
+
* It is ENFORCED from the day it ships; what was staged is the corpus, and the
|
|
747
|
+
* distinction matters because there is no defined-then-enforced mechanic and
|
|
748
|
+
* inventing one would have been worse than either real option. A detector that is
|
|
749
|
+
* registered but declines to fire is a detector nobody can reason about.
|
|
646
750
|
*
|
|
647
751
|
* MINTING IS PRODUCT-SCOPED (normative, 0.33.0). The `(product_id, key)` index
|
|
648
752
|
* is the enforced invariant and the scope of a key sequence is the product.
|
|
@@ -652,7 +756,13 @@ interface UPGBaseNode {
|
|
|
652
756
|
* an exception, and the rule applies on the MINT path including a prefix that
|
|
653
757
|
* was INFERRED from existing keys rather than requested by any caller.
|
|
654
758
|
* Portfolio-shared team minting is deferred until a supra-product uniqueness
|
|
655
|
-
* design exists. See `team.key_prefix` for the rule in full
|
|
759
|
+
* design exists. See `team.key_prefix` for the rule in full, including the three
|
|
760
|
+
* mechanics 0.34.0 made normative that this rule needs and 0.33.0 left open: HOW
|
|
761
|
+
* a minter decides which product a prefix belongs to (evidence, not a stored
|
|
762
|
+
* marker), what happens when nothing can decide (NEITHER mints, no invented
|
|
763
|
+
* tiebreak), and what "in scope" means (engine-defined, with a floor at every
|
|
764
|
+
* product the engine can enumerate for this caller and a ceiling at every product
|
|
765
|
+
* the caller could not otherwise read).
|
|
656
766
|
*
|
|
657
767
|
* WHERE THE BEHAVIOUR LIVES, because this is a contract and not an
|
|
658
768
|
* implementation. Nothing in this package mints a key. Deriving the next number
|
|
@@ -729,6 +839,25 @@ interface UPGBaseNode {
|
|
|
729
839
|
* fields whose names differ by a plural and whose semantics differ by
|
|
730
840
|
* canonicality is a misreading waiting to happen in every consumer.
|
|
731
841
|
*
|
|
842
|
+
* MIGRATION NOTE, CORRECTED 0.34.0 ON TWO FIGURES. Both were carried forward
|
|
843
|
+
* from the 0.33.0 pass and both were wrong, and the second would have broken
|
|
844
|
+
* this field's own contract on its first real population.
|
|
845
|
+
*
|
|
846
|
+
* THE RESIDUE IS 179, NOT 162. Seventeen further attachments sat in a second
|
|
847
|
+
* vendor bag key and were equally homeless. They were never counted because
|
|
848
|
+
* the census read one key.
|
|
849
|
+
*
|
|
850
|
+
* THE CANONICAL URL MUST BE SUBTRACTED BEFORE THE COPY. 524 of the 528 nodes
|
|
851
|
+
* holding a parked bag DUPLICATE their own `external_ref` inside it. A
|
|
852
|
+
* straight copy of the bag into this list would therefore put the canonical
|
|
853
|
+
* artifact into the NON-canonical list on 99% of the field's first real
|
|
854
|
+
* population, breaking the exact invariant this field was minted to
|
|
855
|
+
* establish. A migration reads the bag, removes the entry matching
|
|
856
|
+
* `external_ref`, and copies what remains.
|
|
857
|
+
*
|
|
858
|
+
* The correction is recorded here rather than in a plan because this is where a
|
|
859
|
+
* migration author will be standing when they need it.
|
|
860
|
+
*
|
|
732
861
|
* @example
|
|
733
862
|
* [{ url: 'https://github.com/acme/api/pull/812', label: 'PR 812', kind: 'pull_request' }]
|
|
734
863
|
*/
|
|
@@ -769,12 +898,25 @@ interface UPGBaseNode {
|
|
|
769
898
|
*
|
|
770
899
|
* ONE UNDECLARED EXTENSION IS KNOWN, MEASURED AND DELIBERATELY LEFT UNDECLARED.
|
|
771
900
|
* A tracker import carries raw ordered state-transition history for every issue
|
|
772
|
-
* (1,032 issues, 2,862 transitions in the measured corpus) under a
|
|
901
|
+
* (1,032 issues, 2,862 transitions in the measured corpus) under a vendor-owned
|
|
773
902
|
* key. It has no declared shape because nothing reads it: declaring a shape for
|
|
774
903
|
* records nobody queries is dead schema, and it would freeze one vendor's
|
|
775
904
|
* transition model into the format before a second source has been seen. The
|
|
776
905
|
* pull-forward condition is the first reader. Silence and a decision look
|
|
777
906
|
* identical six months later, so this is written down as a decision.
|
|
907
|
+
*
|
|
908
|
+
* THAT KEY IS NOT ACTUALLY NAMESPACED, AND THE PARAGRAPH ABOVE USED TO CLAIM IT
|
|
909
|
+
* WAS (corrected 0.34.1). The rule two paragraphs up mandates `<tool>:<key>`
|
|
910
|
+
* with a COLON. The import writes `linear_state_history`, with an underscore —
|
|
911
|
+
* the precise shape the rule was written to forbid, cited here as the example
|
|
912
|
+
* of compliance. It went unnoticed because nothing could see it: no drift class
|
|
913
|
+
* examined undeclared bag keys until `undeclared_property_drift` shipped in
|
|
914
|
+
* 0.34.1, which measured 5,779 such keys across eight `linear_*` shapes on the
|
|
915
|
+
* one imported graph in the estate.
|
|
916
|
+
*
|
|
917
|
+
* Recorded rather than migrated, because renaming a key on 1,032 nodes is a
|
|
918
|
+
* migration with its own cycle and this paragraph is where its author will be
|
|
919
|
+
* standing. What changes here is the claim, not the data.
|
|
778
920
|
*/
|
|
779
921
|
properties?: Record<string, unknown>;
|
|
780
922
|
}
|
|
@@ -1364,6 +1506,13 @@ declare const UPG_EDGE_CATALOG: {
|
|
|
1364
1506
|
source_type: string;
|
|
1365
1507
|
target_type: string;
|
|
1366
1508
|
};
|
|
1509
|
+
research_study_captures_quote: {
|
|
1510
|
+
forward_verb: string;
|
|
1511
|
+
reverse_verb: string;
|
|
1512
|
+
classification: "hierarchy";
|
|
1513
|
+
source_type: string;
|
|
1514
|
+
target_type: string;
|
|
1515
|
+
};
|
|
1367
1516
|
research_study_clusters_into_affinity_cluster: {
|
|
1368
1517
|
forward_verb: string;
|
|
1369
1518
|
reverse_verb: string;
|
|
@@ -2143,6 +2292,13 @@ declare const UPG_EDGE_CATALOG: {
|
|
|
2143
2292
|
source_type: string;
|
|
2144
2293
|
target_type: string;
|
|
2145
2294
|
};
|
|
2295
|
+
feature_specified_by_user_story: {
|
|
2296
|
+
forward_verb: string;
|
|
2297
|
+
reverse_verb: string;
|
|
2298
|
+
classification: "hierarchy";
|
|
2299
|
+
source_type: string;
|
|
2300
|
+
target_type: string;
|
|
2301
|
+
};
|
|
2146
2302
|
user_story_verified_by_acceptance_criterion: {
|
|
2147
2303
|
forward_verb: string;
|
|
2148
2304
|
reverse_verb: string;
|
|
@@ -5798,6 +5954,58 @@ declare const UPG_EDGE_CATALOG: {
|
|
|
5798
5954
|
source_type: string;
|
|
5799
5955
|
target_type: string;
|
|
5800
5956
|
};
|
|
5957
|
+
/**
|
|
5958
|
+
* A document EMBEDS this node's live value at a position in its prose.
|
|
5959
|
+
*
|
|
5960
|
+
* @remarks
|
|
5961
|
+
* NOT `describes`. `document_describes_persona` says the document is ABOUT the
|
|
5962
|
+
* persona. Transclusion says the document RENDERS that node where the prose
|
|
5963
|
+
* sits, so the value a reader sees is the node's current value rather than a
|
|
5964
|
+
* copy taken when the sentence was written. A PRD that transcludes a metric is
|
|
5965
|
+
* not "about" the metric, and collapsing the two would lose the only property
|
|
5966
|
+
* transclusion is bought for: current by construction. The nine-member
|
|
5967
|
+
* `document_describes_*` family is untouched and keeps its meaning.
|
|
5968
|
+
*
|
|
5969
|
+
* POLYMORPHIC because the target set is genuinely open. Anything renderable can
|
|
5970
|
+
* be embedded, and the nine enumerated describe-targets are none of `metric`,
|
|
5971
|
+
* `research_study`, `specification` or `architecture_decision`, which is what
|
|
5972
|
+
* 65% of measured documents carrying zero outbound edges were reaching for.
|
|
5973
|
+
*
|
|
5974
|
+
* THE ANCHOR BINDING (normative). `@unified-product-graph/markdown` already
|
|
5975
|
+
* parses an inline reference form and records the source line of every
|
|
5976
|
+
* occurrence: `[[type:id]]`, `[[type:id|label]]`, `[[type:id|k:v|...]]`,
|
|
5977
|
+
* `[[+type:id]]` for creation, and `[[type:id@product]]` across products. The
|
|
5978
|
+
* grammar is published as Appendix F of the specification paper. The rule that
|
|
5979
|
+
* was missing, and is stated here: an anchor appearing in the body of a
|
|
5980
|
+
* `document` IS a transclusion anchor, and a conformant parser WRITES this edge
|
|
5981
|
+
* beside it. Anchor and edge are one fact recorded twice, so they must be
|
|
5982
|
+
* written together or they drift.
|
|
5983
|
+
*
|
|
5984
|
+
* NO POSITION PROPERTY, deliberately. The obvious `anchor_line` is the most
|
|
5985
|
+
* volatile value a text document has: every insertion above moves every anchor
|
|
5986
|
+
* below, so a stored line number is wrong after the next paragraph and nothing
|
|
5987
|
+
* reports the drift. The anchor IS the position, and it lives in the prose
|
|
5988
|
+
* where ordinary editing moves it for free. What the law asks is that the edge
|
|
5989
|
+
* be written BESIDE the anchor, which is a write-time discipline rather than a
|
|
5990
|
+
* stored field.
|
|
5991
|
+
*
|
|
5992
|
+
* `deliberate_only`, and the 0.33.0 trap is why that is safe here. Flagging a
|
|
5993
|
+
* widened edge `deliberate_only` silently switched five adapters off in the
|
|
5994
|
+
* last release, two of them under a green suite. The rule that came out of it:
|
|
5995
|
+
* an adapter reading an explicit field the SOURCE stores carries an authored
|
|
5996
|
+
* fact rather than an inferred one and must emit deliberate-only edges
|
|
5997
|
+
* EXPLICITLY. A `[[type:id]]` anchor is as explicit as a source gets, because a
|
|
5998
|
+
* person typed it, so the markdown emitter keys on the ANCHOR and never on the
|
|
5999
|
+
* `node` wildcard. No generic pair-resolution path may ever produce one.
|
|
6000
|
+
*/
|
|
6001
|
+
document_transcludes_node: {
|
|
6002
|
+
forward_verb: string;
|
|
6003
|
+
reverse_verb: string;
|
|
6004
|
+
classification: "semantic";
|
|
6005
|
+
source_type: string;
|
|
6006
|
+
target_type: string;
|
|
6007
|
+
deliberate_only: true;
|
|
6008
|
+
};
|
|
5801
6009
|
product_educates_via_education_program: {
|
|
5802
6010
|
forward_verb: string;
|
|
5803
6011
|
reverse_verb: string;
|
|
@@ -5959,6 +6167,13 @@ declare const UPG_EDGE_CATALOG: {
|
|
|
5959
6167
|
source_type: string;
|
|
5960
6168
|
target_type: string;
|
|
5961
6169
|
};
|
|
6170
|
+
person_holds_role: {
|
|
6171
|
+
forward_verb: string;
|
|
6172
|
+
reverse_verb: string;
|
|
6173
|
+
classification: "semantic";
|
|
6174
|
+
source_type: string;
|
|
6175
|
+
target_type: string;
|
|
6176
|
+
};
|
|
5962
6177
|
team_staffed_with_role: {
|
|
5963
6178
|
forward_verb: string;
|
|
5964
6179
|
reverse_verb: string;
|
|
@@ -6029,6 +6244,13 @@ declare const UPG_EDGE_CATALOG: {
|
|
|
6029
6244
|
source_type: string;
|
|
6030
6245
|
target_type: string;
|
|
6031
6246
|
};
|
|
6247
|
+
stakeholder_invested_in_outcome: {
|
|
6248
|
+
forward_verb: string;
|
|
6249
|
+
reverse_verb: string;
|
|
6250
|
+
classification: "cross-domain";
|
|
6251
|
+
source_type: string;
|
|
6252
|
+
target_type: string;
|
|
6253
|
+
};
|
|
6032
6254
|
team_okr_aligns_with_objective: {
|
|
6033
6255
|
forward_verb: string;
|
|
6034
6256
|
reverse_verb: string;
|
|
@@ -6268,6 +6490,20 @@ declare const UPG_EDGE_CATALOG: {
|
|
|
6268
6490
|
source_type: string;
|
|
6269
6491
|
target_type: string;
|
|
6270
6492
|
};
|
|
6493
|
+
risk_threatens_node: {
|
|
6494
|
+
forward_verb: string;
|
|
6495
|
+
reverse_verb: string;
|
|
6496
|
+
classification: "cross-domain";
|
|
6497
|
+
source_type: string;
|
|
6498
|
+
target_type: string;
|
|
6499
|
+
};
|
|
6500
|
+
risk_mitigated_by_node: {
|
|
6501
|
+
forward_verb: string;
|
|
6502
|
+
reverse_verb: string;
|
|
6503
|
+
classification: "cross-domain";
|
|
6504
|
+
source_type: string;
|
|
6505
|
+
target_type: string;
|
|
6506
|
+
};
|
|
6271
6507
|
data_contract_governs_data_source: {
|
|
6272
6508
|
forward_verb: string;
|
|
6273
6509
|
reverse_verb: string;
|
|
@@ -8782,7 +9018,7 @@ declare function isDeliberateOnlyEdge(type: string): boolean;
|
|
|
8782
9018
|
/**
|
|
8783
9019
|
* Canonical allow-list of edges that use the `'node'` wildcard endpoint.
|
|
8784
9020
|
*
|
|
8785
|
-
*
|
|
9021
|
+
* Sixteen semantic families are sanctioned. The count and the partition are
|
|
8786
9022
|
* asserted in `spec-integrity.test.ts`, so this list cannot silently fall out
|
|
8787
9023
|
* of step with the array below the way it did between 0.28.0 and 0.31.0:
|
|
8788
9024
|
*
|
|
@@ -8840,12 +9076,53 @@ declare function isDeliberateOnlyEdge(type: string): boolean;
|
|
|
8840
9076
|
* `delivers` and NOT `contains`, because a containment verb would oblige a
|
|
8841
9077
|
* `UPG_VALID_CHILDREN` pair that a wildcard endpoint can never supply; the
|
|
8842
9078
|
* parent axis is containment and the project axis is a reference.
|
|
8843
|
-
*
|
|
8844
|
-
*
|
|
8845
|
-
*
|
|
8846
|
-
*
|
|
9079
|
+
* 15. **Document transclusion** (0.34.0): a document embeds a node's live value
|
|
9080
|
+
* at a position in its prose. The only family whose target set is open by
|
|
9081
|
+
* NATURE rather than by a bounded enumeration nobody wanted to write out:
|
|
9082
|
+
* anything renderable can be embedded. Deliberately NOT merged with the
|
|
9083
|
+
* nine-member `document_describes_*` family, which says the document is ABOUT
|
|
9084
|
+
* a thing rather than that it renders it.
|
|
9085
|
+
* 16. **Risk exposure** (0.35.0): what a risk puts at stake, and what mitigates
|
|
9086
|
+
* it. Deliberately mirrors family 2 ("decision-to-anything") with `risk` in
|
|
9087
|
+
* the source slot, for the same reason: both target sets are open (outcome,
|
|
9088
|
+
* key_result, release, service, contract, launch on one side; decision,
|
|
9089
|
+
* feature, experiment, security_control on the other) and neither endpoint
|
|
9090
|
+
* carries a structural role. Both `cross-domain`, so the containment tree is
|
|
9091
|
+
* untouched. The typed `security_control_mitigates_threat` is NOT absorbed:
|
|
9092
|
+
* it stays the security-domain edge, and this is the product generalisation.
|
|
9093
|
+
*
|
|
9094
|
+
* Adding a new polymorphic edge requires extending this array AND naming the
|
|
9095
|
+
* family it joins in `UPG_POLYMORPHIC_EDGE_FAMILIES` below, which the
|
|
9096
|
+
* spec-integrity regression test asserts against. That forces a conscious
|
|
9097
|
+
* decision and keeps consumers (MCP, Entopo, audit tools, the editorial gate)
|
|
9098
|
+
* able to enumerate the full set and attribute a wildcard edge to real types.
|
|
8847
9099
|
*/
|
|
8848
9100
|
declare const UPG_POLYMORPHIC_EDGE_KEYS: readonly _UPGEdgeTypeLocal[];
|
|
9101
|
+
/**
|
|
9102
|
+
* The partition of `UPG_POLYMORPHIC_EDGE_KEYS` into named families.
|
|
9103
|
+
*
|
|
9104
|
+
* @remarks
|
|
9105
|
+
* WHY THIS IS AN EXPORT AND NOT A TEST LITERAL. It lived inside
|
|
9106
|
+
* `spec-integrity.test.ts` until 0.34.0, which made it unreachable by every
|
|
9107
|
+
* consumer that needs it, and there is now a real one: `check:editorial` matches
|
|
9108
|
+
* `source_type === type` and `target_type === type` LITERALLY when it derives an
|
|
9109
|
+
* entity's attached-edge set, so an edge whose endpoint is the `node` wildcard is
|
|
9110
|
+
* attributed to nobody. `project_delivers_work_item` moved zero fingerprints on
|
|
9111
|
+
* `task`, `bug`, `user_story` or `feature`. A gate cannot fix that without a map
|
|
9112
|
+
* from a wildcard key to the types the family actually ranges over, and duplicating
|
|
9113
|
+
* the map in the gate would recreate the drift the test was written to catch.
|
|
9114
|
+
*
|
|
9115
|
+
* THE MEMBER LIST IS THE KEYS, NOT THE TYPES. A family names which polymorphic
|
|
9116
|
+
* KEYS belong together. What a consumer does with that — which concrete entity
|
|
9117
|
+
* types to attribute a wildcard edge to — is its own decision, made against the
|
|
9118
|
+
* catalog. This export does not pretend to answer it.
|
|
9119
|
+
*
|
|
9120
|
+
* The prose list in the JSDoc above drifted once already: it still read "Eight
|
|
9121
|
+
* semantic families" after the ninth and tenth had shipped. `spec-integrity`
|
|
9122
|
+
* asserts this object against `UPG_POLYMORPHIC_EDGE_KEYS` in both directions, so
|
|
9123
|
+
* a new key fails until its author names the family it joins.
|
|
9124
|
+
*/
|
|
9125
|
+
declare const UPG_POLYMORPHIC_EDGE_FAMILIES: Readonly<Record<string, readonly _UPGEdgeTypeLocal[]>>;
|
|
8849
9126
|
/**
|
|
8850
9127
|
* True if the edge uses the `'node'` wildcard at either endpoint. Derived
|
|
8851
9128
|
* dynamically from `source_type`/`target_type`, not from the allow-list,
|
|
@@ -8894,6 +9171,47 @@ declare function getEdgePropertySchema(type: string): PropertySchema | undefined
|
|
|
8894
9171
|
|
|
8895
9172
|
/** Union of all edge type keys from the canonical edge registry */
|
|
8896
9173
|
type UPGEdgeType = keyof typeof UPG_EDGE_CATALOG;
|
|
9174
|
+
/**
|
|
9175
|
+
* Where an edge came from, when it was not authored directly.
|
|
9176
|
+
*
|
|
9177
|
+
* @remarks
|
|
9178
|
+
* WHY UNGATED, and the precedent settles it. The obvious objection is that this
|
|
9179
|
+
* belongs behind `carries_properties`. It does not: `mapping_confidence` is
|
|
9180
|
+
* ALREADY an ungated provenance field on every edge. The `carries_properties`
|
|
9181
|
+
* gate exists to keep semantic edges free of domain PAYLOAD — a MoSCoW bucket, a
|
|
9182
|
+
* RICE score, a canvas slot, facts about the relationship's content. Provenance
|
|
9183
|
+
* is not content; it is a fact about the record, in the same class as the field
|
|
9184
|
+
* already sitting ungated beside it. Gating it would mean an edge has to opt in
|
|
9185
|
+
* to having a history, which is the wrong shape for a universal fact and would
|
|
9186
|
+
* make an emission pass check whether the edge it is writing is allowed to
|
|
9187
|
+
* remember anything.
|
|
9188
|
+
*
|
|
9189
|
+
* WHY NESTED, and it is a collision rather than a preference. `UPGEdge.source`
|
|
9190
|
+
* already means the source NODE. A flat `source_id` copied from the node side
|
|
9191
|
+
* would sit one character from it and mean something entirely different — the
|
|
9192
|
+
* exact misreading generator `external_refs` was rejected for at 0.33.0. Nesting
|
|
9193
|
+
* removes the collision completely and costs one field.
|
|
9194
|
+
*
|
|
9195
|
+
* WHY IT EXISTS AT ALL. The node side has carried `source_id`, `source_type`,
|
|
9196
|
+
* `mapping_confidence`, `external_tool`, `external_ref`, `external_id` and, since
|
|
9197
|
+
* 0.33.0, `created_at` / `updated_at`. A node knows where it came from; an edge
|
|
9198
|
+
* knew only how sure the importer was. A bulk emission of 651 derived edges had
|
|
9199
|
+
* nowhere ON THE EDGE to record derived-by-what, from-which-fact, or when, so the
|
|
9200
|
+
* record lived in a sidecar ledger outside the graph. That is the sibling of the
|
|
9201
|
+
* question documents-as-entities exists to answer: provenance belongs to the
|
|
9202
|
+
* thing, not beside it.
|
|
9203
|
+
*
|
|
9204
|
+
* NOT a substitute for `mapping_confidence`, which answers a different question
|
|
9205
|
+
* (how sure an import was that this edge TYPE was right) and stays where it is.
|
|
9206
|
+
*/
|
|
9207
|
+
interface UPGEdgeProvenance {
|
|
9208
|
+
/** The tool or pass that derived it. Same posture as `UPGBaseNode.external_tool`. */
|
|
9209
|
+
tool?: string;
|
|
9210
|
+
/** The fact it was derived FROM: a source field, a property key, a ledger id. */
|
|
9211
|
+
from?: string;
|
|
9212
|
+
/** ISO timestamp of the derivation. */
|
|
9213
|
+
at?: ISODateTime;
|
|
9214
|
+
}
|
|
8897
9215
|
/** Interface for a semantic relationship between two nodes */
|
|
8898
9216
|
interface UPGEdge {
|
|
8899
9217
|
/** Unique identifier within the graph */
|
|
@@ -8908,15 +9226,30 @@ interface UPGEdge {
|
|
|
8908
9226
|
mapping_confidence?: UPGMappingConfidence;
|
|
8909
9227
|
/**
|
|
8910
9228
|
* Edge-scoped properties. Permitted ONLY on edge types whose catalog
|
|
8911
|
-
* definition sets `carries_properties: true`
|
|
8912
|
-
*
|
|
8913
|
-
*
|
|
8914
|
-
*
|
|
8915
|
-
*
|
|
8916
|
-
*
|
|
8917
|
-
*
|
|
9229
|
+
* definition sets `carries_properties: true`. `framework_exercise_includes_node`
|
|
9230
|
+
* is the archetype, storing a framework's per-entity result here (a MoSCoW
|
|
9231
|
+
* bucket, a RICE score, a canvas slot, a funnel stage). A value that exists
|
|
9232
|
+
* only within a specific exercise of a framework is a fact about the
|
|
9233
|
+
* *relationship*, not about either endpoint, so it belongs on the edge. Plain
|
|
9234
|
+
* semantic edges stay payload-free; validators reject `properties` on edges
|
|
9235
|
+
* that do not opt in.
|
|
9236
|
+
*
|
|
9237
|
+
* @remarks
|
|
9238
|
+
* CORRECTED 0.34.0. This said the gate applies "currently the
|
|
9239
|
+
* `framework_exercise_includes_node` edge". ELEVEN catalog edges set
|
|
9240
|
+
* `carries_properties: true`. One word — "currently" — was doing the work of a
|
|
9241
|
+
* gate nobody wired, and the sentence had been wrong for ten mints. The set is
|
|
9242
|
+
* derivable from the catalog and is not restated here, for the reason this
|
|
9243
|
+
* correction exists: a hand-maintained census in a comment is a claim with
|
|
9244
|
+
* nothing recomputing it.
|
|
9245
|
+
*
|
|
9246
|
+
* NOT the home for provenance. See `provenance` below: a fact about the record
|
|
9247
|
+
* is not domain payload, and requiring an opt-in to have a history is the wrong
|
|
9248
|
+
* shape.
|
|
8918
9249
|
*/
|
|
8919
9250
|
properties?: Record<string, unknown>;
|
|
9251
|
+
/** Where this edge came from, when it was not authored directly. */
|
|
9252
|
+
provenance?: UPGEdgeProvenance;
|
|
8920
9253
|
}
|
|
8921
9254
|
|
|
8922
9255
|
/**
|
|
@@ -8975,6 +9308,26 @@ type UPGProductStage = 'concept' | 'validation' | 'build' | 'beta' | 'launch' |
|
|
|
8975
9308
|
* stable half of the whitelist (these change rarely); the growing, dual-registered
|
|
8976
9309
|
* half is derived from the `cross_product_eligible` catalog flag — see
|
|
8977
9310
|
* `CrossProductEligibleEdgeType` and `UPG_CROSS_ELIGIBLE_CATALOG_EDGE_TYPES`.
|
|
9311
|
+
*
|
|
9312
|
+
* @remarks
|
|
9313
|
+
* DECLARED AND UNENFORCED (recorded 0.34.0, exhaustively). No WRITER reads this
|
|
9314
|
+
* array. Not the SDK, not the local MCP server, not the cloud server, not the
|
|
9315
|
+
* graph service. Outside `node_modules` and `dist` it is referenced by its own
|
|
9316
|
+
* definition, two prose comments, one spec test, `check-editorial.mjs`, one
|
|
9317
|
+
* generated mirror, and documents. The tier is a declared vocabulary that nothing
|
|
9318
|
+
* validates at write time, so a graph can carry one of these types anywhere and no
|
|
9319
|
+
* gate objects.
|
|
9320
|
+
*
|
|
9321
|
+
* That is worth stating rather than leaving to be rediscovered, because it changes
|
|
9322
|
+
* what a "non-colliding key" would buy. A within-graph edge minted under a key that
|
|
9323
|
+
* does not collide with one of these would not be safe BECAUSE nothing collides at
|
|
9324
|
+
* runtime; it would be safe by discipline. Discipline and a guarantee should not be
|
|
9325
|
+
* confused in a comment that reads like a contract.
|
|
9326
|
+
*
|
|
9327
|
+
* This is the third artifact damaged by reading one of the two edge registries in
|
|
9328
|
+
* isolation, after the vocabulary check (fixed 0.33.0) and the withdrawn 0.33.0
|
|
9329
|
+
* Item G. The fingerprint half of `check:editorial` was the fourth and is fixed in
|
|
9330
|
+
* 0.34.0.
|
|
8978
9331
|
*/
|
|
8979
9332
|
declare const UPG_CROSS_ONLY_EDGE_TYPES: readonly ["shares_persona", "shares_competitor", "shares_metric", "shares_job", "shares_need", "depends_on_product", "cannibalises", "succeeds", "hosts", "contributes_to", "rolls_up_to", "instance_of", "area_serves_persona", "area_targets_market_segment", "product_implements_specification", "product_exposes_specification", "feature_conforms_to_specification", "api_contract_speaks_specification", "product_exposes_primitive", "feature_manipulates_primitive", "primitive_stored_as_data_type"];
|
|
8980
9333
|
/** One portfolio-native cross-product edge type (see `UPG_CROSS_ONLY_EDGE_TYPES`). */
|
|
@@ -9384,6 +9737,48 @@ declare function migrateProductStage<T extends string | undefined | null>(stage:
|
|
|
9384
9737
|
*/
|
|
9385
9738
|
declare function isLegacyProductStage(stage: unknown): stage is string;
|
|
9386
9739
|
|
|
9740
|
+
/**
|
|
9741
|
+
* The authored one-line description of every entity type.
|
|
9742
|
+
*
|
|
9743
|
+
* WHY THIS LIVES IN THE SPEC PACKAGE (0.34.1). It used to live only in the
|
|
9744
|
+
* documentation site's generator, which is an application. That put the one
|
|
9745
|
+
* sentence explaining what a type IS somewhere no consumer of the format could
|
|
9746
|
+
* reach: `get_entity_schema` returned `type, domain, expected_properties,
|
|
9747
|
+
* edges_out, edges_in, domain_guide` and no description, and
|
|
9748
|
+
* `get_catalog_entry({ kind: 'entity_meta' })` returned `name, type_id,
|
|
9749
|
+
* maturity, since, domain_id` and no description. The MCP server's own
|
|
9750
|
+
* instructions say "Before creating an entity or edge, call `get_entity_schema`
|
|
9751
|
+
* for the type", and the sentence that answers the question the caller actually
|
|
9752
|
+
* has was the one thing that call did not return.
|
|
9753
|
+
*
|
|
9754
|
+
* It also meant 0.32.1's editorial gate — which turns a release red until every
|
|
9755
|
+
* type has an authored description, after 0.32.0 shipped `capture` with the
|
|
9756
|
+
* generator's fallback text — protected a surface no agent could see.
|
|
9757
|
+
*
|
|
9758
|
+
* PULLED FORWARD BY NECESSITY, and worth saying plainly: promoting these to a
|
|
9759
|
+
* public export was a banked item, not a planned part of this patch. There is no
|
|
9760
|
+
* other way for an agent surface to return an authored description, because the
|
|
9761
|
+
* only authored copy was in an app. The alternative was a second copy in this
|
|
9762
|
+
* package, and a second copy of a hand-maintained string table is the exact
|
|
9763
|
+
* defect the derived base-node field list exists to prevent.
|
|
9764
|
+
*
|
|
9765
|
+
* SINGLE SOURCE. The site generator now READS this table instead of holding its
|
|
9766
|
+
* own; `check:generated` proves the emitted site data is unchanged by the move.
|
|
9767
|
+
* A new entity type without an entry here is caught by `check:editorial`.
|
|
9768
|
+
*
|
|
9769
|
+
* Descriptions are prose for a human reader and carry no contract. The
|
|
9770
|
+
* normative statements about a type are its properties, its edges and its
|
|
9771
|
+
* lifecycle.
|
|
9772
|
+
*/
|
|
9773
|
+
declare const UPG_ENTITY_DESCRIPTIONS: Readonly<Record<string, string>>;
|
|
9774
|
+
/**
|
|
9775
|
+
* The authored description for an entity type, or `undefined`.
|
|
9776
|
+
*
|
|
9777
|
+
* A lookup rather than direct indexing so a caller handed a runtime string does
|
|
9778
|
+
* not have to assert the key exists.
|
|
9779
|
+
*/
|
|
9780
|
+
declare function getEntityDescription(type: string): string | undefined;
|
|
9781
|
+
|
|
9387
9782
|
/**
|
|
9388
9783
|
* UPG Entity Type Metadata. Immutable `type_id`, human-readable `name`,
|
|
9389
9784
|
* `maturity` (draft → proposed → stable → deprecated → removed), and version
|
|
@@ -17524,7 +17919,7 @@ interface ComplianceRequirementProperties {
|
|
|
17524
17919
|
* @example
|
|
17525
17920
|
* const properties: RiskProperties = {
|
|
17526
17921
|
* risk_type: 'technical',
|
|
17527
|
-
*
|
|
17922
|
+
* likelihood: 4,
|
|
17528
17923
|
* impact: 4,
|
|
17529
17924
|
* }
|
|
17530
17925
|
*/
|
|
@@ -17538,11 +17933,74 @@ interface RiskProperties {
|
|
|
17538
17933
|
* parallel `risk_domain` field free to drift from this one.
|
|
17539
17934
|
*/
|
|
17540
17935
|
risk_type?: 'technical' | 'business' | 'legal' | 'security' | 'operational' | 'program';
|
|
17541
|
-
/**
|
|
17936
|
+
/**
|
|
17937
|
+
* How likely this risk is to materialise. Rated on `likelihood_5`
|
|
17938
|
+
* (Rare → Almost certain).
|
|
17939
|
+
* @remarks
|
|
17940
|
+
* Canonical name since 0.35.0, superseding `probability` below. Three
|
|
17941
|
+
* reasons, in order of weight. (1) `probability` was one name for two
|
|
17942
|
+
* incompatible types (`UPGAssessment` here, a bare `number` on
|
|
17943
|
+
* `forecast.probability`), and `PROPERTY_SCALE_MAP` is keyed by name alone,
|
|
17944
|
+
* so a sales percentage and a risk judgment resolved to the same ladder.
|
|
17945
|
+
* (2) `likelihood` is already the spec's own word: the RISK_ITEM lifecycle
|
|
17946
|
+
* prose says "Likelihood and impact have been evaluated", and
|
|
17947
|
+
* `threat.likelihood` has been a `UPGAssessment` all along: one name, one
|
|
17948
|
+
* type, one ladder. (3) ISO 31000 says likelihood.
|
|
17949
|
+
*
|
|
17950
|
+
* The ladder moved with the name: `likelihood_5` is new in 0.35.0 because no
|
|
17951
|
+
* probability ladder existed and `confidence_5` is epistemic. It says how
|
|
17952
|
+
* sure the assessor is, not how likely the event is.
|
|
17953
|
+
*/
|
|
17954
|
+
likelihood?: UPGAssessment;
|
|
17955
|
+
/**
|
|
17956
|
+
* How likely this risk is to materialise (1 = unlikely, 5 = near certain).
|
|
17957
|
+
* @deprecated since="0.35.0" removeIn="1.0.0". Use `likelihood`, which is the
|
|
17958
|
+
* spec's own word for this in the risk lifecycle and on `threat`.
|
|
17959
|
+
*
|
|
17960
|
+
* Both names resolve to the same `likelihood_5` ladder for the length of the
|
|
17961
|
+
* deprecation window (`PROPERTY_SCALE_MAP_BY_ENTITY.risk.probability`,
|
|
17962
|
+
* Captain-ratified 2026-08-22): a deprecated field that renders on a
|
|
17963
|
+
* DIFFERENT ladder from its replacement would make one stored 4 read
|
|
17964
|
+
* "Confident" under the old name and "Likely" under the new one, which is the
|
|
17965
|
+
* data changing meaning at the rename, which is the exact thing staging
|
|
17966
|
+
* exists to prevent. `forecast.probability` is untouched and stays on `confidence_5`.
|
|
17967
|
+
*
|
|
17968
|
+
* STAGED, not renamed. The field is KEPT and still read: 0.35.0 changes what
|
|
17969
|
+
* writers emit and what readers prefer, and changes NO stored bytes. A graph
|
|
17970
|
+
* written before 0.35.0 carries `probability` and no `likelihood`, and reads
|
|
17971
|
+
* correctly, which is the whole point of staging it.
|
|
17972
|
+
*
|
|
17973
|
+
* Writers: emit `likelihood`. Readers: prefer `likelihood`, fall back to
|
|
17974
|
+
* `probability`. The fallback is a CONTRACT on consumers, not executable
|
|
17975
|
+
* spec machinery, exactly as it is for `epic.estimate` → `effort`.
|
|
17976
|
+
*
|
|
17977
|
+
* `removeIn="1.0.0"` is a deadline, not a wish: at 1.0.0 this field is
|
|
17978
|
+
* dropped by a `drop_props` rule in `UPG_PROPERTY_MIGRATIONS`, the same
|
|
17979
|
+
* two-step the `removeIn="0.5.0"` properties followed (declared at 0.4.0,
|
|
17980
|
+
* dropped by the 0.5.0 rules). Until then there is deliberately no
|
|
17981
|
+
* executable rule: see the `'0.35.0'` block in `grammar/migrations.ts`.
|
|
17982
|
+
*/
|
|
17542
17983
|
probability?: UPGAssessment;
|
|
17543
|
-
/**
|
|
17984
|
+
/**
|
|
17985
|
+
* Severity of consequences if the risk materialises. Rated on `severity_5`
|
|
17986
|
+
* (Mild inconvenience → Blocker), NOT the benefit-framed `impact_5`.
|
|
17987
|
+
* @remarks
|
|
17988
|
+
* The ladder is set by `PROPERTY_SCALE_MAP_BY_ENTITY.risk.impact` (0.35.0),
|
|
17989
|
+
* the per-entity override layer. `impact` legitimately means magnitude of
|
|
17990
|
+
* BENEFIT on discovery and market entities, where high is good; on a risk it
|
|
17991
|
+
* means severity of harm, where high is bad. Sharing `impact_5` rendered a
|
|
17992
|
+
* catastrophic risk green.
|
|
17993
|
+
*/
|
|
17544
17994
|
impact?: UPGAssessment;
|
|
17545
|
-
/**
|
|
17995
|
+
/**
|
|
17996
|
+
* Planned or implemented mitigation strategy, as prose.
|
|
17997
|
+
* @remarks
|
|
17998
|
+
* Prose only. A structured list of mitigating ACTIONS is a set of edges:
|
|
17999
|
+
* `risk_mitigated_by_node` (0.35.0), pointing at the decisions, features and
|
|
18000
|
+
* experiments that actually do the mitigating; a string array of them is
|
|
18001
|
+
* unqueryable by construction. Likewise, what the risk puts at stake is
|
|
18002
|
+
* `risk_threatens_node`, not a scope-list property.
|
|
18003
|
+
*/
|
|
17546
18004
|
mitigation?: string;
|
|
17547
18005
|
}
|
|
17548
18006
|
/** Data contract.
|
|
@@ -17641,16 +18099,41 @@ interface TeamProperties {
|
|
|
17641
18099
|
* `ENTP-2`, ...).
|
|
17642
18100
|
*
|
|
17643
18101
|
* @remarks
|
|
17644
|
-
* SUPERSEDES `product.key_prefix` FOR THIS PRODUCT
|
|
17645
|
-
*
|
|
17646
|
-
*
|
|
17647
|
-
*
|
|
17648
|
-
*
|
|
17649
|
-
*
|
|
18102
|
+
* SUPERSEDES `product.key_prefix` FOR THIS PRODUCT, AND NOTHING ELSE
|
|
18103
|
+
* (normative, narrowed in 0.34.0). The moment any team declares a prefix, the
|
|
18104
|
+
* PRODUCT-LEVEL prefix stops being consulted. A product-level prefix that still
|
|
18105
|
+
* resolved would win on order alone, and a multi-team product would then
|
|
18106
|
+
* silently mint everything under it, which is the defect this field exists to
|
|
18107
|
+
* end.
|
|
18108
|
+
*
|
|
18109
|
+
* THE CANDIDATE SET IS THE UNION OF DECLARED AND OBSERVED PREFIXES. A
|
|
18110
|
+
* declaration adds a candidate; it does not remove one. A prefix stops being
|
|
18111
|
+
* offered only when something claims it or when nothing has ever minted under
|
|
18112
|
+
* it, and while more than one candidate stands the create surface keeps asking.
|
|
18113
|
+
*
|
|
18114
|
+
* WHY THIS WAS NARROWED, stated because 0.33.0 shipped the wider reading and an
|
|
18115
|
+
* implementer built against it. The paragraph above made ANY declaration replace
|
|
18116
|
+
* the candidate set outright, and its own stated rationale is entirely about
|
|
18117
|
+
* `product.key_prefix`: a SINGLE STRING, declared once, that cannot represent
|
|
18118
|
+
* two teams. An OBSERVED prefix is not that. It is evidence of a namespace
|
|
18119
|
+
* already in active use. Suppressing it reproduces the precise defect this field
|
|
18120
|
+
* exists to end, inside one product, and does so silently. Measured on the only
|
|
18121
|
+
* keyed graph in the estate: it carries two observed prefixes, 370 keys under
|
|
18122
|
+
* one and 662 under the other, and declares neither. Under the wider reading,
|
|
18123
|
+
* one team declaring the smaller prefix collapses the candidate set to it, the
|
|
18124
|
+
* picker disappears, and every later create mints under it, including the 662
|
|
18125
|
+
* keys' worth of work belonging to the other namespace. The sentence over-reached
|
|
18126
|
+
* beyond its own reason, and this narrows it back to that reason.
|
|
18127
|
+
*
|
|
18128
|
+
* Shipped as a CHANGE in 0.34.0 rather than as a patch correction. Read as a
|
|
18129
|
+
* correction it is defensible, but implementers had already built to the wider
|
|
18130
|
+
* text, and moving a contract under them in a patch is how a patch becomes a
|
|
18131
|
+
* surprise.
|
|
17650
18132
|
*
|
|
17651
18133
|
* A DECLARED PREFIX IS A CANDIDATE BEFORE IT IS OBSERVED. Candidates derived
|
|
17652
18134
|
* only from keys that already exist cannot see a team's first create, which is
|
|
17653
|
-
* the one that most needs asking about.
|
|
18135
|
+
* the one that most needs asking about. That is why declaration ADDS to the
|
|
18136
|
+
* candidate set; it is not a reason for it to subtract.
|
|
17654
18137
|
*
|
|
17655
18138
|
* UNIQUENESS IS PRODUCT-SCOPED, AND A TEAM PREFIX DOES NOT WIDEN IT. The key
|
|
17656
18139
|
* sequence runs per product across entity types, so two teams in one product
|
|
@@ -17683,6 +18166,82 @@ interface TeamProperties {
|
|
|
17683
18166
|
* citation, with nothing objecting. Portfolio-shared team minting is DEFERRED
|
|
17684
18167
|
* until a supra-product uniqueness design exists, rather than approximated.
|
|
17685
18168
|
*
|
|
18169
|
+
* HOW RULE 1 IS DECIDED: THE EVIDENCE RULE (normative, 0.34.0). Rule 1 names a
|
|
18170
|
+
* first product without saying how a minter knows which one it is. It is decided
|
|
18171
|
+
* by EVIDENCE, not by a stored marker: at mint, if any other IN-SCOPE product
|
|
18172
|
+
* already holds a key under the prefix, refuse. Evidence is derivable from the
|
|
18173
|
+
* graphs themselves, needs no migration, cannot go stale, and cannot disagree
|
|
18174
|
+
* with the keys. A durable home marker could do all three, and would mint state
|
|
18175
|
+
* for a fact the graph already carries. The cost is stated rather than hidden:
|
|
18176
|
+
* evidence is SCOPE-DEPENDENT, which is why the scope is ruled below in the same
|
|
18177
|
+
* breath rather than left open.
|
|
18178
|
+
*
|
|
18179
|
+
* THE UNDECIDABLE CASE: NEITHER MINTS (normative, 0.34.0). When two products
|
|
18180
|
+
* already hold keys under one prefix and nothing establishes which was first,
|
|
18181
|
+
* NEITHER mints. No tiebreak is invented. Creation order is not recorded, and
|
|
18182
|
+
* `max(existing)` measures import volume rather than precedence, so any tiebreak
|
|
18183
|
+
* would be a guess wearing a rule, and a silent one, since it would attribute a
|
|
18184
|
+
* namespace to a product with nothing to say it was wrong. Refusing both is the
|
|
18185
|
+
* NO-KEY outcome rule 2 already sanctions, and it is recoverable: once either
|
|
18186
|
+
* product declares the prefix, the other is unambiguous and a backfill can run.
|
|
18187
|
+
*
|
|
18188
|
+
* WHAT "IN SCOPE" MEANS: ENGINE-DEFINED, WITH A FLOOR AND A CEILING (normative,
|
|
18189
|
+
* 0.34.0). The scope over which the evidence rule looks is defined by the
|
|
18190
|
+
* engine, bounded on both sides.
|
|
18191
|
+
*
|
|
18192
|
+
* FLOOR. It MUST include every product the engine can enumerate for this
|
|
18193
|
+
* caller. An engine that looks at fewer products than it can see is choosing
|
|
18194
|
+
* not to notice a collision it could have seen.
|
|
18195
|
+
*
|
|
18196
|
+
* CEILING. It MUST NEVER include a product the caller could not otherwise
|
|
18197
|
+
* read. A wider read is a cross-tenant information channel: refusing a mint
|
|
18198
|
+
* because of a key in a graph the caller cannot see leaks that the graph
|
|
18199
|
+
* exists and what is in it. This half is a security constraint and is not
|
|
18200
|
+
* negotiable.
|
|
18201
|
+
*
|
|
18202
|
+
* PORTFOLIO ALTITUDE IS THE WRONG NORMATIVE ALTITUDE, and it was measured rather
|
|
18203
|
+
* than argued: deleting the portfolio document changes nothing about minting,
|
|
18204
|
+
* because no minter consults the portfolio seam. Stating the invariant there
|
|
18205
|
+
* states it where nobody looks. In practice the local engine's scope is every
|
|
18206
|
+
* graph in the workspace folder and the cloud engine's is the caller's own
|
|
18207
|
+
* product list.
|
|
18208
|
+
*
|
|
18209
|
+
* THE HONEST CONSEQUENCE, which belongs in the text rather than in a later
|
|
18210
|
+
* surprise: the invariant is SCOPE-RELATIVE. Two engines can legitimately
|
|
18211
|
+
* disagree about whether one mint is safe, because they can legitimately see
|
|
18212
|
+
* different sets of products. That is a real limitation of the evidence rule and
|
|
18213
|
+
* the price of the ceiling.
|
|
18214
|
+
*
|
|
18215
|
+
* IMMUTABLE ONCE ANYTHING HAS MINTED UNDER IT, PER PRODUCT (normative, 0.34.0).
|
|
18216
|
+
* Once any key exists under this prefix IN A GIVEN PRODUCT, the declaration
|
|
18217
|
+
* cannot be edited for that product. Refusal-shaped and NO-KEY, matching rule 2:
|
|
18218
|
+
* never an exception, because a keyless create is legal everywhere else in the
|
|
18219
|
+
* ladder.
|
|
18220
|
+
*
|
|
18221
|
+
* SCOPED PER PRODUCT, NOT PER TEAM, and the reason is that `team` is
|
|
18222
|
+
* `portfolio_shared`: a team that has never minted in product B must still be
|
|
18223
|
+
* free to declare there. A per-team global lock would strand it.
|
|
18224
|
+
*
|
|
18225
|
+
* WHAT IT PREVENTS. Without it, a team edits its prefix after four hundred
|
|
18226
|
+
* mints and one product silently carries two number lines under two names,
|
|
18227
|
+
* with nothing recording that they were ever one sequence.
|
|
18228
|
+
*
|
|
18229
|
+
* RENAMING STAYS POSSIBLE BY THE HONEST ROUTE: a migration that rewrites the
|
|
18230
|
+
* existing keys. That is a deliberate act with a visible cost, which is the
|
|
18231
|
+
* difference between renaming a namespace and forking it by accident.
|
|
18232
|
+
*
|
|
18233
|
+
* THE PICKER MAY OFFER WHAT THE MINT REFUSES, AND THE SURFACE OWNS THE
|
|
18234
|
+
* DIVERGENCE (0.34.0). Rule 3 applies on the MINT path and not the picker path,
|
|
18235
|
+
* which is deliberate: the picker cannot cheaply know the answer, since knowing
|
|
18236
|
+
* it requires reading other products. The consequence is that a surface can
|
|
18237
|
+
* present a choice that then fails. The owner is named here rather than left
|
|
18238
|
+
* implicit: A CREATE SURFACE THAT OFFERS A PREFIX THE MINT MAY REFUSE MUST BE
|
|
18239
|
+
* ABLE TO REPORT THE REFUSAL, AND MUST BE ABLE TO PRESENT NO-KEY AS AN OUTCOME
|
|
18240
|
+
* RATHER THAN AS AN ERROR. This is a design obligation on the surface, not a
|
|
18241
|
+
* spec mechanic: the spec cannot fix a UX gap and should not pretend to. The
|
|
18242
|
+
* union ruling above shrinks the divergence considerably, because the picker now
|
|
18243
|
+
* keeps asking in exactly the case that would otherwise resolve wrongly.
|
|
18244
|
+
*
|
|
17686
18245
|
* This rule states the CONTRACT. The behaviour belongs to whatever mints keys,
|
|
17687
18246
|
* which is not this package: see `UPGBaseNode.key`.
|
|
17688
18247
|
*
|
|
@@ -17737,6 +18296,11 @@ interface PersonProperties {
|
|
|
17737
18296
|
/** IANA time zone (e.g. "Europe/Berlin"). Useful for capacity / on-call planning. */
|
|
17738
18297
|
time_zone?: string;
|
|
17739
18298
|
}
|
|
18299
|
+
/**
|
|
18300
|
+
* Which way a stakeholder leans. Pairs with `UPG_ENUM_SCALES.EngagementPosture`
|
|
18301
|
+
* for per-value labels and descriptions.
|
|
18302
|
+
*/
|
|
18303
|
+
type EngagementPosture = 'champion' | 'supporter' | 'neutral' | 'skeptic' | 'blocker';
|
|
17740
18304
|
/** Stakeholder entity.
|
|
17741
18305
|
*
|
|
17742
18306
|
* @example
|
|
@@ -17744,6 +18308,8 @@ interface PersonProperties {
|
|
|
17744
18308
|
* stakeholder_type: 'internal',
|
|
17745
18309
|
* influence: 4,
|
|
17746
18310
|
* interest: 4,
|
|
18311
|
+
* engagement_posture: 'skeptic',
|
|
18312
|
+
* engagement_cadence: 'monthly',
|
|
17747
18313
|
* }
|
|
17748
18314
|
*/
|
|
17749
18315
|
interface StakeholderProperties {
|
|
@@ -17753,6 +18319,30 @@ interface StakeholderProperties {
|
|
|
17753
18319
|
influence?: UPGAssessment;
|
|
17754
18320
|
/** How much interest this stakeholder has in the outcome (1 = passive, 5 = deeply invested) */
|
|
17755
18321
|
interest?: UPGAssessment;
|
|
18322
|
+
/**
|
|
18323
|
+
* Which way this stakeholder leans: actively for, actively against, or
|
|
18324
|
+
* neither. The third axis of the stakeholder model (0.35.0), beside the
|
|
18325
|
+
* power/interest grid `influence` and `interest` describe.
|
|
18326
|
+
* @remarks
|
|
18327
|
+
* `influence` and `interest` are magnitudes and carry no direction: a
|
|
18328
|
+
* high-influence, high-interest stakeholder can be the strongest champion or
|
|
18329
|
+
* the one who kills it, and the grid renders them identically. This closed
|
|
18330
|
+
* enum is what makes "who blocks this?" a query rather than a reading
|
|
18331
|
+
* exercise. Pairs with `UPG_ENUM_SCALES.EngagementPosture`. Posture is about
|
|
18332
|
+
* the person's stance; it is NOT delivery health, which belongs to work
|
|
18333
|
+
* items, and NOT the relationship's operational state.
|
|
18334
|
+
*/
|
|
18335
|
+
engagement_posture?: EngagementPosture;
|
|
18336
|
+
/**
|
|
18337
|
+
* How often this stakeholder is engaged. Uses the shared `Cadence` scale.
|
|
18338
|
+
* @remarks
|
|
18339
|
+
* Typed as `Cadence` rather than free text on purpose: v0.4.0 introduced that
|
|
18340
|
+
* enum precisely to retire strings like `"2x/week"`, and a cadence that
|
|
18341
|
+
* cannot be compared across stakeholders cannot answer "who have we not
|
|
18342
|
+
* spoken to this quarter?". WHERE you meet them (the channel) is an
|
|
18343
|
+
* app-level concern and is deliberately not modelled here.
|
|
18344
|
+
*/
|
|
18345
|
+
engagement_cadence?: Cadence;
|
|
17756
18346
|
}
|
|
17757
18347
|
/** TeamOkr entity.
|
|
17758
18348
|
*
|
|
@@ -21062,16 +21652,43 @@ interface UPGViewEdgeClause {
|
|
|
21062
21652
|
* and which still could not express "not (A and B)" as distinct from "(not A)
|
|
21063
21653
|
* and (not B)". A uniform clause list carries it with one flag.
|
|
21064
21654
|
*
|
|
21655
|
+
* A DISCRIMINATED UNION ON `dimension` SINCE 0.34.0, and the reason is that the
|
|
21656
|
+
* two tiers disagreed about types. `values` was `string[]` while the shorthand
|
|
21657
|
+
* `UPGViewQuery.types` is `UPGEntityType[]`, so the FAITHFUL tier admitted a
|
|
21658
|
+
* value the SHORTHAND tier could not describe, and a round-trip through the
|
|
21659
|
+
* shorthand could silently narrow what the clause list said. The shipped example
|
|
21660
|
+
* `{ dimension: 'type', values: ['task', 'bug'] }` puts both halves on one line.
|
|
21661
|
+
* The field evidence is a cast at exactly that boundary in the first consumer,
|
|
21662
|
+
* carrying the comment "the clause list is the authority" — a cast is the tell
|
|
21663
|
+
* that the author knew the tiers disagreed and had to assert past it.
|
|
21664
|
+
*
|
|
21665
|
+
* THIS IS A COMPILE-TIME BREAK AND CALLING IT ADDITIVE WOULD BE DISHONEST. The
|
|
21666
|
+
* WIRE FORMAT does not change at all: the JSON is identical, so there is no
|
|
21667
|
+
* migration, no fixture and no canonical-format entry. What changes is that a
|
|
21668
|
+
* TypeScript consumer writing a plain `string[]` on a `type` clause stops
|
|
21669
|
+
* compiling. Two measured facts make that acceptable: the field shipped ONE
|
|
21670
|
+
* release ago, and the only known consumer already casts at this exact boundary,
|
|
21671
|
+
* so the break lands where someone has already written down why the tiers
|
|
21672
|
+
* disagree. A stated break with one known site is better than a silent narrowing
|
|
21673
|
+
* with none, which is what shipping nothing preserves.
|
|
21674
|
+
*
|
|
21675
|
+
* THE ROUND-TRIP NARROWING RULE (normative, and it holds regardless of the
|
|
21676
|
+
* union, because a union constrains AUTHORS and not JSON arriving from a file).
|
|
21677
|
+
* The clause list is AUTHORITATIVE. The named shorthand fields on
|
|
21678
|
+
* {@link UPGViewQuery} are a positive-only PROJECTION of it. A consumer that
|
|
21679
|
+
* rewrites clauses into shorthand and back MUST NOT narrow the admitted set, and
|
|
21680
|
+
* MUST REFUSE rather than narrow when it cannot represent a clause. Silently
|
|
21681
|
+
* dropping what it cannot express is the one behaviour this rule forbids.
|
|
21682
|
+
*
|
|
21065
21683
|
* @example
|
|
21066
21684
|
* const c: UPGViewClause = { dimension: 'tag', values: ['spike'], negate: true }
|
|
21685
|
+
*
|
|
21686
|
+
* @example
|
|
21687
|
+
* const t: UPGViewClause = { dimension: 'type', values: ['task', 'bug'] }
|
|
21067
21688
|
*/
|
|
21068
|
-
interface
|
|
21069
|
-
/** The axis this clause selects on. */
|
|
21070
|
-
dimension: UPGViewDimension;
|
|
21689
|
+
interface UPGViewClauseBase {
|
|
21071
21690
|
/** Property name when `dimension` is `property`; the date field when `date`. */
|
|
21072
21691
|
field?: string;
|
|
21073
|
-
/** Admitted values. */
|
|
21074
|
-
values?: string[];
|
|
21075
21692
|
/** Present exactly when `dimension` is `date`. */
|
|
21076
21693
|
window?: UPGTimeWindow;
|
|
21077
21694
|
/** Present exactly when `dimension` is `edge`. */
|
|
@@ -21079,6 +21696,19 @@ interface UPGViewClause {
|
|
|
21079
21696
|
/** Negates this clause and only this clause. */
|
|
21080
21697
|
negate?: boolean;
|
|
21081
21698
|
}
|
|
21699
|
+
/** A clause on the `type` axis. `values` are entity types, not free strings. */
|
|
21700
|
+
interface UPGViewTypeClause extends UPGViewClauseBase {
|
|
21701
|
+
dimension: 'type';
|
|
21702
|
+
/** Admitted entity types. */
|
|
21703
|
+
values?: UPGEntityType[];
|
|
21704
|
+
}
|
|
21705
|
+
/** A clause on any axis other than `type`, whose admitted values are strings. */
|
|
21706
|
+
interface UPGViewGenericClause extends UPGViewClauseBase {
|
|
21707
|
+
dimension: Exclude<UPGViewDimension, 'type'>;
|
|
21708
|
+
/** Admitted values. */
|
|
21709
|
+
values?: string[];
|
|
21710
|
+
}
|
|
21711
|
+
type UPGViewClause = UPGViewTypeClause | UPGViewGenericClause;
|
|
21082
21712
|
/** A declarative, portable selection over the graph.
|
|
21083
21713
|
*
|
|
21084
21714
|
* Selection ONLY. What a surface should look like once the nodes are chosen is
|
|
@@ -21223,6 +21853,45 @@ interface UPGViewPresentation {
|
|
|
21223
21853
|
* A consumer may ignore this entirely, render flat, and remain conformant.
|
|
21224
21854
|
*/
|
|
21225
21855
|
nest_by?: string[];
|
|
21856
|
+
/**
|
|
21857
|
+
* What to do with a selected member the nest relation does not reach.
|
|
21858
|
+
* Absent means `'root'`.
|
|
21859
|
+
*
|
|
21860
|
+
* @remarks
|
|
21861
|
+
* THE ASYMMETRY THIS CLOSES. 0.33.0's `nest_by` made NESTING portable and left
|
|
21862
|
+
* the FAILURE of nesting unportable. A member the scope selected that the nest
|
|
21863
|
+
* relation cannot reach may be drawn as an additional root or silently omitted,
|
|
21864
|
+
* both conformant, and the spec could not say which the author meant.
|
|
21865
|
+
*
|
|
21866
|
+
* ABSENT MEANS `'root'`, deliberately, and this is the whole safety argument. A
|
|
21867
|
+
* consumer that ignores this field must never silently DROP a node the scope
|
|
21868
|
+
* admitted. Measured on a real imported tracker graph of 1,118 nodes and 3,685
|
|
21869
|
+
* edges: one tree selects 218 members and renders ONE card under `hide`; three
|
|
21870
|
+
* more go 185 to 1, and one goes 11 to 1. Under absent-means-hide a conformant
|
|
21871
|
+
* consumer renders a blank tree over 218 matching nodes with no way to tell the
|
|
21872
|
+
* author anything is missing. Under absent-means-root, "everything the scope
|
|
21873
|
+
* admits is visible somewhere" becomes a checkable invariant, and the majority
|
|
21874
|
+
* (51 of 57 registry trees prefer hiding) pays for hiding EXPLICITLY — which is
|
|
21875
|
+
* the right way round for a default that decides whether data disappears.
|
|
21876
|
+
*
|
|
21877
|
+
* The orphans ARE the dataset rather than an edge case, and the cause is
|
|
21878
|
+
* structural: tracker-imported work wires through cycle and project relations,
|
|
21879
|
+
* which are reference-axis edges, never nesting, so the containment edges these
|
|
21880
|
+
* trees traverse do not reach it.
|
|
21881
|
+
*
|
|
21882
|
+
* WHY THIS IS SPEC AND NOT APPLICATION CHASSIS, which the filing author first
|
|
21883
|
+
* concluded and measurement overturned. Running the two dispositions changes
|
|
21884
|
+
* WHICH NODES APPEAR, not where pixels go. Presentation is advisory precisely
|
|
21885
|
+
* because a consumer may ignore it and stay conformant, and a field that
|
|
21886
|
+
* decides membership visibility cannot be ignored safely. Selection-class facts
|
|
21887
|
+
* belong in the spec; that is the line, and the measurement is what located it.
|
|
21888
|
+
*
|
|
21889
|
+
* PRESENTATION STAYS ADVISORY OVERALL. This field does not break that: a
|
|
21890
|
+
* consumer may ignore it and remain conformant, because the default it then
|
|
21891
|
+
* applies is the safe one. That property is exactly what the absent-means-root
|
|
21892
|
+
* cut buys.
|
|
21893
|
+
*/
|
|
21894
|
+
orphan_disposition?: 'root' | 'hide';
|
|
21226
21895
|
}
|
|
21227
21896
|
/** A layer whose membership is produced by a query rather than by placement.
|
|
21228
21897
|
*
|
|
@@ -21244,7 +21913,10 @@ interface UPGViewPresentation {
|
|
|
21244
21913
|
interface UPGQueryDrivenLayer {
|
|
21245
21914
|
/**
|
|
21246
21915
|
* When present, membership is DERIVED: members are produced by running this
|
|
21247
|
-
* query rather than authored by placement.
|
|
21916
|
+
* query rather than authored by placement. The clause list is authoritative and
|
|
21917
|
+
* the named fields are a positive-only projection of it; since 0.34.0 a clause
|
|
21918
|
+
* is a discriminated union on `dimension`, so the `type` axis carries entity
|
|
21919
|
+
* types rather than free strings.
|
|
21248
21920
|
*
|
|
21249
21921
|
* @remarks
|
|
21250
21922
|
* This is the portable statement of what the layer shows. On a composition,
|
|
@@ -21264,8 +21936,18 @@ interface UPGQueryDrivenLayer {
|
|
|
21264
21936
|
*/
|
|
21265
21937
|
member_query?: UPGViewQuery;
|
|
21266
21938
|
/**
|
|
21267
|
-
* Advisory rendering intent for the layer as a whole
|
|
21268
|
-
*
|
|
21939
|
+
* Advisory rendering intent for the layer as a whole: `group_by`, `sort`,
|
|
21940
|
+
* `layout`, `nest_by`, and `orphan_disposition` (0.34.0, absent means
|
|
21941
|
+
* `'root'`). A consumer may ignore it entirely and still be conformant,
|
|
21942
|
+
* because every default it then applies is the safe one.
|
|
21943
|
+
*
|
|
21944
|
+
* @remarks
|
|
21945
|
+
* THE DESCRIPTION LISTS THE FIELDS ON PURPOSE. This property is `object` in the
|
|
21946
|
+
* runtime property registry, so an agent reading `get_entity_schema` gets an
|
|
21947
|
+
* opaque blob and this sentence. For an object-typed property the description IS
|
|
21948
|
+
* the declared shape, which is why `check:editorial` hashes it (E.4, 0.34.0) and
|
|
21949
|
+
* why a field added to `UPGViewPresentation` without a word here would be
|
|
21950
|
+
* invisible to every gate and every agent at once.
|
|
21269
21951
|
*/
|
|
21270
21952
|
presentation?: UPGViewPresentation;
|
|
21271
21953
|
}
|
|
@@ -25923,6 +26605,47 @@ interface UPGHeader {
|
|
|
25923
26605
|
* classify base fields use `UPG_BASE_NODE_FIELDS`, not this.
|
|
25924
26606
|
*/
|
|
25925
26607
|
declare const NODE_KEY_ORDER: string[];
|
|
26608
|
+
/**
|
|
26609
|
+
* Canonical key order for a within-graph edge.
|
|
26610
|
+
*
|
|
26611
|
+
* @remarks
|
|
26612
|
+
* EXPORTED AT 0.34.0 so the subset assertion can be written, exactly as
|
|
26613
|
+
* `NODE_KEY_ORDER` was exported at 0.33.0 and for the same reason. K1 of the
|
|
26614
|
+
* 0.33.0 bundle fixed this class for nodes and left both edge twins as
|
|
26615
|
+
* hand-maintained, unexported, unasserted consts — and the very next release
|
|
26616
|
+
* added a field to `UPGEdge`, which is the regression the node-side assertion
|
|
26617
|
+
* exists to prevent. `canonical-format.test.ts` asserts every declared `UPGEdge`
|
|
26618
|
+
* key appears here. A SUBSET, never equality, for the reason the node comment
|
|
26619
|
+
* gives: an equality check would fail on tolerated keys and push the next author
|
|
26620
|
+
* to delete them.
|
|
26621
|
+
*/
|
|
26622
|
+
declare const EDGE_KEY_ORDER: string[];
|
|
26623
|
+
/**
|
|
26624
|
+
* Canonical key order for a portfolio cross-product edge. The third instance of
|
|
26625
|
+
* the class `NODE_KEY_ORDER` fixed at 0.33.0, exported at 0.34.0 with the same
|
|
26626
|
+
* subset assertion.
|
|
26627
|
+
*
|
|
26628
|
+
* @remarks
|
|
26629
|
+
* NO `provenance` ENTRY, deliberately. 0.34.0 added `provenance?` to `UPGEdge`
|
|
26630
|
+
* and NOT to `UPGCrossEdge`, so an entry here would order a key that cannot be
|
|
26631
|
+
* written. The assertion is the point of touching this const at all: it is the
|
|
26632
|
+
* direction that can regress, and the next field added to `UPGCrossEdge` now
|
|
26633
|
+
* cannot go unordered.
|
|
26634
|
+
*
|
|
26635
|
+
* `properties` WAS MISSING UNTIL 0.34.0, and the new assertion found it on its
|
|
26636
|
+
* first run. It has been declared on `UPGCrossEdge` since 0.10.0 (the parity
|
|
26637
|
+
* assessment a `feature_rivals_competitor_feature` cross-edge carries), and it
|
|
26638
|
+
* fell through to the sorted-tail pass instead: deterministic, so nothing was
|
|
26639
|
+
* corrupt, but positioned alphabetically among unlisted keys rather than in the
|
|
26640
|
+
* slot the shape implies. That is precisely the regression the node twin got a
|
|
26641
|
+
* guard for at 0.33.0, sitting unnoticed in the edge twin for eleven minors.
|
|
26642
|
+
*
|
|
26643
|
+
* Measured before changing it, because a canonical-order edit rewrites bytes:
|
|
26644
|
+
* across all 61 cross-edges in the estate, ZERO carry `properties`. So no file
|
|
26645
|
+
* re-serialises differently and the fix is free today, which it would not have
|
|
26646
|
+
* been after the first parity assessment landed.
|
|
26647
|
+
*/
|
|
26648
|
+
declare const CROSS_EDGE_KEY_ORDER: string[];
|
|
25926
26649
|
/** Element counts for a single-product document, as stamped into `$upg.counts`. */
|
|
25927
26650
|
declare function deriveSingleCounts(doc: UPGDocument): Record<string, number>;
|
|
25928
26651
|
/**
|
|
@@ -26063,7 +26786,7 @@ declare function checkHeaderSealText(text: string): UPGHeaderSealReport;
|
|
|
26063
26786
|
* it stamps the `upg_version` field of every `.upg` file written by the SDK.
|
|
26064
26787
|
* The `check:version-lockstep` gate enforces this at release time.
|
|
26065
26788
|
*/
|
|
26066
|
-
declare const UPG_VERSION: "0.
|
|
26789
|
+
declare const UPG_VERSION: "0.35.0";
|
|
26067
26790
|
/**
|
|
26068
26791
|
* The `.upg` JSON document format version. Written to the `upg_version` field.
|
|
26069
26792
|
* Evolves independently from `UPG_VERSION` (the catalogue version).
|
|
@@ -26187,5 +26910,38 @@ declare const UPG_EDGE_COUNT: number;
|
|
|
26187
26910
|
* gap is the deprecated-alias set.
|
|
26188
26911
|
*/
|
|
26189
26912
|
declare const UPG_META_COUNT: number;
|
|
26913
|
+
/**
|
|
26914
|
+
* How much lifecycle vocabulary the spec defines: the number of DISTINCT
|
|
26915
|
+
* (template, phase) pairs across `UPG_LIFECYCLES`.
|
|
26916
|
+
*
|
|
26917
|
+
* @remarks
|
|
26918
|
+
* WHAT IT COUNTS, and the definition IS the decision. A lifecycle is either
|
|
26919
|
+
* generated from a reusable template (`template_id` set) or hand-authored for one
|
|
26920
|
+
* entity type. Two entity types sharing the `OPERATIONAL` template have not
|
|
26921
|
+
* defined its phases twice, so the pair is keyed on the TEMPLATE where there is
|
|
26922
|
+
* one and on the ENTITY TYPE where there is not.
|
|
26923
|
+
*
|
|
26924
|
+
* WHY NOT THE OTHER TWO CANDIDATES, both of which were live when this was wired:
|
|
26925
|
+
*
|
|
26926
|
+
* 869 — every phase row across all 193 lifecycles. The literal size of the
|
|
26927
|
+
* grammar, and it double-counts a template reused by nine entity types. The
|
|
26928
|
+
* number appears in prose as a claim about how much vocabulary the spec HAS,
|
|
26929
|
+
* which is not what 869 measures.
|
|
26930
|
+
*
|
|
26931
|
+
* 334 — carried in planning documents since 0.32.0 and never computed by
|
|
26932
|
+
* anything. It does not reproduce under either real computation. It was
|
|
26933
|
+
* transcribed forward, which is exactly the failure `check:count-drift` exists
|
|
26934
|
+
* to end, and it is recorded here so nobody restores it.
|
|
26935
|
+
*
|
|
26936
|
+
* WIRED INTO `check:count-drift` AT 0.34.0. The condition was declared met in the
|
|
26937
|
+
* 0.33.0 CHANGELOG and deferred on the ground that adding a check would change
|
|
26938
|
+
* the shape of a release ratified as adding none. That ground is gone. Until now
|
|
26939
|
+
* this was the one figure in the truth line that no check asserted, which is why
|
|
26940
|
+
* it is also the one that drifted.
|
|
26941
|
+
*
|
|
26942
|
+
* Derived, never a literal: the count and any docket or CHANGELOG row quoting it
|
|
26943
|
+
* come from this computation, so two numbers cannot be derived twice.
|
|
26944
|
+
*/
|
|
26945
|
+
declare const UPG_PHASE_COUNT: number;
|
|
26190
26946
|
|
|
26191
|
-
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 };
|
|
26947
|
+
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, CROSS_EDGE_KEY_ORDER, 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, EDGE_KEY_ORDER, ENGINEERING_PLATFORM_PLAYBOOK, ENTITY_EMOJI, EXPERIENCE_DESIGN_BRAND_PLAYBOOK, type EdgeCountVsPropertyCheck, type EducationProgramProperties, type EmailSequenceProperties, type EmptyCell, type EmptyCellRationaleKind, type EngagementPosture, 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, PROPERTY_SCALE_MAP_BY_ENTITY, 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 UPGEdgeProvenance, 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 UPGViewGenericClause, type UPGViewPredicate, type UPGViewPresentation, type UPGViewQuery, type UPGViewTypeClause, 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_DESCRIPTIONS, 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_PHASE_COUNT, UPG_PLAYBOOKS, UPG_POLYMORPHIC_EDGE_FAMILIES, 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, getEntityDescription, 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 };
|