@unified-product-graph/core 0.37.0 → 0.39.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 +40 -0
- package/README.md +1 -1
- package/dist/index.cjs +551 -509
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +39 -3
- package/dist/index.d.ts +39 -3
- package/dist/index.js +551 -509
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,3 +1,507 @@
|
|
|
1
|
+
// src/registry/entity-meta.ts
|
|
2
|
+
var UPG_ENTITY_META = [
|
|
3
|
+
// Foundations (0.9.12): shared specifications + the primitives they define.
|
|
4
|
+
{ name: "specification", type_id: "ent_352", maturity: "proposed", since: "0.9.12", portfolio_shared: true },
|
|
5
|
+
{ name: "primitive", type_id: "ent_353", maturity: "proposed", since: "0.9.12", portfolio_shared: true },
|
|
6
|
+
{ name: "operating_lifecycle", type_id: "ent_355", maturity: "proposed", since: "0.11.6", portfolio_shared: true },
|
|
7
|
+
{ name: "operating_stage", type_id: "ent_356", maturity: "proposed", since: "0.11.6", portfolio_shared: true },
|
|
8
|
+
// ── Strategic ──
|
|
9
|
+
{ name: "product", type_id: "ent_001", maturity: "stable", since: "0.1.0" },
|
|
10
|
+
{ name: "outcome", type_id: "ent_002", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
11
|
+
{ name: "kpi", type_id: "ent_003", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
12
|
+
{ name: "objective", type_id: "ent_004", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
13
|
+
{ name: "key_result", type_id: "ent_005", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
14
|
+
{ name: "metric", type_id: "ent_006", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
15
|
+
// F7 (UPG-673): graduated proposed → stable at v0.9.x — proposed since 0.2.2,
|
|
16
|
+
// the metric-quality assessment artefact is settled with no open restructure.
|
|
17
|
+
{ name: "metric_quality_assessment", type_id: "ent_339", maturity: "stable", since: "0.2.2" },
|
|
18
|
+
{ name: "vision", type_id: "ent_007", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
19
|
+
{ name: "mission", type_id: "ent_008", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
20
|
+
{ name: "strategic_theme", type_id: "ent_009", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
21
|
+
{ name: "initiative", type_id: "ent_010", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
22
|
+
{ name: "capability", type_id: "ent_011", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
23
|
+
{ name: "value_stream", type_id: "ent_012", maturity: "stable", since: "0.1.0" },
|
|
24
|
+
{ name: "strategic_pillar", type_id: "ent_013", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
25
|
+
{ name: "assumption", type_id: "ent_014", maturity: "stable", since: "0.1.0" },
|
|
26
|
+
{ name: "decision", type_id: "ent_015", maturity: "stable", since: "0.1.0" },
|
|
27
|
+
{ name: "constraint", type_id: "ent_348", maturity: "stable", since: "0.4.3" },
|
|
28
|
+
// (0.17.4) Strategy-domain sibling of research_question / design_question,
|
|
29
|
+
// completing the domain-question triad. An open coordination/ownership question
|
|
30
|
+
// a plan is exposed to (distinct from `assumption`, which the plan is built on).
|
|
31
|
+
{ name: "strategic_question", type_id: "ent_357", maturity: "proposed", since: "0.17.4" },
|
|
32
|
+
// ── User ──
|
|
33
|
+
{ name: "persona", type_id: "ent_016", maturity: "stable", since: "0.1.0" },
|
|
34
|
+
{ name: "job", type_id: "ent_017", maturity: "stable", since: "0.1.0" },
|
|
35
|
+
{ name: "jtbd", type_id: "ent_332", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "job" },
|
|
36
|
+
{ name: "pain_point", type_id: "ent_018", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "need" },
|
|
37
|
+
{ name: "desired_outcome", type_id: "ent_019", maturity: "stable", since: "0.1.0" },
|
|
38
|
+
{ name: "job_step", type_id: "ent_020", maturity: "stable", since: "0.1.0" },
|
|
39
|
+
{ name: "user_need", type_id: "ent_021", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "need" },
|
|
40
|
+
{ name: "need", type_id: "ent_313", maturity: "stable", since: "0.1.0" },
|
|
41
|
+
{ name: "switching_cost", type_id: "ent_022", maturity: "stable", since: "0.1.0" },
|
|
42
|
+
// ── Discovery ──
|
|
43
|
+
{ name: "opportunity", type_id: "ent_023", maturity: "stable", since: "0.1.0", default_frameworks: ["opportunity-sizing", "rice-scoring"] },
|
|
44
|
+
{ name: "solution", type_id: "ent_024", maturity: "stable", since: "0.1.0", default_frameworks: ["rice-scoring"] },
|
|
45
|
+
{ name: "feasibility_study", type_id: "ent_025", maturity: "stable", since: "0.1.0" },
|
|
46
|
+
{ name: "design_sprint", type_id: "ent_026", maturity: "stable", since: "0.1.0" },
|
|
47
|
+
// ── Validation ──
|
|
48
|
+
// (since v0.4.0) `hypothesis` re-promoted to canonical-stable. The
|
|
49
|
+
// v0.2.8 rename to `hypothesis_claim` was over-split: "claim" is implied
|
|
50
|
+
// by being a hypothesis. Canonical name reverts; HypothesisClaimProperties
|
|
51
|
+
// renamed to HypothesisProperties. `hypothesis_claim` is now deprecated
|
|
52
|
+
// (→ `hypothesis`). `hypothesis_evidence` deprecated (→ `evidence`): the
|
|
53
|
+
// dual evidence_type enum smell resolved by enriching canonical `evidence`
|
|
54
|
+
// with evidence_rigor + evidence_source axes. Edge pattern switches to
|
|
55
|
+
// `hypothesis_has_evidence` (neutral, direction on node).
|
|
56
|
+
{ name: "hypothesis", type_id: "ent_027", maturity: "stable", since: "0.1.0" },
|
|
57
|
+
{ name: "hypothesis_claim", type_id: "ent_344", maturity: "deprecated", since: "0.2.8", deprecated_in: "0.4.0", replacement: "hypothesis" },
|
|
58
|
+
{ name: "hypothesis_evidence", type_id: "ent_345", maturity: "deprecated", since: "0.2.8", deprecated_in: "0.4.0", replacement: "evidence" },
|
|
59
|
+
// `experiment` is canonical (UPG-664). It has its own property schema
|
|
60
|
+
// (method, start_date, end_date, sample_size, expected_lift) and is the
|
|
61
|
+
// canonical unit of a structured test. The validation flow is
|
|
62
|
+
// `hypothesis → experiment_plan → experiment → experiment_run`: the plan is
|
|
63
|
+
// the validation design, the experiment is the structured test, the run is
|
|
64
|
+
// the optional multi-run/replication child.
|
|
65
|
+
{ name: "experiment", type_id: "ent_028", maturity: "stable", since: "0.1.0" },
|
|
66
|
+
// experiment_plan graduated proposed → stable (UPG-664). It is the canonical
|
|
67
|
+
// validation PLAN type — it absorbed `test_plan`'s planning properties
|
|
68
|
+
// (method / success_criteria / sample_size) when `test_plan` re-homed to the
|
|
69
|
+
// QA/testing domain (UPG-678).
|
|
70
|
+
{ name: "experiment_plan", type_id: "ent_340", maturity: "stable", since: "0.2.6" },
|
|
71
|
+
{ name: "experiment_run", type_id: "ent_341", maturity: "stable", since: "0.2.6" },
|
|
72
|
+
{ name: "learning", type_id: "ent_029", maturity: "stable", since: "0.1.0" },
|
|
73
|
+
// test_plan re-homed validation → testing/QA (UPG-678). It is the QA
|
|
74
|
+
// verification-procedure plan (test scope / environments / pass criteria);
|
|
75
|
+
// its former validation-planning role is carried by experiment_plan.
|
|
76
|
+
{ name: "test_plan", type_id: "ent_030", maturity: "stable", since: "0.1.0" },
|
|
77
|
+
{ name: "evidence", type_id: "ent_031", maturity: "stable", since: "0.1.0" },
|
|
78
|
+
{ name: "research_plan", type_id: "ent_032", maturity: "stable", since: "0.1.0" },
|
|
79
|
+
// ── Market Intelligence ──
|
|
80
|
+
{ name: "competitor", type_id: "ent_033", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
81
|
+
{ name: "competitor_feature", type_id: "ent_034", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
82
|
+
{ name: "competitor_signal", type_id: "ent_354", maturity: "proposed", since: "0.10.0", portfolio_shared: true },
|
|
83
|
+
{ name: "market_trend", type_id: "ent_035", maturity: "stable", since: "0.1.0" },
|
|
84
|
+
{ name: "market_segment", type_id: "ent_036", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
85
|
+
{ name: "competitive_analysis", type_id: "ent_037", maturity: "stable", since: "0.1.0" },
|
|
86
|
+
// Classification taxonomy hosted by competitive_analysis.
|
|
87
|
+
// F7 (UPG-673): graduated proposed → stable at v0.9.x — two minor releases
|
|
88
|
+
// stable since 0.4.0, the taxonomy-axis/value pair backs the competitive-
|
|
89
|
+
// analysis classification spine with no open rename/restructure ticket.
|
|
90
|
+
{ name: "classification_axis", type_id: "ent_346", maturity: "stable", since: "0.4.0", portfolio_shared: true },
|
|
91
|
+
{ name: "classification_value", type_id: "ent_347", maturity: "stable", since: "0.4.0", portfolio_shared: true },
|
|
92
|
+
// ── UX Research ──
|
|
93
|
+
{ name: "research_study", type_id: "ent_038", maturity: "stable", since: "0.1.0" },
|
|
94
|
+
{ name: "research_insight", type_id: "ent_039", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "insight" },
|
|
95
|
+
{ name: "insight", type_id: "ent_040", maturity: "stable", since: "0.1.0" },
|
|
96
|
+
{ name: "participant", type_id: "ent_041", maturity: "stable", since: "0.1.0" },
|
|
97
|
+
{ name: "observation", type_id: "ent_042", maturity: "stable", since: "0.1.0" },
|
|
98
|
+
{ name: "quote", type_id: "ent_043", maturity: "stable", since: "0.1.0" },
|
|
99
|
+
{ name: "affinity_cluster", type_id: "ent_044", maturity: "stable", since: "0.1.0" },
|
|
100
|
+
{ name: "research_question", type_id: "ent_045", maturity: "stable", since: "0.1.0" },
|
|
101
|
+
{ name: "interview_guide", type_id: "ent_046", maturity: "stable", since: "0.1.0" },
|
|
102
|
+
{ name: "finding", type_id: "ent_047", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "insight" },
|
|
103
|
+
{ name: "survey_response", type_id: "ent_048", maturity: "stable", since: "0.1.0" },
|
|
104
|
+
{ name: "highlight", type_id: "ent_049", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "observation" },
|
|
105
|
+
// ── Design ──
|
|
106
|
+
{ name: "user_journey", type_id: "ent_050", maturity: "stable", since: "0.1.0" },
|
|
107
|
+
{ name: "journey_step", type_id: "ent_051", maturity: "stable", since: "0.1.0" },
|
|
108
|
+
{ name: "ux_insight", type_id: "ent_052", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "insight" },
|
|
109
|
+
{ name: "design_question", type_id: "ent_053", maturity: "stable", since: "0.1.0" },
|
|
110
|
+
{ name: "how_might_we", type_id: "ent_333", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "design_question" },
|
|
111
|
+
{ name: "design_concept", type_id: "ent_054", maturity: "stable", since: "0.1.0" },
|
|
112
|
+
{ name: "prototype", type_id: "ent_055", maturity: "stable", since: "0.1.0" },
|
|
113
|
+
{ name: "design_component", type_id: "ent_056", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
114
|
+
{ name: "design_token", type_id: "ent_057", maturity: "stable", since: "0.1.0" },
|
|
115
|
+
{ name: "brand_identity", type_id: "ent_058", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
116
|
+
{ name: "brand_colour", type_id: "ent_059", maturity: "stable", since: "0.1.0" },
|
|
117
|
+
{ name: "brand_typography", type_id: "ent_060", maturity: "stable", since: "0.1.0" },
|
|
118
|
+
{ name: "brand_voice", type_id: "ent_061", maturity: "stable", since: "0.1.0" },
|
|
119
|
+
{ name: "wireframe", type_id: "ent_062", maturity: "stable", since: "0.1.0" },
|
|
120
|
+
{ name: "design_pattern", type_id: "ent_063", maturity: "stable", since: "0.1.0" },
|
|
121
|
+
{ name: "design_guideline", type_id: "ent_064", maturity: "stable", since: "0.1.0" },
|
|
122
|
+
{ name: "annotation", type_id: "ent_065", maturity: "stable", since: "0.1.0" },
|
|
123
|
+
{ name: "interaction_spec", type_id: "ent_066", maturity: "stable", since: "0.1.0" },
|
|
124
|
+
{ name: "design_system", type_id: "ent_067", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
125
|
+
{ name: "user_flow", type_id: "ent_068", maturity: "stable", since: "0.1.0" },
|
|
126
|
+
{ name: "screen", type_id: "ent_069", maturity: "stable", since: "0.1.0" },
|
|
127
|
+
{ name: "screen_state", type_id: "ent_070", maturity: "stable", since: "0.1.0" },
|
|
128
|
+
// surface (0.27.0): the place inside a screen. `screen` is route-level
|
|
129
|
+
// (route / viewport / access_level); `surface` is the contested slot within
|
|
130
|
+
// it, carrying its occupants and the rule that arbitrates between them.
|
|
131
|
+
// Enters `proposed` per the maturity rubric (precedent: planning_cycle 0.20.0).
|
|
132
|
+
{ name: "surface", type_id: "ent_359", maturity: "proposed", since: "0.27.0" },
|
|
133
|
+
{ name: "configuration_axis", type_id: "ent_360", maturity: "proposed", since: "0.30.0" },
|
|
134
|
+
{ name: "journey_phase", type_id: "ent_330", maturity: "proposed", since: "0.2.0" },
|
|
135
|
+
{ name: "journey_action", type_id: "ent_331", maturity: "proposed", since: "0.2.0" },
|
|
136
|
+
{ name: "design_decision", type_id: "ent_319", maturity: "deprecated", since: "0.2.0", deprecated_in: "0.2.0", replacement: "decision" },
|
|
137
|
+
// F7 (UPG-673): graduated proposed → stable at v0.9.x — proposed since 0.2.0,
|
|
138
|
+
// the brand-identity set (logo + imagery) is settled with no open rename.
|
|
139
|
+
{ name: "brand_logo", type_id: "ent_321", maturity: "stable", since: "0.2.0" },
|
|
140
|
+
{ name: "brand_imagery", type_id: "ent_322", maturity: "stable", since: "0.2.0" },
|
|
141
|
+
// ── Product Spec ──
|
|
142
|
+
{ name: "feature_area", type_id: "ent_314", maturity: "stable", since: "0.1.0" },
|
|
143
|
+
{ name: "feature", type_id: "ent_071", maturity: "stable", since: "0.1.0" },
|
|
144
|
+
{ name: "epic", type_id: "ent_072", maturity: "stable", since: "0.1.0" },
|
|
145
|
+
// `user_story` is the templated "As X, I want Y so Z" promise: a stable,
|
|
146
|
+
// lifecycle-free design artefact (UCS pattern P5). The v0.2.7 split EXTRACTED
|
|
147
|
+
// the engineering work into a separate `task` (the lifecycle-bearing work-unit,
|
|
148
|
+
// linked via `task_implements_user_story`); the split was right. But the
|
|
149
|
+
// surviving statement half was renamed to the coined `story_statement`, which
|
|
150
|
+
// raised the adoption barrier. "user story" is the universally-recognised
|
|
151
|
+
// industry term for exactly this artefact. v0.7.0 (UPG-571) re-canonicalises
|
|
152
|
+
// the statement under `user_story`; `story_statement` becomes a deprecated
|
|
153
|
+
// alias. `story_task` (the original work half) was already collapsed into
|
|
154
|
+
// canonical `task` at v0.4.0. So the canonical shape is: user_story (statement)
|
|
155
|
+
// + task (work), linked by `task_implements_user_story`.
|
|
156
|
+
//
|
|
157
|
+
// F7 (UPG-673) — DEFERRED, deliberately kept `proposed`. The audit flagged
|
|
158
|
+
// user_story as a stable-spine candidate, but the v0.7.0 re-canon contract
|
|
159
|
+
// (UPG-571) freezes maturity at `proposed` until the re-canonicalised name
|
|
160
|
+
// has soaked across a full migration window. `user-story-split.test.ts`
|
|
161
|
+
// ("user_story is canonical again (ent_073, proposed, not deprecated)")
|
|
162
|
+
// asserts `proposed` as the post-re-canon invariant. Graduating here would
|
|
163
|
+
// break that contract; promotion is a separate, ticketed decision once the
|
|
164
|
+
// story_statement → user_story migration has fully aged out.
|
|
165
|
+
{ name: "user_story", type_id: "ent_073", maturity: "stable", since: "0.1.0" },
|
|
166
|
+
{ name: "story_statement", type_id: "ent_342", maturity: "deprecated", since: "0.2.7", deprecated_in: "0.7.0", replacement: "user_story" },
|
|
167
|
+
{ name: "story_task", type_id: "ent_343", maturity: "deprecated", since: "0.2.7", deprecated_in: "0.4.0", replacement: "task" },
|
|
168
|
+
{ name: "acceptance_criterion", type_id: "ent_074", maturity: "stable", since: "0.1.0" },
|
|
169
|
+
{ name: "release", type_id: "ent_075", maturity: "stable", since: "0.1.0" },
|
|
170
|
+
{ name: "task", type_id: "ent_076", maturity: "stable", since: "0.1.0" },
|
|
171
|
+
{ name: "bug", type_id: "ent_077", maturity: "stable", since: "0.1.0" },
|
|
172
|
+
{ name: "roadmap", type_id: "ent_078", maturity: "stable", since: "0.1.0" },
|
|
173
|
+
{ name: "roadmap_item", type_id: "ent_079", maturity: "stable", since: "0.1.0" },
|
|
174
|
+
{ name: "theme", type_id: "ent_080", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.9.0", replacement: "roadmap_theme" },
|
|
175
|
+
{ name: "roadmap_theme", type_id: "ent_351", maturity: "stable", since: "0.1.0" },
|
|
176
|
+
{ name: "changelog", type_id: "ent_081", maturity: "stable", since: "0.1.0" },
|
|
177
|
+
// (0.20.0) The cadence axis: a named, dated interval that work flows through
|
|
178
|
+
// and which nests (a program-increment contains iterations; a cycle contains
|
|
179
|
+
// its cooldown). One self-nesting type with a `cadence_kind` discriminator
|
|
180
|
+
// spans sprint / iteration / quarter / PI / cooldown rather than minting a
|
|
181
|
+
// type per methodology. `portfolio_shared` because a coarse cycle is an
|
|
182
|
+
// org-shared interval an objective in a rollup graph and a story in a product
|
|
183
|
+
// graph both schedule into.
|
|
184
|
+
{ name: "planning_cycle", type_id: "ent_358", maturity: "proposed", since: "0.20.0", portfolio_shared: true },
|
|
185
|
+
// ── Engineering ──
|
|
186
|
+
{ name: "bounded_context", type_id: "ent_082", maturity: "stable", since: "0.1.0" },
|
|
187
|
+
{ name: "service", type_id: "ent_083", maturity: "stable", since: "0.1.0" },
|
|
188
|
+
{ name: "domain_event", type_id: "ent_084", maturity: "stable", since: "0.1.0" },
|
|
189
|
+
{ name: "api_contract", type_id: "ent_085", maturity: "stable", since: "0.1.0" },
|
|
190
|
+
{ name: "architecture_decision", type_id: "ent_086", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "decision" },
|
|
191
|
+
{ name: "technical_debt_item", type_id: "ent_087", maturity: "stable", since: "0.1.0" },
|
|
192
|
+
{ name: "feature_flag", type_id: "ent_088", maturity: "stable", since: "0.1.0" },
|
|
193
|
+
{ name: "deployment", type_id: "ent_089", maturity: "stable", since: "0.1.0" },
|
|
194
|
+
{ name: "aggregate", type_id: "ent_090", maturity: "stable", since: "0.1.0" },
|
|
195
|
+
{ name: "domain_entity", type_id: "ent_091", maturity: "stable", since: "0.1.0" },
|
|
196
|
+
{ name: "value_object", type_id: "ent_092", maturity: "stable", since: "0.1.0" },
|
|
197
|
+
{ name: "command", type_id: "ent_093", maturity: "stable", since: "0.1.0" },
|
|
198
|
+
{ name: "read_model", type_id: "ent_094", maturity: "stable", since: "0.1.0" },
|
|
199
|
+
{ name: "api_endpoint", type_id: "ent_095", maturity: "stable", since: "0.1.0" },
|
|
200
|
+
{ name: "database_schema", type_id: "ent_096", maturity: "stable", since: "0.1.0" },
|
|
201
|
+
{ name: "queue_topic", type_id: "ent_097", maturity: "stable", since: "0.1.0" },
|
|
202
|
+
{ name: "build_artifact", type_id: "ent_098", maturity: "stable", since: "0.1.0" },
|
|
203
|
+
{ name: "code_repository", type_id: "ent_099", maturity: "stable", since: "0.1.0" },
|
|
204
|
+
{ name: "library_dependency", type_id: "ent_100", maturity: "stable", since: "0.1.0" },
|
|
205
|
+
{ name: "integration_pattern", type_id: "ent_101", maturity: "stable", since: "0.1.0" },
|
|
206
|
+
{ name: "external_api", type_id: "ent_102", maturity: "stable", since: "0.1.0" },
|
|
207
|
+
{ name: "data_flow", type_id: "ent_103", maturity: "stable", since: "0.1.0" },
|
|
208
|
+
{ name: "investigation", type_id: "ent_315", maturity: "stable", since: "0.2.0" },
|
|
209
|
+
{ name: "root_cause", type_id: "ent_316", maturity: "stable", since: "0.2.0" },
|
|
210
|
+
{ name: "symptom", type_id: "ent_317", maturity: "stable", since: "0.2.0" },
|
|
211
|
+
{ name: "fix", type_id: "ent_318", maturity: "stable", since: "0.2.0" },
|
|
212
|
+
// ── Growth ──
|
|
213
|
+
{ name: "north_star_metric", type_id: "ent_104", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
214
|
+
{ name: "input_metric", type_id: "ent_105", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
215
|
+
{ name: "funnel", type_id: "ent_106", maturity: "stable", since: "0.1.0" },
|
|
216
|
+
{ name: "funnel_step", type_id: "ent_107", maturity: "stable", since: "0.1.0" },
|
|
217
|
+
{ name: "acquisition_channel", type_id: "ent_108", maturity: "stable", since: "0.1.0" },
|
|
218
|
+
{ name: "growth_campaign", type_id: "ent_109", maturity: "stable", since: "0.1.0" },
|
|
219
|
+
{ name: "campaign", type_id: "ent_337", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "growth_campaign" },
|
|
220
|
+
{ name: "cohort", type_id: "ent_110", maturity: "stable", since: "0.1.0" },
|
|
221
|
+
{ name: "behavioral_segment", type_id: "ent_111", maturity: "stable", since: "0.1.0" },
|
|
222
|
+
{ name: "segment", type_id: "ent_338", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "behavioral_segment" },
|
|
223
|
+
{ name: "growth_loop", type_id: "ent_112", maturity: "stable", since: "0.1.0" },
|
|
224
|
+
{ name: "growth_experiment", type_id: "ent_113", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "experiment" },
|
|
225
|
+
{ name: "variant", type_id: "ent_114", maturity: "stable", since: "0.1.0" },
|
|
226
|
+
{ name: "attribution_model", type_id: "ent_115", maturity: "stable", since: "0.1.0" },
|
|
227
|
+
// ── Business Model ──
|
|
228
|
+
{ name: "business_model", type_id: "ent_116", maturity: "stable", since: "0.1.0" },
|
|
229
|
+
{ name: "value_proposition", type_id: "ent_117", maturity: "stable", since: "0.1.0" },
|
|
230
|
+
{ name: "revenue_stream", type_id: "ent_118", maturity: "stable", since: "0.1.0" },
|
|
231
|
+
{ name: "pricing_tier", type_id: "ent_119", maturity: "stable", since: "0.1.0" },
|
|
232
|
+
{ name: "cost_structure", type_id: "ent_120", maturity: "stable", since: "0.1.0" },
|
|
233
|
+
{ name: "unit_economics", type_id: "ent_121", maturity: "stable", since: "0.1.0" },
|
|
234
|
+
{ name: "partnership", type_id: "ent_122", maturity: "stable", since: "0.1.0" },
|
|
235
|
+
{ name: "key_resource", type_id: "ent_123", maturity: "stable", since: "0.1.0" },
|
|
236
|
+
{ name: "key_activity", type_id: "ent_124", maturity: "stable", since: "0.1.0" },
|
|
237
|
+
{ name: "customer_segment_bm", type_id: "ent_125", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "market_segment" },
|
|
238
|
+
{ name: "channel_bm", type_id: "ent_126", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "distribution_channel" },
|
|
239
|
+
{ name: "target_customer_segment", type_id: "ent_329", maturity: "deprecated", since: "0.2.0", deprecated_in: "0.2.0", replacement: "market_segment" },
|
|
240
|
+
{ name: "customer_relationship", type_id: "ent_127", maturity: "stable", since: "0.1.0" },
|
|
241
|
+
{ name: "distribution_channel", type_id: "ent_128", maturity: "stable", since: "0.1.0" },
|
|
242
|
+
// ── Go-To-Market ──
|
|
243
|
+
{ name: "gtm_strategy", type_id: "ent_129", maturity: "stable", since: "0.1.0" },
|
|
244
|
+
{ name: "ideal_customer_profile", type_id: "ent_130", maturity: "stable", since: "0.1.0" },
|
|
245
|
+
{ name: "positioning", type_id: "ent_131", maturity: "stable", since: "0.1.0" },
|
|
246
|
+
{ name: "messaging", type_id: "ent_132", maturity: "stable", since: "0.1.0" },
|
|
247
|
+
{ name: "launch", type_id: "ent_133", maturity: "stable", since: "0.1.0" },
|
|
248
|
+
{ name: "content_strategy", type_id: "ent_134", maturity: "stable", since: "0.1.0" },
|
|
249
|
+
{ name: "sales_motion", type_id: "ent_135", maturity: "stable", since: "0.1.0" },
|
|
250
|
+
{ name: "competitive_battle_card", type_id: "ent_136", maturity: "stable", since: "0.1.0" },
|
|
251
|
+
{ name: "demand_gen_program", type_id: "ent_137", maturity: "stable", since: "0.1.0" },
|
|
252
|
+
{ name: "territory", type_id: "ent_138", maturity: "stable", since: "0.1.0" },
|
|
253
|
+
{ name: "objection", type_id: "ent_139", maturity: "stable", since: "0.1.0" },
|
|
254
|
+
{ name: "rebuttal", type_id: "ent_140", maturity: "stable", since: "0.1.0" },
|
|
255
|
+
{ name: "proof_point", type_id: "ent_141", maturity: "stable", since: "0.1.0" },
|
|
256
|
+
// ── Team & Organisation ──
|
|
257
|
+
{ name: "team", type_id: "ent_142", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
258
|
+
{ name: "role", type_id: "ent_143", maturity: "stable", since: "0.1.0" },
|
|
259
|
+
{ name: "stakeholder", type_id: "ent_144", maturity: "stable", since: "0.1.0" },
|
|
260
|
+
{ name: "person", type_id: "ent_349", maturity: "stable", since: "0.5.0" },
|
|
261
|
+
{ name: "product_decision", type_id: "ent_145", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "decision" },
|
|
262
|
+
{ name: "team_okr", type_id: "ent_146", maturity: "stable", since: "0.1.0" },
|
|
263
|
+
{ name: "retrospective", type_id: "ent_147", maturity: "stable", since: "0.1.0" },
|
|
264
|
+
{ name: "dependency", type_id: "ent_148", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
265
|
+
{ name: "department", type_id: "ent_149", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
266
|
+
{ name: "skill", type_id: "ent_150", maturity: "stable", since: "0.1.0" },
|
|
267
|
+
{ name: "ceremony", type_id: "ent_151", maturity: "stable", since: "0.1.0" },
|
|
268
|
+
{ name: "capacity_plan", type_id: "ent_152", maturity: "stable", since: "0.1.0" },
|
|
269
|
+
// ── Data & Analytics ──
|
|
270
|
+
{ name: "data_source", type_id: "ent_153", maturity: "stable", since: "0.1.0" },
|
|
271
|
+
{ name: "metric_definition", type_id: "ent_154", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
272
|
+
{ name: "event_schema", type_id: "ent_155", maturity: "stable", since: "0.1.0" },
|
|
273
|
+
{ name: "dashboard", type_id: "ent_156", maturity: "stable", since: "0.1.0" },
|
|
274
|
+
{ name: "ab_test", type_id: "ent_157", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "experiment" },
|
|
275
|
+
{ name: "data_model", type_id: "ent_158", maturity: "stable", since: "0.1.0" },
|
|
276
|
+
{ name: "data_quality_rule", type_id: "ent_159", maturity: "stable", since: "0.1.0" },
|
|
277
|
+
{ name: "data_product", type_id: "ent_160", maturity: "stable", since: "0.1.0" },
|
|
278
|
+
{ name: "data_pipeline", type_id: "ent_161", maturity: "stable", since: "0.1.0" },
|
|
279
|
+
{ name: "data_lineage", type_id: "ent_162", maturity: "stable", since: "0.1.0" },
|
|
280
|
+
{ name: "glossary_term", type_id: "ent_163", maturity: "stable", since: "0.1.0" },
|
|
281
|
+
{ name: "data_domain", type_id: "ent_164", maturity: "stable", since: "0.1.0" },
|
|
282
|
+
{ name: "report", type_id: "ent_165", maturity: "stable", since: "0.1.0" },
|
|
283
|
+
// ── Content & Knowledge ──
|
|
284
|
+
{ name: "content_piece", type_id: "ent_166", maturity: "stable", since: "0.1.0" },
|
|
285
|
+
{ name: "knowledge_base_article", type_id: "ent_167", maturity: "stable", since: "0.1.0" },
|
|
286
|
+
{ name: "brand_asset", type_id: "ent_168", maturity: "stable", since: "0.1.0" },
|
|
287
|
+
{ name: "internal_doc", type_id: "ent_169", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "document" },
|
|
288
|
+
{ name: "prompt_template", type_id: "ent_170", maturity: "stable", since: "0.1.0" },
|
|
289
|
+
{ name: "content_calendar", type_id: "ent_171", maturity: "stable", since: "0.1.0" },
|
|
290
|
+
{ name: "content_theme", type_id: "ent_172", maturity: "stable", since: "0.1.0" },
|
|
291
|
+
{ name: "documentation_template", type_id: "ent_173", maturity: "stable", since: "0.1.0" },
|
|
292
|
+
{ name: "document", type_id: "ent_320", maturity: "stable", since: "0.2.0" },
|
|
293
|
+
// ── Legal & Compliance ──
|
|
294
|
+
{ name: "compliance_requirement", type_id: "ent_174", maturity: "stable", since: "0.1.0" },
|
|
295
|
+
{ name: "risk", type_id: "ent_175", maturity: "stable", since: "0.1.0" },
|
|
296
|
+
{ name: "data_contract", type_id: "ent_176", maturity: "stable", since: "0.1.0" },
|
|
297
|
+
{ name: "legal_entity", type_id: "ent_177", maturity: "stable", since: "0.1.0" },
|
|
298
|
+
{ name: "ip_asset", type_id: "ent_178", maturity: "stable", since: "0.1.0" },
|
|
299
|
+
{ name: "audit_log_policy", type_id: "ent_179", maturity: "stable", since: "0.1.0" },
|
|
300
|
+
{ name: "contract", type_id: "ent_180", maturity: "stable", since: "0.1.0" },
|
|
301
|
+
{ name: "contract_clause", type_id: "ent_181", maturity: "stable", since: "0.1.0" },
|
|
302
|
+
{ name: "privacy_policy", type_id: "ent_182", maturity: "stable", since: "0.1.0" },
|
|
303
|
+
{ name: "compliance_framework", type_id: "ent_183", maturity: "stable", since: "0.1.0" },
|
|
304
|
+
{ name: "security_audit", type_id: "ent_184", maturity: "stable", since: "0.1.0" },
|
|
305
|
+
// ── DevOps & Platform ──
|
|
306
|
+
{ name: "service_level_indicator", type_id: "ent_185", maturity: "stable", since: "0.1.0" },
|
|
307
|
+
{ name: "sli", type_id: "ent_334", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "service_level_indicator" },
|
|
308
|
+
{ name: "service_level_objective", type_id: "ent_186", maturity: "stable", since: "0.1.0" },
|
|
309
|
+
{ name: "slo", type_id: "ent_335", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "service_level_objective" },
|
|
310
|
+
{ name: "error_budget", type_id: "ent_187", maturity: "stable", since: "0.1.0" },
|
|
311
|
+
{ name: "incident", type_id: "ent_188", maturity: "stable", since: "0.1.0" },
|
|
312
|
+
{ name: "postmortem", type_id: "ent_189", maturity: "stable", since: "0.1.0" },
|
|
313
|
+
{ name: "runbook", type_id: "ent_190", maturity: "stable", since: "0.1.0" },
|
|
314
|
+
{ name: "monitor", type_id: "ent_191", maturity: "stable", since: "0.1.0" },
|
|
315
|
+
{ name: "alert_rule", type_id: "ent_192", maturity: "stable", since: "0.1.0" },
|
|
316
|
+
{ name: "ci_pipeline", type_id: "ent_193", maturity: "stable", since: "0.1.0" },
|
|
317
|
+
{ name: "release_strategy", type_id: "ent_194", maturity: "stable", since: "0.1.0" },
|
|
318
|
+
{ name: "on_call_rotation", type_id: "ent_195", maturity: "stable", since: "0.1.0" },
|
|
319
|
+
{ name: "infrastructure_component", type_id: "ent_196", maturity: "stable", since: "0.1.0" },
|
|
320
|
+
// ── Security ──
|
|
321
|
+
{ name: "threat_model", type_id: "ent_197", maturity: "stable", since: "0.1.0" },
|
|
322
|
+
{ name: "threat", type_id: "ent_198", maturity: "stable", since: "0.1.0" },
|
|
323
|
+
{ name: "vulnerability", type_id: "ent_199", maturity: "stable", since: "0.1.0" },
|
|
324
|
+
{ name: "security_control", type_id: "ent_200", maturity: "stable", since: "0.1.0" },
|
|
325
|
+
{ name: "security_policy", type_id: "ent_201", maturity: "stable", since: "0.1.0" },
|
|
326
|
+
{ name: "security_incident", type_id: "ent_202", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "incident" },
|
|
327
|
+
{ name: "penetration_test", type_id: "ent_203", maturity: "stable", since: "0.1.0" },
|
|
328
|
+
{ name: "security_review", type_id: "ent_204", maturity: "stable", since: "0.1.0" },
|
|
329
|
+
{ name: "data_classification", type_id: "ent_205", maturity: "stable", since: "0.1.0" },
|
|
330
|
+
{ name: "access_policy", type_id: "ent_206", maturity: "stable", since: "0.1.0" },
|
|
331
|
+
// ── Accessibility ──
|
|
332
|
+
{ name: "a11y_standard", type_id: "ent_207", maturity: "stable", since: "0.1.0" },
|
|
333
|
+
{ name: "a11y_guideline", type_id: "ent_208", maturity: "stable", since: "0.1.0" },
|
|
334
|
+
{ name: "a11y_audit", type_id: "ent_209", maturity: "stable", since: "0.1.0" },
|
|
335
|
+
{ name: "a11y_issue", type_id: "ent_210", maturity: "stable", since: "0.1.0" },
|
|
336
|
+
{ name: "a11y_annotation", type_id: "ent_211", maturity: "stable", since: "0.1.0" },
|
|
337
|
+
// ── QA & Testing ──
|
|
338
|
+
{ name: "test_suite", type_id: "ent_212", maturity: "stable", since: "0.1.0" },
|
|
339
|
+
{ name: "test_case", type_id: "ent_213", maturity: "stable", since: "0.1.0" },
|
|
340
|
+
{ name: "qa_session", type_id: "ent_214", maturity: "stable", since: "0.1.0" },
|
|
341
|
+
{ name: "regression_test", type_id: "ent_215", maturity: "stable", since: "0.1.0" },
|
|
342
|
+
{ name: "test_coverage_report", type_id: "ent_216", maturity: "stable", since: "0.1.0" },
|
|
343
|
+
{ name: "test_environment", type_id: "ent_217", maturity: "stable", since: "0.1.0" },
|
|
344
|
+
{ name: "defect_report", type_id: "ent_218", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "support_ticket" },
|
|
345
|
+
{ name: "test_result", type_id: "ent_327", maturity: "proposed", since: "0.2.0" },
|
|
346
|
+
// ── Feedback & Voice of Customer ──
|
|
347
|
+
{ name: "feedback_program", type_id: "ent_219", maturity: "stable", since: "0.1.0" },
|
|
348
|
+
{ name: "feature_request", type_id: "ent_220", maturity: "stable", since: "0.1.0" },
|
|
349
|
+
{ name: "feedback_vote", type_id: "ent_221", maturity: "stable", since: "0.1.0" },
|
|
350
|
+
{ name: "nps_campaign", type_id: "ent_222", maturity: "stable", since: "0.1.0" },
|
|
351
|
+
{ name: "user_advisory_board", type_id: "ent_223", maturity: "stable", since: "0.1.0" },
|
|
352
|
+
{ name: "beta_program", type_id: "ent_224", maturity: "stable", since: "0.1.0" },
|
|
353
|
+
{ name: "feedback_theme", type_id: "ent_225", maturity: "stable", since: "0.1.0" },
|
|
354
|
+
// ── Pricing & Packaging ──
|
|
355
|
+
{ name: "pricing_strategy", type_id: "ent_226", maturity: "stable", since: "0.1.0" },
|
|
356
|
+
{ name: "pricing_experiment", type_id: "ent_227", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "experiment" },
|
|
357
|
+
{ name: "package", type_id: "ent_228", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "pricing_tier" },
|
|
358
|
+
{ name: "discount_strategy", type_id: "ent_229", maturity: "stable", since: "0.1.0" },
|
|
359
|
+
{ name: "trial_config", type_id: "ent_230", maturity: "stable", since: "0.1.0" },
|
|
360
|
+
{ name: "paywall", type_id: "ent_231", maturity: "stable", since: "0.1.0" },
|
|
361
|
+
// ── AI/ML Operations ──
|
|
362
|
+
{ name: "ai_model", type_id: "ent_232", maturity: "stable", since: "0.1.0" },
|
|
363
|
+
{ name: "prompt_version", type_id: "ent_233", maturity: "stable", since: "0.1.0" },
|
|
364
|
+
{ name: "eval_benchmark", type_id: "ent_234", maturity: "stable", since: "0.1.0" },
|
|
365
|
+
{ name: "eval_run", type_id: "ent_235", maturity: "stable", since: "0.1.0" },
|
|
366
|
+
{ name: "ai_cost_tracker", type_id: "ent_236", maturity: "stable", since: "0.1.0" },
|
|
367
|
+
{ name: "hallucination_report", type_id: "ent_237", maturity: "stable", since: "0.1.0" },
|
|
368
|
+
{ name: "ai_guardrail", type_id: "ent_238", maturity: "stable", since: "0.1.0" },
|
|
369
|
+
{ name: "model_comparison", type_id: "ent_239", maturity: "stable", since: "0.1.0" },
|
|
370
|
+
{ name: "ai_experiment", type_id: "ent_323", maturity: "proposed", since: "0.2.0" },
|
|
371
|
+
{ name: "ai_dataset", type_id: "ent_324", maturity: "proposed", since: "0.2.0" },
|
|
372
|
+
{ name: "ai_trace", type_id: "ent_325", maturity: "proposed", since: "0.2.0" },
|
|
373
|
+
// ── Agentic Workflows ──
|
|
374
|
+
{ name: "workflow_template", type_id: "ent_240", maturity: "stable", since: "0.1.0" },
|
|
375
|
+
{ name: "workflow_run", type_id: "ent_241", maturity: "stable", since: "0.1.0" },
|
|
376
|
+
{ name: "agent_definition", type_id: "ent_242", maturity: "stable", since: "0.1.0" },
|
|
377
|
+
{ name: "agent_session", type_id: "ent_243", maturity: "stable", since: "0.1.0" },
|
|
378
|
+
{ name: "review_gate", type_id: "ent_244", maturity: "stable", since: "0.1.0" },
|
|
379
|
+
{ name: "approval_record", type_id: "ent_245", maturity: "stable", since: "0.1.0" },
|
|
380
|
+
{ name: "agent_skill", type_id: "ent_246", maturity: "stable", since: "0.1.0" },
|
|
381
|
+
{ name: "agent_hook", type_id: "ent_247", maturity: "stable", since: "0.1.0" },
|
|
382
|
+
{ name: "workflow_artifact", type_id: "ent_248", maturity: "stable", since: "0.1.0" },
|
|
383
|
+
{ name: "agent_task", type_id: "ent_326", maturity: "proposed", since: "0.2.0" },
|
|
384
|
+
// ── Portfolio ──
|
|
385
|
+
{ name: "organization", type_id: "ent_249", maturity: "stable", since: "0.1.0" },
|
|
386
|
+
{ name: "portfolio", type_id: "ent_250", maturity: "stable", since: "0.1.0" },
|
|
387
|
+
{ name: "product_area", type_id: "ent_251", maturity: "stable", since: "0.1.0" },
|
|
388
|
+
// ── Sales & Revenue ──
|
|
389
|
+
{ name: "account", type_id: "ent_252", maturity: "stable", since: "0.1.0" },
|
|
390
|
+
{ name: "contact", type_id: "ent_253", maturity: "stable", since: "0.1.0" },
|
|
391
|
+
{ name: "lead", type_id: "ent_254", maturity: "stable", since: "0.1.0" },
|
|
392
|
+
{ name: "deal", type_id: "ent_255", maturity: "stable", since: "0.1.0" },
|
|
393
|
+
{ name: "pipeline_sales", type_id: "ent_256", maturity: "stable", since: "0.1.0" },
|
|
394
|
+
{ name: "pipeline_stage", type_id: "ent_257", maturity: "stable", since: "0.1.0" },
|
|
395
|
+
{ name: "quote_document", type_id: "ent_258", maturity: "stable", since: "0.1.0" },
|
|
396
|
+
{ name: "subscription", type_id: "ent_259", maturity: "stable", since: "0.1.0" },
|
|
397
|
+
{ name: "invoice", type_id: "ent_260", maturity: "stable", since: "0.1.0" },
|
|
398
|
+
{ name: "forecast", type_id: "ent_261", maturity: "stable", since: "0.1.0" },
|
|
399
|
+
// ── Program Management ──
|
|
400
|
+
{ name: "program", type_id: "ent_262", maturity: "stable", since: "0.1.0" },
|
|
401
|
+
{ name: "project", type_id: "ent_263", maturity: "stable", since: "0.1.0" },
|
|
402
|
+
// `portfolio_shared` (0.25.1 feedback): a milestone is often a cross-team gate,
|
|
403
|
+
// not one project's checkpoint — an org-wide "Open Beta" that several products'
|
|
404
|
+
// projects must all satisfy. Shared tier lets `project_targets_milestone` (and
|
|
405
|
+
// the other milestone edges) pass the cross-scope gate as `provisional`, same
|
|
406
|
+
// as `project_implements_initiative`. Precedent: `planning_cycle` (0.20.0).
|
|
407
|
+
{ name: "milestone", type_id: "ent_264", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
408
|
+
{ name: "risk_register", type_id: "ent_265", maturity: "stable", since: "0.1.0" },
|
|
409
|
+
{ name: "risk_item", type_id: "ent_266", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "risk" },
|
|
410
|
+
{ name: "change_request", type_id: "ent_267", maturity: "stable", since: "0.1.0" },
|
|
411
|
+
{ name: "deliverable", type_id: "ent_268", maturity: "stable", since: "0.1.0" },
|
|
412
|
+
{ name: "resource_allocation", type_id: "ent_269", maturity: "stable", since: "0.1.0" },
|
|
413
|
+
{ name: "status_report", type_id: "ent_270", maturity: "stable", since: "0.1.0" },
|
|
414
|
+
// ── Marketing Operations ──
|
|
415
|
+
{ name: "marketing_strategy", type_id: "ent_271", maturity: "stable", since: "0.1.0" },
|
|
416
|
+
{ name: "marketing_channel", type_id: "ent_272", maturity: "stable", since: "0.1.0" },
|
|
417
|
+
{ name: "marketing_campaign_plan", type_id: "ent_273", maturity: "stable", since: "0.1.0" },
|
|
418
|
+
{ name: "email_sequence", type_id: "ent_274", maturity: "stable", since: "0.1.0" },
|
|
419
|
+
{ name: "social_post", type_id: "ent_275", maturity: "stable", since: "0.1.0" },
|
|
420
|
+
{ name: "seo_keyword", type_id: "ent_276", maturity: "stable", since: "0.1.0" },
|
|
421
|
+
{ name: "ad_creative", type_id: "ent_277", maturity: "stable", since: "0.1.0" },
|
|
422
|
+
{ name: "press_release", type_id: "ent_278", maturity: "stable", since: "0.1.0" },
|
|
423
|
+
{ name: "event", type_id: "ent_279", maturity: "stable", since: "0.1.0" },
|
|
424
|
+
{ name: "community_initiative", type_id: "ent_280", maturity: "stable", since: "0.1.0" },
|
|
425
|
+
// ── Operations & Customer Success ──
|
|
426
|
+
{ name: "support_ticket", type_id: "ent_281", maturity: "stable", since: "0.1.0" },
|
|
427
|
+
{ name: "customer_feedback", type_id: "ent_282", maturity: "stable", since: "0.1.0" },
|
|
428
|
+
{ name: "churn_reason", type_id: "ent_283", maturity: "stable", since: "0.1.0" },
|
|
429
|
+
{ name: "onboarding_flow", type_id: "ent_284", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "user_flow" },
|
|
430
|
+
{ name: "customer_health_score", type_id: "ent_285", maturity: "stable", since: "0.1.0" },
|
|
431
|
+
{ name: "playbook", type_id: "ent_286", maturity: "stable", since: "0.1.0" },
|
|
432
|
+
{ name: "service_level_agreement", type_id: "ent_287", maturity: "stable", since: "0.1.0" },
|
|
433
|
+
{ name: "sla", type_id: "ent_336", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "service_level_agreement" },
|
|
434
|
+
{ name: "customer_journey_stage", type_id: "ent_288", maturity: "stable", since: "0.1.0" },
|
|
435
|
+
{ name: "touchpoint", type_id: "ent_289", maturity: "stable", since: "0.1.0" },
|
|
436
|
+
{ name: "success_milestone", type_id: "ent_290", maturity: "stable", since: "0.1.0" },
|
|
437
|
+
{ name: "service_blueprint", type_id: "ent_291", maturity: "stable", since: "0.1.0" },
|
|
438
|
+
{ name: "nps_score", type_id: "ent_292", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "nps_campaign" },
|
|
439
|
+
// ── Localisation & i18n ──
|
|
440
|
+
{ name: "locale", type_id: "ent_293", maturity: "stable", since: "0.1.0" },
|
|
441
|
+
{ name: "translation_key", type_id: "ent_294", maturity: "stable", since: "0.1.0" },
|
|
442
|
+
{ name: "translation_bundle", type_id: "ent_295", maturity: "stable", since: "0.1.0" },
|
|
443
|
+
{ name: "locale_config", type_id: "ent_296", maturity: "stable", since: "0.1.0" },
|
|
444
|
+
{ name: "cultural_adaptation", type_id: "ent_297", maturity: "stable", since: "0.1.0" },
|
|
445
|
+
{ name: "regional_pricing", type_id: "ent_298", maturity: "stable", since: "0.1.0" },
|
|
446
|
+
// ── Customer Education ──
|
|
447
|
+
{ name: "education_program", type_id: "ent_299", maturity: "stable", since: "0.1.0" },
|
|
448
|
+
{ name: "tutorial", type_id: "ent_300", maturity: "stable", since: "0.1.0" },
|
|
449
|
+
{ name: "walkthrough", type_id: "ent_301", maturity: "stable", since: "0.1.0" },
|
|
450
|
+
{ name: "webinar", type_id: "ent_302", maturity: "stable", since: "0.1.0" },
|
|
451
|
+
{ name: "certification", type_id: "ent_303", maturity: "stable", since: "0.1.0" },
|
|
452
|
+
{ name: "help_video", type_id: "ent_304", maturity: "stable", since: "0.1.0" },
|
|
453
|
+
{ name: "learning_path", type_id: "ent_305", maturity: "stable", since: "0.1.0" },
|
|
454
|
+
// ── Partners & Ecosystem ──
|
|
455
|
+
{ name: "partner_program", type_id: "ent_306", maturity: "stable", since: "0.1.0" },
|
|
456
|
+
{ name: "partner_tier", type_id: "ent_307", maturity: "stable", since: "0.1.0" },
|
|
457
|
+
{ name: "api_ecosystem", type_id: "ent_308", maturity: "stable", since: "0.1.0" },
|
|
458
|
+
{ name: "marketplace_listing", type_id: "ent_309", maturity: "stable", since: "0.1.0" },
|
|
459
|
+
{ name: "developer_portal", type_id: "ent_310", maturity: "stable", since: "0.1.0" },
|
|
460
|
+
{ name: "integration_partner", type_id: "ent_311", maturity: "stable", since: "0.1.0" },
|
|
461
|
+
{ name: "partner_revenue_share", type_id: "ent_312", maturity: "stable", since: "0.1.0" },
|
|
462
|
+
// ── Workspace ──
|
|
463
|
+
{ name: "workspace", type_id: "ent_328", maturity: "proposed", since: "0.2.0" },
|
|
464
|
+
{ name: "framework_exercise", type_id: "ent_350", maturity: "proposed", since: "0.8.4" },
|
|
465
|
+
{ name: "composition", type_id: "ent_361", maturity: "proposed", since: "0.31.0" },
|
|
466
|
+
// A dated, hashed rendition of a node that is already in the graph. Enters
|
|
467
|
+
// `proposed` per the maturity rubric (precedent: composition 0.31.0).
|
|
468
|
+
{ name: "capture", type_id: "ent_362", maturity: "proposed", since: "0.32.0" }
|
|
469
|
+
];
|
|
470
|
+
var DEFERRED_PROPOSED_BY_CONTRACT = {
|
|
471
|
+
// user_story (UPG-571) and experiment_run (UPG-664) graduated to stable in
|
|
472
|
+
// 0.12.6 — Captain lifted both freezes ("we are using them"). Their contracts
|
|
473
|
+
// are settled; they are now stable, not deferred.
|
|
474
|
+
ai_experiment: "UPG-665: AI prompt/model restructure (open ADR).",
|
|
475
|
+
ai_dataset: "UPG-665: AI prompt/model restructure (open ADR).",
|
|
476
|
+
ai_trace: "UPG-665: AI prompt/model restructure (open ADR)."
|
|
477
|
+
};
|
|
478
|
+
var UPG_ENTITY_META_BY_NAME = new Map(
|
|
479
|
+
UPG_ENTITY_META.map((m) => [m.name, m])
|
|
480
|
+
);
|
|
481
|
+
var UPG_ENTITY_META_BY_ID = new Map(
|
|
482
|
+
UPG_ENTITY_META.map((m) => [m.type_id, m])
|
|
483
|
+
);
|
|
484
|
+
var UPG_ACTIVE_TYPES = UPG_ENTITY_META.filter((m) => m.maturity === "stable" || m.maturity === "proposed").map((m) => m.name);
|
|
485
|
+
var UPG_DEPRECATED_TYPES = UPG_ENTITY_META.filter((m) => m.maturity === "deprecated").map((m) => m.name);
|
|
486
|
+
var UPG_PORTFOLIO_SHARED_TYPES = UPG_ENTITY_META.filter((m) => m.portfolio_shared === true).map((m) => m.name);
|
|
487
|
+
function isPortfolioSharedType(name) {
|
|
488
|
+
return UPG_ENTITY_META_BY_NAME.get(name)?.portfolio_shared === true;
|
|
489
|
+
}
|
|
490
|
+
function isDeprecatedType(name) {
|
|
491
|
+
const meta = UPG_ENTITY_META_BY_NAME.get(name);
|
|
492
|
+
return meta?.maturity === "deprecated";
|
|
493
|
+
}
|
|
494
|
+
function getReplacementType(name) {
|
|
495
|
+
const meta = UPG_ENTITY_META_BY_NAME.get(name);
|
|
496
|
+
return meta?.replacement;
|
|
497
|
+
}
|
|
498
|
+
function getTypeId(name) {
|
|
499
|
+
return UPG_ENTITY_META_BY_NAME.get(name)?.type_id;
|
|
500
|
+
}
|
|
501
|
+
function getTypeName(typeId) {
|
|
502
|
+
return UPG_ENTITY_META_BY_ID.get(typeId)?.name;
|
|
503
|
+
}
|
|
504
|
+
|
|
1
505
|
// src/registry/domains.ts
|
|
2
506
|
var UPG_DOMAINS = [
|
|
3
507
|
{
|
|
@@ -509,516 +1013,23 @@ function getTypes() {
|
|
|
509
1013
|
return UPG_DOMAINS.flatMap((d) => [...d.types]);
|
|
510
1014
|
}
|
|
511
1015
|
function getDomainForType(entityType) {
|
|
512
|
-
|
|
1016
|
+
const direct = UPG_DOMAINS.find((d) => d.types.includes(entityType));
|
|
1017
|
+
if (direct) return direct;
|
|
1018
|
+
let name = entityType;
|
|
1019
|
+
for (let hop = 0; hop < 3; hop++) {
|
|
1020
|
+
if (!isDeprecatedType(name)) return void 0;
|
|
1021
|
+
const replacement = getReplacementType(name);
|
|
1022
|
+
if (!replacement) return void 0;
|
|
1023
|
+
const viaReplacement = UPG_DOMAINS.find((d) => d.types.includes(replacement));
|
|
1024
|
+
if (viaReplacement) return viaReplacement;
|
|
1025
|
+
name = replacement;
|
|
1026
|
+
}
|
|
1027
|
+
return void 0;
|
|
513
1028
|
}
|
|
514
1029
|
function getDomainIdForType(entityType) {
|
|
515
1030
|
return UPG_ENTITY_TO_DOMAIN[entityType];
|
|
516
1031
|
}
|
|
517
1032
|
|
|
518
|
-
// src/registry/entity-meta.ts
|
|
519
|
-
var UPG_ENTITY_META = [
|
|
520
|
-
// Foundations (0.9.12): shared specifications + the primitives they define.
|
|
521
|
-
{ name: "specification", type_id: "ent_352", maturity: "proposed", since: "0.9.12", portfolio_shared: true },
|
|
522
|
-
{ name: "primitive", type_id: "ent_353", maturity: "proposed", since: "0.9.12", portfolio_shared: true },
|
|
523
|
-
{ name: "operating_lifecycle", type_id: "ent_355", maturity: "proposed", since: "0.11.6", portfolio_shared: true },
|
|
524
|
-
{ name: "operating_stage", type_id: "ent_356", maturity: "proposed", since: "0.11.6", portfolio_shared: true },
|
|
525
|
-
// ── Strategic ──
|
|
526
|
-
{ name: "product", type_id: "ent_001", maturity: "stable", since: "0.1.0" },
|
|
527
|
-
{ name: "outcome", type_id: "ent_002", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
528
|
-
{ name: "kpi", type_id: "ent_003", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
529
|
-
{ name: "objective", type_id: "ent_004", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
530
|
-
{ name: "key_result", type_id: "ent_005", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
531
|
-
{ name: "metric", type_id: "ent_006", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
532
|
-
// F7 (UPG-673): graduated proposed → stable at v0.9.x — proposed since 0.2.2,
|
|
533
|
-
// the metric-quality assessment artefact is settled with no open restructure.
|
|
534
|
-
{ name: "metric_quality_assessment", type_id: "ent_339", maturity: "stable", since: "0.2.2" },
|
|
535
|
-
{ name: "vision", type_id: "ent_007", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
536
|
-
{ name: "mission", type_id: "ent_008", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
537
|
-
{ name: "strategic_theme", type_id: "ent_009", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
538
|
-
{ name: "initiative", type_id: "ent_010", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
539
|
-
{ name: "capability", type_id: "ent_011", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
540
|
-
{ name: "value_stream", type_id: "ent_012", maturity: "stable", since: "0.1.0" },
|
|
541
|
-
{ name: "strategic_pillar", type_id: "ent_013", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
542
|
-
{ name: "assumption", type_id: "ent_014", maturity: "stable", since: "0.1.0" },
|
|
543
|
-
{ name: "decision", type_id: "ent_015", maturity: "stable", since: "0.1.0" },
|
|
544
|
-
{ name: "constraint", type_id: "ent_348", maturity: "stable", since: "0.4.3" },
|
|
545
|
-
// (0.17.4) Strategy-domain sibling of research_question / design_question,
|
|
546
|
-
// completing the domain-question triad. An open coordination/ownership question
|
|
547
|
-
// a plan is exposed to (distinct from `assumption`, which the plan is built on).
|
|
548
|
-
{ name: "strategic_question", type_id: "ent_357", maturity: "proposed", since: "0.17.4" },
|
|
549
|
-
// ── User ──
|
|
550
|
-
{ name: "persona", type_id: "ent_016", maturity: "stable", since: "0.1.0" },
|
|
551
|
-
{ name: "job", type_id: "ent_017", maturity: "stable", since: "0.1.0" },
|
|
552
|
-
{ name: "jtbd", type_id: "ent_332", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "job" },
|
|
553
|
-
{ name: "pain_point", type_id: "ent_018", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "need" },
|
|
554
|
-
{ name: "desired_outcome", type_id: "ent_019", maturity: "stable", since: "0.1.0" },
|
|
555
|
-
{ name: "job_step", type_id: "ent_020", maturity: "stable", since: "0.1.0" },
|
|
556
|
-
{ name: "user_need", type_id: "ent_021", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "need" },
|
|
557
|
-
{ name: "need", type_id: "ent_313", maturity: "stable", since: "0.1.0" },
|
|
558
|
-
{ name: "switching_cost", type_id: "ent_022", maturity: "stable", since: "0.1.0" },
|
|
559
|
-
// ── Discovery ──
|
|
560
|
-
{ name: "opportunity", type_id: "ent_023", maturity: "stable", since: "0.1.0", default_frameworks: ["opportunity-sizing", "rice-scoring"] },
|
|
561
|
-
{ name: "solution", type_id: "ent_024", maturity: "stable", since: "0.1.0", default_frameworks: ["rice-scoring"] },
|
|
562
|
-
{ name: "feasibility_study", type_id: "ent_025", maturity: "stable", since: "0.1.0" },
|
|
563
|
-
{ name: "design_sprint", type_id: "ent_026", maturity: "stable", since: "0.1.0" },
|
|
564
|
-
// ── Validation ──
|
|
565
|
-
// (since v0.4.0) `hypothesis` re-promoted to canonical-stable. The
|
|
566
|
-
// v0.2.8 rename to `hypothesis_claim` was over-split: "claim" is implied
|
|
567
|
-
// by being a hypothesis. Canonical name reverts; HypothesisClaimProperties
|
|
568
|
-
// renamed to HypothesisProperties. `hypothesis_claim` is now deprecated
|
|
569
|
-
// (→ `hypothesis`). `hypothesis_evidence` deprecated (→ `evidence`): the
|
|
570
|
-
// dual evidence_type enum smell resolved by enriching canonical `evidence`
|
|
571
|
-
// with evidence_rigor + evidence_source axes. Edge pattern switches to
|
|
572
|
-
// `hypothesis_has_evidence` (neutral, direction on node).
|
|
573
|
-
{ name: "hypothesis", type_id: "ent_027", maturity: "stable", since: "0.1.0" },
|
|
574
|
-
{ name: "hypothesis_claim", type_id: "ent_344", maturity: "deprecated", since: "0.2.8", deprecated_in: "0.4.0", replacement: "hypothesis" },
|
|
575
|
-
{ name: "hypothesis_evidence", type_id: "ent_345", maturity: "deprecated", since: "0.2.8", deprecated_in: "0.4.0", replacement: "evidence" },
|
|
576
|
-
// `experiment` is canonical (UPG-664). It has its own property schema
|
|
577
|
-
// (method, start_date, end_date, sample_size, expected_lift) and is the
|
|
578
|
-
// canonical unit of a structured test. The validation flow is
|
|
579
|
-
// `hypothesis → experiment_plan → experiment → experiment_run`: the plan is
|
|
580
|
-
// the validation design, the experiment is the structured test, the run is
|
|
581
|
-
// the optional multi-run/replication child.
|
|
582
|
-
{ name: "experiment", type_id: "ent_028", maturity: "stable", since: "0.1.0" },
|
|
583
|
-
// experiment_plan graduated proposed → stable (UPG-664). It is the canonical
|
|
584
|
-
// validation PLAN type — it absorbed `test_plan`'s planning properties
|
|
585
|
-
// (method / success_criteria / sample_size) when `test_plan` re-homed to the
|
|
586
|
-
// QA/testing domain (UPG-678).
|
|
587
|
-
{ name: "experiment_plan", type_id: "ent_340", maturity: "stable", since: "0.2.6" },
|
|
588
|
-
{ name: "experiment_run", type_id: "ent_341", maturity: "stable", since: "0.2.6" },
|
|
589
|
-
{ name: "learning", type_id: "ent_029", maturity: "stable", since: "0.1.0" },
|
|
590
|
-
// test_plan re-homed validation → testing/QA (UPG-678). It is the QA
|
|
591
|
-
// verification-procedure plan (test scope / environments / pass criteria);
|
|
592
|
-
// its former validation-planning role is carried by experiment_plan.
|
|
593
|
-
{ name: "test_plan", type_id: "ent_030", maturity: "stable", since: "0.1.0" },
|
|
594
|
-
{ name: "evidence", type_id: "ent_031", maturity: "stable", since: "0.1.0" },
|
|
595
|
-
{ name: "research_plan", type_id: "ent_032", maturity: "stable", since: "0.1.0" },
|
|
596
|
-
// ── Market Intelligence ──
|
|
597
|
-
{ name: "competitor", type_id: "ent_033", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
598
|
-
{ name: "competitor_feature", type_id: "ent_034", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
599
|
-
{ name: "competitor_signal", type_id: "ent_354", maturity: "proposed", since: "0.10.0", portfolio_shared: true },
|
|
600
|
-
{ name: "market_trend", type_id: "ent_035", maturity: "stable", since: "0.1.0" },
|
|
601
|
-
{ name: "market_segment", type_id: "ent_036", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
602
|
-
{ name: "competitive_analysis", type_id: "ent_037", maturity: "stable", since: "0.1.0" },
|
|
603
|
-
// Classification taxonomy hosted by competitive_analysis.
|
|
604
|
-
// F7 (UPG-673): graduated proposed → stable at v0.9.x — two minor releases
|
|
605
|
-
// stable since 0.4.0, the taxonomy-axis/value pair backs the competitive-
|
|
606
|
-
// analysis classification spine with no open rename/restructure ticket.
|
|
607
|
-
{ name: "classification_axis", type_id: "ent_346", maturity: "stable", since: "0.4.0", portfolio_shared: true },
|
|
608
|
-
{ name: "classification_value", type_id: "ent_347", maturity: "stable", since: "0.4.0", portfolio_shared: true },
|
|
609
|
-
// ── UX Research ──
|
|
610
|
-
{ name: "research_study", type_id: "ent_038", maturity: "stable", since: "0.1.0" },
|
|
611
|
-
{ name: "research_insight", type_id: "ent_039", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "insight" },
|
|
612
|
-
{ name: "insight", type_id: "ent_040", maturity: "stable", since: "0.1.0" },
|
|
613
|
-
{ name: "participant", type_id: "ent_041", maturity: "stable", since: "0.1.0" },
|
|
614
|
-
{ name: "observation", type_id: "ent_042", maturity: "stable", since: "0.1.0" },
|
|
615
|
-
{ name: "quote", type_id: "ent_043", maturity: "stable", since: "0.1.0" },
|
|
616
|
-
{ name: "affinity_cluster", type_id: "ent_044", maturity: "stable", since: "0.1.0" },
|
|
617
|
-
{ name: "research_question", type_id: "ent_045", maturity: "stable", since: "0.1.0" },
|
|
618
|
-
{ name: "interview_guide", type_id: "ent_046", maturity: "stable", since: "0.1.0" },
|
|
619
|
-
{ name: "finding", type_id: "ent_047", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "insight" },
|
|
620
|
-
{ name: "survey_response", type_id: "ent_048", maturity: "stable", since: "0.1.0" },
|
|
621
|
-
{ name: "highlight", type_id: "ent_049", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "observation" },
|
|
622
|
-
// ── Design ──
|
|
623
|
-
{ name: "user_journey", type_id: "ent_050", maturity: "stable", since: "0.1.0" },
|
|
624
|
-
{ name: "journey_step", type_id: "ent_051", maturity: "stable", since: "0.1.0" },
|
|
625
|
-
{ name: "ux_insight", type_id: "ent_052", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "insight" },
|
|
626
|
-
{ name: "design_question", type_id: "ent_053", maturity: "stable", since: "0.1.0" },
|
|
627
|
-
{ name: "how_might_we", type_id: "ent_333", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "design_question" },
|
|
628
|
-
{ name: "design_concept", type_id: "ent_054", maturity: "stable", since: "0.1.0" },
|
|
629
|
-
{ name: "prototype", type_id: "ent_055", maturity: "stable", since: "0.1.0" },
|
|
630
|
-
{ name: "design_component", type_id: "ent_056", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
631
|
-
{ name: "design_token", type_id: "ent_057", maturity: "stable", since: "0.1.0" },
|
|
632
|
-
{ name: "brand_identity", type_id: "ent_058", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
633
|
-
{ name: "brand_colour", type_id: "ent_059", maturity: "stable", since: "0.1.0" },
|
|
634
|
-
{ name: "brand_typography", type_id: "ent_060", maturity: "stable", since: "0.1.0" },
|
|
635
|
-
{ name: "brand_voice", type_id: "ent_061", maturity: "stable", since: "0.1.0" },
|
|
636
|
-
{ name: "wireframe", type_id: "ent_062", maturity: "stable", since: "0.1.0" },
|
|
637
|
-
{ name: "design_pattern", type_id: "ent_063", maturity: "stable", since: "0.1.0" },
|
|
638
|
-
{ name: "design_guideline", type_id: "ent_064", maturity: "stable", since: "0.1.0" },
|
|
639
|
-
{ name: "annotation", type_id: "ent_065", maturity: "stable", since: "0.1.0" },
|
|
640
|
-
{ name: "interaction_spec", type_id: "ent_066", maturity: "stable", since: "0.1.0" },
|
|
641
|
-
{ name: "design_system", type_id: "ent_067", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
642
|
-
{ name: "user_flow", type_id: "ent_068", maturity: "stable", since: "0.1.0" },
|
|
643
|
-
{ name: "screen", type_id: "ent_069", maturity: "stable", since: "0.1.0" },
|
|
644
|
-
{ name: "screen_state", type_id: "ent_070", maturity: "stable", since: "0.1.0" },
|
|
645
|
-
// surface (0.27.0): the place inside a screen. `screen` is route-level
|
|
646
|
-
// (route / viewport / access_level); `surface` is the contested slot within
|
|
647
|
-
// it, carrying its occupants and the rule that arbitrates between them.
|
|
648
|
-
// Enters `proposed` per the maturity rubric (precedent: planning_cycle 0.20.0).
|
|
649
|
-
{ name: "surface", type_id: "ent_359", maturity: "proposed", since: "0.27.0" },
|
|
650
|
-
{ name: "configuration_axis", type_id: "ent_360", maturity: "proposed", since: "0.30.0" },
|
|
651
|
-
{ name: "journey_phase", type_id: "ent_330", maturity: "proposed", since: "0.2.0" },
|
|
652
|
-
{ name: "journey_action", type_id: "ent_331", maturity: "proposed", since: "0.2.0" },
|
|
653
|
-
{ name: "design_decision", type_id: "ent_319", maturity: "deprecated", since: "0.2.0", deprecated_in: "0.2.0", replacement: "decision" },
|
|
654
|
-
// F7 (UPG-673): graduated proposed → stable at v0.9.x — proposed since 0.2.0,
|
|
655
|
-
// the brand-identity set (logo + imagery) is settled with no open rename.
|
|
656
|
-
{ name: "brand_logo", type_id: "ent_321", maturity: "stable", since: "0.2.0" },
|
|
657
|
-
{ name: "brand_imagery", type_id: "ent_322", maturity: "stable", since: "0.2.0" },
|
|
658
|
-
// ── Product Spec ──
|
|
659
|
-
{ name: "feature_area", type_id: "ent_314", maturity: "stable", since: "0.1.0" },
|
|
660
|
-
{ name: "feature", type_id: "ent_071", maturity: "stable", since: "0.1.0" },
|
|
661
|
-
{ name: "epic", type_id: "ent_072", maturity: "stable", since: "0.1.0" },
|
|
662
|
-
// `user_story` is the templated "As X, I want Y so Z" promise: a stable,
|
|
663
|
-
// lifecycle-free design artefact (UCS pattern P5). The v0.2.7 split EXTRACTED
|
|
664
|
-
// the engineering work into a separate `task` (the lifecycle-bearing work-unit,
|
|
665
|
-
// linked via `task_implements_user_story`); the split was right. But the
|
|
666
|
-
// surviving statement half was renamed to the coined `story_statement`, which
|
|
667
|
-
// raised the adoption barrier. "user story" is the universally-recognised
|
|
668
|
-
// industry term for exactly this artefact. v0.7.0 (UPG-571) re-canonicalises
|
|
669
|
-
// the statement under `user_story`; `story_statement` becomes a deprecated
|
|
670
|
-
// alias. `story_task` (the original work half) was already collapsed into
|
|
671
|
-
// canonical `task` at v0.4.0. So the canonical shape is: user_story (statement)
|
|
672
|
-
// + task (work), linked by `task_implements_user_story`.
|
|
673
|
-
//
|
|
674
|
-
// F7 (UPG-673) — DEFERRED, deliberately kept `proposed`. The audit flagged
|
|
675
|
-
// user_story as a stable-spine candidate, but the v0.7.0 re-canon contract
|
|
676
|
-
// (UPG-571) freezes maturity at `proposed` until the re-canonicalised name
|
|
677
|
-
// has soaked across a full migration window. `user-story-split.test.ts`
|
|
678
|
-
// ("user_story is canonical again (ent_073, proposed, not deprecated)")
|
|
679
|
-
// asserts `proposed` as the post-re-canon invariant. Graduating here would
|
|
680
|
-
// break that contract; promotion is a separate, ticketed decision once the
|
|
681
|
-
// story_statement → user_story migration has fully aged out.
|
|
682
|
-
{ name: "user_story", type_id: "ent_073", maturity: "stable", since: "0.1.0" },
|
|
683
|
-
{ name: "story_statement", type_id: "ent_342", maturity: "deprecated", since: "0.2.7", deprecated_in: "0.7.0", replacement: "user_story" },
|
|
684
|
-
{ name: "story_task", type_id: "ent_343", maturity: "deprecated", since: "0.2.7", deprecated_in: "0.4.0", replacement: "task" },
|
|
685
|
-
{ name: "acceptance_criterion", type_id: "ent_074", maturity: "stable", since: "0.1.0" },
|
|
686
|
-
{ name: "release", type_id: "ent_075", maturity: "stable", since: "0.1.0" },
|
|
687
|
-
{ name: "task", type_id: "ent_076", maturity: "stable", since: "0.1.0" },
|
|
688
|
-
{ name: "bug", type_id: "ent_077", maturity: "stable", since: "0.1.0" },
|
|
689
|
-
{ name: "roadmap", type_id: "ent_078", maturity: "stable", since: "0.1.0" },
|
|
690
|
-
{ name: "roadmap_item", type_id: "ent_079", maturity: "stable", since: "0.1.0" },
|
|
691
|
-
{ name: "theme", type_id: "ent_080", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.9.0", replacement: "roadmap_theme" },
|
|
692
|
-
{ name: "roadmap_theme", type_id: "ent_351", maturity: "stable", since: "0.1.0" },
|
|
693
|
-
{ name: "changelog", type_id: "ent_081", maturity: "stable", since: "0.1.0" },
|
|
694
|
-
// (0.20.0) The cadence axis: a named, dated interval that work flows through
|
|
695
|
-
// and which nests (a program-increment contains iterations; a cycle contains
|
|
696
|
-
// its cooldown). One self-nesting type with a `cadence_kind` discriminator
|
|
697
|
-
// spans sprint / iteration / quarter / PI / cooldown rather than minting a
|
|
698
|
-
// type per methodology. `portfolio_shared` because a coarse cycle is an
|
|
699
|
-
// org-shared interval an objective in a rollup graph and a story in a product
|
|
700
|
-
// graph both schedule into.
|
|
701
|
-
{ name: "planning_cycle", type_id: "ent_358", maturity: "proposed", since: "0.20.0", portfolio_shared: true },
|
|
702
|
-
// ── Engineering ──
|
|
703
|
-
{ name: "bounded_context", type_id: "ent_082", maturity: "stable", since: "0.1.0" },
|
|
704
|
-
{ name: "service", type_id: "ent_083", maturity: "stable", since: "0.1.0" },
|
|
705
|
-
{ name: "domain_event", type_id: "ent_084", maturity: "stable", since: "0.1.0" },
|
|
706
|
-
{ name: "api_contract", type_id: "ent_085", maturity: "stable", since: "0.1.0" },
|
|
707
|
-
{ name: "architecture_decision", type_id: "ent_086", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "decision" },
|
|
708
|
-
{ name: "technical_debt_item", type_id: "ent_087", maturity: "stable", since: "0.1.0" },
|
|
709
|
-
{ name: "feature_flag", type_id: "ent_088", maturity: "stable", since: "0.1.0" },
|
|
710
|
-
{ name: "deployment", type_id: "ent_089", maturity: "stable", since: "0.1.0" },
|
|
711
|
-
{ name: "aggregate", type_id: "ent_090", maturity: "stable", since: "0.1.0" },
|
|
712
|
-
{ name: "domain_entity", type_id: "ent_091", maturity: "stable", since: "0.1.0" },
|
|
713
|
-
{ name: "value_object", type_id: "ent_092", maturity: "stable", since: "0.1.0" },
|
|
714
|
-
{ name: "command", type_id: "ent_093", maturity: "stable", since: "0.1.0" },
|
|
715
|
-
{ name: "read_model", type_id: "ent_094", maturity: "stable", since: "0.1.0" },
|
|
716
|
-
{ name: "api_endpoint", type_id: "ent_095", maturity: "stable", since: "0.1.0" },
|
|
717
|
-
{ name: "database_schema", type_id: "ent_096", maturity: "stable", since: "0.1.0" },
|
|
718
|
-
{ name: "queue_topic", type_id: "ent_097", maturity: "stable", since: "0.1.0" },
|
|
719
|
-
{ name: "build_artifact", type_id: "ent_098", maturity: "stable", since: "0.1.0" },
|
|
720
|
-
{ name: "code_repository", type_id: "ent_099", maturity: "stable", since: "0.1.0" },
|
|
721
|
-
{ name: "library_dependency", type_id: "ent_100", maturity: "stable", since: "0.1.0" },
|
|
722
|
-
{ name: "integration_pattern", type_id: "ent_101", maturity: "stable", since: "0.1.0" },
|
|
723
|
-
{ name: "external_api", type_id: "ent_102", maturity: "stable", since: "0.1.0" },
|
|
724
|
-
{ name: "data_flow", type_id: "ent_103", maturity: "stable", since: "0.1.0" },
|
|
725
|
-
{ name: "investigation", type_id: "ent_315", maturity: "stable", since: "0.2.0" },
|
|
726
|
-
{ name: "root_cause", type_id: "ent_316", maturity: "stable", since: "0.2.0" },
|
|
727
|
-
{ name: "symptom", type_id: "ent_317", maturity: "stable", since: "0.2.0" },
|
|
728
|
-
{ name: "fix", type_id: "ent_318", maturity: "stable", since: "0.2.0" },
|
|
729
|
-
// ── Growth ──
|
|
730
|
-
{ name: "north_star_metric", type_id: "ent_104", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
731
|
-
{ name: "input_metric", type_id: "ent_105", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
732
|
-
{ name: "funnel", type_id: "ent_106", maturity: "stable", since: "0.1.0" },
|
|
733
|
-
{ name: "funnel_step", type_id: "ent_107", maturity: "stable", since: "0.1.0" },
|
|
734
|
-
{ name: "acquisition_channel", type_id: "ent_108", maturity: "stable", since: "0.1.0" },
|
|
735
|
-
{ name: "growth_campaign", type_id: "ent_109", maturity: "stable", since: "0.1.0" },
|
|
736
|
-
{ name: "campaign", type_id: "ent_337", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "growth_campaign" },
|
|
737
|
-
{ name: "cohort", type_id: "ent_110", maturity: "stable", since: "0.1.0" },
|
|
738
|
-
{ name: "behavioral_segment", type_id: "ent_111", maturity: "stable", since: "0.1.0" },
|
|
739
|
-
{ name: "segment", type_id: "ent_338", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "behavioral_segment" },
|
|
740
|
-
{ name: "growth_loop", type_id: "ent_112", maturity: "stable", since: "0.1.0" },
|
|
741
|
-
{ name: "growth_experiment", type_id: "ent_113", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "experiment" },
|
|
742
|
-
{ name: "variant", type_id: "ent_114", maturity: "stable", since: "0.1.0" },
|
|
743
|
-
{ name: "attribution_model", type_id: "ent_115", maturity: "stable", since: "0.1.0" },
|
|
744
|
-
// ── Business Model ──
|
|
745
|
-
{ name: "business_model", type_id: "ent_116", maturity: "stable", since: "0.1.0" },
|
|
746
|
-
{ name: "value_proposition", type_id: "ent_117", maturity: "stable", since: "0.1.0" },
|
|
747
|
-
{ name: "revenue_stream", type_id: "ent_118", maturity: "stable", since: "0.1.0" },
|
|
748
|
-
{ name: "pricing_tier", type_id: "ent_119", maturity: "stable", since: "0.1.0" },
|
|
749
|
-
{ name: "cost_structure", type_id: "ent_120", maturity: "stable", since: "0.1.0" },
|
|
750
|
-
{ name: "unit_economics", type_id: "ent_121", maturity: "stable", since: "0.1.0" },
|
|
751
|
-
{ name: "partnership", type_id: "ent_122", maturity: "stable", since: "0.1.0" },
|
|
752
|
-
{ name: "key_resource", type_id: "ent_123", maturity: "stable", since: "0.1.0" },
|
|
753
|
-
{ name: "key_activity", type_id: "ent_124", maturity: "stable", since: "0.1.0" },
|
|
754
|
-
{ name: "customer_segment_bm", type_id: "ent_125", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "market_segment" },
|
|
755
|
-
{ name: "channel_bm", type_id: "ent_126", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "distribution_channel" },
|
|
756
|
-
{ name: "target_customer_segment", type_id: "ent_329", maturity: "deprecated", since: "0.2.0", deprecated_in: "0.2.0", replacement: "market_segment" },
|
|
757
|
-
{ name: "customer_relationship", type_id: "ent_127", maturity: "stable", since: "0.1.0" },
|
|
758
|
-
{ name: "distribution_channel", type_id: "ent_128", maturity: "stable", since: "0.1.0" },
|
|
759
|
-
// ── Go-To-Market ──
|
|
760
|
-
{ name: "gtm_strategy", type_id: "ent_129", maturity: "stable", since: "0.1.0" },
|
|
761
|
-
{ name: "ideal_customer_profile", type_id: "ent_130", maturity: "stable", since: "0.1.0" },
|
|
762
|
-
{ name: "positioning", type_id: "ent_131", maturity: "stable", since: "0.1.0" },
|
|
763
|
-
{ name: "messaging", type_id: "ent_132", maturity: "stable", since: "0.1.0" },
|
|
764
|
-
{ name: "launch", type_id: "ent_133", maturity: "stable", since: "0.1.0" },
|
|
765
|
-
{ name: "content_strategy", type_id: "ent_134", maturity: "stable", since: "0.1.0" },
|
|
766
|
-
{ name: "sales_motion", type_id: "ent_135", maturity: "stable", since: "0.1.0" },
|
|
767
|
-
{ name: "competitive_battle_card", type_id: "ent_136", maturity: "stable", since: "0.1.0" },
|
|
768
|
-
{ name: "demand_gen_program", type_id: "ent_137", maturity: "stable", since: "0.1.0" },
|
|
769
|
-
{ name: "territory", type_id: "ent_138", maturity: "stable", since: "0.1.0" },
|
|
770
|
-
{ name: "objection", type_id: "ent_139", maturity: "stable", since: "0.1.0" },
|
|
771
|
-
{ name: "rebuttal", type_id: "ent_140", maturity: "stable", since: "0.1.0" },
|
|
772
|
-
{ name: "proof_point", type_id: "ent_141", maturity: "stable", since: "0.1.0" },
|
|
773
|
-
// ── Team & Organisation ──
|
|
774
|
-
{ name: "team", type_id: "ent_142", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
775
|
-
{ name: "role", type_id: "ent_143", maturity: "stable", since: "0.1.0" },
|
|
776
|
-
{ name: "stakeholder", type_id: "ent_144", maturity: "stable", since: "0.1.0" },
|
|
777
|
-
{ name: "person", type_id: "ent_349", maturity: "stable", since: "0.5.0" },
|
|
778
|
-
{ name: "product_decision", type_id: "ent_145", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "decision" },
|
|
779
|
-
{ name: "team_okr", type_id: "ent_146", maturity: "stable", since: "0.1.0" },
|
|
780
|
-
{ name: "retrospective", type_id: "ent_147", maturity: "stable", since: "0.1.0" },
|
|
781
|
-
{ name: "dependency", type_id: "ent_148", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
782
|
-
{ name: "department", type_id: "ent_149", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
783
|
-
{ name: "skill", type_id: "ent_150", maturity: "stable", since: "0.1.0" },
|
|
784
|
-
{ name: "ceremony", type_id: "ent_151", maturity: "stable", since: "0.1.0" },
|
|
785
|
-
{ name: "capacity_plan", type_id: "ent_152", maturity: "stable", since: "0.1.0" },
|
|
786
|
-
// ── Data & Analytics ──
|
|
787
|
-
{ name: "data_source", type_id: "ent_153", maturity: "stable", since: "0.1.0" },
|
|
788
|
-
{ name: "metric_definition", type_id: "ent_154", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
789
|
-
{ name: "event_schema", type_id: "ent_155", maturity: "stable", since: "0.1.0" },
|
|
790
|
-
{ name: "dashboard", type_id: "ent_156", maturity: "stable", since: "0.1.0" },
|
|
791
|
-
{ name: "ab_test", type_id: "ent_157", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "experiment" },
|
|
792
|
-
{ name: "data_model", type_id: "ent_158", maturity: "stable", since: "0.1.0" },
|
|
793
|
-
{ name: "data_quality_rule", type_id: "ent_159", maturity: "stable", since: "0.1.0" },
|
|
794
|
-
{ name: "data_product", type_id: "ent_160", maturity: "stable", since: "0.1.0" },
|
|
795
|
-
{ name: "data_pipeline", type_id: "ent_161", maturity: "stable", since: "0.1.0" },
|
|
796
|
-
{ name: "data_lineage", type_id: "ent_162", maturity: "stable", since: "0.1.0" },
|
|
797
|
-
{ name: "glossary_term", type_id: "ent_163", maturity: "stable", since: "0.1.0" },
|
|
798
|
-
{ name: "data_domain", type_id: "ent_164", maturity: "stable", since: "0.1.0" },
|
|
799
|
-
{ name: "report", type_id: "ent_165", maturity: "stable", since: "0.1.0" },
|
|
800
|
-
// ── Content & Knowledge ──
|
|
801
|
-
{ name: "content_piece", type_id: "ent_166", maturity: "stable", since: "0.1.0" },
|
|
802
|
-
{ name: "knowledge_base_article", type_id: "ent_167", maturity: "stable", since: "0.1.0" },
|
|
803
|
-
{ name: "brand_asset", type_id: "ent_168", maturity: "stable", since: "0.1.0" },
|
|
804
|
-
{ name: "internal_doc", type_id: "ent_169", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "document" },
|
|
805
|
-
{ name: "prompt_template", type_id: "ent_170", maturity: "stable", since: "0.1.0" },
|
|
806
|
-
{ name: "content_calendar", type_id: "ent_171", maturity: "stable", since: "0.1.0" },
|
|
807
|
-
{ name: "content_theme", type_id: "ent_172", maturity: "stable", since: "0.1.0" },
|
|
808
|
-
{ name: "documentation_template", type_id: "ent_173", maturity: "stable", since: "0.1.0" },
|
|
809
|
-
{ name: "document", type_id: "ent_320", maturity: "stable", since: "0.2.0" },
|
|
810
|
-
// ── Legal & Compliance ──
|
|
811
|
-
{ name: "compliance_requirement", type_id: "ent_174", maturity: "stable", since: "0.1.0" },
|
|
812
|
-
{ name: "risk", type_id: "ent_175", maturity: "stable", since: "0.1.0" },
|
|
813
|
-
{ name: "data_contract", type_id: "ent_176", maturity: "stable", since: "0.1.0" },
|
|
814
|
-
{ name: "legal_entity", type_id: "ent_177", maturity: "stable", since: "0.1.0" },
|
|
815
|
-
{ name: "ip_asset", type_id: "ent_178", maturity: "stable", since: "0.1.0" },
|
|
816
|
-
{ name: "audit_log_policy", type_id: "ent_179", maturity: "stable", since: "0.1.0" },
|
|
817
|
-
{ name: "contract", type_id: "ent_180", maturity: "stable", since: "0.1.0" },
|
|
818
|
-
{ name: "contract_clause", type_id: "ent_181", maturity: "stable", since: "0.1.0" },
|
|
819
|
-
{ name: "privacy_policy", type_id: "ent_182", maturity: "stable", since: "0.1.0" },
|
|
820
|
-
{ name: "compliance_framework", type_id: "ent_183", maturity: "stable", since: "0.1.0" },
|
|
821
|
-
{ name: "security_audit", type_id: "ent_184", maturity: "stable", since: "0.1.0" },
|
|
822
|
-
// ── DevOps & Platform ──
|
|
823
|
-
{ name: "service_level_indicator", type_id: "ent_185", maturity: "stable", since: "0.1.0" },
|
|
824
|
-
{ name: "sli", type_id: "ent_334", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "service_level_indicator" },
|
|
825
|
-
{ name: "service_level_objective", type_id: "ent_186", maturity: "stable", since: "0.1.0" },
|
|
826
|
-
{ name: "slo", type_id: "ent_335", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "service_level_objective" },
|
|
827
|
-
{ name: "error_budget", type_id: "ent_187", maturity: "stable", since: "0.1.0" },
|
|
828
|
-
{ name: "incident", type_id: "ent_188", maturity: "stable", since: "0.1.0" },
|
|
829
|
-
{ name: "postmortem", type_id: "ent_189", maturity: "stable", since: "0.1.0" },
|
|
830
|
-
{ name: "runbook", type_id: "ent_190", maturity: "stable", since: "0.1.0" },
|
|
831
|
-
{ name: "monitor", type_id: "ent_191", maturity: "stable", since: "0.1.0" },
|
|
832
|
-
{ name: "alert_rule", type_id: "ent_192", maturity: "stable", since: "0.1.0" },
|
|
833
|
-
{ name: "ci_pipeline", type_id: "ent_193", maturity: "stable", since: "0.1.0" },
|
|
834
|
-
{ name: "release_strategy", type_id: "ent_194", maturity: "stable", since: "0.1.0" },
|
|
835
|
-
{ name: "on_call_rotation", type_id: "ent_195", maturity: "stable", since: "0.1.0" },
|
|
836
|
-
{ name: "infrastructure_component", type_id: "ent_196", maturity: "stable", since: "0.1.0" },
|
|
837
|
-
// ── Security ──
|
|
838
|
-
{ name: "threat_model", type_id: "ent_197", maturity: "stable", since: "0.1.0" },
|
|
839
|
-
{ name: "threat", type_id: "ent_198", maturity: "stable", since: "0.1.0" },
|
|
840
|
-
{ name: "vulnerability", type_id: "ent_199", maturity: "stable", since: "0.1.0" },
|
|
841
|
-
{ name: "security_control", type_id: "ent_200", maturity: "stable", since: "0.1.0" },
|
|
842
|
-
{ name: "security_policy", type_id: "ent_201", maturity: "stable", since: "0.1.0" },
|
|
843
|
-
{ name: "security_incident", type_id: "ent_202", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "incident" },
|
|
844
|
-
{ name: "penetration_test", type_id: "ent_203", maturity: "stable", since: "0.1.0" },
|
|
845
|
-
{ name: "security_review", type_id: "ent_204", maturity: "stable", since: "0.1.0" },
|
|
846
|
-
{ name: "data_classification", type_id: "ent_205", maturity: "stable", since: "0.1.0" },
|
|
847
|
-
{ name: "access_policy", type_id: "ent_206", maturity: "stable", since: "0.1.0" },
|
|
848
|
-
// ── Accessibility ──
|
|
849
|
-
{ name: "a11y_standard", type_id: "ent_207", maturity: "stable", since: "0.1.0" },
|
|
850
|
-
{ name: "a11y_guideline", type_id: "ent_208", maturity: "stable", since: "0.1.0" },
|
|
851
|
-
{ name: "a11y_audit", type_id: "ent_209", maturity: "stable", since: "0.1.0" },
|
|
852
|
-
{ name: "a11y_issue", type_id: "ent_210", maturity: "stable", since: "0.1.0" },
|
|
853
|
-
{ name: "a11y_annotation", type_id: "ent_211", maturity: "stable", since: "0.1.0" },
|
|
854
|
-
// ── QA & Testing ──
|
|
855
|
-
{ name: "test_suite", type_id: "ent_212", maturity: "stable", since: "0.1.0" },
|
|
856
|
-
{ name: "test_case", type_id: "ent_213", maturity: "stable", since: "0.1.0" },
|
|
857
|
-
{ name: "qa_session", type_id: "ent_214", maturity: "stable", since: "0.1.0" },
|
|
858
|
-
{ name: "regression_test", type_id: "ent_215", maturity: "stable", since: "0.1.0" },
|
|
859
|
-
{ name: "test_coverage_report", type_id: "ent_216", maturity: "stable", since: "0.1.0" },
|
|
860
|
-
{ name: "test_environment", type_id: "ent_217", maturity: "stable", since: "0.1.0" },
|
|
861
|
-
{ name: "defect_report", type_id: "ent_218", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "support_ticket" },
|
|
862
|
-
{ name: "test_result", type_id: "ent_327", maturity: "proposed", since: "0.2.0" },
|
|
863
|
-
// ── Feedback & Voice of Customer ──
|
|
864
|
-
{ name: "feedback_program", type_id: "ent_219", maturity: "stable", since: "0.1.0" },
|
|
865
|
-
{ name: "feature_request", type_id: "ent_220", maturity: "stable", since: "0.1.0" },
|
|
866
|
-
{ name: "feedback_vote", type_id: "ent_221", maturity: "stable", since: "0.1.0" },
|
|
867
|
-
{ name: "nps_campaign", type_id: "ent_222", maturity: "stable", since: "0.1.0" },
|
|
868
|
-
{ name: "user_advisory_board", type_id: "ent_223", maturity: "stable", since: "0.1.0" },
|
|
869
|
-
{ name: "beta_program", type_id: "ent_224", maturity: "stable", since: "0.1.0" },
|
|
870
|
-
{ name: "feedback_theme", type_id: "ent_225", maturity: "stable", since: "0.1.0" },
|
|
871
|
-
// ── Pricing & Packaging ──
|
|
872
|
-
{ name: "pricing_strategy", type_id: "ent_226", maturity: "stable", since: "0.1.0" },
|
|
873
|
-
{ name: "pricing_experiment", type_id: "ent_227", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "experiment" },
|
|
874
|
-
{ name: "package", type_id: "ent_228", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "pricing_tier" },
|
|
875
|
-
{ name: "discount_strategy", type_id: "ent_229", maturity: "stable", since: "0.1.0" },
|
|
876
|
-
{ name: "trial_config", type_id: "ent_230", maturity: "stable", since: "0.1.0" },
|
|
877
|
-
{ name: "paywall", type_id: "ent_231", maturity: "stable", since: "0.1.0" },
|
|
878
|
-
// ── AI/ML Operations ──
|
|
879
|
-
{ name: "ai_model", type_id: "ent_232", maturity: "stable", since: "0.1.0" },
|
|
880
|
-
{ name: "prompt_version", type_id: "ent_233", maturity: "stable", since: "0.1.0" },
|
|
881
|
-
{ name: "eval_benchmark", type_id: "ent_234", maturity: "stable", since: "0.1.0" },
|
|
882
|
-
{ name: "eval_run", type_id: "ent_235", maturity: "stable", since: "0.1.0" },
|
|
883
|
-
{ name: "ai_cost_tracker", type_id: "ent_236", maturity: "stable", since: "0.1.0" },
|
|
884
|
-
{ name: "hallucination_report", type_id: "ent_237", maturity: "stable", since: "0.1.0" },
|
|
885
|
-
{ name: "ai_guardrail", type_id: "ent_238", maturity: "stable", since: "0.1.0" },
|
|
886
|
-
{ name: "model_comparison", type_id: "ent_239", maturity: "stable", since: "0.1.0" },
|
|
887
|
-
{ name: "ai_experiment", type_id: "ent_323", maturity: "proposed", since: "0.2.0" },
|
|
888
|
-
{ name: "ai_dataset", type_id: "ent_324", maturity: "proposed", since: "0.2.0" },
|
|
889
|
-
{ name: "ai_trace", type_id: "ent_325", maturity: "proposed", since: "0.2.0" },
|
|
890
|
-
// ── Agentic Workflows ──
|
|
891
|
-
{ name: "workflow_template", type_id: "ent_240", maturity: "stable", since: "0.1.0" },
|
|
892
|
-
{ name: "workflow_run", type_id: "ent_241", maturity: "stable", since: "0.1.0" },
|
|
893
|
-
{ name: "agent_definition", type_id: "ent_242", maturity: "stable", since: "0.1.0" },
|
|
894
|
-
{ name: "agent_session", type_id: "ent_243", maturity: "stable", since: "0.1.0" },
|
|
895
|
-
{ name: "review_gate", type_id: "ent_244", maturity: "stable", since: "0.1.0" },
|
|
896
|
-
{ name: "approval_record", type_id: "ent_245", maturity: "stable", since: "0.1.0" },
|
|
897
|
-
{ name: "agent_skill", type_id: "ent_246", maturity: "stable", since: "0.1.0" },
|
|
898
|
-
{ name: "agent_hook", type_id: "ent_247", maturity: "stable", since: "0.1.0" },
|
|
899
|
-
{ name: "workflow_artifact", type_id: "ent_248", maturity: "stable", since: "0.1.0" },
|
|
900
|
-
{ name: "agent_task", type_id: "ent_326", maturity: "proposed", since: "0.2.0" },
|
|
901
|
-
// ── Portfolio ──
|
|
902
|
-
{ name: "organization", type_id: "ent_249", maturity: "stable", since: "0.1.0" },
|
|
903
|
-
{ name: "portfolio", type_id: "ent_250", maturity: "stable", since: "0.1.0" },
|
|
904
|
-
{ name: "product_area", type_id: "ent_251", maturity: "stable", since: "0.1.0" },
|
|
905
|
-
// ── Sales & Revenue ──
|
|
906
|
-
{ name: "account", type_id: "ent_252", maturity: "stable", since: "0.1.0" },
|
|
907
|
-
{ name: "contact", type_id: "ent_253", maturity: "stable", since: "0.1.0" },
|
|
908
|
-
{ name: "lead", type_id: "ent_254", maturity: "stable", since: "0.1.0" },
|
|
909
|
-
{ name: "deal", type_id: "ent_255", maturity: "stable", since: "0.1.0" },
|
|
910
|
-
{ name: "pipeline_sales", type_id: "ent_256", maturity: "stable", since: "0.1.0" },
|
|
911
|
-
{ name: "pipeline_stage", type_id: "ent_257", maturity: "stable", since: "0.1.0" },
|
|
912
|
-
{ name: "quote_document", type_id: "ent_258", maturity: "stable", since: "0.1.0" },
|
|
913
|
-
{ name: "subscription", type_id: "ent_259", maturity: "stable", since: "0.1.0" },
|
|
914
|
-
{ name: "invoice", type_id: "ent_260", maturity: "stable", since: "0.1.0" },
|
|
915
|
-
{ name: "forecast", type_id: "ent_261", maturity: "stable", since: "0.1.0" },
|
|
916
|
-
// ── Program Management ──
|
|
917
|
-
{ name: "program", type_id: "ent_262", maturity: "stable", since: "0.1.0" },
|
|
918
|
-
{ name: "project", type_id: "ent_263", maturity: "stable", since: "0.1.0" },
|
|
919
|
-
// `portfolio_shared` (0.25.1 feedback): a milestone is often a cross-team gate,
|
|
920
|
-
// not one project's checkpoint — an org-wide "Open Beta" that several products'
|
|
921
|
-
// projects must all satisfy. Shared tier lets `project_targets_milestone` (and
|
|
922
|
-
// the other milestone edges) pass the cross-scope gate as `provisional`, same
|
|
923
|
-
// as `project_implements_initiative`. Precedent: `planning_cycle` (0.20.0).
|
|
924
|
-
{ name: "milestone", type_id: "ent_264", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
925
|
-
{ name: "risk_register", type_id: "ent_265", maturity: "stable", since: "0.1.0" },
|
|
926
|
-
{ name: "risk_item", type_id: "ent_266", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "risk" },
|
|
927
|
-
{ name: "change_request", type_id: "ent_267", maturity: "stable", since: "0.1.0" },
|
|
928
|
-
{ name: "deliverable", type_id: "ent_268", maturity: "stable", since: "0.1.0" },
|
|
929
|
-
{ name: "resource_allocation", type_id: "ent_269", maturity: "stable", since: "0.1.0" },
|
|
930
|
-
{ name: "status_report", type_id: "ent_270", maturity: "stable", since: "0.1.0" },
|
|
931
|
-
// ── Marketing Operations ──
|
|
932
|
-
{ name: "marketing_strategy", type_id: "ent_271", maturity: "stable", since: "0.1.0" },
|
|
933
|
-
{ name: "marketing_channel", type_id: "ent_272", maturity: "stable", since: "0.1.0" },
|
|
934
|
-
{ name: "marketing_campaign_plan", type_id: "ent_273", maturity: "stable", since: "0.1.0" },
|
|
935
|
-
{ name: "email_sequence", type_id: "ent_274", maturity: "stable", since: "0.1.0" },
|
|
936
|
-
{ name: "social_post", type_id: "ent_275", maturity: "stable", since: "0.1.0" },
|
|
937
|
-
{ name: "seo_keyword", type_id: "ent_276", maturity: "stable", since: "0.1.0" },
|
|
938
|
-
{ name: "ad_creative", type_id: "ent_277", maturity: "stable", since: "0.1.0" },
|
|
939
|
-
{ name: "press_release", type_id: "ent_278", maturity: "stable", since: "0.1.0" },
|
|
940
|
-
{ name: "event", type_id: "ent_279", maturity: "stable", since: "0.1.0" },
|
|
941
|
-
{ name: "community_initiative", type_id: "ent_280", maturity: "stable", since: "0.1.0" },
|
|
942
|
-
// ── Operations & Customer Success ──
|
|
943
|
-
{ name: "support_ticket", type_id: "ent_281", maturity: "stable", since: "0.1.0" },
|
|
944
|
-
{ name: "customer_feedback", type_id: "ent_282", maturity: "stable", since: "0.1.0" },
|
|
945
|
-
{ name: "churn_reason", type_id: "ent_283", maturity: "stable", since: "0.1.0" },
|
|
946
|
-
{ name: "onboarding_flow", type_id: "ent_284", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "user_flow" },
|
|
947
|
-
{ name: "customer_health_score", type_id: "ent_285", maturity: "stable", since: "0.1.0" },
|
|
948
|
-
{ name: "playbook", type_id: "ent_286", maturity: "stable", since: "0.1.0" },
|
|
949
|
-
{ name: "service_level_agreement", type_id: "ent_287", maturity: "stable", since: "0.1.0" },
|
|
950
|
-
{ name: "sla", type_id: "ent_336", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "service_level_agreement" },
|
|
951
|
-
{ name: "customer_journey_stage", type_id: "ent_288", maturity: "stable", since: "0.1.0" },
|
|
952
|
-
{ name: "touchpoint", type_id: "ent_289", maturity: "stable", since: "0.1.0" },
|
|
953
|
-
{ name: "success_milestone", type_id: "ent_290", maturity: "stable", since: "0.1.0" },
|
|
954
|
-
{ name: "service_blueprint", type_id: "ent_291", maturity: "stable", since: "0.1.0" },
|
|
955
|
-
{ name: "nps_score", type_id: "ent_292", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "nps_campaign" },
|
|
956
|
-
// ── Localisation & i18n ──
|
|
957
|
-
{ name: "locale", type_id: "ent_293", maturity: "stable", since: "0.1.0" },
|
|
958
|
-
{ name: "translation_key", type_id: "ent_294", maturity: "stable", since: "0.1.0" },
|
|
959
|
-
{ name: "translation_bundle", type_id: "ent_295", maturity: "stable", since: "0.1.0" },
|
|
960
|
-
{ name: "locale_config", type_id: "ent_296", maturity: "stable", since: "0.1.0" },
|
|
961
|
-
{ name: "cultural_adaptation", type_id: "ent_297", maturity: "stable", since: "0.1.0" },
|
|
962
|
-
{ name: "regional_pricing", type_id: "ent_298", maturity: "stable", since: "0.1.0" },
|
|
963
|
-
// ── Customer Education ──
|
|
964
|
-
{ name: "education_program", type_id: "ent_299", maturity: "stable", since: "0.1.0" },
|
|
965
|
-
{ name: "tutorial", type_id: "ent_300", maturity: "stable", since: "0.1.0" },
|
|
966
|
-
{ name: "walkthrough", type_id: "ent_301", maturity: "stable", since: "0.1.0" },
|
|
967
|
-
{ name: "webinar", type_id: "ent_302", maturity: "stable", since: "0.1.0" },
|
|
968
|
-
{ name: "certification", type_id: "ent_303", maturity: "stable", since: "0.1.0" },
|
|
969
|
-
{ name: "help_video", type_id: "ent_304", maturity: "stable", since: "0.1.0" },
|
|
970
|
-
{ name: "learning_path", type_id: "ent_305", maturity: "stable", since: "0.1.0" },
|
|
971
|
-
// ── Partners & Ecosystem ──
|
|
972
|
-
{ name: "partner_program", type_id: "ent_306", maturity: "stable", since: "0.1.0" },
|
|
973
|
-
{ name: "partner_tier", type_id: "ent_307", maturity: "stable", since: "0.1.0" },
|
|
974
|
-
{ name: "api_ecosystem", type_id: "ent_308", maturity: "stable", since: "0.1.0" },
|
|
975
|
-
{ name: "marketplace_listing", type_id: "ent_309", maturity: "stable", since: "0.1.0" },
|
|
976
|
-
{ name: "developer_portal", type_id: "ent_310", maturity: "stable", since: "0.1.0" },
|
|
977
|
-
{ name: "integration_partner", type_id: "ent_311", maturity: "stable", since: "0.1.0" },
|
|
978
|
-
{ name: "partner_revenue_share", type_id: "ent_312", maturity: "stable", since: "0.1.0" },
|
|
979
|
-
// ── Workspace ──
|
|
980
|
-
{ name: "workspace", type_id: "ent_328", maturity: "proposed", since: "0.2.0" },
|
|
981
|
-
{ name: "framework_exercise", type_id: "ent_350", maturity: "proposed", since: "0.8.4" },
|
|
982
|
-
{ name: "composition", type_id: "ent_361", maturity: "proposed", since: "0.31.0" },
|
|
983
|
-
// A dated, hashed rendition of a node that is already in the graph. Enters
|
|
984
|
-
// `proposed` per the maturity rubric (precedent: composition 0.31.0).
|
|
985
|
-
{ name: "capture", type_id: "ent_362", maturity: "proposed", since: "0.32.0" }
|
|
986
|
-
];
|
|
987
|
-
var DEFERRED_PROPOSED_BY_CONTRACT = {
|
|
988
|
-
// user_story (UPG-571) and experiment_run (UPG-664) graduated to stable in
|
|
989
|
-
// 0.12.6 — Captain lifted both freezes ("we are using them"). Their contracts
|
|
990
|
-
// are settled; they are now stable, not deferred.
|
|
991
|
-
ai_experiment: "UPG-665: AI prompt/model restructure (open ADR).",
|
|
992
|
-
ai_dataset: "UPG-665: AI prompt/model restructure (open ADR).",
|
|
993
|
-
ai_trace: "UPG-665: AI prompt/model restructure (open ADR)."
|
|
994
|
-
};
|
|
995
|
-
var UPG_ENTITY_META_BY_NAME = new Map(
|
|
996
|
-
UPG_ENTITY_META.map((m) => [m.name, m])
|
|
997
|
-
);
|
|
998
|
-
var UPG_ENTITY_META_BY_ID = new Map(
|
|
999
|
-
UPG_ENTITY_META.map((m) => [m.type_id, m])
|
|
1000
|
-
);
|
|
1001
|
-
var UPG_ACTIVE_TYPES = UPG_ENTITY_META.filter((m) => m.maturity === "stable" || m.maturity === "proposed").map((m) => m.name);
|
|
1002
|
-
var UPG_DEPRECATED_TYPES = UPG_ENTITY_META.filter((m) => m.maturity === "deprecated").map((m) => m.name);
|
|
1003
|
-
var UPG_PORTFOLIO_SHARED_TYPES = UPG_ENTITY_META.filter((m) => m.portfolio_shared === true).map((m) => m.name);
|
|
1004
|
-
function isPortfolioSharedType(name) {
|
|
1005
|
-
return UPG_ENTITY_META_BY_NAME.get(name)?.portfolio_shared === true;
|
|
1006
|
-
}
|
|
1007
|
-
function isDeprecatedType(name) {
|
|
1008
|
-
const meta = UPG_ENTITY_META_BY_NAME.get(name);
|
|
1009
|
-
return meta?.maturity === "deprecated";
|
|
1010
|
-
}
|
|
1011
|
-
function getReplacementType(name) {
|
|
1012
|
-
const meta = UPG_ENTITY_META_BY_NAME.get(name);
|
|
1013
|
-
return meta?.replacement;
|
|
1014
|
-
}
|
|
1015
|
-
function getTypeId(name) {
|
|
1016
|
-
return UPG_ENTITY_META_BY_NAME.get(name)?.type_id;
|
|
1017
|
-
}
|
|
1018
|
-
function getTypeName(typeId) {
|
|
1019
|
-
return UPG_ENTITY_META_BY_ID.get(typeId)?.name;
|
|
1020
|
-
}
|
|
1021
|
-
|
|
1022
1033
|
// src/catalog/edge-catalog.ts
|
|
1023
1034
|
var UPG_WILDCARD_ENDPOINT = "node";
|
|
1024
1035
|
var CLASSIFICATION_EDGE_PROPERTY_SCHEMA = {
|
|
@@ -1483,6 +1494,15 @@ var UPG_EDGE_CATALOG = {
|
|
|
1483
1494
|
product_categorises_by_roadmap_theme: { forward_verb: "categorises_by", reverse_verb: "categorises", classification: "hierarchy", source_type: "product", target_type: "roadmap_theme" },
|
|
1484
1495
|
feature_area_contains_feature: { forward_verb: "contains", reverse_verb: "belongs_to", classification: "hierarchy", source_type: "feature_area", target_type: "feature" },
|
|
1485
1496
|
feature_area_contains_feature_area: { forward_verb: "contains", reverse_verb: "belongs_to", classification: "hierarchy", source_type: "feature_area", target_type: "feature_area" },
|
|
1497
|
+
// (0.39.0, B4) Component catalogs group by area -- a storybook sidebar that
|
|
1498
|
+
// follows the source tree, a visual-coverage report -- and the graph had no
|
|
1499
|
+
// edge for it, so a measured estate tagged 133 components `area:<group>`
|
|
1500
|
+
// instead. `groups`, not `contains`: the area does not OWN the component
|
|
1501
|
+
// (a design_system or product does); it is a grouping view over components
|
|
1502
|
+
// owned elsewhere, the same non-owning relationship `journey_phase_spans_journey_step`
|
|
1503
|
+
// records. Multi-parent GRAMMAR with single per-instance parentage, the
|
|
1504
|
+
// `quote` precedent.
|
|
1505
|
+
feature_area_groups_design_component: { forward_verb: "groups", reverse_verb: "grouped_in", classification: "hierarchy", source_type: "feature_area", target_type: "design_component" },
|
|
1486
1506
|
outcome_delivered_by_feature: { forward_verb: "delivered_by", reverse_verb: "delivers", classification: "cross-domain", source_type: "outcome", target_type: "feature" },
|
|
1487
1507
|
outcome_delivered_via_feature_area: { forward_verb: "delivered_via", reverse_verb: "delivers_for", classification: "cross-domain", source_type: "outcome", target_type: "feature_area" },
|
|
1488
1508
|
feature_decomposed_into_epic: { forward_verb: "decomposed_into", reverse_verb: "implements", classification: "hierarchy", source_type: "feature", target_type: "epic" },
|
|
@@ -1802,10 +1822,32 @@ var UPG_EDGE_CATALOG = {
|
|
|
1802
1822
|
// decision records design choices about the system; not contained by it.
|
|
1803
1823
|
design_system_decided_via_decision: { forward_verb: "decided_via", reverse_verb: "decided_for", classification: "semantic", source_type: "design_system", target_type: "decision" },
|
|
1804
1824
|
design_component_styled_by_design_token: { forward_verb: "styled_by", reverse_verb: "styles", classification: "hierarchy", source_type: "design_component", target_type: "design_token" },
|
|
1825
|
+
// (0.39.0, B2) The alias tier. A modern token system is two or three tiers --
|
|
1826
|
+
// primitives (`--gray-100`) that semantic tokens alias
|
|
1827
|
+
// (`--background-high: light-dark(var(--gray-100), var(--gray-900))`) that
|
|
1828
|
+
// components consume -- and the spec could hold the ends but not the middle,
|
|
1829
|
+
// so a measured estate (163 DTCG primitives, 45 semantic aliases) kept its
|
|
1830
|
+
// alias chain in descriptions. `causal`, not `semantic`: the alias's VALUE is
|
|
1831
|
+
// computed from the primitive's, so the dependency is real and directional.
|
|
1832
|
+
// `cross_product_eligible` because the primitive tier is routinely its own
|
|
1833
|
+
// published package (its own graph) while the semantic tier lives with the
|
|
1834
|
+
// component library. Makes "which primitives does this component ultimately
|
|
1835
|
+
// depend on" and "which primitives are dead" traversals rather than scripts.
|
|
1836
|
+
design_token_derives_from_design_token: { forward_verb: "derives_from", reverse_verb: "derived_into", classification: "causal", source_type: "design_token", target_type: "design_token", cross_product_eligible: true },
|
|
1805
1837
|
design_component_follows_design_pattern: { forward_verb: "follows", reverse_verb: "followed_by", classification: "hierarchy", source_type: "design_component", target_type: "design_pattern" },
|
|
1806
1838
|
design_component_governed_by_design_guideline: { forward_verb: "governed_by", reverse_verb: "governs", classification: "hierarchy", source_type: "design_component", target_type: "design_guideline" },
|
|
1807
1839
|
design_component_specified_by_interaction_spec: { forward_verb: "specified_by", reverse_verb: "specifies", classification: "hierarchy", source_type: "design_component", target_type: "interaction_spec" },
|
|
1808
|
-
|
|
1840
|
+
// (0.39.0, B1) `cross_product_eligible` because a design system and the
|
|
1841
|
+
// product that consumes it are two graphs: a Studio shadow component wrapping
|
|
1842
|
+
// the @sanity/ui primitive it is built on could not be stated, and 11 such
|
|
1843
|
+
// wrappers recorded the relationship in prose instead. Widened rather than
|
|
1844
|
+
// minting `design_component_wraps_design_component`: a wrap IS composition
|
|
1845
|
+
// read across a graph boundary, and a second verb for one relationship is the
|
|
1846
|
+
// shadow-pair shape Pattern D collapses. `design_component` is already
|
|
1847
|
+
// portfolio_shared, and the three sibling component edges
|
|
1848
|
+
// (surface_renders_, screen_renders_, feature_uses_) are already eligible;
|
|
1849
|
+
// this closes the last link between a product graph and its design system.
|
|
1850
|
+
design_component_composes_design_component: { forward_verb: "composes", reverse_verb: "composed_in", classification: "hierarchy", source_type: "design_component", target_type: "design_component", cross_product_eligible: true },
|
|
1809
1851
|
prototype_annotated_with_annotation: { forward_verb: "annotated_with", reverse_verb: "annotates", classification: "hierarchy", source_type: "prototype", target_type: "annotation" },
|
|
1810
1852
|
screen_renders_design_component: { forward_verb: "renders", reverse_verb: "rendered_on", classification: "hierarchy", source_type: "screen", target_type: "design_component", cross_product_eligible: true },
|
|
1811
1853
|
// Marketing surface to product (0.12.7, UPG-696/698). A marketing/landing screen
|
|
@@ -7509,7 +7551,7 @@ var UPG_VALID_CHILDREN = {
|
|
|
7509
7551
|
// parent. Same widening shape as the 0.23.0 epic twins: an existing leaf type
|
|
7510
7552
|
// gains a second, SHALLOWER parent, verbs inherited from the deeper edge.
|
|
7511
7553
|
feature: ["epic", "bug", "task", "user_story"],
|
|
7512
|
-
feature_area: ["feature", "feature_area"],
|
|
7554
|
+
feature_area: ["feature", "feature_area", "design_component"],
|
|
7513
7555
|
// epic owns user_story (the templated promise) and, mirroring feature, may
|
|
7514
7556
|
// also directly contain bug/task — heterogeneous imported tickets that belong
|
|
7515
7557
|
// to one epic rather than the feature as a whole (feedback df99026a).
|
|
@@ -13070,7 +13112,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
13070
13112
|
},
|
|
13071
13113
|
// DesignTokenProperties: Design token.
|
|
13072
13114
|
design_token: {
|
|
13073
|
-
category: { type: "string", enum: ["color", "spacing", "typography", "radius", "motion"], description: "
|
|
13115
|
+
category: { type: "string", enum: ["color", "spacing", "typography", "radius", "motion", "dimension", "fontFamily", "fontWeight", "duration", "cubicBezier", "number", "shadow", "gradient", "border", "transition", "strokeStyle", "opacity"], description: "What kind of value this token holds. Aligned to the Design Tokens Community Group `$type` vocabulary so a DTCG export maps across without translation; the five original UPG values are kept, `color` and `spacing` being the ones DTCG spells the same and `typography`, `radius`, `motion` being groupings a design system names in its own terms.", notes: "DTCG mapping for the values that are not one-to-one: a `radius` token is a DTCG `dimension`, a `motion` token is usually a `duration` or a `cubicBezier`, and a `typography` token is a composite over `fontFamily` / `fontWeight` / `dimension`. Both spellings are accepted: an estate that speaks DTCG writes the `$type` name, one that speaks UPG's original five keeps writing them, and neither has to translate at the boundary. Extended at 0.39.0 from a measured estate (163 DTCG primitives) whose `shadow`, `dimension` and `opacity` tokens had no category to land on. The enum was documented but unenforced then; `validate_graph`'s `property_enum_drift` class (same release) is what makes it real, which is why the vocabulary had to be right before the check arrived." },
|
|
13074
13116
|
value: { type: "string", description: "Resolved value" },
|
|
13075
13117
|
css_variable: { type: "string", description: "CSS custom property name" }
|
|
13076
13118
|
},
|
|
@@ -33852,7 +33894,7 @@ function checkHeaderSealText(text) {
|
|
|
33852
33894
|
}
|
|
33853
33895
|
|
|
33854
33896
|
// src/index.ts
|
|
33855
|
-
var UPG_VERSION = "0.
|
|
33897
|
+
var UPG_VERSION = "0.39.0";
|
|
33856
33898
|
var UPG_FORMAT_VERSION = "0.4.0";
|
|
33857
33899
|
var MARKDOWN_FORMAT_VERSION = "0.1";
|
|
33858
33900
|
var UPG_TYPES = getTypes();
|