@unified-product-graph/core 0.27.0 → 0.28.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/README.md +1 -1
- package/dist/index.cjs +153 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +205 -3
- package/dist/index.d.ts +205 -3
- package/dist/index.js +151 -14
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1808,6 +1808,13 @@ declare const UPG_EDGE_CATALOG: {
|
|
|
1808
1808
|
source_type: string;
|
|
1809
1809
|
target_type: string;
|
|
1810
1810
|
};
|
|
1811
|
+
surface_deviates_via_technical_debt_item: {
|
|
1812
|
+
forward_verb: string;
|
|
1813
|
+
reverse_verb: string;
|
|
1814
|
+
classification: "cross-domain";
|
|
1815
|
+
source_type: string;
|
|
1816
|
+
target_type: string;
|
|
1817
|
+
};
|
|
1811
1818
|
feature_occupies_surface: {
|
|
1812
1819
|
forward_verb: string;
|
|
1813
1820
|
reverse_verb: string;
|
|
@@ -12762,6 +12769,85 @@ type SurfacePersistence = 'always' | 'conditional' | 'on_demand' | 'transient';
|
|
|
12762
12769
|
* - `user_configurable` — the end user chooses what occupies it.
|
|
12763
12770
|
*/
|
|
12764
12771
|
type SurfaceExtensibility = 'closed' | 'plugin_registerable' | 'user_configurable';
|
|
12772
|
+
/** How many instances of the surface exist, in UML multiplicity notation.
|
|
12773
|
+
*
|
|
12774
|
+
* `capacity` counts OCCUPANTS INSIDE one instance; `cardinality` counts the
|
|
12775
|
+
* INSTANCES themselves. A slot with `capacity: 1` still says nothing about
|
|
12776
|
+
* whether the product renders one such slot or forty.
|
|
12777
|
+
*
|
|
12778
|
+
* - `'1'` — exactly one instance, always present.
|
|
12779
|
+
* - `'0..1'` — at most one; may not be rendered at all.
|
|
12780
|
+
* - `'1..n'` — at least one, and more may be rendered.
|
|
12781
|
+
* - `'0..n'` — any number, including none.
|
|
12782
|
+
*
|
|
12783
|
+
* Spelled in UML multiplicity rather than snake_case words because the notation
|
|
12784
|
+
* is the lingua franca for the question and reads unambiguously in a diff. The
|
|
12785
|
+
* registry already carries non-identifier enum values where the domain has its
|
|
12786
|
+
* own notation (`headcount_band: '1-10'`, `openapi_version: 'v3.1'`).
|
|
12787
|
+
*/
|
|
12788
|
+
type SurfaceCardinality = '1' | '0..1' | '1..n' | '0..n';
|
|
12789
|
+
/** What an instance of the surface is scoped to.
|
|
12790
|
+
*
|
|
12791
|
+
* Read with `cardinality`: together they say whether "the product has an
|
|
12792
|
+
* inspector panel" is a true sentence, or whether the truth is "every document
|
|
12793
|
+
* pane has its own inspector panel, and three can show different content at
|
|
12794
|
+
* once". Without this, a graph asserts the former when it means the latter.
|
|
12795
|
+
*
|
|
12796
|
+
* - `global` — one instance serves the whole product; its state is shared.
|
|
12797
|
+
* - `per_parent` — each containing surface owns its own instance with its own
|
|
12798
|
+
* state. "Parent" is the `surface_contains_surface` parent (or the
|
|
12799
|
+
* `screen_renders_surface` host when the surface sits at the top of a screen).
|
|
12800
|
+
*/
|
|
12801
|
+
type SurfaceInstanceScope = 'global' | 'per_parent';
|
|
12802
|
+
/** How the occupants of a surface relate to one another.
|
|
12803
|
+
*
|
|
12804
|
+
* The three modes need genuinely different governance, and conflating them is
|
|
12805
|
+
* what makes a contention check misfire:
|
|
12806
|
+
*
|
|
12807
|
+
* - `exclusive` — one occupant wins and the others are not rendered. This is
|
|
12808
|
+
* contention in the strict sense, and it is the mode that needs an
|
|
12809
|
+
* `arbitration_rule`.
|
|
12810
|
+
* - `additive` — all occupants coexist and are rendered together. Nobody is
|
|
12811
|
+
* suppressed, so the open question is ORDER rather than victory; record the
|
|
12812
|
+
* ordering in `arbitration_rule`.
|
|
12813
|
+
* - `chained` — each occupant WRAPS the next, typically by invoking a
|
|
12814
|
+
* render-default callback it is handed. Not contention but a trust model: an
|
|
12815
|
+
* occupant that never calls the callback silently deletes everything
|
|
12816
|
+
* downstream of it. Many occupants and no arbitration rule is the DESIGNED
|
|
12817
|
+
* shape here, not a defect, so `chained` is exempt from
|
|
12818
|
+
* `contended-surface-without-arbitration`.
|
|
12819
|
+
*
|
|
12820
|
+
* EXEMPTION IS DECLARE-TO-EARN. A surface that leaves `composition_mode` unset
|
|
12821
|
+
* keeps firing the contention check: the default posture stays suspicious, and
|
|
12822
|
+
* silence has to be claimed deliberately. Declaring `chained` is a factual
|
|
12823
|
+
* claim about how the code composes, and claiming it falsely to quiet the check
|
|
12824
|
+
* is the same category of error as filling `arbitration_rule` with a
|
|
12825
|
+
* placeholder.
|
|
12826
|
+
*/
|
|
12827
|
+
type SurfaceCompositionMode = 'exclusive' | 'additive' | 'chained';
|
|
12828
|
+
/** Whether the arbitration answer is enforced, written down, both, or neither.
|
|
12829
|
+
*
|
|
12830
|
+
* `arbitration_rule` is free text and its absence is meaningful, but absence
|
|
12831
|
+
* alone conflates three very different situations with three very different
|
|
12832
|
+
* remediations. This property separates them:
|
|
12833
|
+
*
|
|
12834
|
+
* - `enforced_documented` — the code enforces a rule and `arbitration_rule`
|
|
12835
|
+
* transcribes it. The healthy state.
|
|
12836
|
+
* - `enforced_undocumented` — the code enforces a rule that was never written
|
|
12837
|
+
* down. Remediation is ten minutes of transcription, not a design decision.
|
|
12838
|
+
* - `safe_by_coincidence` — nothing enforces anything, and the surface behaves
|
|
12839
|
+
* only because the occupants happen not to collide (disjoint enum values,
|
|
12840
|
+
* mutually exclusive conditions). The most dangerous state, because it looks
|
|
12841
|
+
* settled from the outside and breaks the first time an occupant is added.
|
|
12842
|
+
* - `none` — nobody ever decided. Remediation is a design meeting.
|
|
12843
|
+
*
|
|
12844
|
+
* THIS IS NOT AN ESCAPE HATCH. Declaring `enforced_documented` does not by
|
|
12845
|
+
* itself silence `contended-surface-without-arbitration`: the detector still
|
|
12846
|
+
* requires a non-empty `arbitration_rule`, so claiming the rule is documented
|
|
12847
|
+
* without documenting it changes nothing. `safe_by_coincidence` and `none`
|
|
12848
|
+
* make the check fire whatever else is recorded, because both are admissions.
|
|
12849
|
+
*/
|
|
12850
|
+
type SurfaceArbitrationState = 'enforced_documented' | 'enforced_undocumented' | 'safe_by_coincidence' | 'none';
|
|
12765
12851
|
/** A place in the UI, its occupants, and the rule that arbitrates between them.
|
|
12766
12852
|
*
|
|
12767
12853
|
* `screen` answers *which route is this?*; `feature_area` answers *who owns
|
|
@@ -12783,6 +12869,7 @@ type SurfaceExtensibility = 'closed' | 'plugin_registerable' | 'user_configurabl
|
|
|
12783
12869
|
* what it draws with: `surface_renders_design_component`
|
|
12784
12870
|
* how it is judged: `surface_measured_by_metric`
|
|
12785
12871
|
* replacement: `surface_supersedes_surface`
|
|
12872
|
+
* intent-versus-reality: `surface_deviates_via_technical_debt_item`
|
|
12786
12873
|
*
|
|
12787
12874
|
* @example
|
|
12788
12875
|
* const properties: SurfaceProperties = {
|
|
@@ -12790,7 +12877,11 @@ type SurfaceExtensibility = 'closed' | 'plugin_registerable' | 'user_configurabl
|
|
|
12790
12877
|
* persistence: 'conditional',
|
|
12791
12878
|
* visibility_condition: 'A node is selected and the inspector is not collapsed.',
|
|
12792
12879
|
* capacity: 1,
|
|
12880
|
+
* cardinality: '0..n',
|
|
12881
|
+
* instance_scope: 'per_parent',
|
|
12882
|
+
* composition_mode: 'exclusive',
|
|
12793
12883
|
* arbitration_rule: 'The most recently selected node wins. A pinned inspector outranks selection until unpinned.',
|
|
12884
|
+
* arbitration_state: 'enforced_documented',
|
|
12794
12885
|
* extensibility: 'plugin_registerable',
|
|
12795
12886
|
* mutates_content: true,
|
|
12796
12887
|
* dimensional_constraint: '292px wide, fixed',
|
|
@@ -12809,7 +12900,16 @@ interface SurfaceProperties {
|
|
|
12809
12900
|
*/
|
|
12810
12901
|
visibility_condition?: string;
|
|
12811
12902
|
/**
|
|
12812
|
-
* How many occupants the surface holds at once, as a
|
|
12903
|
+
* How many occupants ONE INSTANCE of the surface holds at once, as a
|
|
12904
|
+
* non-negative count. Count the instances themselves with `cardinality`.
|
|
12905
|
+
*
|
|
12906
|
+
* CAPACITY IS ALWAYS INTENT, NEVER OBSERVED BEHAVIOUR. It records the cap the
|
|
12907
|
+
* design asserts, so a banner region declared `capacity: 1` keeps saying 1
|
|
12908
|
+
* even after someone finds it rendering four. Reality that has drifted from
|
|
12909
|
+
* the declared intent is recorded as a trackable, assignable debt item on
|
|
12910
|
+
* `surface_deviates_via_technical_debt_item`, not by quietly editing this
|
|
12911
|
+
* number up to match the bug. Editing it to match would destroy the only
|
|
12912
|
+
* record that a gap exists.
|
|
12813
12913
|
*
|
|
12814
12914
|
* ABSENT MEANS UNBOUNDED. UPG has no union-typed property primitive
|
|
12815
12915
|
* (`PropertyDefinition.type` is a single scalar kind), so the proposed
|
|
@@ -12819,6 +12919,24 @@ interface SurfaceProperties {
|
|
|
12819
12919
|
* "nothing may occupy this surface" (a reserved place), not "unbounded".
|
|
12820
12920
|
*/
|
|
12821
12921
|
capacity?: number;
|
|
12922
|
+
/**
|
|
12923
|
+
* How many instances of this surface exist. `capacity` counts occupants
|
|
12924
|
+
* within one instance; this counts the instances.
|
|
12925
|
+
*/
|
|
12926
|
+
cardinality?: SurfaceCardinality;
|
|
12927
|
+
/**
|
|
12928
|
+
* What an instance is scoped to: one shared instance for the product, or one
|
|
12929
|
+
* per containing surface. Decides whether "the product has this surface" is
|
|
12930
|
+
* a true sentence or a per-parent one.
|
|
12931
|
+
*/
|
|
12932
|
+
instance_scope?: SurfaceInstanceScope;
|
|
12933
|
+
/**
|
|
12934
|
+
* How the occupants relate: one wins (`exclusive`), all coexist
|
|
12935
|
+
* (`additive`), or each wraps the next (`chained`). Declaring `chained`
|
|
12936
|
+
* exempts the surface from `contended-surface-without-arbitration`; leaving
|
|
12937
|
+
* this unset does not.
|
|
12938
|
+
*/
|
|
12939
|
+
composition_mode?: SurfaceCompositionMode;
|
|
12822
12940
|
/**
|
|
12823
12941
|
* Who wins when more occupants want the surface than `capacity` allows, and
|
|
12824
12942
|
* why.
|
|
@@ -12830,6 +12948,13 @@ interface SurfaceProperties {
|
|
|
12830
12948
|
* @example "Highest priority wins; ties break to the most recently updated."
|
|
12831
12949
|
*/
|
|
12832
12950
|
arbitration_rule?: string;
|
|
12951
|
+
/**
|
|
12952
|
+
* Whether the arbitration answer is enforced, written down, both, or neither.
|
|
12953
|
+
* Separates "enforced in code but never transcribed" (ten minutes of typing)
|
|
12954
|
+
* from "never decided" (a design meeting) from "safe only because nothing has
|
|
12955
|
+
* collided yet" (the dangerous one).
|
|
12956
|
+
*/
|
|
12957
|
+
arbitration_state?: SurfaceArbitrationState;
|
|
12833
12958
|
/** Who may add occupants to the surface. */
|
|
12834
12959
|
extensibility?: SurfaceExtensibility;
|
|
12835
12960
|
/**
|
|
@@ -20475,6 +20600,15 @@ interface EntityCheck {
|
|
|
20475
20600
|
* 2. `{ property, value }` (0.17.0) — count entities whose `property` equals
|
|
20476
20601
|
* `value`, e.g. `metric` where `designation === 'north_star'`.
|
|
20477
20602
|
* 3. `{ status }` — count entities in a given lifecycle status.
|
|
20603
|
+
* 4. `{ property, present, except_property, except_value }` (0.28.0) — form 1,
|
|
20604
|
+
* but entities whose `except_property` equals `except_value` are removed
|
|
20605
|
+
* from the counted population first. This is what lets a detector carry a
|
|
20606
|
+
* declared exemption: `surface` counts as missing an `arbitration_rule`
|
|
20607
|
+
* unless it has declared `composition_mode: 'chained'`, for which having
|
|
20608
|
+
* no rule is the designed shape rather than an omission. The exclusion is
|
|
20609
|
+
* an intersection, not a marginal, so it cannot be derived from forms 1-3;
|
|
20610
|
+
* collectors compute it from `UPG_PRESENCE_EXCEPT_SPECS`, which is derived
|
|
20611
|
+
* from these filters, and store it under `presenceExceptKey(...)`.
|
|
20478
20612
|
*/
|
|
20479
20613
|
filter?: Record<string, unknown>;
|
|
20480
20614
|
/** Comparison operator */
|
|
@@ -21622,6 +21756,52 @@ interface UPGCuratedAntiPattern {
|
|
|
21622
21756
|
* stable URL fragments and content surfaces.
|
|
21623
21757
|
*/
|
|
21624
21758
|
declare const UPG_ANTI_PATTERNS: readonly UPGCuratedAntiPattern[];
|
|
21759
|
+
/**
|
|
21760
|
+
* One `{ property, present, except_property, except_value }` filter declared
|
|
21761
|
+
* somewhere in `UPG_ANTI_PATTERNS`, flattened for collectors.
|
|
21762
|
+
*
|
|
21763
|
+
* @see UPG_PRESENCE_EXCEPT_SPECS
|
|
21764
|
+
*/
|
|
21765
|
+
interface UPGPresenceExceptSpec {
|
|
21766
|
+
/** Entity type the count is taken over. */
|
|
21767
|
+
entity_type: string;
|
|
21768
|
+
/** Property whose presence is being counted. */
|
|
21769
|
+
property: string;
|
|
21770
|
+
/** Property that removes an entity from the counted population. */
|
|
21771
|
+
except_property: string;
|
|
21772
|
+
/** Value of `except_property` that triggers the exclusion. */
|
|
21773
|
+
except_value: string;
|
|
21774
|
+
}
|
|
21775
|
+
/**
|
|
21776
|
+
* Every except-qualified presence filter the catalog declares (0.28.0).
|
|
21777
|
+
*
|
|
21778
|
+
* A collector cannot compute joint property counts speculatively: indexing
|
|
21779
|
+
* every (property, other-property, other-value) triple is quadratic in
|
|
21780
|
+
* properties-per-node and would tax every `validate_graph` call to serve one
|
|
21781
|
+
* detector. Nor can it derive the count arithmetically from the existing
|
|
21782
|
+
* indexes, because those record marginals and the question is an intersection.
|
|
21783
|
+
*
|
|
21784
|
+
* So the catalog declares what it needs and collectors compute exactly that
|
|
21785
|
+
* and no more. Today the list holds one entry (`surface.arbitration_rule`
|
|
21786
|
+
* except `composition_mode: 'chained'`); it stays correct without maintenance
|
|
21787
|
+
* because it is derived from the conditions themselves.
|
|
21788
|
+
*
|
|
21789
|
+
* @example
|
|
21790
|
+
* UPG_PRESENCE_EXCEPT_SPECS[0]
|
|
21791
|
+
* // → { entity_type: 'surface', property: 'arbitration_rule',
|
|
21792
|
+
* // except_property: 'composition_mode', except_value: 'chained' }
|
|
21793
|
+
*/
|
|
21794
|
+
declare const UPG_PRESENCE_EXCEPT_SPECS: readonly UPGPresenceExceptSpec[];
|
|
21795
|
+
/**
|
|
21796
|
+
* Canonical key for an except-qualified presence count, shared by the
|
|
21797
|
+
* collectors that build `countsByTypeAndPropertyPresenceExcept` and the
|
|
21798
|
+
* evaluator that reads it. Both sides must agree, so neither spells it inline.
|
|
21799
|
+
*
|
|
21800
|
+
* @example
|
|
21801
|
+
* presenceExceptKey('arbitration_rule', 'composition_mode', 'chained')
|
|
21802
|
+
* // → "arbitration_rule!composition_mode=chained"
|
|
21803
|
+
*/
|
|
21804
|
+
declare function presenceExceptKey(property: string, exceptProperty: string, exceptValue: string): string;
|
|
21625
21805
|
/**
|
|
21626
21806
|
* Look up a curated anti-pattern by its slug id.
|
|
21627
21807
|
*
|
|
@@ -21788,6 +21968,28 @@ interface AntiPatternInputs {
|
|
|
21788
21968
|
* carries this property" rather than crashing.
|
|
21789
21969
|
*/
|
|
21790
21970
|
countsByTypeAndPropertyPresence?: Record<string, Record<string, number>>;
|
|
21971
|
+
/**
|
|
21972
|
+
* As `countsByTypeAndPropertyPresence`, but counted over a population that
|
|
21973
|
+
* EXCLUDES entities carrying a declared exemption (0.28.0). Only required for
|
|
21974
|
+
* anti-patterns with a `filter: { property, present, except_property,
|
|
21975
|
+
* except_value }` clause (currently 1:
|
|
21976
|
+
* `contended-surface-without-arbitration`, which exempts surfaces that have
|
|
21977
|
+
* declared `composition_mode: 'chained'`).
|
|
21978
|
+
*
|
|
21979
|
+
* Shape: type → `presenceExceptKey(property, except_property, except_value)`
|
|
21980
|
+
* → count of entities of that type that carry a value for `property` AND are
|
|
21981
|
+
* NOT exempt. The evaluator derives the absent-and-not-exempt count from this
|
|
21982
|
+
* plus `countsByType` and `countsByTypeAndProperty`, so collectors still
|
|
21983
|
+
* never enumerate absences.
|
|
21984
|
+
*
|
|
21985
|
+
* Collectors build it by walking `UPG_PRESENCE_EXCEPT_SPECS` rather than
|
|
21986
|
+
* indexing property pairs speculatively, which would be quadratic in
|
|
21987
|
+
* properties-per-node for the benefit of one detector. Absent input reads as
|
|
21988
|
+
* zero, which makes a stale collector OVER-report (every non-exempt entity
|
|
21989
|
+
* reads as missing the property) rather than silently under-report — the safe
|
|
21990
|
+
* direction for a check whose job is to notice omissions.
|
|
21991
|
+
*/
|
|
21992
|
+
countsByTypeAndPropertyPresenceExcept?: Record<string, Record<string, number>>;
|
|
21791
21993
|
/**
|
|
21792
21994
|
* Boolean presence per `(source_type, edge_type, target_type)` tuple.
|
|
21793
21995
|
* Key format: `${source_type}|${edge_type}|${target_type}`.
|
|
@@ -23062,7 +23264,7 @@ declare function checkHeaderSealText(text: string): UPGHeaderSealReport;
|
|
|
23062
23264
|
* it stamps the `upg_version` field of every `.upg` file written by the SDK.
|
|
23063
23265
|
* The `check:version-lockstep` gate enforces this at release time.
|
|
23064
23266
|
*/
|
|
23065
|
-
declare const UPG_VERSION: "0.
|
|
23267
|
+
declare const UPG_VERSION: "0.28.0";
|
|
23066
23268
|
/**
|
|
23067
23269
|
* The `.upg` JSON document format version. Written to the `upg_version` field.
|
|
23068
23270
|
* Evolves independently from `UPG_VERSION` (the catalogue version).
|
|
@@ -23187,4 +23389,4 @@ declare const UPG_EDGE_COUNT: number;
|
|
|
23187
23389
|
*/
|
|
23188
23390
|
declare const UPG_META_COUNT: number;
|
|
23189
23391
|
|
|
23190
|
-
export { type A11yAnnotationProperties, type A11yAuditProperties, type A11yGuidelineProperties, type A11yIssueProperties, type A11yStandardProperties, 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, CONTENT_DEPTH_WARNING_RULES, COVERAGE_ANTI_PATTERNS, type Cadence, type CapabilityProperties, type CapacityPlanProperties, 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 Confidence, 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 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 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 MetricSegmentType, type MetricStatisticalFunction, type MilestoneProperties, type MissionProperties, type ModelComparisonProperties, type ModifiedProperty, type MonitorProperties, type NamedGroup, type NeedMaturity, type NeedProperties, type NeedValence, type NpsCampaignProperties, OPERATIONS_QUALITY_PLAYBOOK, type ObjectionProperties, type ObjectiveProperties, type ObservationProperties, type OnCallRotationProperties, type OperatingLifecycleProperties, type OperatingStageProperties, type OpportunityProperties, type OrganizationProperties, type OrphanCheck, type OutcomeProperties, PRODUCT_DELIVERY_PLAYBOOK, PROPERTY_MODIFIERS, PROPERTY_MODIFIER_SEMANTICS, PROPERTY_SCALE_MAP, type ParticipantProperties, type PartnerProgramProperties, type PartnerRevenueShareProperties, type PartnerTierProperties, type PartnershipProperties, 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 PromptTemplateProperties, type PromptVersionProperties, type ProofPointProperties, type PropertyDefinition, type PropertyModifier, type PropertySchema, type Protocol, type PrototypeProperties, type ProxyConfidence, type ProxyReason, 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 RelationshipBenchmark, type RelationshipCheck, type ReleaseProperties, type ReleaseStrategyProperties, type ReportProperties, type ResearchPlanProperties, type ResearchQuestionProperties, type ResearchStudyProperties, 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 SurfaceExtensibility, type SurfaceId, 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 UPGEdgeDefinition, type UPGEdgeMigration, type UPGEdgeMigrationEndpoints, type UPGEdgePickHint, type UPGEdgeType, type UPGEntityType, type UPGEntityTypeMaturity, type UPGEnumScaleDefinition, type UPGEnumScaleValue, type UPGFramework, type UPGFrameworkMeta, type UPGHeader, type UPGHeaderCountsMismatch, type UPGHeaderIntegrity, type UPGHeaderIntegrityMismatch, type UPGHeaderProvenance, type UPGHeaderSealReport, type UPGIntegrity, type UPGLens, type UPGLensIntelligencePrompt, type UPGLifecycle, type UPGMappingConfidence, type UPGMemberKindKey, type UPGNode, type UPGOrganization, type UPGPlaybook, type UPGPortfolio, type UPGPortfolioDocument, type UPGPortfolioKind, type UPGProduct, type UPGProductArea, type UPGProductStage, type UPGPropertyMap, type UPGPropertyMigration, type UPGPropertyMigrationChange, type UPGRegion, type UPGRegionEntityMembership, type UPGRegionEntityRole, type UPGRegionId, type UPGRegionShape, type UPGRegistry, type UPGScalarToEdgeMigration, type UPGScaleDefinition, type UPGScalePoint, type UPGSource, type UPGSplitEdge, type UPGSplitMigration, type UPGSplitRoute, type UPGSplitRouteTarget, type UPGSplitTarget, type UPGTreeChild, type UPGTreeGapPolicy, type UPGTreePattern, type UPGTreePatternDetail, type UPGTreePatternEdge, type UPGTreePatternSummary, type UPGTypeLabel, type UPGTypeMigration, type UPGValidationError, type UPGValidationProfile, type UPGValidationResult, type UPGValidationWarning, type UPGWildcardEndpoint, UPG_ACTIVE_TYPES, UPG_ANTI_PATTERNS, UPG_ANTI_PATTERN_CONCERNS, UPG_APPROACHES, UPG_APPROACHES_BY_ID, UPG_AREA_TAXONOMY, UPG_AREA_TAXONOMY_BY_COVERAGE_KEY, UPG_CANONICAL_FORMAT_VERSION, UPG_CONTAINMENT_FREE_TYPES, UPG_COUNT_BENCHMARKS, UPG_CROSS_EDGE_TYPES, UPG_CROSS_ELIGIBLE_CATALOG_EDGE_TYPES, UPG_CROSS_ONLY_EDGE_TYPES, UPG_DELIBERATE_ONLY_EDGE_TYPES, UPG_DEPRECATED_TYPES, UPG_DOMAINS, UPG_DOMAIN_ACTIVATION, UPG_DOMAIN_COUNT, UPG_DOMAIN_GUIDES, UPG_DOMAIN_RINGS, UPG_EDGE_CATALOG, UPG_EDGE_COUNT, UPG_EDGE_MIGRATIONS, UPG_EDGE_PAIR_MAP, UPG_EDGE_TYPES, UPG_ENTITY_COUNT, 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_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, type ValueObjectProperties, type ValuePropositionProperties, type ValueStreamProperties, type VariantProperties, type VisionProperties, type VulnerabilityProperties, type WalkMigrationChainResult, type WalkthroughProperties, type WebinarProperties, type WireframeProperties, type WorkflowArtifactProperties, type WorkflowRunProperties, type WorkflowTemplateProperties, type WorkspaceProperties, backfillSlug, buildTypeAliases, canBeChildOf, checkHeaderSeal, checkHeaderSealText, coerceProductStage, collectSlugsForType, compareVersions, computeBodyChecksum, concernEvaluatedFor, concernFor, concernGatesFor, crossProductScope, deriveCounts, derivePortfolioCounts, deriveSingleCounts, describeTreePattern, edgeCarriesProperties, 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, resolveAllEdges, resolveContainmentEdge, resolveEntityType, resolveLabel, resolveSlugCollision, resolveTreePatternEdges, ringOrderedDomainIds, rotateSlug, serializeCanonical, validateEdgeProperties, validateProductStageStrict, validateUPGDocument, validateUPGFramework, validationProfileFor, walkMigrationChainToCanonical };
|
|
23392
|
+
export { type A11yAnnotationProperties, type A11yAuditProperties, type A11yGuidelineProperties, type A11yIssueProperties, type A11yStandardProperties, 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, CONTENT_DEPTH_WARNING_RULES, COVERAGE_ANTI_PATTERNS, type Cadence, type CapabilityProperties, type CapacityPlanProperties, 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 Confidence, 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 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 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 MetricSegmentType, type MetricStatisticalFunction, type MilestoneProperties, type MissionProperties, type ModelComparisonProperties, type ModifiedProperty, type MonitorProperties, type NamedGroup, type NeedMaturity, type NeedProperties, type NeedValence, type NpsCampaignProperties, OPERATIONS_QUALITY_PLAYBOOK, type ObjectionProperties, type ObjectiveProperties, type ObservationProperties, type OnCallRotationProperties, type OperatingLifecycleProperties, type OperatingStageProperties, type OpportunityProperties, type OrganizationProperties, type OrphanCheck, type OutcomeProperties, PRODUCT_DELIVERY_PLAYBOOK, PROPERTY_MODIFIERS, PROPERTY_MODIFIER_SEMANTICS, PROPERTY_SCALE_MAP, type ParticipantProperties, type PartnerProgramProperties, type PartnerRevenueShareProperties, type PartnerTierProperties, type PartnershipProperties, 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 PromptTemplateProperties, type PromptVersionProperties, type ProofPointProperties, type PropertyDefinition, type PropertyModifier, type PropertySchema, type Protocol, type PrototypeProperties, type ProxyConfidence, type ProxyReason, 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 RelationshipBenchmark, type RelationshipCheck, type ReleaseProperties, type ReleaseStrategyProperties, type ReportProperties, type ResearchPlanProperties, type ResearchQuestionProperties, type ResearchStudyProperties, 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 UPGEdgeDefinition, type UPGEdgeMigration, type UPGEdgeMigrationEndpoints, type UPGEdgePickHint, type UPGEdgeType, type UPGEntityType, type UPGEntityTypeMaturity, type UPGEnumScaleDefinition, type UPGEnumScaleValue, type UPGFramework, type UPGFrameworkMeta, type UPGHeader, type UPGHeaderCountsMismatch, type UPGHeaderIntegrity, type UPGHeaderIntegrityMismatch, type UPGHeaderProvenance, type UPGHeaderSealReport, type UPGIntegrity, type UPGLens, type UPGLensIntelligencePrompt, type UPGLifecycle, type UPGMappingConfidence, type UPGMemberKindKey, type UPGNode, type UPGOrganization, type UPGPlaybook, type UPGPortfolio, type UPGPortfolioDocument, type UPGPortfolioKind, type UPGPresenceExceptSpec, type UPGProduct, type UPGProductArea, type UPGProductStage, type UPGPropertyMap, type UPGPropertyMigration, type UPGPropertyMigrationChange, type UPGRegion, type UPGRegionEntityMembership, type UPGRegionEntityRole, type UPGRegionId, type UPGRegionShape, type UPGRegistry, type UPGScalarToEdgeMigration, type UPGScaleDefinition, type UPGScalePoint, type UPGSource, type UPGSplitEdge, type UPGSplitMigration, type UPGSplitRoute, type UPGSplitRouteTarget, type UPGSplitTarget, type UPGTreeChild, type UPGTreeGapPolicy, type UPGTreePattern, type UPGTreePatternDetail, type UPGTreePatternEdge, type UPGTreePatternSummary, type UPGTypeLabel, type UPGTypeMigration, type UPGValidationError, type UPGValidationProfile, type UPGValidationResult, type UPGValidationWarning, type UPGWildcardEndpoint, UPG_ACTIVE_TYPES, UPG_ANTI_PATTERNS, UPG_ANTI_PATTERN_CONCERNS, UPG_APPROACHES, UPG_APPROACHES_BY_ID, UPG_AREA_TAXONOMY, UPG_AREA_TAXONOMY_BY_COVERAGE_KEY, UPG_CANONICAL_FORMAT_VERSION, UPG_CONTAINMENT_FREE_TYPES, UPG_COUNT_BENCHMARKS, UPG_CROSS_EDGE_TYPES, UPG_CROSS_ELIGIBLE_CATALOG_EDGE_TYPES, UPG_CROSS_ONLY_EDGE_TYPES, UPG_DELIBERATE_ONLY_EDGE_TYPES, UPG_DEPRECATED_TYPES, UPG_DOMAINS, UPG_DOMAIN_ACTIVATION, UPG_DOMAIN_COUNT, UPG_DOMAIN_GUIDES, UPG_DOMAIN_RINGS, UPG_EDGE_CATALOG, UPG_EDGE_COUNT, UPG_EDGE_MIGRATIONS, UPG_EDGE_PAIR_MAP, UPG_EDGE_TYPES, UPG_ENTITY_COUNT, 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, type ValueObjectProperties, type ValuePropositionProperties, type ValueStreamProperties, type VariantProperties, type VisionProperties, type VulnerabilityProperties, type WalkMigrationChainResult, type WalkthroughProperties, type WebinarProperties, type WireframeProperties, type WorkflowArtifactProperties, type WorkflowRunProperties, type WorkflowTemplateProperties, type WorkspaceProperties, backfillSlug, buildTypeAliases, canBeChildOf, checkHeaderSeal, checkHeaderSealText, coerceProductStage, collectSlugsForType, compareVersions, computeBodyChecksum, concernEvaluatedFor, concernFor, concernGatesFor, crossProductScope, deriveCounts, derivePortfolioCounts, deriveSingleCounts, describeTreePattern, edgeCarriesProperties, 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, presenceExceptKey, resolveAllEdges, resolveContainmentEdge, resolveEntityType, resolveLabel, resolveSlugCollision, resolveTreePatternEdges, ringOrderedDomainIds, rotateSlug, serializeCanonical, validateEdgeProperties, validateProductStageStrict, validateUPGDocument, validateUPGFramework, validationProfileFor, walkMigrationChainToCanonical };
|
package/dist/index.js
CHANGED
|
@@ -1540,9 +1540,10 @@ var UPG_EDGE_CATALOG = {
|
|
|
1540
1540
|
journey_action_realised_by_feature: { forward_verb: "realised_by", reverse_verb: "realises", classification: "cross-domain", source_type: "journey_action", target_type: "feature" },
|
|
1541
1541
|
// ── surface (0.27.0): the place inside a screen ─────────────────────────
|
|
1542
1542
|
// `screen` is route-level; `surface` is the contested place within it. The
|
|
1543
|
-
//
|
|
1543
|
+
// eleven edges below give a surface its spine (nesting), its guest list, its
|
|
1544
1544
|
// purpose, its governing rule, its rendering vocabulary, its measurement,
|
|
1545
|
-
//
|
|
1545
|
+
// its replacement path, and (0.28.0) the gap between what it intends and
|
|
1546
|
+
// what it actually does.
|
|
1546
1547
|
//
|
|
1547
1548
|
// Classification adjudications, each anchored on the nearest precedent:
|
|
1548
1549
|
// contains → hierarchy (feature_area_contains_feature_area, planning_cycle_contains_planning_cycle)
|
|
@@ -1578,6 +1579,35 @@ var UPG_EDGE_CATALOG = {
|
|
|
1578
1579
|
surface_renders_design_component: { forward_verb: "renders", reverse_verb: "rendered_on", classification: "hierarchy", source_type: "surface", target_type: "design_component", cross_product_eligible: true },
|
|
1579
1580
|
surface_measured_by_metric: { forward_verb: "measured_by", reverse_verb: "measures", classification: "semantic", source_type: "surface", target_type: "metric", cross_product_eligible: true },
|
|
1580
1581
|
surface_supersedes_surface: { forward_verb: "supersedes", reverse_verb: "superseded_by", classification: "semantic", source_type: "surface", target_type: "surface" },
|
|
1582
|
+
// ── surface, 0.28.0 addition: intent versus reality ─────────────────────────
|
|
1583
|
+
// Every surface property records what the design INTENDS. `capacity: 1` on a
|
|
1584
|
+
// banner region is an assertion, and a real product will eventually be found
|
|
1585
|
+
// rendering four. Without somewhere to put that fact, the only ways to record
|
|
1586
|
+
// it are to edit `capacity` up to 4 (which destroys the intent, and with it
|
|
1587
|
+
// any evidence that a gap exists) or to leave the graph quietly wrong.
|
|
1588
|
+
//
|
|
1589
|
+
// This edge is the third option, and it is what lets `capacity` mean intent
|
|
1590
|
+
// unconditionally: the deviation hangs off a `technical_debt_item`, which is
|
|
1591
|
+
// already a trackable, assignable, prioritisable entity with an owner and a
|
|
1592
|
+
// remediation cost. The gap becomes work rather than a discrepancy.
|
|
1593
|
+
//
|
|
1594
|
+
// classification → cross-domain (ux_design → technical_debt). Crossing INTO
|
|
1595
|
+
// the debt domain from another ring is the established shape:
|
|
1596
|
+
// risk_manifests_as_technical_debt_item is cross-domain on exactly that
|
|
1597
|
+
// reasoning. NOT `causal`: `decision_incurs_technical_debt_item` is causal
|
|
1598
|
+
// because a decision BRINGS the debt into existence, whereas a surface
|
|
1599
|
+
// does not cause its own drift, it exhibits it. NOT `hierarchy`: that
|
|
1600
|
+
// would oblige a surface → technical_debt_item containment pair in
|
|
1601
|
+
// UPG_VALID_CHILDREN (guardrail G2b), and a surface does not own the debt
|
|
1602
|
+
// that afflicts it — service_carries_technical_debt_item can be hierarchy
|
|
1603
|
+
// because a service genuinely owns its backlog.
|
|
1604
|
+
// verbs → `deviates_via` / `causes_deviation_in`. The forward verb names
|
|
1605
|
+
// what the SOURCE does (the surface deviates), qualified by the debt that
|
|
1606
|
+
// accounts for it, so the edge key reads as the sentence it asserts. The
|
|
1607
|
+
// reverse says what the debt does to the place.
|
|
1608
|
+
// not cross_product_eligible → a deviation is a fact about one product's
|
|
1609
|
+
// code, and `surface` is not portfolio_shared in the first place.
|
|
1610
|
+
surface_deviates_via_technical_debt_item: { forward_verb: "deviates_via", reverse_verb: "causes_deviation_in", classification: "cross-domain", source_type: "surface", target_type: "technical_debt_item" },
|
|
1581
1611
|
// Inbound. `feature_occupies_surface` is the guest list: the edge that makes
|
|
1582
1612
|
// "what else lives here?" answerable, and the one the contention anti-pattern
|
|
1583
1613
|
// counts. cross-domain (product_spec → ux_design), like screen_surfaces_feature
|
|
@@ -13177,8 +13207,12 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
13177
13207
|
surface_kind: { type: "string", enum: ["shell", "tool", "pane", "region", "slot", "gutter", "action_bar", "overlay", "ambient"], description: "Structural kind. Determines what may legally nest inside this surface." },
|
|
13178
13208
|
persistence: { type: "string", enum: ["always", "conditional", "on_demand", "transient"], description: "How reliably the surface is present." },
|
|
13179
13209
|
visibility_condition: { type: "string", description: 'When the surface appears, in plain language. Pairs with `persistence: \'conditional\'`, which states *that* it is conditional; this states *what* the condition is. @example "A node is selected", "Only for workspace admins"' },
|
|
13180
|
-
capacity: { type: "number", description: 'How many occupants the surface holds at once, as a non-negative count. ABSENT MEANS UNBOUNDED. UPG has no union-typed property primitive (`PropertyDefinition.type` is a single scalar kind), so the proposed `integer | unbounded` shape is expressed as an optional number whose absence carries the "no cap" reading, rather than a magic sentinel value that every consumer would have to special-case. `0` is a real cap meaning "nothing may occupy this surface" (a reserved place), not "unbounded".' },
|
|
13210
|
+
capacity: { type: "number", description: 'How many occupants ONE INSTANCE of the surface holds at once, as a non-negative count. Count the instances themselves with `cardinality`. CAPACITY IS ALWAYS INTENT, NEVER OBSERVED BEHAVIOUR. It records the cap the design asserts, so a banner region declared `capacity: 1` keeps saying 1 even after someone finds it rendering four. Reality that has drifted from the declared intent is recorded as a trackable, assignable debt item on `surface_deviates_via_technical_debt_item`, not by quietly editing this number up to match the bug. Editing it to match would destroy the only record that a gap exists. ABSENT MEANS UNBOUNDED. UPG has no union-typed property primitive (`PropertyDefinition.type` is a single scalar kind), so the proposed `integer | unbounded` shape is expressed as an optional number whose absence carries the "no cap" reading, rather than a magic sentinel value that every consumer would have to special-case. `0` is a real cap meaning "nothing may occupy this surface" (a reserved place), not "unbounded".' },
|
|
13211
|
+
cardinality: { type: "string", enum: ["1", "0..1", "1..n", "0..n"], description: "How many instances of this surface exist. `capacity` counts occupants within one instance; this counts the instances." },
|
|
13212
|
+
instance_scope: { type: "string", enum: ["global", "per_parent"], description: 'What an instance is scoped to: one shared instance for the product, or one per containing surface. Decides whether "the product has this surface" is a true sentence or a per-parent one.' },
|
|
13213
|
+
composition_mode: { type: "string", enum: ["exclusive", "additive", "chained"], description: "How the occupants relate: one wins (`exclusive`), all coexist (`additive`), or each wraps the next (`chained`). Declaring `chained` exempts the surface from `contended-surface-without-arbitration`; leaving this unset does not." },
|
|
13181
13214
|
arbitration_rule: { type: "string", description: 'Who wins when more occupants want the surface than `capacity` allows, and why. ABSENCE IS MEANINGFUL: a null or empty `arbitration_rule` on a contested surface means nobody decided, which is exactly what the `contended-surface-without-arbitration` anti-pattern detects. Do not fill this in with a placeholder to silence the check. @example "Highest priority wins; ties break to the most recently updated."' },
|
|
13215
|
+
arbitration_state: { type: "string", enum: ["enforced_documented", "enforced_undocumented", "safe_by_coincidence", "none"], description: 'Whether the arbitration answer is enforced, written down, both, or neither. Separates "enforced in code but never transcribed" (ten minutes of typing) from "never decided" (a design meeting) from "safe only because nothing has collided yet" (the dangerous one).' },
|
|
13182
13216
|
extensibility: { type: "string", enum: ["closed", "plugin_registerable", "user_configurable"], description: "Who may add occupants to the surface." },
|
|
13183
13217
|
mutates_content: { type: "boolean", description: "Whether occupying this surface can change the underlying content, as opposed to only selecting or revealing it. The selector-versus-mutator distinction: a gutter that toggles a value is a mutator, a gutter that jumps the cursor is not." },
|
|
13184
13218
|
dimensional_constraint: { type: "string", description: 'The hard spatial budget the surface imposes on its occupants, in whatever unit the design system speaks. @example "292px wide", "25px per field", "two grid columns"' }
|
|
@@ -27015,7 +27049,44 @@ var UPG_ANTI_PATTERNS = [
|
|
|
27015
27049
|
id: "contended-surface-without-arbitration",
|
|
27016
27050
|
since: "0.27.0",
|
|
27017
27051
|
name: "Contended surface without arbitration",
|
|
27018
|
-
description: 'Features occupy surfaces in this graph,
|
|
27052
|
+
description: 'Features occupy surfaces in this graph, and at least one surface has no recorded answer to "who wins here, and why". Either it carries no arbitration_rule and has not declared itself `chained`, or it admits through arbitration_state that the answer is absent (`none`) or accidental (`safe_by_coincidence`). Left unrecorded, that answer lives in whoever remembers the last argument.',
|
|
27053
|
+
// 0.28.0 (feedback 852a9721, from a 30-surface field audit). Three changes,
|
|
27054
|
+
// each earned by a reported false positive or a reported blind spot:
|
|
27055
|
+
//
|
|
27056
|
+
// (a) rule-absence, EXCEPT chained. `composition_mode: 'chained'` means each
|
|
27057
|
+
// occupant wraps the next rather than competing with it. Many occupants
|
|
27058
|
+
// and no arbitration rule is the designed shape, so the reporter's 14
|
|
27059
|
+
// chained slots were 14 standing false positives — and because
|
|
27060
|
+
// `get_anti_pattern_violations_for` attributes by TYPE, they kept the
|
|
27061
|
+
// whole surface roster lit no matter how diligently the genuinely
|
|
27062
|
+
// contended surfaces were documented. The check could never be silenced
|
|
27063
|
+
// by correct modelling, which is the property a check has to have.
|
|
27064
|
+
// Exemption is DECLARE-TO-EARN: an unset `composition_mode` still fires,
|
|
27065
|
+
// so the default posture stays suspicious and silence must be claimed.
|
|
27066
|
+
// (b) `safe_by_coincidence` fires on its own, with no chained exemption. It
|
|
27067
|
+
// is the one state that a written `arbitration_rule` can mask: the field
|
|
27068
|
+
// audit found surfaces whose prose described disjoint enum values doing
|
|
27069
|
+
// the arbitrating with nothing guarding them. Branch (a) cannot see
|
|
27070
|
+
// those, because the rule text is present.
|
|
27071
|
+
// (c) `none` fires on its own too. A graph that says "nobody decided" while
|
|
27072
|
+
// carrying rule text is contradicting itself, and the admission is the
|
|
27073
|
+
// half to believe.
|
|
27074
|
+
//
|
|
27075
|
+
// `enforced_undocumented` deliberately gets NO branch and NO suppression. It
|
|
27076
|
+
// needs none: a surface enforcing an untranscribed rule has no
|
|
27077
|
+
// `arbitration_rule`, so branch (a) already fires. Nor does it earn a
|
|
27078
|
+
// downgrade — severity is per-anti-pattern, not per-violation, so there is
|
|
27079
|
+
// nowhere to put one; and the harm this pattern names is that the settlement
|
|
27080
|
+
// is unrecorded, which is exactly what `enforced_undocumented` admits. The
|
|
27081
|
+
// graph is the record; code is not. What the state buys is triage, so the
|
|
27082
|
+
// remediation text below names the two costs separately.
|
|
27083
|
+
//
|
|
27084
|
+
// No new anti-pattern was minted for `safe_by_coincidence`. It is a value of
|
|
27085
|
+
// the arbitration question, not a different question, and a second detector
|
|
27086
|
+
// would fire on the same graphs and double-report through type-keyed
|
|
27087
|
+
// attribution — making this family noisier on its first real deployment,
|
|
27088
|
+
// which is the exact failure (a) exists to fix. If field evidence later shows
|
|
27089
|
+
// it needs its own severity, mint it then.
|
|
27019
27090
|
structured_condition: {
|
|
27020
27091
|
operator: "and",
|
|
27021
27092
|
checks: [
|
|
@@ -27030,17 +27101,43 @@ var UPG_ANTI_PATTERNS = [
|
|
|
27030
27101
|
}
|
|
27031
27102
|
},
|
|
27032
27103
|
{
|
|
27033
|
-
|
|
27034
|
-
|
|
27035
|
-
|
|
27036
|
-
|
|
27037
|
-
|
|
27038
|
-
|
|
27104
|
+
operator: "or",
|
|
27105
|
+
checks: [
|
|
27106
|
+
{
|
|
27107
|
+
check: {
|
|
27108
|
+
type: "entity_count",
|
|
27109
|
+
entity_type: "surface",
|
|
27110
|
+
filter: {
|
|
27111
|
+
property: "arbitration_rule",
|
|
27112
|
+
present: false,
|
|
27113
|
+
except_property: "composition_mode",
|
|
27114
|
+
except_value: "chained"
|
|
27115
|
+
},
|
|
27116
|
+
comparison: "nonzero"
|
|
27117
|
+
}
|
|
27118
|
+
},
|
|
27119
|
+
{
|
|
27120
|
+
check: {
|
|
27121
|
+
type: "entity_count",
|
|
27122
|
+
entity_type: "surface",
|
|
27123
|
+
filter: { property: "arbitration_state", value: "safe_by_coincidence" },
|
|
27124
|
+
comparison: "nonzero"
|
|
27125
|
+
}
|
|
27126
|
+
},
|
|
27127
|
+
{
|
|
27128
|
+
check: {
|
|
27129
|
+
type: "entity_count",
|
|
27130
|
+
entity_type: "surface",
|
|
27131
|
+
filter: { property: "arbitration_state", value: "none" },
|
|
27132
|
+
comparison: "nonzero"
|
|
27133
|
+
}
|
|
27134
|
+
}
|
|
27135
|
+
]
|
|
27039
27136
|
}
|
|
27040
27137
|
]
|
|
27041
27138
|
},
|
|
27042
|
-
why_it_matters: "Contention over a UI place is settled every time it comes up, and an unrecorded settlement is re-argued at the next feature. The cost is paid in repeated decisions, not in a visible defect.",
|
|
27043
|
-
remediation: "
|
|
27139
|
+
why_it_matters: "Contention over a UI place is settled every time it comes up, and an unrecorded settlement is re-argued at the next feature. The cost is paid in repeated decisions, not in a visible defect. A surface that is safe only by coincidence pays it all at once instead, the first time an occupant is added.",
|
|
27140
|
+
remediation: "Read `arbitration_state` first: it says what the work actually is. `enforced_undocumented` means the rule already exists in code and needs transcribing into `arbitration_rule`: ten minutes, no meeting. `none` means nobody has decided and someone has to. `safe_by_coincidence` means nothing is enforcing anything and the surface only looks settled; that one wants a guard in code, not just prose. Record the constraint the rule works within (`capacity`, `dimensional_constraint`), and where a design system already answers it, link the source with `surface_governed_by_design_guideline`. Surfaces whose occupants wrap one another rather than compete should declare `composition_mode: 'chained'`, which exempts them: that is a factual claim about how the code composes, not a way to quiet the check.",
|
|
27044
27141
|
stages: ["build", "beta", "launch", "growth", "mature", "maintenance"],
|
|
27045
27142
|
severity: "medium",
|
|
27046
27143
|
source: { kind: "fundamental" }
|
|
@@ -27098,6 +27195,38 @@ var UPG_ANTI_PATTERNS = [
|
|
|
27098
27195
|
source: { kind: "fundamental" }
|
|
27099
27196
|
}
|
|
27100
27197
|
];
|
|
27198
|
+
function walkForExceptSpecs(cond, out) {
|
|
27199
|
+
if ("operator" in cond) {
|
|
27200
|
+
for (const child of cond.checks) walkForExceptSpecs(child, out);
|
|
27201
|
+
return;
|
|
27202
|
+
}
|
|
27203
|
+
const check = cond.check;
|
|
27204
|
+
if (check.type !== "entity_count" || !check.filter) return;
|
|
27205
|
+
const f = check.filter;
|
|
27206
|
+
if (typeof f.property !== "string" || typeof f.except_property !== "string" || typeof f.except_value !== "string") {
|
|
27207
|
+
return;
|
|
27208
|
+
}
|
|
27209
|
+
const spec = {
|
|
27210
|
+
entity_type: check.entity_type,
|
|
27211
|
+
property: f.property,
|
|
27212
|
+
except_property: f.except_property,
|
|
27213
|
+
except_value: f.except_value
|
|
27214
|
+
};
|
|
27215
|
+
const seen = out.some(
|
|
27216
|
+
(s) => s.entity_type === spec.entity_type && s.property === spec.property && s.except_property === spec.except_property && s.except_value === spec.except_value
|
|
27217
|
+
);
|
|
27218
|
+
if (!seen) out.push(spec);
|
|
27219
|
+
}
|
|
27220
|
+
var UPG_PRESENCE_EXCEPT_SPECS = (() => {
|
|
27221
|
+
const out = [];
|
|
27222
|
+
for (const ap of UPG_ANTI_PATTERNS) {
|
|
27223
|
+
if (ap.structured_condition) walkForExceptSpecs(ap.structured_condition, out);
|
|
27224
|
+
}
|
|
27225
|
+
return out;
|
|
27226
|
+
})();
|
|
27227
|
+
function presenceExceptKey(property, exceptProperty, exceptValue) {
|
|
27228
|
+
return `${property}!${exceptProperty}=${exceptValue}`;
|
|
27229
|
+
}
|
|
27101
27230
|
function getAntiPatternById(id) {
|
|
27102
27231
|
return UPG_ANTI_PATTERNS.find((ap) => ap.id === id);
|
|
27103
27232
|
}
|
|
@@ -27245,7 +27374,13 @@ function compareNumber(value, comparison, threshold) {
|
|
|
27245
27374
|
function evaluateEntityCount(check, inputs) {
|
|
27246
27375
|
const filter = check.filter;
|
|
27247
27376
|
let count = 0;
|
|
27248
|
-
if (filter && typeof filter.property === "string" && typeof filter.present === "boolean") {
|
|
27377
|
+
if (filter && typeof filter.property === "string" && typeof filter.present === "boolean" && typeof filter.except_property === "string" && typeof filter.except_value === "string") {
|
|
27378
|
+
const key = presenceExceptKey(filter.property, filter.except_property, filter.except_value);
|
|
27379
|
+
const exempt = inputs.countsByTypeAndProperty?.[check.entity_type]?.[filter.except_property]?.[filter.except_value] ?? 0;
|
|
27380
|
+
const eligible = Math.max(0, (inputs.countsByType[check.entity_type] ?? 0) - exempt);
|
|
27381
|
+
const withValue = inputs.countsByTypeAndPropertyPresenceExcept?.[check.entity_type]?.[key] ?? 0;
|
|
27382
|
+
count = filter.present ? Math.min(withValue, eligible) : Math.max(0, eligible - withValue);
|
|
27383
|
+
} else if (filter && typeof filter.property === "string" && typeof filter.present === "boolean") {
|
|
27249
27384
|
const withValue = inputs.countsByTypeAndPropertyPresence?.[check.entity_type]?.[filter.property] ?? 0;
|
|
27250
27385
|
count = filter.present ? withValue : Math.max(0, (inputs.countsByType[check.entity_type] ?? 0) - withValue);
|
|
27251
27386
|
} else if (filter && typeof filter.property === "string" && typeof filter.value === "string") {
|
|
@@ -30366,7 +30501,7 @@ function checkHeaderSealText(text) {
|
|
|
30366
30501
|
}
|
|
30367
30502
|
|
|
30368
30503
|
// src/index.ts
|
|
30369
|
-
var UPG_VERSION = "0.
|
|
30504
|
+
var UPG_VERSION = "0.28.0";
|
|
30370
30505
|
var UPG_FORMAT_VERSION = "0.4.0";
|
|
30371
30506
|
var MARKDOWN_FORMAT_VERSION = "0.1";
|
|
30372
30507
|
var UPG_TYPES = getTypes();
|
|
@@ -30504,6 +30639,7 @@ export {
|
|
|
30504
30639
|
UPG_POLYMORPHIC_EDGE_KEYS,
|
|
30505
30640
|
UPG_PORTFOLIO_KINDS,
|
|
30506
30641
|
UPG_PORTFOLIO_SHARED_TYPES,
|
|
30642
|
+
UPG_PRESENCE_EXCEPT_SPECS,
|
|
30507
30643
|
UPG_PRODUCT_STAGES,
|
|
30508
30644
|
UPG_PRODUCT_STAGE_COERCION_MAP,
|
|
30509
30645
|
UPG_PROPERTY_MIGRATIONS,
|
|
@@ -30640,6 +30776,7 @@ export {
|
|
|
30640
30776
|
normalizeDocument,
|
|
30641
30777
|
parseUpg,
|
|
30642
30778
|
pickCanonicalEdge,
|
|
30779
|
+
presenceExceptKey,
|
|
30643
30780
|
resolveAllEdges,
|
|
30644
30781
|
resolveContainmentEdge,
|
|
30645
30782
|
resolveEntityType,
|