@unified-product-graph/core 0.37.0 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.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
- return UPG_DOMAINS.find((d) => d.types.includes(entityType));
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 = {
@@ -34147,7 +34158,7 @@ function checkHeaderSealText(text) {
34147
34158
  }
34148
34159
 
34149
34160
  // src/index.ts
34150
- var UPG_VERSION = "0.37.0";
34161
+ var UPG_VERSION = "0.38.0";
34151
34162
  var UPG_FORMAT_VERSION = "0.4.0";
34152
34163
  var MARKDOWN_FORMAT_VERSION = "0.1";
34153
34164
  var UPG_TYPES = getTypes();