@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.cjs
CHANGED
|
@@ -293,6 +293,510 @@ __export(index_exports, {
|
|
|
293
293
|
});
|
|
294
294
|
module.exports = __toCommonJS(index_exports);
|
|
295
295
|
|
|
296
|
+
// src/registry/entity-meta.ts
|
|
297
|
+
var UPG_ENTITY_META = [
|
|
298
|
+
// Foundations (0.9.12): shared specifications + the primitives they define.
|
|
299
|
+
{ name: "specification", type_id: "ent_352", maturity: "proposed", since: "0.9.12", portfolio_shared: true },
|
|
300
|
+
{ name: "primitive", type_id: "ent_353", maturity: "proposed", since: "0.9.12", portfolio_shared: true },
|
|
301
|
+
{ name: "operating_lifecycle", type_id: "ent_355", maturity: "proposed", since: "0.11.6", portfolio_shared: true },
|
|
302
|
+
{ name: "operating_stage", type_id: "ent_356", maturity: "proposed", since: "0.11.6", portfolio_shared: true },
|
|
303
|
+
// ── Strategic ──
|
|
304
|
+
{ name: "product", type_id: "ent_001", maturity: "stable", since: "0.1.0" },
|
|
305
|
+
{ name: "outcome", type_id: "ent_002", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
306
|
+
{ name: "kpi", type_id: "ent_003", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
307
|
+
{ name: "objective", type_id: "ent_004", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
308
|
+
{ name: "key_result", type_id: "ent_005", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
309
|
+
{ name: "metric", type_id: "ent_006", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
310
|
+
// F7 (UPG-673): graduated proposed → stable at v0.9.x — proposed since 0.2.2,
|
|
311
|
+
// the metric-quality assessment artefact is settled with no open restructure.
|
|
312
|
+
{ name: "metric_quality_assessment", type_id: "ent_339", maturity: "stable", since: "0.2.2" },
|
|
313
|
+
{ name: "vision", type_id: "ent_007", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
314
|
+
{ name: "mission", type_id: "ent_008", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
315
|
+
{ name: "strategic_theme", type_id: "ent_009", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
316
|
+
{ name: "initiative", type_id: "ent_010", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
317
|
+
{ name: "capability", type_id: "ent_011", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
318
|
+
{ name: "value_stream", type_id: "ent_012", maturity: "stable", since: "0.1.0" },
|
|
319
|
+
{ name: "strategic_pillar", type_id: "ent_013", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
320
|
+
{ name: "assumption", type_id: "ent_014", maturity: "stable", since: "0.1.0" },
|
|
321
|
+
{ name: "decision", type_id: "ent_015", maturity: "stable", since: "0.1.0" },
|
|
322
|
+
{ name: "constraint", type_id: "ent_348", maturity: "stable", since: "0.4.3" },
|
|
323
|
+
// (0.17.4) Strategy-domain sibling of research_question / design_question,
|
|
324
|
+
// completing the domain-question triad. An open coordination/ownership question
|
|
325
|
+
// a plan is exposed to (distinct from `assumption`, which the plan is built on).
|
|
326
|
+
{ name: "strategic_question", type_id: "ent_357", maturity: "proposed", since: "0.17.4" },
|
|
327
|
+
// ── User ──
|
|
328
|
+
{ name: "persona", type_id: "ent_016", maturity: "stable", since: "0.1.0" },
|
|
329
|
+
{ name: "job", type_id: "ent_017", maturity: "stable", since: "0.1.0" },
|
|
330
|
+
{ name: "jtbd", type_id: "ent_332", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "job" },
|
|
331
|
+
{ name: "pain_point", type_id: "ent_018", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "need" },
|
|
332
|
+
{ name: "desired_outcome", type_id: "ent_019", maturity: "stable", since: "0.1.0" },
|
|
333
|
+
{ name: "job_step", type_id: "ent_020", maturity: "stable", since: "0.1.0" },
|
|
334
|
+
{ name: "user_need", type_id: "ent_021", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "need" },
|
|
335
|
+
{ name: "need", type_id: "ent_313", maturity: "stable", since: "0.1.0" },
|
|
336
|
+
{ name: "switching_cost", type_id: "ent_022", maturity: "stable", since: "0.1.0" },
|
|
337
|
+
// ── Discovery ──
|
|
338
|
+
{ name: "opportunity", type_id: "ent_023", maturity: "stable", since: "0.1.0", default_frameworks: ["opportunity-sizing", "rice-scoring"] },
|
|
339
|
+
{ name: "solution", type_id: "ent_024", maturity: "stable", since: "0.1.0", default_frameworks: ["rice-scoring"] },
|
|
340
|
+
{ name: "feasibility_study", type_id: "ent_025", maturity: "stable", since: "0.1.0" },
|
|
341
|
+
{ name: "design_sprint", type_id: "ent_026", maturity: "stable", since: "0.1.0" },
|
|
342
|
+
// ── Validation ──
|
|
343
|
+
// (since v0.4.0) `hypothesis` re-promoted to canonical-stable. The
|
|
344
|
+
// v0.2.8 rename to `hypothesis_claim` was over-split: "claim" is implied
|
|
345
|
+
// by being a hypothesis. Canonical name reverts; HypothesisClaimProperties
|
|
346
|
+
// renamed to HypothesisProperties. `hypothesis_claim` is now deprecated
|
|
347
|
+
// (→ `hypothesis`). `hypothesis_evidence` deprecated (→ `evidence`): the
|
|
348
|
+
// dual evidence_type enum smell resolved by enriching canonical `evidence`
|
|
349
|
+
// with evidence_rigor + evidence_source axes. Edge pattern switches to
|
|
350
|
+
// `hypothesis_has_evidence` (neutral, direction on node).
|
|
351
|
+
{ name: "hypothesis", type_id: "ent_027", maturity: "stable", since: "0.1.0" },
|
|
352
|
+
{ name: "hypothesis_claim", type_id: "ent_344", maturity: "deprecated", since: "0.2.8", deprecated_in: "0.4.0", replacement: "hypothesis" },
|
|
353
|
+
{ name: "hypothesis_evidence", type_id: "ent_345", maturity: "deprecated", since: "0.2.8", deprecated_in: "0.4.0", replacement: "evidence" },
|
|
354
|
+
// `experiment` is canonical (UPG-664). It has its own property schema
|
|
355
|
+
// (method, start_date, end_date, sample_size, expected_lift) and is the
|
|
356
|
+
// canonical unit of a structured test. The validation flow is
|
|
357
|
+
// `hypothesis → experiment_plan → experiment → experiment_run`: the plan is
|
|
358
|
+
// the validation design, the experiment is the structured test, the run is
|
|
359
|
+
// the optional multi-run/replication child.
|
|
360
|
+
{ name: "experiment", type_id: "ent_028", maturity: "stable", since: "0.1.0" },
|
|
361
|
+
// experiment_plan graduated proposed → stable (UPG-664). It is the canonical
|
|
362
|
+
// validation PLAN type — it absorbed `test_plan`'s planning properties
|
|
363
|
+
// (method / success_criteria / sample_size) when `test_plan` re-homed to the
|
|
364
|
+
// QA/testing domain (UPG-678).
|
|
365
|
+
{ name: "experiment_plan", type_id: "ent_340", maturity: "stable", since: "0.2.6" },
|
|
366
|
+
{ name: "experiment_run", type_id: "ent_341", maturity: "stable", since: "0.2.6" },
|
|
367
|
+
{ name: "learning", type_id: "ent_029", maturity: "stable", since: "0.1.0" },
|
|
368
|
+
// test_plan re-homed validation → testing/QA (UPG-678). It is the QA
|
|
369
|
+
// verification-procedure plan (test scope / environments / pass criteria);
|
|
370
|
+
// its former validation-planning role is carried by experiment_plan.
|
|
371
|
+
{ name: "test_plan", type_id: "ent_030", maturity: "stable", since: "0.1.0" },
|
|
372
|
+
{ name: "evidence", type_id: "ent_031", maturity: "stable", since: "0.1.0" },
|
|
373
|
+
{ name: "research_plan", type_id: "ent_032", maturity: "stable", since: "0.1.0" },
|
|
374
|
+
// ── Market Intelligence ──
|
|
375
|
+
{ name: "competitor", type_id: "ent_033", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
376
|
+
{ name: "competitor_feature", type_id: "ent_034", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
377
|
+
{ name: "competitor_signal", type_id: "ent_354", maturity: "proposed", since: "0.10.0", portfolio_shared: true },
|
|
378
|
+
{ name: "market_trend", type_id: "ent_035", maturity: "stable", since: "0.1.0" },
|
|
379
|
+
{ name: "market_segment", type_id: "ent_036", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
380
|
+
{ name: "competitive_analysis", type_id: "ent_037", maturity: "stable", since: "0.1.0" },
|
|
381
|
+
// Classification taxonomy hosted by competitive_analysis.
|
|
382
|
+
// F7 (UPG-673): graduated proposed → stable at v0.9.x — two minor releases
|
|
383
|
+
// stable since 0.4.0, the taxonomy-axis/value pair backs the competitive-
|
|
384
|
+
// analysis classification spine with no open rename/restructure ticket.
|
|
385
|
+
{ name: "classification_axis", type_id: "ent_346", maturity: "stable", since: "0.4.0", portfolio_shared: true },
|
|
386
|
+
{ name: "classification_value", type_id: "ent_347", maturity: "stable", since: "0.4.0", portfolio_shared: true },
|
|
387
|
+
// ── UX Research ──
|
|
388
|
+
{ name: "research_study", type_id: "ent_038", maturity: "stable", since: "0.1.0" },
|
|
389
|
+
{ name: "research_insight", type_id: "ent_039", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "insight" },
|
|
390
|
+
{ name: "insight", type_id: "ent_040", maturity: "stable", since: "0.1.0" },
|
|
391
|
+
{ name: "participant", type_id: "ent_041", maturity: "stable", since: "0.1.0" },
|
|
392
|
+
{ name: "observation", type_id: "ent_042", maturity: "stable", since: "0.1.0" },
|
|
393
|
+
{ name: "quote", type_id: "ent_043", maturity: "stable", since: "0.1.0" },
|
|
394
|
+
{ name: "affinity_cluster", type_id: "ent_044", maturity: "stable", since: "0.1.0" },
|
|
395
|
+
{ name: "research_question", type_id: "ent_045", maturity: "stable", since: "0.1.0" },
|
|
396
|
+
{ name: "interview_guide", type_id: "ent_046", maturity: "stable", since: "0.1.0" },
|
|
397
|
+
{ name: "finding", type_id: "ent_047", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "insight" },
|
|
398
|
+
{ name: "survey_response", type_id: "ent_048", maturity: "stable", since: "0.1.0" },
|
|
399
|
+
{ name: "highlight", type_id: "ent_049", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "observation" },
|
|
400
|
+
// ── Design ──
|
|
401
|
+
{ name: "user_journey", type_id: "ent_050", maturity: "stable", since: "0.1.0" },
|
|
402
|
+
{ name: "journey_step", type_id: "ent_051", maturity: "stable", since: "0.1.0" },
|
|
403
|
+
{ name: "ux_insight", type_id: "ent_052", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "insight" },
|
|
404
|
+
{ name: "design_question", type_id: "ent_053", maturity: "stable", since: "0.1.0" },
|
|
405
|
+
{ name: "how_might_we", type_id: "ent_333", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "design_question" },
|
|
406
|
+
{ name: "design_concept", type_id: "ent_054", maturity: "stable", since: "0.1.0" },
|
|
407
|
+
{ name: "prototype", type_id: "ent_055", maturity: "stable", since: "0.1.0" },
|
|
408
|
+
{ name: "design_component", type_id: "ent_056", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
409
|
+
{ name: "design_token", type_id: "ent_057", maturity: "stable", since: "0.1.0" },
|
|
410
|
+
{ name: "brand_identity", type_id: "ent_058", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
411
|
+
{ name: "brand_colour", type_id: "ent_059", maturity: "stable", since: "0.1.0" },
|
|
412
|
+
{ name: "brand_typography", type_id: "ent_060", maturity: "stable", since: "0.1.0" },
|
|
413
|
+
{ name: "brand_voice", type_id: "ent_061", maturity: "stable", since: "0.1.0" },
|
|
414
|
+
{ name: "wireframe", type_id: "ent_062", maturity: "stable", since: "0.1.0" },
|
|
415
|
+
{ name: "design_pattern", type_id: "ent_063", maturity: "stable", since: "0.1.0" },
|
|
416
|
+
{ name: "design_guideline", type_id: "ent_064", maturity: "stable", since: "0.1.0" },
|
|
417
|
+
{ name: "annotation", type_id: "ent_065", maturity: "stable", since: "0.1.0" },
|
|
418
|
+
{ name: "interaction_spec", type_id: "ent_066", maturity: "stable", since: "0.1.0" },
|
|
419
|
+
{ name: "design_system", type_id: "ent_067", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
420
|
+
{ name: "user_flow", type_id: "ent_068", maturity: "stable", since: "0.1.0" },
|
|
421
|
+
{ name: "screen", type_id: "ent_069", maturity: "stable", since: "0.1.0" },
|
|
422
|
+
{ name: "screen_state", type_id: "ent_070", maturity: "stable", since: "0.1.0" },
|
|
423
|
+
// surface (0.27.0): the place inside a screen. `screen` is route-level
|
|
424
|
+
// (route / viewport / access_level); `surface` is the contested slot within
|
|
425
|
+
// it, carrying its occupants and the rule that arbitrates between them.
|
|
426
|
+
// Enters `proposed` per the maturity rubric (precedent: planning_cycle 0.20.0).
|
|
427
|
+
{ name: "surface", type_id: "ent_359", maturity: "proposed", since: "0.27.0" },
|
|
428
|
+
{ name: "configuration_axis", type_id: "ent_360", maturity: "proposed", since: "0.30.0" },
|
|
429
|
+
{ name: "journey_phase", type_id: "ent_330", maturity: "proposed", since: "0.2.0" },
|
|
430
|
+
{ name: "journey_action", type_id: "ent_331", maturity: "proposed", since: "0.2.0" },
|
|
431
|
+
{ name: "design_decision", type_id: "ent_319", maturity: "deprecated", since: "0.2.0", deprecated_in: "0.2.0", replacement: "decision" },
|
|
432
|
+
// F7 (UPG-673): graduated proposed → stable at v0.9.x — proposed since 0.2.0,
|
|
433
|
+
// the brand-identity set (logo + imagery) is settled with no open rename.
|
|
434
|
+
{ name: "brand_logo", type_id: "ent_321", maturity: "stable", since: "0.2.0" },
|
|
435
|
+
{ name: "brand_imagery", type_id: "ent_322", maturity: "stable", since: "0.2.0" },
|
|
436
|
+
// ── Product Spec ──
|
|
437
|
+
{ name: "feature_area", type_id: "ent_314", maturity: "stable", since: "0.1.0" },
|
|
438
|
+
{ name: "feature", type_id: "ent_071", maturity: "stable", since: "0.1.0" },
|
|
439
|
+
{ name: "epic", type_id: "ent_072", maturity: "stable", since: "0.1.0" },
|
|
440
|
+
// `user_story` is the templated "As X, I want Y so Z" promise: a stable,
|
|
441
|
+
// lifecycle-free design artefact (UCS pattern P5). The v0.2.7 split EXTRACTED
|
|
442
|
+
// the engineering work into a separate `task` (the lifecycle-bearing work-unit,
|
|
443
|
+
// linked via `task_implements_user_story`); the split was right. But the
|
|
444
|
+
// surviving statement half was renamed to the coined `story_statement`, which
|
|
445
|
+
// raised the adoption barrier. "user story" is the universally-recognised
|
|
446
|
+
// industry term for exactly this artefact. v0.7.0 (UPG-571) re-canonicalises
|
|
447
|
+
// the statement under `user_story`; `story_statement` becomes a deprecated
|
|
448
|
+
// alias. `story_task` (the original work half) was already collapsed into
|
|
449
|
+
// canonical `task` at v0.4.0. So the canonical shape is: user_story (statement)
|
|
450
|
+
// + task (work), linked by `task_implements_user_story`.
|
|
451
|
+
//
|
|
452
|
+
// F7 (UPG-673) — DEFERRED, deliberately kept `proposed`. The audit flagged
|
|
453
|
+
// user_story as a stable-spine candidate, but the v0.7.0 re-canon contract
|
|
454
|
+
// (UPG-571) freezes maturity at `proposed` until the re-canonicalised name
|
|
455
|
+
// has soaked across a full migration window. `user-story-split.test.ts`
|
|
456
|
+
// ("user_story is canonical again (ent_073, proposed, not deprecated)")
|
|
457
|
+
// asserts `proposed` as the post-re-canon invariant. Graduating here would
|
|
458
|
+
// break that contract; promotion is a separate, ticketed decision once the
|
|
459
|
+
// story_statement → user_story migration has fully aged out.
|
|
460
|
+
{ name: "user_story", type_id: "ent_073", maturity: "stable", since: "0.1.0" },
|
|
461
|
+
{ name: "story_statement", type_id: "ent_342", maturity: "deprecated", since: "0.2.7", deprecated_in: "0.7.0", replacement: "user_story" },
|
|
462
|
+
{ name: "story_task", type_id: "ent_343", maturity: "deprecated", since: "0.2.7", deprecated_in: "0.4.0", replacement: "task" },
|
|
463
|
+
{ name: "acceptance_criterion", type_id: "ent_074", maturity: "stable", since: "0.1.0" },
|
|
464
|
+
{ name: "release", type_id: "ent_075", maturity: "stable", since: "0.1.0" },
|
|
465
|
+
{ name: "task", type_id: "ent_076", maturity: "stable", since: "0.1.0" },
|
|
466
|
+
{ name: "bug", type_id: "ent_077", maturity: "stable", since: "0.1.0" },
|
|
467
|
+
{ name: "roadmap", type_id: "ent_078", maturity: "stable", since: "0.1.0" },
|
|
468
|
+
{ name: "roadmap_item", type_id: "ent_079", maturity: "stable", since: "0.1.0" },
|
|
469
|
+
{ name: "theme", type_id: "ent_080", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.9.0", replacement: "roadmap_theme" },
|
|
470
|
+
{ name: "roadmap_theme", type_id: "ent_351", maturity: "stable", since: "0.1.0" },
|
|
471
|
+
{ name: "changelog", type_id: "ent_081", maturity: "stable", since: "0.1.0" },
|
|
472
|
+
// (0.20.0) The cadence axis: a named, dated interval that work flows through
|
|
473
|
+
// and which nests (a program-increment contains iterations; a cycle contains
|
|
474
|
+
// its cooldown). One self-nesting type with a `cadence_kind` discriminator
|
|
475
|
+
// spans sprint / iteration / quarter / PI / cooldown rather than minting a
|
|
476
|
+
// type per methodology. `portfolio_shared` because a coarse cycle is an
|
|
477
|
+
// org-shared interval an objective in a rollup graph and a story in a product
|
|
478
|
+
// graph both schedule into.
|
|
479
|
+
{ name: "planning_cycle", type_id: "ent_358", maturity: "proposed", since: "0.20.0", portfolio_shared: true },
|
|
480
|
+
// ── Engineering ──
|
|
481
|
+
{ name: "bounded_context", type_id: "ent_082", maturity: "stable", since: "0.1.0" },
|
|
482
|
+
{ name: "service", type_id: "ent_083", maturity: "stable", since: "0.1.0" },
|
|
483
|
+
{ name: "domain_event", type_id: "ent_084", maturity: "stable", since: "0.1.0" },
|
|
484
|
+
{ name: "api_contract", type_id: "ent_085", maturity: "stable", since: "0.1.0" },
|
|
485
|
+
{ name: "architecture_decision", type_id: "ent_086", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "decision" },
|
|
486
|
+
{ name: "technical_debt_item", type_id: "ent_087", maturity: "stable", since: "0.1.0" },
|
|
487
|
+
{ name: "feature_flag", type_id: "ent_088", maturity: "stable", since: "0.1.0" },
|
|
488
|
+
{ name: "deployment", type_id: "ent_089", maturity: "stable", since: "0.1.0" },
|
|
489
|
+
{ name: "aggregate", type_id: "ent_090", maturity: "stable", since: "0.1.0" },
|
|
490
|
+
{ name: "domain_entity", type_id: "ent_091", maturity: "stable", since: "0.1.0" },
|
|
491
|
+
{ name: "value_object", type_id: "ent_092", maturity: "stable", since: "0.1.0" },
|
|
492
|
+
{ name: "command", type_id: "ent_093", maturity: "stable", since: "0.1.0" },
|
|
493
|
+
{ name: "read_model", type_id: "ent_094", maturity: "stable", since: "0.1.0" },
|
|
494
|
+
{ name: "api_endpoint", type_id: "ent_095", maturity: "stable", since: "0.1.0" },
|
|
495
|
+
{ name: "database_schema", type_id: "ent_096", maturity: "stable", since: "0.1.0" },
|
|
496
|
+
{ name: "queue_topic", type_id: "ent_097", maturity: "stable", since: "0.1.0" },
|
|
497
|
+
{ name: "build_artifact", type_id: "ent_098", maturity: "stable", since: "0.1.0" },
|
|
498
|
+
{ name: "code_repository", type_id: "ent_099", maturity: "stable", since: "0.1.0" },
|
|
499
|
+
{ name: "library_dependency", type_id: "ent_100", maturity: "stable", since: "0.1.0" },
|
|
500
|
+
{ name: "integration_pattern", type_id: "ent_101", maturity: "stable", since: "0.1.0" },
|
|
501
|
+
{ name: "external_api", type_id: "ent_102", maturity: "stable", since: "0.1.0" },
|
|
502
|
+
{ name: "data_flow", type_id: "ent_103", maturity: "stable", since: "0.1.0" },
|
|
503
|
+
{ name: "investigation", type_id: "ent_315", maturity: "stable", since: "0.2.0" },
|
|
504
|
+
{ name: "root_cause", type_id: "ent_316", maturity: "stable", since: "0.2.0" },
|
|
505
|
+
{ name: "symptom", type_id: "ent_317", maturity: "stable", since: "0.2.0" },
|
|
506
|
+
{ name: "fix", type_id: "ent_318", maturity: "stable", since: "0.2.0" },
|
|
507
|
+
// ── Growth ──
|
|
508
|
+
{ name: "north_star_metric", type_id: "ent_104", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
509
|
+
{ name: "input_metric", type_id: "ent_105", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
510
|
+
{ name: "funnel", type_id: "ent_106", maturity: "stable", since: "0.1.0" },
|
|
511
|
+
{ name: "funnel_step", type_id: "ent_107", maturity: "stable", since: "0.1.0" },
|
|
512
|
+
{ name: "acquisition_channel", type_id: "ent_108", maturity: "stable", since: "0.1.0" },
|
|
513
|
+
{ name: "growth_campaign", type_id: "ent_109", maturity: "stable", since: "0.1.0" },
|
|
514
|
+
{ name: "campaign", type_id: "ent_337", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "growth_campaign" },
|
|
515
|
+
{ name: "cohort", type_id: "ent_110", maturity: "stable", since: "0.1.0" },
|
|
516
|
+
{ name: "behavioral_segment", type_id: "ent_111", maturity: "stable", since: "0.1.0" },
|
|
517
|
+
{ name: "segment", type_id: "ent_338", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "behavioral_segment" },
|
|
518
|
+
{ name: "growth_loop", type_id: "ent_112", maturity: "stable", since: "0.1.0" },
|
|
519
|
+
{ name: "growth_experiment", type_id: "ent_113", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "experiment" },
|
|
520
|
+
{ name: "variant", type_id: "ent_114", maturity: "stable", since: "0.1.0" },
|
|
521
|
+
{ name: "attribution_model", type_id: "ent_115", maturity: "stable", since: "0.1.0" },
|
|
522
|
+
// ── Business Model ──
|
|
523
|
+
{ name: "business_model", type_id: "ent_116", maturity: "stable", since: "0.1.0" },
|
|
524
|
+
{ name: "value_proposition", type_id: "ent_117", maturity: "stable", since: "0.1.0" },
|
|
525
|
+
{ name: "revenue_stream", type_id: "ent_118", maturity: "stable", since: "0.1.0" },
|
|
526
|
+
{ name: "pricing_tier", type_id: "ent_119", maturity: "stable", since: "0.1.0" },
|
|
527
|
+
{ name: "cost_structure", type_id: "ent_120", maturity: "stable", since: "0.1.0" },
|
|
528
|
+
{ name: "unit_economics", type_id: "ent_121", maturity: "stable", since: "0.1.0" },
|
|
529
|
+
{ name: "partnership", type_id: "ent_122", maturity: "stable", since: "0.1.0" },
|
|
530
|
+
{ name: "key_resource", type_id: "ent_123", maturity: "stable", since: "0.1.0" },
|
|
531
|
+
{ name: "key_activity", type_id: "ent_124", maturity: "stable", since: "0.1.0" },
|
|
532
|
+
{ name: "customer_segment_bm", type_id: "ent_125", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "market_segment" },
|
|
533
|
+
{ name: "channel_bm", type_id: "ent_126", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "distribution_channel" },
|
|
534
|
+
{ name: "target_customer_segment", type_id: "ent_329", maturity: "deprecated", since: "0.2.0", deprecated_in: "0.2.0", replacement: "market_segment" },
|
|
535
|
+
{ name: "customer_relationship", type_id: "ent_127", maturity: "stable", since: "0.1.0" },
|
|
536
|
+
{ name: "distribution_channel", type_id: "ent_128", maturity: "stable", since: "0.1.0" },
|
|
537
|
+
// ── Go-To-Market ──
|
|
538
|
+
{ name: "gtm_strategy", type_id: "ent_129", maturity: "stable", since: "0.1.0" },
|
|
539
|
+
{ name: "ideal_customer_profile", type_id: "ent_130", maturity: "stable", since: "0.1.0" },
|
|
540
|
+
{ name: "positioning", type_id: "ent_131", maturity: "stable", since: "0.1.0" },
|
|
541
|
+
{ name: "messaging", type_id: "ent_132", maturity: "stable", since: "0.1.0" },
|
|
542
|
+
{ name: "launch", type_id: "ent_133", maturity: "stable", since: "0.1.0" },
|
|
543
|
+
{ name: "content_strategy", type_id: "ent_134", maturity: "stable", since: "0.1.0" },
|
|
544
|
+
{ name: "sales_motion", type_id: "ent_135", maturity: "stable", since: "0.1.0" },
|
|
545
|
+
{ name: "competitive_battle_card", type_id: "ent_136", maturity: "stable", since: "0.1.0" },
|
|
546
|
+
{ name: "demand_gen_program", type_id: "ent_137", maturity: "stable", since: "0.1.0" },
|
|
547
|
+
{ name: "territory", type_id: "ent_138", maturity: "stable", since: "0.1.0" },
|
|
548
|
+
{ name: "objection", type_id: "ent_139", maturity: "stable", since: "0.1.0" },
|
|
549
|
+
{ name: "rebuttal", type_id: "ent_140", maturity: "stable", since: "0.1.0" },
|
|
550
|
+
{ name: "proof_point", type_id: "ent_141", maturity: "stable", since: "0.1.0" },
|
|
551
|
+
// ── Team & Organisation ──
|
|
552
|
+
{ name: "team", type_id: "ent_142", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
553
|
+
{ name: "role", type_id: "ent_143", maturity: "stable", since: "0.1.0" },
|
|
554
|
+
{ name: "stakeholder", type_id: "ent_144", maturity: "stable", since: "0.1.0" },
|
|
555
|
+
{ name: "person", type_id: "ent_349", maturity: "stable", since: "0.5.0" },
|
|
556
|
+
{ name: "product_decision", type_id: "ent_145", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "decision" },
|
|
557
|
+
{ name: "team_okr", type_id: "ent_146", maturity: "stable", since: "0.1.0" },
|
|
558
|
+
{ name: "retrospective", type_id: "ent_147", maturity: "stable", since: "0.1.0" },
|
|
559
|
+
{ name: "dependency", type_id: "ent_148", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
560
|
+
{ name: "department", type_id: "ent_149", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
561
|
+
{ name: "skill", type_id: "ent_150", maturity: "stable", since: "0.1.0" },
|
|
562
|
+
{ name: "ceremony", type_id: "ent_151", maturity: "stable", since: "0.1.0" },
|
|
563
|
+
{ name: "capacity_plan", type_id: "ent_152", maturity: "stable", since: "0.1.0" },
|
|
564
|
+
// ── Data & Analytics ──
|
|
565
|
+
{ name: "data_source", type_id: "ent_153", maturity: "stable", since: "0.1.0" },
|
|
566
|
+
{ name: "metric_definition", type_id: "ent_154", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
567
|
+
{ name: "event_schema", type_id: "ent_155", maturity: "stable", since: "0.1.0" },
|
|
568
|
+
{ name: "dashboard", type_id: "ent_156", maturity: "stable", since: "0.1.0" },
|
|
569
|
+
{ name: "ab_test", type_id: "ent_157", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "experiment" },
|
|
570
|
+
{ name: "data_model", type_id: "ent_158", maturity: "stable", since: "0.1.0" },
|
|
571
|
+
{ name: "data_quality_rule", type_id: "ent_159", maturity: "stable", since: "0.1.0" },
|
|
572
|
+
{ name: "data_product", type_id: "ent_160", maturity: "stable", since: "0.1.0" },
|
|
573
|
+
{ name: "data_pipeline", type_id: "ent_161", maturity: "stable", since: "0.1.0" },
|
|
574
|
+
{ name: "data_lineage", type_id: "ent_162", maturity: "stable", since: "0.1.0" },
|
|
575
|
+
{ name: "glossary_term", type_id: "ent_163", maturity: "stable", since: "0.1.0" },
|
|
576
|
+
{ name: "data_domain", type_id: "ent_164", maturity: "stable", since: "0.1.0" },
|
|
577
|
+
{ name: "report", type_id: "ent_165", maturity: "stable", since: "0.1.0" },
|
|
578
|
+
// ── Content & Knowledge ──
|
|
579
|
+
{ name: "content_piece", type_id: "ent_166", maturity: "stable", since: "0.1.0" },
|
|
580
|
+
{ name: "knowledge_base_article", type_id: "ent_167", maturity: "stable", since: "0.1.0" },
|
|
581
|
+
{ name: "brand_asset", type_id: "ent_168", maturity: "stable", since: "0.1.0" },
|
|
582
|
+
{ name: "internal_doc", type_id: "ent_169", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "document" },
|
|
583
|
+
{ name: "prompt_template", type_id: "ent_170", maturity: "stable", since: "0.1.0" },
|
|
584
|
+
{ name: "content_calendar", type_id: "ent_171", maturity: "stable", since: "0.1.0" },
|
|
585
|
+
{ name: "content_theme", type_id: "ent_172", maturity: "stable", since: "0.1.0" },
|
|
586
|
+
{ name: "documentation_template", type_id: "ent_173", maturity: "stable", since: "0.1.0" },
|
|
587
|
+
{ name: "document", type_id: "ent_320", maturity: "stable", since: "0.2.0" },
|
|
588
|
+
// ── Legal & Compliance ──
|
|
589
|
+
{ name: "compliance_requirement", type_id: "ent_174", maturity: "stable", since: "0.1.0" },
|
|
590
|
+
{ name: "risk", type_id: "ent_175", maturity: "stable", since: "0.1.0" },
|
|
591
|
+
{ name: "data_contract", type_id: "ent_176", maturity: "stable", since: "0.1.0" },
|
|
592
|
+
{ name: "legal_entity", type_id: "ent_177", maturity: "stable", since: "0.1.0" },
|
|
593
|
+
{ name: "ip_asset", type_id: "ent_178", maturity: "stable", since: "0.1.0" },
|
|
594
|
+
{ name: "audit_log_policy", type_id: "ent_179", maturity: "stable", since: "0.1.0" },
|
|
595
|
+
{ name: "contract", type_id: "ent_180", maturity: "stable", since: "0.1.0" },
|
|
596
|
+
{ name: "contract_clause", type_id: "ent_181", maturity: "stable", since: "0.1.0" },
|
|
597
|
+
{ name: "privacy_policy", type_id: "ent_182", maturity: "stable", since: "0.1.0" },
|
|
598
|
+
{ name: "compliance_framework", type_id: "ent_183", maturity: "stable", since: "0.1.0" },
|
|
599
|
+
{ name: "security_audit", type_id: "ent_184", maturity: "stable", since: "0.1.0" },
|
|
600
|
+
// ── DevOps & Platform ──
|
|
601
|
+
{ name: "service_level_indicator", type_id: "ent_185", maturity: "stable", since: "0.1.0" },
|
|
602
|
+
{ name: "sli", type_id: "ent_334", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "service_level_indicator" },
|
|
603
|
+
{ name: "service_level_objective", type_id: "ent_186", maturity: "stable", since: "0.1.0" },
|
|
604
|
+
{ name: "slo", type_id: "ent_335", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "service_level_objective" },
|
|
605
|
+
{ name: "error_budget", type_id: "ent_187", maturity: "stable", since: "0.1.0" },
|
|
606
|
+
{ name: "incident", type_id: "ent_188", maturity: "stable", since: "0.1.0" },
|
|
607
|
+
{ name: "postmortem", type_id: "ent_189", maturity: "stable", since: "0.1.0" },
|
|
608
|
+
{ name: "runbook", type_id: "ent_190", maturity: "stable", since: "0.1.0" },
|
|
609
|
+
{ name: "monitor", type_id: "ent_191", maturity: "stable", since: "0.1.0" },
|
|
610
|
+
{ name: "alert_rule", type_id: "ent_192", maturity: "stable", since: "0.1.0" },
|
|
611
|
+
{ name: "ci_pipeline", type_id: "ent_193", maturity: "stable", since: "0.1.0" },
|
|
612
|
+
{ name: "release_strategy", type_id: "ent_194", maturity: "stable", since: "0.1.0" },
|
|
613
|
+
{ name: "on_call_rotation", type_id: "ent_195", maturity: "stable", since: "0.1.0" },
|
|
614
|
+
{ name: "infrastructure_component", type_id: "ent_196", maturity: "stable", since: "0.1.0" },
|
|
615
|
+
// ── Security ──
|
|
616
|
+
{ name: "threat_model", type_id: "ent_197", maturity: "stable", since: "0.1.0" },
|
|
617
|
+
{ name: "threat", type_id: "ent_198", maturity: "stable", since: "0.1.0" },
|
|
618
|
+
{ name: "vulnerability", type_id: "ent_199", maturity: "stable", since: "0.1.0" },
|
|
619
|
+
{ name: "security_control", type_id: "ent_200", maturity: "stable", since: "0.1.0" },
|
|
620
|
+
{ name: "security_policy", type_id: "ent_201", maturity: "stable", since: "0.1.0" },
|
|
621
|
+
{ name: "security_incident", type_id: "ent_202", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "incident" },
|
|
622
|
+
{ name: "penetration_test", type_id: "ent_203", maturity: "stable", since: "0.1.0" },
|
|
623
|
+
{ name: "security_review", type_id: "ent_204", maturity: "stable", since: "0.1.0" },
|
|
624
|
+
{ name: "data_classification", type_id: "ent_205", maturity: "stable", since: "0.1.0" },
|
|
625
|
+
{ name: "access_policy", type_id: "ent_206", maturity: "stable", since: "0.1.0" },
|
|
626
|
+
// ── Accessibility ──
|
|
627
|
+
{ name: "a11y_standard", type_id: "ent_207", maturity: "stable", since: "0.1.0" },
|
|
628
|
+
{ name: "a11y_guideline", type_id: "ent_208", maturity: "stable", since: "0.1.0" },
|
|
629
|
+
{ name: "a11y_audit", type_id: "ent_209", maturity: "stable", since: "0.1.0" },
|
|
630
|
+
{ name: "a11y_issue", type_id: "ent_210", maturity: "stable", since: "0.1.0" },
|
|
631
|
+
{ name: "a11y_annotation", type_id: "ent_211", maturity: "stable", since: "0.1.0" },
|
|
632
|
+
// ── QA & Testing ──
|
|
633
|
+
{ name: "test_suite", type_id: "ent_212", maturity: "stable", since: "0.1.0" },
|
|
634
|
+
{ name: "test_case", type_id: "ent_213", maturity: "stable", since: "0.1.0" },
|
|
635
|
+
{ name: "qa_session", type_id: "ent_214", maturity: "stable", since: "0.1.0" },
|
|
636
|
+
{ name: "regression_test", type_id: "ent_215", maturity: "stable", since: "0.1.0" },
|
|
637
|
+
{ name: "test_coverage_report", type_id: "ent_216", maturity: "stable", since: "0.1.0" },
|
|
638
|
+
{ name: "test_environment", type_id: "ent_217", maturity: "stable", since: "0.1.0" },
|
|
639
|
+
{ name: "defect_report", type_id: "ent_218", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "support_ticket" },
|
|
640
|
+
{ name: "test_result", type_id: "ent_327", maturity: "proposed", since: "0.2.0" },
|
|
641
|
+
// ── Feedback & Voice of Customer ──
|
|
642
|
+
{ name: "feedback_program", type_id: "ent_219", maturity: "stable", since: "0.1.0" },
|
|
643
|
+
{ name: "feature_request", type_id: "ent_220", maturity: "stable", since: "0.1.0" },
|
|
644
|
+
{ name: "feedback_vote", type_id: "ent_221", maturity: "stable", since: "0.1.0" },
|
|
645
|
+
{ name: "nps_campaign", type_id: "ent_222", maturity: "stable", since: "0.1.0" },
|
|
646
|
+
{ name: "user_advisory_board", type_id: "ent_223", maturity: "stable", since: "0.1.0" },
|
|
647
|
+
{ name: "beta_program", type_id: "ent_224", maturity: "stable", since: "0.1.0" },
|
|
648
|
+
{ name: "feedback_theme", type_id: "ent_225", maturity: "stable", since: "0.1.0" },
|
|
649
|
+
// ── Pricing & Packaging ──
|
|
650
|
+
{ name: "pricing_strategy", type_id: "ent_226", maturity: "stable", since: "0.1.0" },
|
|
651
|
+
{ name: "pricing_experiment", type_id: "ent_227", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "experiment" },
|
|
652
|
+
{ name: "package", type_id: "ent_228", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "pricing_tier" },
|
|
653
|
+
{ name: "discount_strategy", type_id: "ent_229", maturity: "stable", since: "0.1.0" },
|
|
654
|
+
{ name: "trial_config", type_id: "ent_230", maturity: "stable", since: "0.1.0" },
|
|
655
|
+
{ name: "paywall", type_id: "ent_231", maturity: "stable", since: "0.1.0" },
|
|
656
|
+
// ── AI/ML Operations ──
|
|
657
|
+
{ name: "ai_model", type_id: "ent_232", maturity: "stable", since: "0.1.0" },
|
|
658
|
+
{ name: "prompt_version", type_id: "ent_233", maturity: "stable", since: "0.1.0" },
|
|
659
|
+
{ name: "eval_benchmark", type_id: "ent_234", maturity: "stable", since: "0.1.0" },
|
|
660
|
+
{ name: "eval_run", type_id: "ent_235", maturity: "stable", since: "0.1.0" },
|
|
661
|
+
{ name: "ai_cost_tracker", type_id: "ent_236", maturity: "stable", since: "0.1.0" },
|
|
662
|
+
{ name: "hallucination_report", type_id: "ent_237", maturity: "stable", since: "0.1.0" },
|
|
663
|
+
{ name: "ai_guardrail", type_id: "ent_238", maturity: "stable", since: "0.1.0" },
|
|
664
|
+
{ name: "model_comparison", type_id: "ent_239", maturity: "stable", since: "0.1.0" },
|
|
665
|
+
{ name: "ai_experiment", type_id: "ent_323", maturity: "proposed", since: "0.2.0" },
|
|
666
|
+
{ name: "ai_dataset", type_id: "ent_324", maturity: "proposed", since: "0.2.0" },
|
|
667
|
+
{ name: "ai_trace", type_id: "ent_325", maturity: "proposed", since: "0.2.0" },
|
|
668
|
+
// ── Agentic Workflows ──
|
|
669
|
+
{ name: "workflow_template", type_id: "ent_240", maturity: "stable", since: "0.1.0" },
|
|
670
|
+
{ name: "workflow_run", type_id: "ent_241", maturity: "stable", since: "0.1.0" },
|
|
671
|
+
{ name: "agent_definition", type_id: "ent_242", maturity: "stable", since: "0.1.0" },
|
|
672
|
+
{ name: "agent_session", type_id: "ent_243", maturity: "stable", since: "0.1.0" },
|
|
673
|
+
{ name: "review_gate", type_id: "ent_244", maturity: "stable", since: "0.1.0" },
|
|
674
|
+
{ name: "approval_record", type_id: "ent_245", maturity: "stable", since: "0.1.0" },
|
|
675
|
+
{ name: "agent_skill", type_id: "ent_246", maturity: "stable", since: "0.1.0" },
|
|
676
|
+
{ name: "agent_hook", type_id: "ent_247", maturity: "stable", since: "0.1.0" },
|
|
677
|
+
{ name: "workflow_artifact", type_id: "ent_248", maturity: "stable", since: "0.1.0" },
|
|
678
|
+
{ name: "agent_task", type_id: "ent_326", maturity: "proposed", since: "0.2.0" },
|
|
679
|
+
// ── Portfolio ──
|
|
680
|
+
{ name: "organization", type_id: "ent_249", maturity: "stable", since: "0.1.0" },
|
|
681
|
+
{ name: "portfolio", type_id: "ent_250", maturity: "stable", since: "0.1.0" },
|
|
682
|
+
{ name: "product_area", type_id: "ent_251", maturity: "stable", since: "0.1.0" },
|
|
683
|
+
// ── Sales & Revenue ──
|
|
684
|
+
{ name: "account", type_id: "ent_252", maturity: "stable", since: "0.1.0" },
|
|
685
|
+
{ name: "contact", type_id: "ent_253", maturity: "stable", since: "0.1.0" },
|
|
686
|
+
{ name: "lead", type_id: "ent_254", maturity: "stable", since: "0.1.0" },
|
|
687
|
+
{ name: "deal", type_id: "ent_255", maturity: "stable", since: "0.1.0" },
|
|
688
|
+
{ name: "pipeline_sales", type_id: "ent_256", maturity: "stable", since: "0.1.0" },
|
|
689
|
+
{ name: "pipeline_stage", type_id: "ent_257", maturity: "stable", since: "0.1.0" },
|
|
690
|
+
{ name: "quote_document", type_id: "ent_258", maturity: "stable", since: "0.1.0" },
|
|
691
|
+
{ name: "subscription", type_id: "ent_259", maturity: "stable", since: "0.1.0" },
|
|
692
|
+
{ name: "invoice", type_id: "ent_260", maturity: "stable", since: "0.1.0" },
|
|
693
|
+
{ name: "forecast", type_id: "ent_261", maturity: "stable", since: "0.1.0" },
|
|
694
|
+
// ── Program Management ──
|
|
695
|
+
{ name: "program", type_id: "ent_262", maturity: "stable", since: "0.1.0" },
|
|
696
|
+
{ name: "project", type_id: "ent_263", maturity: "stable", since: "0.1.0" },
|
|
697
|
+
// `portfolio_shared` (0.25.1 feedback): a milestone is often a cross-team gate,
|
|
698
|
+
// not one project's checkpoint — an org-wide "Open Beta" that several products'
|
|
699
|
+
// projects must all satisfy. Shared tier lets `project_targets_milestone` (and
|
|
700
|
+
// the other milestone edges) pass the cross-scope gate as `provisional`, same
|
|
701
|
+
// as `project_implements_initiative`. Precedent: `planning_cycle` (0.20.0).
|
|
702
|
+
{ name: "milestone", type_id: "ent_264", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
703
|
+
{ name: "risk_register", type_id: "ent_265", maturity: "stable", since: "0.1.0" },
|
|
704
|
+
{ name: "risk_item", type_id: "ent_266", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "risk" },
|
|
705
|
+
{ name: "change_request", type_id: "ent_267", maturity: "stable", since: "0.1.0" },
|
|
706
|
+
{ name: "deliverable", type_id: "ent_268", maturity: "stable", since: "0.1.0" },
|
|
707
|
+
{ name: "resource_allocation", type_id: "ent_269", maturity: "stable", since: "0.1.0" },
|
|
708
|
+
{ name: "status_report", type_id: "ent_270", maturity: "stable", since: "0.1.0" },
|
|
709
|
+
// ── Marketing Operations ──
|
|
710
|
+
{ name: "marketing_strategy", type_id: "ent_271", maturity: "stable", since: "0.1.0" },
|
|
711
|
+
{ name: "marketing_channel", type_id: "ent_272", maturity: "stable", since: "0.1.0" },
|
|
712
|
+
{ name: "marketing_campaign_plan", type_id: "ent_273", maturity: "stable", since: "0.1.0" },
|
|
713
|
+
{ name: "email_sequence", type_id: "ent_274", maturity: "stable", since: "0.1.0" },
|
|
714
|
+
{ name: "social_post", type_id: "ent_275", maturity: "stable", since: "0.1.0" },
|
|
715
|
+
{ name: "seo_keyword", type_id: "ent_276", maturity: "stable", since: "0.1.0" },
|
|
716
|
+
{ name: "ad_creative", type_id: "ent_277", maturity: "stable", since: "0.1.0" },
|
|
717
|
+
{ name: "press_release", type_id: "ent_278", maturity: "stable", since: "0.1.0" },
|
|
718
|
+
{ name: "event", type_id: "ent_279", maturity: "stable", since: "0.1.0" },
|
|
719
|
+
{ name: "community_initiative", type_id: "ent_280", maturity: "stable", since: "0.1.0" },
|
|
720
|
+
// ── Operations & Customer Success ──
|
|
721
|
+
{ name: "support_ticket", type_id: "ent_281", maturity: "stable", since: "0.1.0" },
|
|
722
|
+
{ name: "customer_feedback", type_id: "ent_282", maturity: "stable", since: "0.1.0" },
|
|
723
|
+
{ name: "churn_reason", type_id: "ent_283", maturity: "stable", since: "0.1.0" },
|
|
724
|
+
{ name: "onboarding_flow", type_id: "ent_284", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "user_flow" },
|
|
725
|
+
{ name: "customer_health_score", type_id: "ent_285", maturity: "stable", since: "0.1.0" },
|
|
726
|
+
{ name: "playbook", type_id: "ent_286", maturity: "stable", since: "0.1.0" },
|
|
727
|
+
{ name: "service_level_agreement", type_id: "ent_287", maturity: "stable", since: "0.1.0" },
|
|
728
|
+
{ name: "sla", type_id: "ent_336", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "service_level_agreement" },
|
|
729
|
+
{ name: "customer_journey_stage", type_id: "ent_288", maturity: "stable", since: "0.1.0" },
|
|
730
|
+
{ name: "touchpoint", type_id: "ent_289", maturity: "stable", since: "0.1.0" },
|
|
731
|
+
{ name: "success_milestone", type_id: "ent_290", maturity: "stable", since: "0.1.0" },
|
|
732
|
+
{ name: "service_blueprint", type_id: "ent_291", maturity: "stable", since: "0.1.0" },
|
|
733
|
+
{ name: "nps_score", type_id: "ent_292", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "nps_campaign" },
|
|
734
|
+
// ── Localisation & i18n ──
|
|
735
|
+
{ name: "locale", type_id: "ent_293", maturity: "stable", since: "0.1.0" },
|
|
736
|
+
{ name: "translation_key", type_id: "ent_294", maturity: "stable", since: "0.1.0" },
|
|
737
|
+
{ name: "translation_bundle", type_id: "ent_295", maturity: "stable", since: "0.1.0" },
|
|
738
|
+
{ name: "locale_config", type_id: "ent_296", maturity: "stable", since: "0.1.0" },
|
|
739
|
+
{ name: "cultural_adaptation", type_id: "ent_297", maturity: "stable", since: "0.1.0" },
|
|
740
|
+
{ name: "regional_pricing", type_id: "ent_298", maturity: "stable", since: "0.1.0" },
|
|
741
|
+
// ── Customer Education ──
|
|
742
|
+
{ name: "education_program", type_id: "ent_299", maturity: "stable", since: "0.1.0" },
|
|
743
|
+
{ name: "tutorial", type_id: "ent_300", maturity: "stable", since: "0.1.0" },
|
|
744
|
+
{ name: "walkthrough", type_id: "ent_301", maturity: "stable", since: "0.1.0" },
|
|
745
|
+
{ name: "webinar", type_id: "ent_302", maturity: "stable", since: "0.1.0" },
|
|
746
|
+
{ name: "certification", type_id: "ent_303", maturity: "stable", since: "0.1.0" },
|
|
747
|
+
{ name: "help_video", type_id: "ent_304", maturity: "stable", since: "0.1.0" },
|
|
748
|
+
{ name: "learning_path", type_id: "ent_305", maturity: "stable", since: "0.1.0" },
|
|
749
|
+
// ── Partners & Ecosystem ──
|
|
750
|
+
{ name: "partner_program", type_id: "ent_306", maturity: "stable", since: "0.1.0" },
|
|
751
|
+
{ name: "partner_tier", type_id: "ent_307", maturity: "stable", since: "0.1.0" },
|
|
752
|
+
{ name: "api_ecosystem", type_id: "ent_308", maturity: "stable", since: "0.1.0" },
|
|
753
|
+
{ name: "marketplace_listing", type_id: "ent_309", maturity: "stable", since: "0.1.0" },
|
|
754
|
+
{ name: "developer_portal", type_id: "ent_310", maturity: "stable", since: "0.1.0" },
|
|
755
|
+
{ name: "integration_partner", type_id: "ent_311", maturity: "stable", since: "0.1.0" },
|
|
756
|
+
{ name: "partner_revenue_share", type_id: "ent_312", maturity: "stable", since: "0.1.0" },
|
|
757
|
+
// ── Workspace ──
|
|
758
|
+
{ name: "workspace", type_id: "ent_328", maturity: "proposed", since: "0.2.0" },
|
|
759
|
+
{ name: "framework_exercise", type_id: "ent_350", maturity: "proposed", since: "0.8.4" },
|
|
760
|
+
{ name: "composition", type_id: "ent_361", maturity: "proposed", since: "0.31.0" },
|
|
761
|
+
// A dated, hashed rendition of a node that is already in the graph. Enters
|
|
762
|
+
// `proposed` per the maturity rubric (precedent: composition 0.31.0).
|
|
763
|
+
{ name: "capture", type_id: "ent_362", maturity: "proposed", since: "0.32.0" }
|
|
764
|
+
];
|
|
765
|
+
var DEFERRED_PROPOSED_BY_CONTRACT = {
|
|
766
|
+
// user_story (UPG-571) and experiment_run (UPG-664) graduated to stable in
|
|
767
|
+
// 0.12.6 — Captain lifted both freezes ("we are using them"). Their contracts
|
|
768
|
+
// are settled; they are now stable, not deferred.
|
|
769
|
+
ai_experiment: "UPG-665: AI prompt/model restructure (open ADR).",
|
|
770
|
+
ai_dataset: "UPG-665: AI prompt/model restructure (open ADR).",
|
|
771
|
+
ai_trace: "UPG-665: AI prompt/model restructure (open ADR)."
|
|
772
|
+
};
|
|
773
|
+
var UPG_ENTITY_META_BY_NAME = new Map(
|
|
774
|
+
UPG_ENTITY_META.map((m) => [m.name, m])
|
|
775
|
+
);
|
|
776
|
+
var UPG_ENTITY_META_BY_ID = new Map(
|
|
777
|
+
UPG_ENTITY_META.map((m) => [m.type_id, m])
|
|
778
|
+
);
|
|
779
|
+
var UPG_ACTIVE_TYPES = UPG_ENTITY_META.filter((m) => m.maturity === "stable" || m.maturity === "proposed").map((m) => m.name);
|
|
780
|
+
var UPG_DEPRECATED_TYPES = UPG_ENTITY_META.filter((m) => m.maturity === "deprecated").map((m) => m.name);
|
|
781
|
+
var UPG_PORTFOLIO_SHARED_TYPES = UPG_ENTITY_META.filter((m) => m.portfolio_shared === true).map((m) => m.name);
|
|
782
|
+
function isPortfolioSharedType(name) {
|
|
783
|
+
return UPG_ENTITY_META_BY_NAME.get(name)?.portfolio_shared === true;
|
|
784
|
+
}
|
|
785
|
+
function isDeprecatedType(name) {
|
|
786
|
+
const meta = UPG_ENTITY_META_BY_NAME.get(name);
|
|
787
|
+
return meta?.maturity === "deprecated";
|
|
788
|
+
}
|
|
789
|
+
function getReplacementType(name) {
|
|
790
|
+
const meta = UPG_ENTITY_META_BY_NAME.get(name);
|
|
791
|
+
return meta?.replacement;
|
|
792
|
+
}
|
|
793
|
+
function getTypeId(name) {
|
|
794
|
+
return UPG_ENTITY_META_BY_NAME.get(name)?.type_id;
|
|
795
|
+
}
|
|
796
|
+
function getTypeName(typeId) {
|
|
797
|
+
return UPG_ENTITY_META_BY_ID.get(typeId)?.name;
|
|
798
|
+
}
|
|
799
|
+
|
|
296
800
|
// src/registry/domains.ts
|
|
297
801
|
var UPG_DOMAINS = [
|
|
298
802
|
{
|
|
@@ -804,516 +1308,23 @@ function getTypes() {
|
|
|
804
1308
|
return UPG_DOMAINS.flatMap((d) => [...d.types]);
|
|
805
1309
|
}
|
|
806
1310
|
function getDomainForType(entityType) {
|
|
807
|
-
|
|
1311
|
+
const direct = UPG_DOMAINS.find((d) => d.types.includes(entityType));
|
|
1312
|
+
if (direct) return direct;
|
|
1313
|
+
let name = entityType;
|
|
1314
|
+
for (let hop = 0; hop < 3; hop++) {
|
|
1315
|
+
if (!isDeprecatedType(name)) return void 0;
|
|
1316
|
+
const replacement = getReplacementType(name);
|
|
1317
|
+
if (!replacement) return void 0;
|
|
1318
|
+
const viaReplacement = UPG_DOMAINS.find((d) => d.types.includes(replacement));
|
|
1319
|
+
if (viaReplacement) return viaReplacement;
|
|
1320
|
+
name = replacement;
|
|
1321
|
+
}
|
|
1322
|
+
return void 0;
|
|
808
1323
|
}
|
|
809
1324
|
function getDomainIdForType(entityType) {
|
|
810
1325
|
return UPG_ENTITY_TO_DOMAIN[entityType];
|
|
811
1326
|
}
|
|
812
1327
|
|
|
813
|
-
// src/registry/entity-meta.ts
|
|
814
|
-
var UPG_ENTITY_META = [
|
|
815
|
-
// Foundations (0.9.12): shared specifications + the primitives they define.
|
|
816
|
-
{ name: "specification", type_id: "ent_352", maturity: "proposed", since: "0.9.12", portfolio_shared: true },
|
|
817
|
-
{ name: "primitive", type_id: "ent_353", maturity: "proposed", since: "0.9.12", portfolio_shared: true },
|
|
818
|
-
{ name: "operating_lifecycle", type_id: "ent_355", maturity: "proposed", since: "0.11.6", portfolio_shared: true },
|
|
819
|
-
{ name: "operating_stage", type_id: "ent_356", maturity: "proposed", since: "0.11.6", portfolio_shared: true },
|
|
820
|
-
// ── Strategic ──
|
|
821
|
-
{ name: "product", type_id: "ent_001", maturity: "stable", since: "0.1.0" },
|
|
822
|
-
{ name: "outcome", type_id: "ent_002", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
823
|
-
{ name: "kpi", type_id: "ent_003", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
824
|
-
{ name: "objective", type_id: "ent_004", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
825
|
-
{ name: "key_result", type_id: "ent_005", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
826
|
-
{ name: "metric", type_id: "ent_006", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
827
|
-
// F7 (UPG-673): graduated proposed → stable at v0.9.x — proposed since 0.2.2,
|
|
828
|
-
// the metric-quality assessment artefact is settled with no open restructure.
|
|
829
|
-
{ name: "metric_quality_assessment", type_id: "ent_339", maturity: "stable", since: "0.2.2" },
|
|
830
|
-
{ name: "vision", type_id: "ent_007", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
831
|
-
{ name: "mission", type_id: "ent_008", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
832
|
-
{ name: "strategic_theme", type_id: "ent_009", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
833
|
-
{ name: "initiative", type_id: "ent_010", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
834
|
-
{ name: "capability", type_id: "ent_011", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
835
|
-
{ name: "value_stream", type_id: "ent_012", maturity: "stable", since: "0.1.0" },
|
|
836
|
-
{ name: "strategic_pillar", type_id: "ent_013", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
837
|
-
{ name: "assumption", type_id: "ent_014", maturity: "stable", since: "0.1.0" },
|
|
838
|
-
{ name: "decision", type_id: "ent_015", maturity: "stable", since: "0.1.0" },
|
|
839
|
-
{ name: "constraint", type_id: "ent_348", maturity: "stable", since: "0.4.3" },
|
|
840
|
-
// (0.17.4) Strategy-domain sibling of research_question / design_question,
|
|
841
|
-
// completing the domain-question triad. An open coordination/ownership question
|
|
842
|
-
// a plan is exposed to (distinct from `assumption`, which the plan is built on).
|
|
843
|
-
{ name: "strategic_question", type_id: "ent_357", maturity: "proposed", since: "0.17.4" },
|
|
844
|
-
// ── User ──
|
|
845
|
-
{ name: "persona", type_id: "ent_016", maturity: "stable", since: "0.1.0" },
|
|
846
|
-
{ name: "job", type_id: "ent_017", maturity: "stable", since: "0.1.0" },
|
|
847
|
-
{ name: "jtbd", type_id: "ent_332", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "job" },
|
|
848
|
-
{ name: "pain_point", type_id: "ent_018", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "need" },
|
|
849
|
-
{ name: "desired_outcome", type_id: "ent_019", maturity: "stable", since: "0.1.0" },
|
|
850
|
-
{ name: "job_step", type_id: "ent_020", maturity: "stable", since: "0.1.0" },
|
|
851
|
-
{ name: "user_need", type_id: "ent_021", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "need" },
|
|
852
|
-
{ name: "need", type_id: "ent_313", maturity: "stable", since: "0.1.0" },
|
|
853
|
-
{ name: "switching_cost", type_id: "ent_022", maturity: "stable", since: "0.1.0" },
|
|
854
|
-
// ── Discovery ──
|
|
855
|
-
{ name: "opportunity", type_id: "ent_023", maturity: "stable", since: "0.1.0", default_frameworks: ["opportunity-sizing", "rice-scoring"] },
|
|
856
|
-
{ name: "solution", type_id: "ent_024", maturity: "stable", since: "0.1.0", default_frameworks: ["rice-scoring"] },
|
|
857
|
-
{ name: "feasibility_study", type_id: "ent_025", maturity: "stable", since: "0.1.0" },
|
|
858
|
-
{ name: "design_sprint", type_id: "ent_026", maturity: "stable", since: "0.1.0" },
|
|
859
|
-
// ── Validation ──
|
|
860
|
-
// (since v0.4.0) `hypothesis` re-promoted to canonical-stable. The
|
|
861
|
-
// v0.2.8 rename to `hypothesis_claim` was over-split: "claim" is implied
|
|
862
|
-
// by being a hypothesis. Canonical name reverts; HypothesisClaimProperties
|
|
863
|
-
// renamed to HypothesisProperties. `hypothesis_claim` is now deprecated
|
|
864
|
-
// (→ `hypothesis`). `hypothesis_evidence` deprecated (→ `evidence`): the
|
|
865
|
-
// dual evidence_type enum smell resolved by enriching canonical `evidence`
|
|
866
|
-
// with evidence_rigor + evidence_source axes. Edge pattern switches to
|
|
867
|
-
// `hypothesis_has_evidence` (neutral, direction on node).
|
|
868
|
-
{ name: "hypothesis", type_id: "ent_027", maturity: "stable", since: "0.1.0" },
|
|
869
|
-
{ name: "hypothesis_claim", type_id: "ent_344", maturity: "deprecated", since: "0.2.8", deprecated_in: "0.4.0", replacement: "hypothesis" },
|
|
870
|
-
{ name: "hypothesis_evidence", type_id: "ent_345", maturity: "deprecated", since: "0.2.8", deprecated_in: "0.4.0", replacement: "evidence" },
|
|
871
|
-
// `experiment` is canonical (UPG-664). It has its own property schema
|
|
872
|
-
// (method, start_date, end_date, sample_size, expected_lift) and is the
|
|
873
|
-
// canonical unit of a structured test. The validation flow is
|
|
874
|
-
// `hypothesis → experiment_plan → experiment → experiment_run`: the plan is
|
|
875
|
-
// the validation design, the experiment is the structured test, the run is
|
|
876
|
-
// the optional multi-run/replication child.
|
|
877
|
-
{ name: "experiment", type_id: "ent_028", maturity: "stable", since: "0.1.0" },
|
|
878
|
-
// experiment_plan graduated proposed → stable (UPG-664). It is the canonical
|
|
879
|
-
// validation PLAN type — it absorbed `test_plan`'s planning properties
|
|
880
|
-
// (method / success_criteria / sample_size) when `test_plan` re-homed to the
|
|
881
|
-
// QA/testing domain (UPG-678).
|
|
882
|
-
{ name: "experiment_plan", type_id: "ent_340", maturity: "stable", since: "0.2.6" },
|
|
883
|
-
{ name: "experiment_run", type_id: "ent_341", maturity: "stable", since: "0.2.6" },
|
|
884
|
-
{ name: "learning", type_id: "ent_029", maturity: "stable", since: "0.1.0" },
|
|
885
|
-
// test_plan re-homed validation → testing/QA (UPG-678). It is the QA
|
|
886
|
-
// verification-procedure plan (test scope / environments / pass criteria);
|
|
887
|
-
// its former validation-planning role is carried by experiment_plan.
|
|
888
|
-
{ name: "test_plan", type_id: "ent_030", maturity: "stable", since: "0.1.0" },
|
|
889
|
-
{ name: "evidence", type_id: "ent_031", maturity: "stable", since: "0.1.0" },
|
|
890
|
-
{ name: "research_plan", type_id: "ent_032", maturity: "stable", since: "0.1.0" },
|
|
891
|
-
// ── Market Intelligence ──
|
|
892
|
-
{ name: "competitor", type_id: "ent_033", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
893
|
-
{ name: "competitor_feature", type_id: "ent_034", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
894
|
-
{ name: "competitor_signal", type_id: "ent_354", maturity: "proposed", since: "0.10.0", portfolio_shared: true },
|
|
895
|
-
{ name: "market_trend", type_id: "ent_035", maturity: "stable", since: "0.1.0" },
|
|
896
|
-
{ name: "market_segment", type_id: "ent_036", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
897
|
-
{ name: "competitive_analysis", type_id: "ent_037", maturity: "stable", since: "0.1.0" },
|
|
898
|
-
// Classification taxonomy hosted by competitive_analysis.
|
|
899
|
-
// F7 (UPG-673): graduated proposed → stable at v0.9.x — two minor releases
|
|
900
|
-
// stable since 0.4.0, the taxonomy-axis/value pair backs the competitive-
|
|
901
|
-
// analysis classification spine with no open rename/restructure ticket.
|
|
902
|
-
{ name: "classification_axis", type_id: "ent_346", maturity: "stable", since: "0.4.0", portfolio_shared: true },
|
|
903
|
-
{ name: "classification_value", type_id: "ent_347", maturity: "stable", since: "0.4.0", portfolio_shared: true },
|
|
904
|
-
// ── UX Research ──
|
|
905
|
-
{ name: "research_study", type_id: "ent_038", maturity: "stable", since: "0.1.0" },
|
|
906
|
-
{ name: "research_insight", type_id: "ent_039", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "insight" },
|
|
907
|
-
{ name: "insight", type_id: "ent_040", maturity: "stable", since: "0.1.0" },
|
|
908
|
-
{ name: "participant", type_id: "ent_041", maturity: "stable", since: "0.1.0" },
|
|
909
|
-
{ name: "observation", type_id: "ent_042", maturity: "stable", since: "0.1.0" },
|
|
910
|
-
{ name: "quote", type_id: "ent_043", maturity: "stable", since: "0.1.0" },
|
|
911
|
-
{ name: "affinity_cluster", type_id: "ent_044", maturity: "stable", since: "0.1.0" },
|
|
912
|
-
{ name: "research_question", type_id: "ent_045", maturity: "stable", since: "0.1.0" },
|
|
913
|
-
{ name: "interview_guide", type_id: "ent_046", maturity: "stable", since: "0.1.0" },
|
|
914
|
-
{ name: "finding", type_id: "ent_047", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "insight" },
|
|
915
|
-
{ name: "survey_response", type_id: "ent_048", maturity: "stable", since: "0.1.0" },
|
|
916
|
-
{ name: "highlight", type_id: "ent_049", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "observation" },
|
|
917
|
-
// ── Design ──
|
|
918
|
-
{ name: "user_journey", type_id: "ent_050", maturity: "stable", since: "0.1.0" },
|
|
919
|
-
{ name: "journey_step", type_id: "ent_051", maturity: "stable", since: "0.1.0" },
|
|
920
|
-
{ name: "ux_insight", type_id: "ent_052", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "insight" },
|
|
921
|
-
{ name: "design_question", type_id: "ent_053", maturity: "stable", since: "0.1.0" },
|
|
922
|
-
{ name: "how_might_we", type_id: "ent_333", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "design_question" },
|
|
923
|
-
{ name: "design_concept", type_id: "ent_054", maturity: "stable", since: "0.1.0" },
|
|
924
|
-
{ name: "prototype", type_id: "ent_055", maturity: "stable", since: "0.1.0" },
|
|
925
|
-
{ name: "design_component", type_id: "ent_056", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
926
|
-
{ name: "design_token", type_id: "ent_057", maturity: "stable", since: "0.1.0" },
|
|
927
|
-
{ name: "brand_identity", type_id: "ent_058", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
928
|
-
{ name: "brand_colour", type_id: "ent_059", maturity: "stable", since: "0.1.0" },
|
|
929
|
-
{ name: "brand_typography", type_id: "ent_060", maturity: "stable", since: "0.1.0" },
|
|
930
|
-
{ name: "brand_voice", type_id: "ent_061", maturity: "stable", since: "0.1.0" },
|
|
931
|
-
{ name: "wireframe", type_id: "ent_062", maturity: "stable", since: "0.1.0" },
|
|
932
|
-
{ name: "design_pattern", type_id: "ent_063", maturity: "stable", since: "0.1.0" },
|
|
933
|
-
{ name: "design_guideline", type_id: "ent_064", maturity: "stable", since: "0.1.0" },
|
|
934
|
-
{ name: "annotation", type_id: "ent_065", maturity: "stable", since: "0.1.0" },
|
|
935
|
-
{ name: "interaction_spec", type_id: "ent_066", maturity: "stable", since: "0.1.0" },
|
|
936
|
-
{ name: "design_system", type_id: "ent_067", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
937
|
-
{ name: "user_flow", type_id: "ent_068", maturity: "stable", since: "0.1.0" },
|
|
938
|
-
{ name: "screen", type_id: "ent_069", maturity: "stable", since: "0.1.0" },
|
|
939
|
-
{ name: "screen_state", type_id: "ent_070", maturity: "stable", since: "0.1.0" },
|
|
940
|
-
// surface (0.27.0): the place inside a screen. `screen` is route-level
|
|
941
|
-
// (route / viewport / access_level); `surface` is the contested slot within
|
|
942
|
-
// it, carrying its occupants and the rule that arbitrates between them.
|
|
943
|
-
// Enters `proposed` per the maturity rubric (precedent: planning_cycle 0.20.0).
|
|
944
|
-
{ name: "surface", type_id: "ent_359", maturity: "proposed", since: "0.27.0" },
|
|
945
|
-
{ name: "configuration_axis", type_id: "ent_360", maturity: "proposed", since: "0.30.0" },
|
|
946
|
-
{ name: "journey_phase", type_id: "ent_330", maturity: "proposed", since: "0.2.0" },
|
|
947
|
-
{ name: "journey_action", type_id: "ent_331", maturity: "proposed", since: "0.2.0" },
|
|
948
|
-
{ name: "design_decision", type_id: "ent_319", maturity: "deprecated", since: "0.2.0", deprecated_in: "0.2.0", replacement: "decision" },
|
|
949
|
-
// F7 (UPG-673): graduated proposed → stable at v0.9.x — proposed since 0.2.0,
|
|
950
|
-
// the brand-identity set (logo + imagery) is settled with no open rename.
|
|
951
|
-
{ name: "brand_logo", type_id: "ent_321", maturity: "stable", since: "0.2.0" },
|
|
952
|
-
{ name: "brand_imagery", type_id: "ent_322", maturity: "stable", since: "0.2.0" },
|
|
953
|
-
// ── Product Spec ──
|
|
954
|
-
{ name: "feature_area", type_id: "ent_314", maturity: "stable", since: "0.1.0" },
|
|
955
|
-
{ name: "feature", type_id: "ent_071", maturity: "stable", since: "0.1.0" },
|
|
956
|
-
{ name: "epic", type_id: "ent_072", maturity: "stable", since: "0.1.0" },
|
|
957
|
-
// `user_story` is the templated "As X, I want Y so Z" promise: a stable,
|
|
958
|
-
// lifecycle-free design artefact (UCS pattern P5). The v0.2.7 split EXTRACTED
|
|
959
|
-
// the engineering work into a separate `task` (the lifecycle-bearing work-unit,
|
|
960
|
-
// linked via `task_implements_user_story`); the split was right. But the
|
|
961
|
-
// surviving statement half was renamed to the coined `story_statement`, which
|
|
962
|
-
// raised the adoption barrier. "user story" is the universally-recognised
|
|
963
|
-
// industry term for exactly this artefact. v0.7.0 (UPG-571) re-canonicalises
|
|
964
|
-
// the statement under `user_story`; `story_statement` becomes a deprecated
|
|
965
|
-
// alias. `story_task` (the original work half) was already collapsed into
|
|
966
|
-
// canonical `task` at v0.4.0. So the canonical shape is: user_story (statement)
|
|
967
|
-
// + task (work), linked by `task_implements_user_story`.
|
|
968
|
-
//
|
|
969
|
-
// F7 (UPG-673) — DEFERRED, deliberately kept `proposed`. The audit flagged
|
|
970
|
-
// user_story as a stable-spine candidate, but the v0.7.0 re-canon contract
|
|
971
|
-
// (UPG-571) freezes maturity at `proposed` until the re-canonicalised name
|
|
972
|
-
// has soaked across a full migration window. `user-story-split.test.ts`
|
|
973
|
-
// ("user_story is canonical again (ent_073, proposed, not deprecated)")
|
|
974
|
-
// asserts `proposed` as the post-re-canon invariant. Graduating here would
|
|
975
|
-
// break that contract; promotion is a separate, ticketed decision once the
|
|
976
|
-
// story_statement → user_story migration has fully aged out.
|
|
977
|
-
{ name: "user_story", type_id: "ent_073", maturity: "stable", since: "0.1.0" },
|
|
978
|
-
{ name: "story_statement", type_id: "ent_342", maturity: "deprecated", since: "0.2.7", deprecated_in: "0.7.0", replacement: "user_story" },
|
|
979
|
-
{ name: "story_task", type_id: "ent_343", maturity: "deprecated", since: "0.2.7", deprecated_in: "0.4.0", replacement: "task" },
|
|
980
|
-
{ name: "acceptance_criterion", type_id: "ent_074", maturity: "stable", since: "0.1.0" },
|
|
981
|
-
{ name: "release", type_id: "ent_075", maturity: "stable", since: "0.1.0" },
|
|
982
|
-
{ name: "task", type_id: "ent_076", maturity: "stable", since: "0.1.0" },
|
|
983
|
-
{ name: "bug", type_id: "ent_077", maturity: "stable", since: "0.1.0" },
|
|
984
|
-
{ name: "roadmap", type_id: "ent_078", maturity: "stable", since: "0.1.0" },
|
|
985
|
-
{ name: "roadmap_item", type_id: "ent_079", maturity: "stable", since: "0.1.0" },
|
|
986
|
-
{ name: "theme", type_id: "ent_080", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.9.0", replacement: "roadmap_theme" },
|
|
987
|
-
{ name: "roadmap_theme", type_id: "ent_351", maturity: "stable", since: "0.1.0" },
|
|
988
|
-
{ name: "changelog", type_id: "ent_081", maturity: "stable", since: "0.1.0" },
|
|
989
|
-
// (0.20.0) The cadence axis: a named, dated interval that work flows through
|
|
990
|
-
// and which nests (a program-increment contains iterations; a cycle contains
|
|
991
|
-
// its cooldown). One self-nesting type with a `cadence_kind` discriminator
|
|
992
|
-
// spans sprint / iteration / quarter / PI / cooldown rather than minting a
|
|
993
|
-
// type per methodology. `portfolio_shared` because a coarse cycle is an
|
|
994
|
-
// org-shared interval an objective in a rollup graph and a story in a product
|
|
995
|
-
// graph both schedule into.
|
|
996
|
-
{ name: "planning_cycle", type_id: "ent_358", maturity: "proposed", since: "0.20.0", portfolio_shared: true },
|
|
997
|
-
// ── Engineering ──
|
|
998
|
-
{ name: "bounded_context", type_id: "ent_082", maturity: "stable", since: "0.1.0" },
|
|
999
|
-
{ name: "service", type_id: "ent_083", maturity: "stable", since: "0.1.0" },
|
|
1000
|
-
{ name: "domain_event", type_id: "ent_084", maturity: "stable", since: "0.1.0" },
|
|
1001
|
-
{ name: "api_contract", type_id: "ent_085", maturity: "stable", since: "0.1.0" },
|
|
1002
|
-
{ name: "architecture_decision", type_id: "ent_086", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "decision" },
|
|
1003
|
-
{ name: "technical_debt_item", type_id: "ent_087", maturity: "stable", since: "0.1.0" },
|
|
1004
|
-
{ name: "feature_flag", type_id: "ent_088", maturity: "stable", since: "0.1.0" },
|
|
1005
|
-
{ name: "deployment", type_id: "ent_089", maturity: "stable", since: "0.1.0" },
|
|
1006
|
-
{ name: "aggregate", type_id: "ent_090", maturity: "stable", since: "0.1.0" },
|
|
1007
|
-
{ name: "domain_entity", type_id: "ent_091", maturity: "stable", since: "0.1.0" },
|
|
1008
|
-
{ name: "value_object", type_id: "ent_092", maturity: "stable", since: "0.1.0" },
|
|
1009
|
-
{ name: "command", type_id: "ent_093", maturity: "stable", since: "0.1.0" },
|
|
1010
|
-
{ name: "read_model", type_id: "ent_094", maturity: "stable", since: "0.1.0" },
|
|
1011
|
-
{ name: "api_endpoint", type_id: "ent_095", maturity: "stable", since: "0.1.0" },
|
|
1012
|
-
{ name: "database_schema", type_id: "ent_096", maturity: "stable", since: "0.1.0" },
|
|
1013
|
-
{ name: "queue_topic", type_id: "ent_097", maturity: "stable", since: "0.1.0" },
|
|
1014
|
-
{ name: "build_artifact", type_id: "ent_098", maturity: "stable", since: "0.1.0" },
|
|
1015
|
-
{ name: "code_repository", type_id: "ent_099", maturity: "stable", since: "0.1.0" },
|
|
1016
|
-
{ name: "library_dependency", type_id: "ent_100", maturity: "stable", since: "0.1.0" },
|
|
1017
|
-
{ name: "integration_pattern", type_id: "ent_101", maturity: "stable", since: "0.1.0" },
|
|
1018
|
-
{ name: "external_api", type_id: "ent_102", maturity: "stable", since: "0.1.0" },
|
|
1019
|
-
{ name: "data_flow", type_id: "ent_103", maturity: "stable", since: "0.1.0" },
|
|
1020
|
-
{ name: "investigation", type_id: "ent_315", maturity: "stable", since: "0.2.0" },
|
|
1021
|
-
{ name: "root_cause", type_id: "ent_316", maturity: "stable", since: "0.2.0" },
|
|
1022
|
-
{ name: "symptom", type_id: "ent_317", maturity: "stable", since: "0.2.0" },
|
|
1023
|
-
{ name: "fix", type_id: "ent_318", maturity: "stable", since: "0.2.0" },
|
|
1024
|
-
// ── Growth ──
|
|
1025
|
-
{ name: "north_star_metric", type_id: "ent_104", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
1026
|
-
{ name: "input_metric", type_id: "ent_105", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
1027
|
-
{ name: "funnel", type_id: "ent_106", maturity: "stable", since: "0.1.0" },
|
|
1028
|
-
{ name: "funnel_step", type_id: "ent_107", maturity: "stable", since: "0.1.0" },
|
|
1029
|
-
{ name: "acquisition_channel", type_id: "ent_108", maturity: "stable", since: "0.1.0" },
|
|
1030
|
-
{ name: "growth_campaign", type_id: "ent_109", maturity: "stable", since: "0.1.0" },
|
|
1031
|
-
{ name: "campaign", type_id: "ent_337", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "growth_campaign" },
|
|
1032
|
-
{ name: "cohort", type_id: "ent_110", maturity: "stable", since: "0.1.0" },
|
|
1033
|
-
{ name: "behavioral_segment", type_id: "ent_111", maturity: "stable", since: "0.1.0" },
|
|
1034
|
-
{ name: "segment", type_id: "ent_338", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "behavioral_segment" },
|
|
1035
|
-
{ name: "growth_loop", type_id: "ent_112", maturity: "stable", since: "0.1.0" },
|
|
1036
|
-
{ name: "growth_experiment", type_id: "ent_113", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "experiment" },
|
|
1037
|
-
{ name: "variant", type_id: "ent_114", maturity: "stable", since: "0.1.0" },
|
|
1038
|
-
{ name: "attribution_model", type_id: "ent_115", maturity: "stable", since: "0.1.0" },
|
|
1039
|
-
// ── Business Model ──
|
|
1040
|
-
{ name: "business_model", type_id: "ent_116", maturity: "stable", since: "0.1.0" },
|
|
1041
|
-
{ name: "value_proposition", type_id: "ent_117", maturity: "stable", since: "0.1.0" },
|
|
1042
|
-
{ name: "revenue_stream", type_id: "ent_118", maturity: "stable", since: "0.1.0" },
|
|
1043
|
-
{ name: "pricing_tier", type_id: "ent_119", maturity: "stable", since: "0.1.0" },
|
|
1044
|
-
{ name: "cost_structure", type_id: "ent_120", maturity: "stable", since: "0.1.0" },
|
|
1045
|
-
{ name: "unit_economics", type_id: "ent_121", maturity: "stable", since: "0.1.0" },
|
|
1046
|
-
{ name: "partnership", type_id: "ent_122", maturity: "stable", since: "0.1.0" },
|
|
1047
|
-
{ name: "key_resource", type_id: "ent_123", maturity: "stable", since: "0.1.0" },
|
|
1048
|
-
{ name: "key_activity", type_id: "ent_124", maturity: "stable", since: "0.1.0" },
|
|
1049
|
-
{ name: "customer_segment_bm", type_id: "ent_125", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "market_segment" },
|
|
1050
|
-
{ name: "channel_bm", type_id: "ent_126", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "distribution_channel" },
|
|
1051
|
-
{ name: "target_customer_segment", type_id: "ent_329", maturity: "deprecated", since: "0.2.0", deprecated_in: "0.2.0", replacement: "market_segment" },
|
|
1052
|
-
{ name: "customer_relationship", type_id: "ent_127", maturity: "stable", since: "0.1.0" },
|
|
1053
|
-
{ name: "distribution_channel", type_id: "ent_128", maturity: "stable", since: "0.1.0" },
|
|
1054
|
-
// ── Go-To-Market ──
|
|
1055
|
-
{ name: "gtm_strategy", type_id: "ent_129", maturity: "stable", since: "0.1.0" },
|
|
1056
|
-
{ name: "ideal_customer_profile", type_id: "ent_130", maturity: "stable", since: "0.1.0" },
|
|
1057
|
-
{ name: "positioning", type_id: "ent_131", maturity: "stable", since: "0.1.0" },
|
|
1058
|
-
{ name: "messaging", type_id: "ent_132", maturity: "stable", since: "0.1.0" },
|
|
1059
|
-
{ name: "launch", type_id: "ent_133", maturity: "stable", since: "0.1.0" },
|
|
1060
|
-
{ name: "content_strategy", type_id: "ent_134", maturity: "stable", since: "0.1.0" },
|
|
1061
|
-
{ name: "sales_motion", type_id: "ent_135", maturity: "stable", since: "0.1.0" },
|
|
1062
|
-
{ name: "competitive_battle_card", type_id: "ent_136", maturity: "stable", since: "0.1.0" },
|
|
1063
|
-
{ name: "demand_gen_program", type_id: "ent_137", maturity: "stable", since: "0.1.0" },
|
|
1064
|
-
{ name: "territory", type_id: "ent_138", maturity: "stable", since: "0.1.0" },
|
|
1065
|
-
{ name: "objection", type_id: "ent_139", maturity: "stable", since: "0.1.0" },
|
|
1066
|
-
{ name: "rebuttal", type_id: "ent_140", maturity: "stable", since: "0.1.0" },
|
|
1067
|
-
{ name: "proof_point", type_id: "ent_141", maturity: "stable", since: "0.1.0" },
|
|
1068
|
-
// ── Team & Organisation ──
|
|
1069
|
-
{ name: "team", type_id: "ent_142", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
1070
|
-
{ name: "role", type_id: "ent_143", maturity: "stable", since: "0.1.0" },
|
|
1071
|
-
{ name: "stakeholder", type_id: "ent_144", maturity: "stable", since: "0.1.0" },
|
|
1072
|
-
{ name: "person", type_id: "ent_349", maturity: "stable", since: "0.5.0" },
|
|
1073
|
-
{ name: "product_decision", type_id: "ent_145", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "decision" },
|
|
1074
|
-
{ name: "team_okr", type_id: "ent_146", maturity: "stable", since: "0.1.0" },
|
|
1075
|
-
{ name: "retrospective", type_id: "ent_147", maturity: "stable", since: "0.1.0" },
|
|
1076
|
-
{ name: "dependency", type_id: "ent_148", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
1077
|
-
{ name: "department", type_id: "ent_149", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
1078
|
-
{ name: "skill", type_id: "ent_150", maturity: "stable", since: "0.1.0" },
|
|
1079
|
-
{ name: "ceremony", type_id: "ent_151", maturity: "stable", since: "0.1.0" },
|
|
1080
|
-
{ name: "capacity_plan", type_id: "ent_152", maturity: "stable", since: "0.1.0" },
|
|
1081
|
-
// ── Data & Analytics ──
|
|
1082
|
-
{ name: "data_source", type_id: "ent_153", maturity: "stable", since: "0.1.0" },
|
|
1083
|
-
{ name: "metric_definition", type_id: "ent_154", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
1084
|
-
{ name: "event_schema", type_id: "ent_155", maturity: "stable", since: "0.1.0" },
|
|
1085
|
-
{ name: "dashboard", type_id: "ent_156", maturity: "stable", since: "0.1.0" },
|
|
1086
|
-
{ name: "ab_test", type_id: "ent_157", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "experiment" },
|
|
1087
|
-
{ name: "data_model", type_id: "ent_158", maturity: "stable", since: "0.1.0" },
|
|
1088
|
-
{ name: "data_quality_rule", type_id: "ent_159", maturity: "stable", since: "0.1.0" },
|
|
1089
|
-
{ name: "data_product", type_id: "ent_160", maturity: "stable", since: "0.1.0" },
|
|
1090
|
-
{ name: "data_pipeline", type_id: "ent_161", maturity: "stable", since: "0.1.0" },
|
|
1091
|
-
{ name: "data_lineage", type_id: "ent_162", maturity: "stable", since: "0.1.0" },
|
|
1092
|
-
{ name: "glossary_term", type_id: "ent_163", maturity: "stable", since: "0.1.0" },
|
|
1093
|
-
{ name: "data_domain", type_id: "ent_164", maturity: "stable", since: "0.1.0" },
|
|
1094
|
-
{ name: "report", type_id: "ent_165", maturity: "stable", since: "0.1.0" },
|
|
1095
|
-
// ── Content & Knowledge ──
|
|
1096
|
-
{ name: "content_piece", type_id: "ent_166", maturity: "stable", since: "0.1.0" },
|
|
1097
|
-
{ name: "knowledge_base_article", type_id: "ent_167", maturity: "stable", since: "0.1.0" },
|
|
1098
|
-
{ name: "brand_asset", type_id: "ent_168", maturity: "stable", since: "0.1.0" },
|
|
1099
|
-
{ name: "internal_doc", type_id: "ent_169", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "document" },
|
|
1100
|
-
{ name: "prompt_template", type_id: "ent_170", maturity: "stable", since: "0.1.0" },
|
|
1101
|
-
{ name: "content_calendar", type_id: "ent_171", maturity: "stable", since: "0.1.0" },
|
|
1102
|
-
{ name: "content_theme", type_id: "ent_172", maturity: "stable", since: "0.1.0" },
|
|
1103
|
-
{ name: "documentation_template", type_id: "ent_173", maturity: "stable", since: "0.1.0" },
|
|
1104
|
-
{ name: "document", type_id: "ent_320", maturity: "stable", since: "0.2.0" },
|
|
1105
|
-
// ── Legal & Compliance ──
|
|
1106
|
-
{ name: "compliance_requirement", type_id: "ent_174", maturity: "stable", since: "0.1.0" },
|
|
1107
|
-
{ name: "risk", type_id: "ent_175", maturity: "stable", since: "0.1.0" },
|
|
1108
|
-
{ name: "data_contract", type_id: "ent_176", maturity: "stable", since: "0.1.0" },
|
|
1109
|
-
{ name: "legal_entity", type_id: "ent_177", maturity: "stable", since: "0.1.0" },
|
|
1110
|
-
{ name: "ip_asset", type_id: "ent_178", maturity: "stable", since: "0.1.0" },
|
|
1111
|
-
{ name: "audit_log_policy", type_id: "ent_179", maturity: "stable", since: "0.1.0" },
|
|
1112
|
-
{ name: "contract", type_id: "ent_180", maturity: "stable", since: "0.1.0" },
|
|
1113
|
-
{ name: "contract_clause", type_id: "ent_181", maturity: "stable", since: "0.1.0" },
|
|
1114
|
-
{ name: "privacy_policy", type_id: "ent_182", maturity: "stable", since: "0.1.0" },
|
|
1115
|
-
{ name: "compliance_framework", type_id: "ent_183", maturity: "stable", since: "0.1.0" },
|
|
1116
|
-
{ name: "security_audit", type_id: "ent_184", maturity: "stable", since: "0.1.0" },
|
|
1117
|
-
// ── DevOps & Platform ──
|
|
1118
|
-
{ name: "service_level_indicator", type_id: "ent_185", maturity: "stable", since: "0.1.0" },
|
|
1119
|
-
{ name: "sli", type_id: "ent_334", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "service_level_indicator" },
|
|
1120
|
-
{ name: "service_level_objective", type_id: "ent_186", maturity: "stable", since: "0.1.0" },
|
|
1121
|
-
{ name: "slo", type_id: "ent_335", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "service_level_objective" },
|
|
1122
|
-
{ name: "error_budget", type_id: "ent_187", maturity: "stable", since: "0.1.0" },
|
|
1123
|
-
{ name: "incident", type_id: "ent_188", maturity: "stable", since: "0.1.0" },
|
|
1124
|
-
{ name: "postmortem", type_id: "ent_189", maturity: "stable", since: "0.1.0" },
|
|
1125
|
-
{ name: "runbook", type_id: "ent_190", maturity: "stable", since: "0.1.0" },
|
|
1126
|
-
{ name: "monitor", type_id: "ent_191", maturity: "stable", since: "0.1.0" },
|
|
1127
|
-
{ name: "alert_rule", type_id: "ent_192", maturity: "stable", since: "0.1.0" },
|
|
1128
|
-
{ name: "ci_pipeline", type_id: "ent_193", maturity: "stable", since: "0.1.0" },
|
|
1129
|
-
{ name: "release_strategy", type_id: "ent_194", maturity: "stable", since: "0.1.0" },
|
|
1130
|
-
{ name: "on_call_rotation", type_id: "ent_195", maturity: "stable", since: "0.1.0" },
|
|
1131
|
-
{ name: "infrastructure_component", type_id: "ent_196", maturity: "stable", since: "0.1.0" },
|
|
1132
|
-
// ── Security ──
|
|
1133
|
-
{ name: "threat_model", type_id: "ent_197", maturity: "stable", since: "0.1.0" },
|
|
1134
|
-
{ name: "threat", type_id: "ent_198", maturity: "stable", since: "0.1.0" },
|
|
1135
|
-
{ name: "vulnerability", type_id: "ent_199", maturity: "stable", since: "0.1.0" },
|
|
1136
|
-
{ name: "security_control", type_id: "ent_200", maturity: "stable", since: "0.1.0" },
|
|
1137
|
-
{ name: "security_policy", type_id: "ent_201", maturity: "stable", since: "0.1.0" },
|
|
1138
|
-
{ name: "security_incident", type_id: "ent_202", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "incident" },
|
|
1139
|
-
{ name: "penetration_test", type_id: "ent_203", maturity: "stable", since: "0.1.0" },
|
|
1140
|
-
{ name: "security_review", type_id: "ent_204", maturity: "stable", since: "0.1.0" },
|
|
1141
|
-
{ name: "data_classification", type_id: "ent_205", maturity: "stable", since: "0.1.0" },
|
|
1142
|
-
{ name: "access_policy", type_id: "ent_206", maturity: "stable", since: "0.1.0" },
|
|
1143
|
-
// ── Accessibility ──
|
|
1144
|
-
{ name: "a11y_standard", type_id: "ent_207", maturity: "stable", since: "0.1.0" },
|
|
1145
|
-
{ name: "a11y_guideline", type_id: "ent_208", maturity: "stable", since: "0.1.0" },
|
|
1146
|
-
{ name: "a11y_audit", type_id: "ent_209", maturity: "stable", since: "0.1.0" },
|
|
1147
|
-
{ name: "a11y_issue", type_id: "ent_210", maturity: "stable", since: "0.1.0" },
|
|
1148
|
-
{ name: "a11y_annotation", type_id: "ent_211", maturity: "stable", since: "0.1.0" },
|
|
1149
|
-
// ── QA & Testing ──
|
|
1150
|
-
{ name: "test_suite", type_id: "ent_212", maturity: "stable", since: "0.1.0" },
|
|
1151
|
-
{ name: "test_case", type_id: "ent_213", maturity: "stable", since: "0.1.0" },
|
|
1152
|
-
{ name: "qa_session", type_id: "ent_214", maturity: "stable", since: "0.1.0" },
|
|
1153
|
-
{ name: "regression_test", type_id: "ent_215", maturity: "stable", since: "0.1.0" },
|
|
1154
|
-
{ name: "test_coverage_report", type_id: "ent_216", maturity: "stable", since: "0.1.0" },
|
|
1155
|
-
{ name: "test_environment", type_id: "ent_217", maturity: "stable", since: "0.1.0" },
|
|
1156
|
-
{ name: "defect_report", type_id: "ent_218", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "support_ticket" },
|
|
1157
|
-
{ name: "test_result", type_id: "ent_327", maturity: "proposed", since: "0.2.0" },
|
|
1158
|
-
// ── Feedback & Voice of Customer ──
|
|
1159
|
-
{ name: "feedback_program", type_id: "ent_219", maturity: "stable", since: "0.1.0" },
|
|
1160
|
-
{ name: "feature_request", type_id: "ent_220", maturity: "stable", since: "0.1.0" },
|
|
1161
|
-
{ name: "feedback_vote", type_id: "ent_221", maturity: "stable", since: "0.1.0" },
|
|
1162
|
-
{ name: "nps_campaign", type_id: "ent_222", maturity: "stable", since: "0.1.0" },
|
|
1163
|
-
{ name: "user_advisory_board", type_id: "ent_223", maturity: "stable", since: "0.1.0" },
|
|
1164
|
-
{ name: "beta_program", type_id: "ent_224", maturity: "stable", since: "0.1.0" },
|
|
1165
|
-
{ name: "feedback_theme", type_id: "ent_225", maturity: "stable", since: "0.1.0" },
|
|
1166
|
-
// ── Pricing & Packaging ──
|
|
1167
|
-
{ name: "pricing_strategy", type_id: "ent_226", maturity: "stable", since: "0.1.0" },
|
|
1168
|
-
{ name: "pricing_experiment", type_id: "ent_227", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "experiment" },
|
|
1169
|
-
{ name: "package", type_id: "ent_228", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "pricing_tier" },
|
|
1170
|
-
{ name: "discount_strategy", type_id: "ent_229", maturity: "stable", since: "0.1.0" },
|
|
1171
|
-
{ name: "trial_config", type_id: "ent_230", maturity: "stable", since: "0.1.0" },
|
|
1172
|
-
{ name: "paywall", type_id: "ent_231", maturity: "stable", since: "0.1.0" },
|
|
1173
|
-
// ── AI/ML Operations ──
|
|
1174
|
-
{ name: "ai_model", type_id: "ent_232", maturity: "stable", since: "0.1.0" },
|
|
1175
|
-
{ name: "prompt_version", type_id: "ent_233", maturity: "stable", since: "0.1.0" },
|
|
1176
|
-
{ name: "eval_benchmark", type_id: "ent_234", maturity: "stable", since: "0.1.0" },
|
|
1177
|
-
{ name: "eval_run", type_id: "ent_235", maturity: "stable", since: "0.1.0" },
|
|
1178
|
-
{ name: "ai_cost_tracker", type_id: "ent_236", maturity: "stable", since: "0.1.0" },
|
|
1179
|
-
{ name: "hallucination_report", type_id: "ent_237", maturity: "stable", since: "0.1.0" },
|
|
1180
|
-
{ name: "ai_guardrail", type_id: "ent_238", maturity: "stable", since: "0.1.0" },
|
|
1181
|
-
{ name: "model_comparison", type_id: "ent_239", maturity: "stable", since: "0.1.0" },
|
|
1182
|
-
{ name: "ai_experiment", type_id: "ent_323", maturity: "proposed", since: "0.2.0" },
|
|
1183
|
-
{ name: "ai_dataset", type_id: "ent_324", maturity: "proposed", since: "0.2.0" },
|
|
1184
|
-
{ name: "ai_trace", type_id: "ent_325", maturity: "proposed", since: "0.2.0" },
|
|
1185
|
-
// ── Agentic Workflows ──
|
|
1186
|
-
{ name: "workflow_template", type_id: "ent_240", maturity: "stable", since: "0.1.0" },
|
|
1187
|
-
{ name: "workflow_run", type_id: "ent_241", maturity: "stable", since: "0.1.0" },
|
|
1188
|
-
{ name: "agent_definition", type_id: "ent_242", maturity: "stable", since: "0.1.0" },
|
|
1189
|
-
{ name: "agent_session", type_id: "ent_243", maturity: "stable", since: "0.1.0" },
|
|
1190
|
-
{ name: "review_gate", type_id: "ent_244", maturity: "stable", since: "0.1.0" },
|
|
1191
|
-
{ name: "approval_record", type_id: "ent_245", maturity: "stable", since: "0.1.0" },
|
|
1192
|
-
{ name: "agent_skill", type_id: "ent_246", maturity: "stable", since: "0.1.0" },
|
|
1193
|
-
{ name: "agent_hook", type_id: "ent_247", maturity: "stable", since: "0.1.0" },
|
|
1194
|
-
{ name: "workflow_artifact", type_id: "ent_248", maturity: "stable", since: "0.1.0" },
|
|
1195
|
-
{ name: "agent_task", type_id: "ent_326", maturity: "proposed", since: "0.2.0" },
|
|
1196
|
-
// ── Portfolio ──
|
|
1197
|
-
{ name: "organization", type_id: "ent_249", maturity: "stable", since: "0.1.0" },
|
|
1198
|
-
{ name: "portfolio", type_id: "ent_250", maturity: "stable", since: "0.1.0" },
|
|
1199
|
-
{ name: "product_area", type_id: "ent_251", maturity: "stable", since: "0.1.0" },
|
|
1200
|
-
// ── Sales & Revenue ──
|
|
1201
|
-
{ name: "account", type_id: "ent_252", maturity: "stable", since: "0.1.0" },
|
|
1202
|
-
{ name: "contact", type_id: "ent_253", maturity: "stable", since: "0.1.0" },
|
|
1203
|
-
{ name: "lead", type_id: "ent_254", maturity: "stable", since: "0.1.0" },
|
|
1204
|
-
{ name: "deal", type_id: "ent_255", maturity: "stable", since: "0.1.0" },
|
|
1205
|
-
{ name: "pipeline_sales", type_id: "ent_256", maturity: "stable", since: "0.1.0" },
|
|
1206
|
-
{ name: "pipeline_stage", type_id: "ent_257", maturity: "stable", since: "0.1.0" },
|
|
1207
|
-
{ name: "quote_document", type_id: "ent_258", maturity: "stable", since: "0.1.0" },
|
|
1208
|
-
{ name: "subscription", type_id: "ent_259", maturity: "stable", since: "0.1.0" },
|
|
1209
|
-
{ name: "invoice", type_id: "ent_260", maturity: "stable", since: "0.1.0" },
|
|
1210
|
-
{ name: "forecast", type_id: "ent_261", maturity: "stable", since: "0.1.0" },
|
|
1211
|
-
// ── Program Management ──
|
|
1212
|
-
{ name: "program", type_id: "ent_262", maturity: "stable", since: "0.1.0" },
|
|
1213
|
-
{ name: "project", type_id: "ent_263", maturity: "stable", since: "0.1.0" },
|
|
1214
|
-
// `portfolio_shared` (0.25.1 feedback): a milestone is often a cross-team gate,
|
|
1215
|
-
// not one project's checkpoint — an org-wide "Open Beta" that several products'
|
|
1216
|
-
// projects must all satisfy. Shared tier lets `project_targets_milestone` (and
|
|
1217
|
-
// the other milestone edges) pass the cross-scope gate as `provisional`, same
|
|
1218
|
-
// as `project_implements_initiative`. Precedent: `planning_cycle` (0.20.0).
|
|
1219
|
-
{ name: "milestone", type_id: "ent_264", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
1220
|
-
{ name: "risk_register", type_id: "ent_265", maturity: "stable", since: "0.1.0" },
|
|
1221
|
-
{ name: "risk_item", type_id: "ent_266", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "risk" },
|
|
1222
|
-
{ name: "change_request", type_id: "ent_267", maturity: "stable", since: "0.1.0" },
|
|
1223
|
-
{ name: "deliverable", type_id: "ent_268", maturity: "stable", since: "0.1.0" },
|
|
1224
|
-
{ name: "resource_allocation", type_id: "ent_269", maturity: "stable", since: "0.1.0" },
|
|
1225
|
-
{ name: "status_report", type_id: "ent_270", maturity: "stable", since: "0.1.0" },
|
|
1226
|
-
// ── Marketing Operations ──
|
|
1227
|
-
{ name: "marketing_strategy", type_id: "ent_271", maturity: "stable", since: "0.1.0" },
|
|
1228
|
-
{ name: "marketing_channel", type_id: "ent_272", maturity: "stable", since: "0.1.0" },
|
|
1229
|
-
{ name: "marketing_campaign_plan", type_id: "ent_273", maturity: "stable", since: "0.1.0" },
|
|
1230
|
-
{ name: "email_sequence", type_id: "ent_274", maturity: "stable", since: "0.1.0" },
|
|
1231
|
-
{ name: "social_post", type_id: "ent_275", maturity: "stable", since: "0.1.0" },
|
|
1232
|
-
{ name: "seo_keyword", type_id: "ent_276", maturity: "stable", since: "0.1.0" },
|
|
1233
|
-
{ name: "ad_creative", type_id: "ent_277", maturity: "stable", since: "0.1.0" },
|
|
1234
|
-
{ name: "press_release", type_id: "ent_278", maturity: "stable", since: "0.1.0" },
|
|
1235
|
-
{ name: "event", type_id: "ent_279", maturity: "stable", since: "0.1.0" },
|
|
1236
|
-
{ name: "community_initiative", type_id: "ent_280", maturity: "stable", since: "0.1.0" },
|
|
1237
|
-
// ── Operations & Customer Success ──
|
|
1238
|
-
{ name: "support_ticket", type_id: "ent_281", maturity: "stable", since: "0.1.0" },
|
|
1239
|
-
{ name: "customer_feedback", type_id: "ent_282", maturity: "stable", since: "0.1.0" },
|
|
1240
|
-
{ name: "churn_reason", type_id: "ent_283", maturity: "stable", since: "0.1.0" },
|
|
1241
|
-
{ name: "onboarding_flow", type_id: "ent_284", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "user_flow" },
|
|
1242
|
-
{ name: "customer_health_score", type_id: "ent_285", maturity: "stable", since: "0.1.0" },
|
|
1243
|
-
{ name: "playbook", type_id: "ent_286", maturity: "stable", since: "0.1.0" },
|
|
1244
|
-
{ name: "service_level_agreement", type_id: "ent_287", maturity: "stable", since: "0.1.0" },
|
|
1245
|
-
{ name: "sla", type_id: "ent_336", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "service_level_agreement" },
|
|
1246
|
-
{ name: "customer_journey_stage", type_id: "ent_288", maturity: "stable", since: "0.1.0" },
|
|
1247
|
-
{ name: "touchpoint", type_id: "ent_289", maturity: "stable", since: "0.1.0" },
|
|
1248
|
-
{ name: "success_milestone", type_id: "ent_290", maturity: "stable", since: "0.1.0" },
|
|
1249
|
-
{ name: "service_blueprint", type_id: "ent_291", maturity: "stable", since: "0.1.0" },
|
|
1250
|
-
{ name: "nps_score", type_id: "ent_292", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "nps_campaign" },
|
|
1251
|
-
// ── Localisation & i18n ──
|
|
1252
|
-
{ name: "locale", type_id: "ent_293", maturity: "stable", since: "0.1.0" },
|
|
1253
|
-
{ name: "translation_key", type_id: "ent_294", maturity: "stable", since: "0.1.0" },
|
|
1254
|
-
{ name: "translation_bundle", type_id: "ent_295", maturity: "stable", since: "0.1.0" },
|
|
1255
|
-
{ name: "locale_config", type_id: "ent_296", maturity: "stable", since: "0.1.0" },
|
|
1256
|
-
{ name: "cultural_adaptation", type_id: "ent_297", maturity: "stable", since: "0.1.0" },
|
|
1257
|
-
{ name: "regional_pricing", type_id: "ent_298", maturity: "stable", since: "0.1.0" },
|
|
1258
|
-
// ── Customer Education ──
|
|
1259
|
-
{ name: "education_program", type_id: "ent_299", maturity: "stable", since: "0.1.0" },
|
|
1260
|
-
{ name: "tutorial", type_id: "ent_300", maturity: "stable", since: "0.1.0" },
|
|
1261
|
-
{ name: "walkthrough", type_id: "ent_301", maturity: "stable", since: "0.1.0" },
|
|
1262
|
-
{ name: "webinar", type_id: "ent_302", maturity: "stable", since: "0.1.0" },
|
|
1263
|
-
{ name: "certification", type_id: "ent_303", maturity: "stable", since: "0.1.0" },
|
|
1264
|
-
{ name: "help_video", type_id: "ent_304", maturity: "stable", since: "0.1.0" },
|
|
1265
|
-
{ name: "learning_path", type_id: "ent_305", maturity: "stable", since: "0.1.0" },
|
|
1266
|
-
// ── Partners & Ecosystem ──
|
|
1267
|
-
{ name: "partner_program", type_id: "ent_306", maturity: "stable", since: "0.1.0" },
|
|
1268
|
-
{ name: "partner_tier", type_id: "ent_307", maturity: "stable", since: "0.1.0" },
|
|
1269
|
-
{ name: "api_ecosystem", type_id: "ent_308", maturity: "stable", since: "0.1.0" },
|
|
1270
|
-
{ name: "marketplace_listing", type_id: "ent_309", maturity: "stable", since: "0.1.0" },
|
|
1271
|
-
{ name: "developer_portal", type_id: "ent_310", maturity: "stable", since: "0.1.0" },
|
|
1272
|
-
{ name: "integration_partner", type_id: "ent_311", maturity: "stable", since: "0.1.0" },
|
|
1273
|
-
{ name: "partner_revenue_share", type_id: "ent_312", maturity: "stable", since: "0.1.0" },
|
|
1274
|
-
// ── Workspace ──
|
|
1275
|
-
{ name: "workspace", type_id: "ent_328", maturity: "proposed", since: "0.2.0" },
|
|
1276
|
-
{ name: "framework_exercise", type_id: "ent_350", maturity: "proposed", since: "0.8.4" },
|
|
1277
|
-
{ name: "composition", type_id: "ent_361", maturity: "proposed", since: "0.31.0" },
|
|
1278
|
-
// A dated, hashed rendition of a node that is already in the graph. Enters
|
|
1279
|
-
// `proposed` per the maturity rubric (precedent: composition 0.31.0).
|
|
1280
|
-
{ name: "capture", type_id: "ent_362", maturity: "proposed", since: "0.32.0" }
|
|
1281
|
-
];
|
|
1282
|
-
var DEFERRED_PROPOSED_BY_CONTRACT = {
|
|
1283
|
-
// user_story (UPG-571) and experiment_run (UPG-664) graduated to stable in
|
|
1284
|
-
// 0.12.6 — Captain lifted both freezes ("we are using them"). Their contracts
|
|
1285
|
-
// are settled; they are now stable, not deferred.
|
|
1286
|
-
ai_experiment: "UPG-665: AI prompt/model restructure (open ADR).",
|
|
1287
|
-
ai_dataset: "UPG-665: AI prompt/model restructure (open ADR).",
|
|
1288
|
-
ai_trace: "UPG-665: AI prompt/model restructure (open ADR)."
|
|
1289
|
-
};
|
|
1290
|
-
var UPG_ENTITY_META_BY_NAME = new Map(
|
|
1291
|
-
UPG_ENTITY_META.map((m) => [m.name, m])
|
|
1292
|
-
);
|
|
1293
|
-
var UPG_ENTITY_META_BY_ID = new Map(
|
|
1294
|
-
UPG_ENTITY_META.map((m) => [m.type_id, m])
|
|
1295
|
-
);
|
|
1296
|
-
var UPG_ACTIVE_TYPES = UPG_ENTITY_META.filter((m) => m.maturity === "stable" || m.maturity === "proposed").map((m) => m.name);
|
|
1297
|
-
var UPG_DEPRECATED_TYPES = UPG_ENTITY_META.filter((m) => m.maturity === "deprecated").map((m) => m.name);
|
|
1298
|
-
var UPG_PORTFOLIO_SHARED_TYPES = UPG_ENTITY_META.filter((m) => m.portfolio_shared === true).map((m) => m.name);
|
|
1299
|
-
function isPortfolioSharedType(name) {
|
|
1300
|
-
return UPG_ENTITY_META_BY_NAME.get(name)?.portfolio_shared === true;
|
|
1301
|
-
}
|
|
1302
|
-
function isDeprecatedType(name) {
|
|
1303
|
-
const meta = UPG_ENTITY_META_BY_NAME.get(name);
|
|
1304
|
-
return meta?.maturity === "deprecated";
|
|
1305
|
-
}
|
|
1306
|
-
function getReplacementType(name) {
|
|
1307
|
-
const meta = UPG_ENTITY_META_BY_NAME.get(name);
|
|
1308
|
-
return meta?.replacement;
|
|
1309
|
-
}
|
|
1310
|
-
function getTypeId(name) {
|
|
1311
|
-
return UPG_ENTITY_META_BY_NAME.get(name)?.type_id;
|
|
1312
|
-
}
|
|
1313
|
-
function getTypeName(typeId) {
|
|
1314
|
-
return UPG_ENTITY_META_BY_ID.get(typeId)?.name;
|
|
1315
|
-
}
|
|
1316
|
-
|
|
1317
1328
|
// src/catalog/edge-catalog.ts
|
|
1318
1329
|
var UPG_WILDCARD_ENDPOINT = "node";
|
|
1319
1330
|
var CLASSIFICATION_EDGE_PROPERTY_SCHEMA = {
|
|
@@ -1778,6 +1789,15 @@ var UPG_EDGE_CATALOG = {
|
|
|
1778
1789
|
product_categorises_by_roadmap_theme: { forward_verb: "categorises_by", reverse_verb: "categorises", classification: "hierarchy", source_type: "product", target_type: "roadmap_theme" },
|
|
1779
1790
|
feature_area_contains_feature: { forward_verb: "contains", reverse_verb: "belongs_to", classification: "hierarchy", source_type: "feature_area", target_type: "feature" },
|
|
1780
1791
|
feature_area_contains_feature_area: { forward_verb: "contains", reverse_verb: "belongs_to", classification: "hierarchy", source_type: "feature_area", target_type: "feature_area" },
|
|
1792
|
+
// (0.39.0, B4) Component catalogs group by area -- a storybook sidebar that
|
|
1793
|
+
// follows the source tree, a visual-coverage report -- and the graph had no
|
|
1794
|
+
// edge for it, so a measured estate tagged 133 components `area:<group>`
|
|
1795
|
+
// instead. `groups`, not `contains`: the area does not OWN the component
|
|
1796
|
+
// (a design_system or product does); it is a grouping view over components
|
|
1797
|
+
// owned elsewhere, the same non-owning relationship `journey_phase_spans_journey_step`
|
|
1798
|
+
// records. Multi-parent GRAMMAR with single per-instance parentage, the
|
|
1799
|
+
// `quote` precedent.
|
|
1800
|
+
feature_area_groups_design_component: { forward_verb: "groups", reverse_verb: "grouped_in", classification: "hierarchy", source_type: "feature_area", target_type: "design_component" },
|
|
1781
1801
|
outcome_delivered_by_feature: { forward_verb: "delivered_by", reverse_verb: "delivers", classification: "cross-domain", source_type: "outcome", target_type: "feature" },
|
|
1782
1802
|
outcome_delivered_via_feature_area: { forward_verb: "delivered_via", reverse_verb: "delivers_for", classification: "cross-domain", source_type: "outcome", target_type: "feature_area" },
|
|
1783
1803
|
feature_decomposed_into_epic: { forward_verb: "decomposed_into", reverse_verb: "implements", classification: "hierarchy", source_type: "feature", target_type: "epic" },
|
|
@@ -2097,10 +2117,32 @@ var UPG_EDGE_CATALOG = {
|
|
|
2097
2117
|
// decision records design choices about the system; not contained by it.
|
|
2098
2118
|
design_system_decided_via_decision: { forward_verb: "decided_via", reverse_verb: "decided_for", classification: "semantic", source_type: "design_system", target_type: "decision" },
|
|
2099
2119
|
design_component_styled_by_design_token: { forward_verb: "styled_by", reverse_verb: "styles", classification: "hierarchy", source_type: "design_component", target_type: "design_token" },
|
|
2120
|
+
// (0.39.0, B2) The alias tier. A modern token system is two or three tiers --
|
|
2121
|
+
// primitives (`--gray-100`) that semantic tokens alias
|
|
2122
|
+
// (`--background-high: light-dark(var(--gray-100), var(--gray-900))`) that
|
|
2123
|
+
// components consume -- and the spec could hold the ends but not the middle,
|
|
2124
|
+
// so a measured estate (163 DTCG primitives, 45 semantic aliases) kept its
|
|
2125
|
+
// alias chain in descriptions. `causal`, not `semantic`: the alias's VALUE is
|
|
2126
|
+
// computed from the primitive's, so the dependency is real and directional.
|
|
2127
|
+
// `cross_product_eligible` because the primitive tier is routinely its own
|
|
2128
|
+
// published package (its own graph) while the semantic tier lives with the
|
|
2129
|
+
// component library. Makes "which primitives does this component ultimately
|
|
2130
|
+
// depend on" and "which primitives are dead" traversals rather than scripts.
|
|
2131
|
+
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 },
|
|
2100
2132
|
design_component_follows_design_pattern: { forward_verb: "follows", reverse_verb: "followed_by", classification: "hierarchy", source_type: "design_component", target_type: "design_pattern" },
|
|
2101
2133
|
design_component_governed_by_design_guideline: { forward_verb: "governed_by", reverse_verb: "governs", classification: "hierarchy", source_type: "design_component", target_type: "design_guideline" },
|
|
2102
2134
|
design_component_specified_by_interaction_spec: { forward_verb: "specified_by", reverse_verb: "specifies", classification: "hierarchy", source_type: "design_component", target_type: "interaction_spec" },
|
|
2103
|
-
|
|
2135
|
+
// (0.39.0, B1) `cross_product_eligible` because a design system and the
|
|
2136
|
+
// product that consumes it are two graphs: a Studio shadow component wrapping
|
|
2137
|
+
// the @sanity/ui primitive it is built on could not be stated, and 11 such
|
|
2138
|
+
// wrappers recorded the relationship in prose instead. Widened rather than
|
|
2139
|
+
// minting `design_component_wraps_design_component`: a wrap IS composition
|
|
2140
|
+
// read across a graph boundary, and a second verb for one relationship is the
|
|
2141
|
+
// shadow-pair shape Pattern D collapses. `design_component` is already
|
|
2142
|
+
// portfolio_shared, and the three sibling component edges
|
|
2143
|
+
// (surface_renders_, screen_renders_, feature_uses_) are already eligible;
|
|
2144
|
+
// this closes the last link between a product graph and its design system.
|
|
2145
|
+
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 },
|
|
2104
2146
|
prototype_annotated_with_annotation: { forward_verb: "annotated_with", reverse_verb: "annotates", classification: "hierarchy", source_type: "prototype", target_type: "annotation" },
|
|
2105
2147
|
screen_renders_design_component: { forward_verb: "renders", reverse_verb: "rendered_on", classification: "hierarchy", source_type: "screen", target_type: "design_component", cross_product_eligible: true },
|
|
2106
2148
|
// Marketing surface to product (0.12.7, UPG-696/698). A marketing/landing screen
|
|
@@ -7804,7 +7846,7 @@ var UPG_VALID_CHILDREN = {
|
|
|
7804
7846
|
// parent. Same widening shape as the 0.23.0 epic twins: an existing leaf type
|
|
7805
7847
|
// gains a second, SHALLOWER parent, verbs inherited from the deeper edge.
|
|
7806
7848
|
feature: ["epic", "bug", "task", "user_story"],
|
|
7807
|
-
feature_area: ["feature", "feature_area"],
|
|
7849
|
+
feature_area: ["feature", "feature_area", "design_component"],
|
|
7808
7850
|
// epic owns user_story (the templated promise) and, mirroring feature, may
|
|
7809
7851
|
// also directly contain bug/task — heterogeneous imported tickets that belong
|
|
7810
7852
|
// to one epic rather than the feature as a whole (feedback df99026a).
|
|
@@ -13365,7 +13407,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
13365
13407
|
},
|
|
13366
13408
|
// DesignTokenProperties: Design token.
|
|
13367
13409
|
design_token: {
|
|
13368
|
-
category: { type: "string", enum: ["color", "spacing", "typography", "radius", "motion"], description: "
|
|
13410
|
+
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." },
|
|
13369
13411
|
value: { type: "string", description: "Resolved value" },
|
|
13370
13412
|
css_variable: { type: "string", description: "CSS custom property name" }
|
|
13371
13413
|
},
|
|
@@ -34147,7 +34189,7 @@ function checkHeaderSealText(text) {
|
|
|
34147
34189
|
}
|
|
34148
34190
|
|
|
34149
34191
|
// src/index.ts
|
|
34150
|
-
var UPG_VERSION = "0.
|
|
34192
|
+
var UPG_VERSION = "0.39.0";
|
|
34151
34193
|
var UPG_FORMAT_VERSION = "0.4.0";
|
|
34152
34194
|
var MARKDOWN_FORMAT_VERSION = "0.1";
|
|
34153
34195
|
var UPG_TYPES = getTypes();
|