@unified-product-graph/core 0.12.2 → 0.12.4

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.d.cts CHANGED
@@ -10003,7 +10003,7 @@ interface ProductAreaProperties {
10003
10003
  strategic_priority?: Priority;
10004
10004
  /** Narrative description of what this area covers */
10005
10005
  description?: string;
10006
- /** Person or team that owns this area */
10006
+ /** Person or team that owns this area. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
10007
10007
  owner?: string;
10008
10008
  }
10009
10009
 
@@ -10089,7 +10089,7 @@ interface MissionProperties {
10089
10089
  * }
10090
10090
  */
10091
10091
  interface StrategicThemeProperties {
10092
- /** Owning person or team */
10092
+ /** Owning person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
10093
10093
  owner?: string;
10094
10094
  /**
10095
10095
  * Planning horizon.
@@ -10123,7 +10123,7 @@ interface InitiativeProperties {
10123
10123
  end_date?: ISODate;
10124
10124
  /** Budget allocated (base currency units) */
10125
10125
  budget?: number;
10126
- /** Owning person or team */
10126
+ /** Owning person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
10127
10127
  owner?: string;
10128
10128
  }
10129
10129
  /** Capability entity.
@@ -10198,7 +10198,7 @@ interface ValueStreamProperties {
10198
10198
  * }
10199
10199
  */
10200
10200
  interface StrategicPillarProperties {
10201
- /** Owning person or team */
10201
+ /** Owning person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
10202
10202
  owner?: string;
10203
10203
  /** Narrative of the pillar's intent */
10204
10204
  description?: string;
@@ -10260,7 +10260,7 @@ interface DecisionProperties {
10260
10260
  decision_outcome?: string;
10261
10261
  /** Known positive and negative consequences. Mirrors MADR's "Consequences" section. */
10262
10262
  consequences?: string;
10263
- /** People who made the decision. Mirrors MADR's "Deciders" field. */
10263
+ /** People who made the decision. Mirrors MADR's "Deciders" field. Promote to `node_owned_by_person` edges (one per name) if ownership must be queryable. */
10264
10264
  decision_makers?: string[];
10265
10265
  /**
10266
10266
  * Forces, constraints, and goals that shaped the decision. Mirrors MADR's
@@ -10463,15 +10463,15 @@ interface JobStepProperties {
10463
10463
  * @example
10464
10464
  * const properties: SwitchingCostProperties = {
10465
10465
  * cost_type: 'financial',
10466
- * magnitude: 'high',
10466
+ * magnitude: { value: 4, label: 'high' },
10467
10467
  * barrier_description: 'Extensive Notion workspace with years of history; migration feels daunting.',
10468
10468
  * }
10469
10469
  */
10470
10470
  interface SwitchingCostProperties {
10471
10471
  /** Type of switching cost */
10472
10472
  cost_type?: 'financial' | 'learning' | 'data' | 'relationship' | 'procedural';
10473
- /** How large the barrier is */
10474
- magnitude?: 'high' | 'medium' | 'low';
10473
+ /** How large the barrier is (UPGAssessment on the `severity_5` scale). */
10474
+ magnitude?: UPGAssessment;
10475
10475
  /** Free-text description of the barrier */
10476
10476
  barrier_description?: string;
10477
10477
  }
@@ -11701,7 +11701,7 @@ interface JourneyStepProperties {
11701
11701
  friction_score?: UPGAssessment;
11702
11702
  /** What the user is thinking */
11703
11703
  thought?: string;
11704
- /** Responsible owner */
11704
+ /** Responsible owner. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
11705
11705
  owner?: string;
11706
11706
  }
11707
11707
  /** Discrete action at a journey step, classified by service layer.
@@ -11824,7 +11824,7 @@ interface DesignConceptProperties {
11824
11824
  concept_status?: 'exploring' | 'validated' | 'selected' | 'rejected';
11825
11825
  /** Development stage, from rough idea to presentation-ready */
11826
11826
  maturity?: 'sketch' | 'refined' | 'final';
11827
- /** Shepherding designer or researcher */
11827
+ /** Shepherding designer or researcher. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
11828
11828
  owner?: string;
11829
11829
  }
11830
11830
  /** Prototype.
@@ -12042,7 +12042,7 @@ interface DesignSystemProperties {
12042
12042
  version?: string;
12043
12043
  /** Code repository or package path */
12044
12044
  repo_path?: string;
12045
- /** Maintaining person or team */
12045
+ /** Maintaining person or team. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
12046
12046
  maintainer?: string;
12047
12047
  /** Open-source license, if public */
12048
12048
  license?: string;
@@ -12373,7 +12373,7 @@ interface BrandImageryProperties {
12373
12373
  interface OutcomeProperties {
12374
12374
  /** Target timeframe (e.g. "Q2 2026", "12 months") */
12375
12375
  timeline?: string;
12376
- /** Accountable person or team */
12376
+ /** Accountable person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12377
12377
  owner?: string;
12378
12378
  /**
12379
12379
  * What "achieved" looks like, concretely. Pairs with `measurement_method`.
@@ -12466,7 +12466,7 @@ interface FeatureAreaProperties {
12466
12466
  owning_team?: string;
12467
12467
  /** Approximate feature count under this area. Snapshot; `feature_area_contains_feature` edges are the source of truth. */
12468
12468
  feature_count?: number;
12469
- /** Area owner (handle or email) */
12469
+ /** Area owner (handle or email). Promote to a `node_owned_by_team` edge if ownership must be queryable. */
12470
12470
  owner?: string;
12471
12471
  /** Importance to the product overall */
12472
12472
  priority?: Priority;
@@ -12491,7 +12491,7 @@ interface FeatureAreaProperties {
12491
12491
  interface FeatureProperties {
12492
12492
  /** Task-level priority */
12493
12493
  priority?: Priority;
12494
- /** Responsible person or team */
12494
+ /** Responsible person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12495
12495
  owner?: string;
12496
12496
  /** ISO date work begins */
12497
12497
  start_date?: ISODate;
@@ -12514,7 +12514,7 @@ interface EpicProperties {
12514
12514
  estimate?: string;
12515
12515
  /** Task-level priority */
12516
12516
  priority?: Priority;
12517
- /** Responsible person or team */
12517
+ /** Responsible person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12518
12518
  owner?: string;
12519
12519
  /** ISO date work begins */
12520
12520
  start_date?: ISODate;
@@ -12592,7 +12592,7 @@ interface ReleaseProperties {
12592
12592
  version?: string;
12593
12593
  /** ISO date work begins */
12594
12594
  start_date?: ISODate;
12595
- /** Responsible person or team */
12595
+ /** Responsible person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12596
12596
  owner?: string;
12597
12597
  }
12598
12598
  /** Task: a discrete unit of work, smaller than a story.
@@ -12604,7 +12604,7 @@ interface ReleaseProperties {
12604
12604
  * }
12605
12605
  */
12606
12606
  interface TaskProperties {
12607
- /** Assigned person */
12607
+ /** Assigned person. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12608
12608
  assignee?: string;
12609
12609
  /** Effort estimate (e.g. "2h", "1d", "3 points"). Use a consistent unit within your team. */
12610
12610
  effort?: string;
@@ -12644,7 +12644,7 @@ interface BugProperties {
12644
12644
  environment?: string;
12645
12645
  /** Urgency relative to other work. Independent of `bug_severity` (a critical bug can have low priority if rare). */
12646
12646
  priority?: Priority;
12647
- /** Assigned person */
12647
+ /** Assigned person. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12648
12648
  assignee?: string;
12649
12649
  /** ISO date due. Often tied to a release gate or SLA. */
12650
12650
  due_date?: ISODate;
@@ -12665,7 +12665,7 @@ interface RoadmapProperties {
12665
12665
  roadmap_type?: 'now_next_later' | 'quarterly' | 'release_based' | 'theme_based';
12666
12666
  /** Covered timeframe */
12667
12667
  timeframe?: string;
12668
- /** Owning person or team */
12668
+ /** Owning person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12669
12669
  owner?: string;
12670
12670
  }
12671
12671
  /** Roadmap item.
@@ -12825,7 +12825,7 @@ interface MetricProperties {
12825
12825
  * `'realtime'` migrates to `'continuous'`; all other values 1:1.
12826
12826
  */
12827
12827
  cadence?: Cadence;
12828
- /** Person or team responsible for tracking this metric */
12828
+ /** Person or team responsible for tracking this metric. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12829
12829
  owner?: string;
12830
12830
  /**
12831
12831
  * Universal health rollup. Orthogonal to lifecycle and `guardrail_status`.
@@ -12908,7 +12908,7 @@ interface MetricQualityAssessmentProperties {
12908
12908
  * }
12909
12909
  */
12910
12910
  interface BoundedContextProperties {
12911
- /** Owning team */
12911
+ /** Owning team. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
12912
12912
  team_owner?: string;
12913
12913
  /** Technologies used within this context */
12914
12914
  tech_stack?: string[];
@@ -12928,7 +12928,7 @@ interface ServiceProperties {
12928
12928
  service_type?: 'web' | 'api' | 'worker' | 'db' | 'queue' | 'library' | 'mobile' | 'docs' | 'lambda' | 'cli';
12929
12929
  /** Technologies used (e.g. ["TypeScript", "Postgres", "Redis"]) */
12930
12930
  tech_stack?: string[];
12931
- /** Owning person or team. Backstage marks this required; strongly recommended. */
12931
+ /** Owning person or team. Backstage marks this required; strongly recommended. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
12932
12932
  owner?: string;
12933
12933
  /**
12934
12934
  * Service maturity. Answers "how mature is it?".
@@ -12977,7 +12977,7 @@ interface ApiContractProperties {
12977
12977
  protocol?: 'REST' | 'GraphQL' | 'gRPC' | 'AsyncAPI' | 'SOAP' | 'WebSocket' | 'MQTT' | 'SSE' | 'other';
12978
12978
  /** API version */
12979
12979
  version?: string;
12980
- /** Maintaining person or team. */
12980
+ /** Maintaining person or team. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
12981
12981
  owner?: string;
12982
12982
  }
12983
12983
  /** Technical debt item.
@@ -13001,7 +13001,7 @@ interface TechnicalDebtItemProperties {
13001
13001
  severity?: UPGAssessment;
13002
13002
  /** Estimated effort to resolve. Requires team knowledge of the codebase. */
13003
13003
  effort_to_fix?: UPGAssessment;
13004
- /** Owning person or team responsible for paydown. */
13004
+ /** Owning person or team responsible for paydown. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
13005
13005
  owner?: string;
13006
13006
  /**
13007
13007
  * Codebase location, service, or module.
@@ -13043,7 +13043,7 @@ interface FeatureFlagProperties {
13043
13043
  rollout_pct?: number;
13044
13044
  /** Human-readable targeting rules. Full rule evaluation happens in the flag service. */
13045
13045
  targeting_rules?: string;
13046
- /** Owning person or team responsible for the flag's lifecycle. */
13046
+ /** Owning person or team responsible for the flag's lifecycle. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
13047
13047
  owner?: string;
13048
13048
  /**
13049
13049
  * Lifecycle classification.
@@ -13080,7 +13080,7 @@ interface DeploymentProperties {
13080
13080
  sha?: string;
13081
13081
  /** Wall-clock duration in seconds. Tracks deployment speed trends. */
13082
13082
  duration_seconds?: number;
13083
- /** Triggering person or system. */
13083
+ /** Triggering person or system. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
13084
13084
  deployer?: string;
13085
13085
  }
13086
13086
  /** DDD aggregate.
@@ -13188,7 +13188,7 @@ interface DatabaseSchemaProperties {
13188
13188
  schema_version?: string;
13189
13189
  /** Pending-migration status */
13190
13190
  migration_status?: 'current' | 'pending' | 'failed';
13191
- /** Owning person or team responsible for design and migrations. */
13191
+ /** Owning person or team responsible for design and migrations. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
13192
13192
  owner?: string;
13193
13193
  /** Tables or collections in this schema. Useful for migration scope estimation. */
13194
13194
  table_count?: number;
@@ -13382,7 +13382,7 @@ interface InvestigationProperties {
13382
13382
  started_at?: ISODateTime;
13383
13383
  /** ISO timestamp the investigation was concluded. Pairs with `status === 'resolved' | 'abandoned'`. */
13384
13384
  resolved_at?: ISODateTime;
13385
- /** Lead investigator (email or handle). Distinct from the team owning the affected service. */
13385
+ /** Lead investigator (email or handle). Distinct from the team owning the affected service. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
13386
13386
  lead_investigator?: string;
13387
13387
  /** Originating session */
13388
13388
  session_id?: string;
@@ -14253,7 +14253,7 @@ interface ThreatModelProperties {
14253
14253
  */
14254
14254
  last_reviewed?: string;
14255
14255
  /**
14256
- * Participants in the exercise.
14256
+ * Participants in the exercise. Promote individuals to `node_owned_by_person` edges if participation must be queryable.
14257
14257
  * @example "Alice Chen (security lead), Bob Park (backend engineer), Carol Liu (architect)"
14258
14258
  */
14259
14259
  participants?: string;
@@ -14996,7 +14996,7 @@ interface GlossaryTermProperties {
14996
14996
  * }
14997
14997
  */
14998
14998
  interface DataDomainProperties {
14999
- /** Accountable person or team */
14999
+ /** Accountable person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
15000
15000
  steward?: string;
15001
15001
  /**
15002
15002
  * Domain contents classification.
@@ -15130,7 +15130,7 @@ interface DocumentProperties {
15130
15130
  platform?: 'markdown' | 'notion' | 'figma' | 'google_docs' | 'confluence' | 'github' | 'linear' | 'other';
15131
15131
  /** Purpose classification */
15132
15132
  document_type?: 'vision' | 'plan' | 'decision' | 'research' | 'spec' | 'audit' | 'session' | 'feedback' | 'case-study' | 'narrative' | 'bug-report' | 'archive-collection' | 'rfc' | 'runbook' | 'guide' | 'onboarding' | 'brief' | 'report' | 'reference';
15133
- /** Author (free-form: name, email, or handle) */
15133
+ /** Author (free-form: name, email, or handle). Promote to a `node_owned_by_person` edge if ownership must be queryable. */
15134
15134
  author?: string;
15135
15135
  /** ISO 8601 last-meaningful-update */
15136
15136
  last_updated?: ISODateTime;
@@ -15601,7 +15601,7 @@ interface DepartmentProperties {
15601
15601
  budget?: number;
15602
15602
  /** Charter / purpose statement for the department */
15603
15603
  department_mission?: string;
15604
- /** Department leader (person or role reference) */
15604
+ /** Department leader (person or role reference). Promote to a `node_owned_by_person` edge if ownership must be queryable. */
15605
15605
  leader?: string;
15606
15606
  /** Fiscal year the headcount / budget numbers apply to */
15607
15607
  fiscal_year?: string;
@@ -15643,7 +15643,7 @@ interface CeremonyProperties {
15643
15643
  cadence?: Cadence;
15644
15644
  /** Typical duration of the meeting in minutes */
15645
15645
  duration_minutes?: number;
15646
- /** People or roles who attend */
15646
+ /** People or roles who attend. Promote individuals to `node_owned_by_person` edges if participation must be queryable. */
15647
15647
  participants?: string;
15648
15648
  }
15649
15649
  /** CapacityPlan entity.
@@ -16293,7 +16293,7 @@ interface AgentTaskProperties {
16293
16293
  interface ReviewGateProperties {
16294
16294
  /** Kind of review required at this gate */
16295
16295
  gate_type?: 'human_review' | 'automated_check' | 'approval';
16296
- /** People or roles that must approve */
16296
+ /** People or roles that must approve. Promote to `node_owned_by_person` edges (one per name) if ownership must be queryable. */
16297
16297
  required_approvers?: string[];
16298
16298
  /** Current approval status of the gate */
16299
16299
  gate_status?: 'pending' | 'approved' | 'rejected' | 'bypassed';
@@ -16531,7 +16531,7 @@ interface PartnershipProperties {
16531
16531
  partnership_tier?: 'strategic' | 'preferred' | 'standard' | 'trial';
16532
16532
  /** Exposure if the partnership fails (concentration risk, IP risk, etc.) */
16533
16533
  risk_level?: UPGAssessment;
16534
- /** Internal owner */
16534
+ /** Internal owner. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
16535
16535
  owner?: string;
16536
16536
  /** Date the partnership became effective (ISO 8601) */
16537
16537
  start_date?: ISODate;
@@ -16550,7 +16550,7 @@ interface KeyResourceProperties {
16550
16550
  resource_type?: 'physical' | 'intellectual' | 'human' | 'financial';
16551
16551
  /** Criticality to the business model */
16552
16552
  criticality?: Priority;
16553
- /** Accountable person or team */
16553
+ /** Accountable person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
16554
16554
  owner?: string;
16555
16555
  /** Replacement difficulty */
16556
16556
  scarcity_risk?: UPGAssessment;
@@ -16581,7 +16581,7 @@ interface KeyActivityProperties {
16581
16581
  frequency_period?: Duration;
16582
16582
  /** Qualitative tier. Use when an exact rate is unknown. */
16583
16583
  frequency_rating?: FrequencyRating;
16584
- /** Operationally accountable team or individual */
16584
+ /** Operationally accountable team or individual. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
16585
16585
  operational_owner?: string;
16586
16586
  /** Bottleneck or scaling constraint */
16587
16587
  capacity_constraint?: string;
@@ -17755,7 +17755,7 @@ interface ServiceLevelAgreementProperties {
17755
17755
  effective_date?: ISODate;
17756
17756
  /** ISO date expires. Pairs with `agreement_term` for renewal logic. */
17757
17757
  expiry_date?: ISODate;
17758
- /** Party accountable on the service provider side */
17758
+ /** Party accountable on the service provider side. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
17759
17759
  owner?: string;
17760
17760
  /** What happens if the SLA is breached (credits, penalties, escalation path) */
17761
17761
  consequence_of_breach?: string;
@@ -21822,7 +21822,7 @@ declare function isCanonical(text: string): boolean;
21822
21822
  * it stamps the `upg_version` field of every `.upg` file written by the SDK.
21823
21823
  * The `check:version-lockstep` gate enforces this at release time.
21824
21824
  */
21825
- declare const UPG_VERSION: "0.12.2";
21825
+ declare const UPG_VERSION: "0.12.4";
21826
21826
  /**
21827
21827
  * The `.upg` JSON document format version. Written to the `upg_version` field.
21828
21828
  * Evolves independently from `UPG_VERSION` (the catalogue version).
package/dist/index.d.ts CHANGED
@@ -10003,7 +10003,7 @@ interface ProductAreaProperties {
10003
10003
  strategic_priority?: Priority;
10004
10004
  /** Narrative description of what this area covers */
10005
10005
  description?: string;
10006
- /** Person or team that owns this area */
10006
+ /** Person or team that owns this area. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
10007
10007
  owner?: string;
10008
10008
  }
10009
10009
 
@@ -10089,7 +10089,7 @@ interface MissionProperties {
10089
10089
  * }
10090
10090
  */
10091
10091
  interface StrategicThemeProperties {
10092
- /** Owning person or team */
10092
+ /** Owning person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
10093
10093
  owner?: string;
10094
10094
  /**
10095
10095
  * Planning horizon.
@@ -10123,7 +10123,7 @@ interface InitiativeProperties {
10123
10123
  end_date?: ISODate;
10124
10124
  /** Budget allocated (base currency units) */
10125
10125
  budget?: number;
10126
- /** Owning person or team */
10126
+ /** Owning person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
10127
10127
  owner?: string;
10128
10128
  }
10129
10129
  /** Capability entity.
@@ -10198,7 +10198,7 @@ interface ValueStreamProperties {
10198
10198
  * }
10199
10199
  */
10200
10200
  interface StrategicPillarProperties {
10201
- /** Owning person or team */
10201
+ /** Owning person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
10202
10202
  owner?: string;
10203
10203
  /** Narrative of the pillar's intent */
10204
10204
  description?: string;
@@ -10260,7 +10260,7 @@ interface DecisionProperties {
10260
10260
  decision_outcome?: string;
10261
10261
  /** Known positive and negative consequences. Mirrors MADR's "Consequences" section. */
10262
10262
  consequences?: string;
10263
- /** People who made the decision. Mirrors MADR's "Deciders" field. */
10263
+ /** People who made the decision. Mirrors MADR's "Deciders" field. Promote to `node_owned_by_person` edges (one per name) if ownership must be queryable. */
10264
10264
  decision_makers?: string[];
10265
10265
  /**
10266
10266
  * Forces, constraints, and goals that shaped the decision. Mirrors MADR's
@@ -10463,15 +10463,15 @@ interface JobStepProperties {
10463
10463
  * @example
10464
10464
  * const properties: SwitchingCostProperties = {
10465
10465
  * cost_type: 'financial',
10466
- * magnitude: 'high',
10466
+ * magnitude: { value: 4, label: 'high' },
10467
10467
  * barrier_description: 'Extensive Notion workspace with years of history; migration feels daunting.',
10468
10468
  * }
10469
10469
  */
10470
10470
  interface SwitchingCostProperties {
10471
10471
  /** Type of switching cost */
10472
10472
  cost_type?: 'financial' | 'learning' | 'data' | 'relationship' | 'procedural';
10473
- /** How large the barrier is */
10474
- magnitude?: 'high' | 'medium' | 'low';
10473
+ /** How large the barrier is (UPGAssessment on the `severity_5` scale). */
10474
+ magnitude?: UPGAssessment;
10475
10475
  /** Free-text description of the barrier */
10476
10476
  barrier_description?: string;
10477
10477
  }
@@ -11701,7 +11701,7 @@ interface JourneyStepProperties {
11701
11701
  friction_score?: UPGAssessment;
11702
11702
  /** What the user is thinking */
11703
11703
  thought?: string;
11704
- /** Responsible owner */
11704
+ /** Responsible owner. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
11705
11705
  owner?: string;
11706
11706
  }
11707
11707
  /** Discrete action at a journey step, classified by service layer.
@@ -11824,7 +11824,7 @@ interface DesignConceptProperties {
11824
11824
  concept_status?: 'exploring' | 'validated' | 'selected' | 'rejected';
11825
11825
  /** Development stage, from rough idea to presentation-ready */
11826
11826
  maturity?: 'sketch' | 'refined' | 'final';
11827
- /** Shepherding designer or researcher */
11827
+ /** Shepherding designer or researcher. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
11828
11828
  owner?: string;
11829
11829
  }
11830
11830
  /** Prototype.
@@ -12042,7 +12042,7 @@ interface DesignSystemProperties {
12042
12042
  version?: string;
12043
12043
  /** Code repository or package path */
12044
12044
  repo_path?: string;
12045
- /** Maintaining person or team */
12045
+ /** Maintaining person or team. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
12046
12046
  maintainer?: string;
12047
12047
  /** Open-source license, if public */
12048
12048
  license?: string;
@@ -12373,7 +12373,7 @@ interface BrandImageryProperties {
12373
12373
  interface OutcomeProperties {
12374
12374
  /** Target timeframe (e.g. "Q2 2026", "12 months") */
12375
12375
  timeline?: string;
12376
- /** Accountable person or team */
12376
+ /** Accountable person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12377
12377
  owner?: string;
12378
12378
  /**
12379
12379
  * What "achieved" looks like, concretely. Pairs with `measurement_method`.
@@ -12466,7 +12466,7 @@ interface FeatureAreaProperties {
12466
12466
  owning_team?: string;
12467
12467
  /** Approximate feature count under this area. Snapshot; `feature_area_contains_feature` edges are the source of truth. */
12468
12468
  feature_count?: number;
12469
- /** Area owner (handle or email) */
12469
+ /** Area owner (handle or email). Promote to a `node_owned_by_team` edge if ownership must be queryable. */
12470
12470
  owner?: string;
12471
12471
  /** Importance to the product overall */
12472
12472
  priority?: Priority;
@@ -12491,7 +12491,7 @@ interface FeatureAreaProperties {
12491
12491
  interface FeatureProperties {
12492
12492
  /** Task-level priority */
12493
12493
  priority?: Priority;
12494
- /** Responsible person or team */
12494
+ /** Responsible person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12495
12495
  owner?: string;
12496
12496
  /** ISO date work begins */
12497
12497
  start_date?: ISODate;
@@ -12514,7 +12514,7 @@ interface EpicProperties {
12514
12514
  estimate?: string;
12515
12515
  /** Task-level priority */
12516
12516
  priority?: Priority;
12517
- /** Responsible person or team */
12517
+ /** Responsible person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12518
12518
  owner?: string;
12519
12519
  /** ISO date work begins */
12520
12520
  start_date?: ISODate;
@@ -12592,7 +12592,7 @@ interface ReleaseProperties {
12592
12592
  version?: string;
12593
12593
  /** ISO date work begins */
12594
12594
  start_date?: ISODate;
12595
- /** Responsible person or team */
12595
+ /** Responsible person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12596
12596
  owner?: string;
12597
12597
  }
12598
12598
  /** Task: a discrete unit of work, smaller than a story.
@@ -12604,7 +12604,7 @@ interface ReleaseProperties {
12604
12604
  * }
12605
12605
  */
12606
12606
  interface TaskProperties {
12607
- /** Assigned person */
12607
+ /** Assigned person. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12608
12608
  assignee?: string;
12609
12609
  /** Effort estimate (e.g. "2h", "1d", "3 points"). Use a consistent unit within your team. */
12610
12610
  effort?: string;
@@ -12644,7 +12644,7 @@ interface BugProperties {
12644
12644
  environment?: string;
12645
12645
  /** Urgency relative to other work. Independent of `bug_severity` (a critical bug can have low priority if rare). */
12646
12646
  priority?: Priority;
12647
- /** Assigned person */
12647
+ /** Assigned person. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12648
12648
  assignee?: string;
12649
12649
  /** ISO date due. Often tied to a release gate or SLA. */
12650
12650
  due_date?: ISODate;
@@ -12665,7 +12665,7 @@ interface RoadmapProperties {
12665
12665
  roadmap_type?: 'now_next_later' | 'quarterly' | 'release_based' | 'theme_based';
12666
12666
  /** Covered timeframe */
12667
12667
  timeframe?: string;
12668
- /** Owning person or team */
12668
+ /** Owning person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12669
12669
  owner?: string;
12670
12670
  }
12671
12671
  /** Roadmap item.
@@ -12825,7 +12825,7 @@ interface MetricProperties {
12825
12825
  * `'realtime'` migrates to `'continuous'`; all other values 1:1.
12826
12826
  */
12827
12827
  cadence?: Cadence;
12828
- /** Person or team responsible for tracking this metric */
12828
+ /** Person or team responsible for tracking this metric. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
12829
12829
  owner?: string;
12830
12830
  /**
12831
12831
  * Universal health rollup. Orthogonal to lifecycle and `guardrail_status`.
@@ -12908,7 +12908,7 @@ interface MetricQualityAssessmentProperties {
12908
12908
  * }
12909
12909
  */
12910
12910
  interface BoundedContextProperties {
12911
- /** Owning team */
12911
+ /** Owning team. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
12912
12912
  team_owner?: string;
12913
12913
  /** Technologies used within this context */
12914
12914
  tech_stack?: string[];
@@ -12928,7 +12928,7 @@ interface ServiceProperties {
12928
12928
  service_type?: 'web' | 'api' | 'worker' | 'db' | 'queue' | 'library' | 'mobile' | 'docs' | 'lambda' | 'cli';
12929
12929
  /** Technologies used (e.g. ["TypeScript", "Postgres", "Redis"]) */
12930
12930
  tech_stack?: string[];
12931
- /** Owning person or team. Backstage marks this required; strongly recommended. */
12931
+ /** Owning person or team. Backstage marks this required; strongly recommended. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
12932
12932
  owner?: string;
12933
12933
  /**
12934
12934
  * Service maturity. Answers "how mature is it?".
@@ -12977,7 +12977,7 @@ interface ApiContractProperties {
12977
12977
  protocol?: 'REST' | 'GraphQL' | 'gRPC' | 'AsyncAPI' | 'SOAP' | 'WebSocket' | 'MQTT' | 'SSE' | 'other';
12978
12978
  /** API version */
12979
12979
  version?: string;
12980
- /** Maintaining person or team. */
12980
+ /** Maintaining person or team. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
12981
12981
  owner?: string;
12982
12982
  }
12983
12983
  /** Technical debt item.
@@ -13001,7 +13001,7 @@ interface TechnicalDebtItemProperties {
13001
13001
  severity?: UPGAssessment;
13002
13002
  /** Estimated effort to resolve. Requires team knowledge of the codebase. */
13003
13003
  effort_to_fix?: UPGAssessment;
13004
- /** Owning person or team responsible for paydown. */
13004
+ /** Owning person or team responsible for paydown. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
13005
13005
  owner?: string;
13006
13006
  /**
13007
13007
  * Codebase location, service, or module.
@@ -13043,7 +13043,7 @@ interface FeatureFlagProperties {
13043
13043
  rollout_pct?: number;
13044
13044
  /** Human-readable targeting rules. Full rule evaluation happens in the flag service. */
13045
13045
  targeting_rules?: string;
13046
- /** Owning person or team responsible for the flag's lifecycle. */
13046
+ /** Owning person or team responsible for the flag's lifecycle. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
13047
13047
  owner?: string;
13048
13048
  /**
13049
13049
  * Lifecycle classification.
@@ -13080,7 +13080,7 @@ interface DeploymentProperties {
13080
13080
  sha?: string;
13081
13081
  /** Wall-clock duration in seconds. Tracks deployment speed trends. */
13082
13082
  duration_seconds?: number;
13083
- /** Triggering person or system. */
13083
+ /** Triggering person or system. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
13084
13084
  deployer?: string;
13085
13085
  }
13086
13086
  /** DDD aggregate.
@@ -13188,7 +13188,7 @@ interface DatabaseSchemaProperties {
13188
13188
  schema_version?: string;
13189
13189
  /** Pending-migration status */
13190
13190
  migration_status?: 'current' | 'pending' | 'failed';
13191
- /** Owning person or team responsible for design and migrations. */
13191
+ /** Owning person or team responsible for design and migrations. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
13192
13192
  owner?: string;
13193
13193
  /** Tables or collections in this schema. Useful for migration scope estimation. */
13194
13194
  table_count?: number;
@@ -13382,7 +13382,7 @@ interface InvestigationProperties {
13382
13382
  started_at?: ISODateTime;
13383
13383
  /** ISO timestamp the investigation was concluded. Pairs with `status === 'resolved' | 'abandoned'`. */
13384
13384
  resolved_at?: ISODateTime;
13385
- /** Lead investigator (email or handle). Distinct from the team owning the affected service. */
13385
+ /** Lead investigator (email or handle). Distinct from the team owning the affected service. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
13386
13386
  lead_investigator?: string;
13387
13387
  /** Originating session */
13388
13388
  session_id?: string;
@@ -14253,7 +14253,7 @@ interface ThreatModelProperties {
14253
14253
  */
14254
14254
  last_reviewed?: string;
14255
14255
  /**
14256
- * Participants in the exercise.
14256
+ * Participants in the exercise. Promote individuals to `node_owned_by_person` edges if participation must be queryable.
14257
14257
  * @example "Alice Chen (security lead), Bob Park (backend engineer), Carol Liu (architect)"
14258
14258
  */
14259
14259
  participants?: string;
@@ -14996,7 +14996,7 @@ interface GlossaryTermProperties {
14996
14996
  * }
14997
14997
  */
14998
14998
  interface DataDomainProperties {
14999
- /** Accountable person or team */
14999
+ /** Accountable person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
15000
15000
  steward?: string;
15001
15001
  /**
15002
15002
  * Domain contents classification.
@@ -15130,7 +15130,7 @@ interface DocumentProperties {
15130
15130
  platform?: 'markdown' | 'notion' | 'figma' | 'google_docs' | 'confluence' | 'github' | 'linear' | 'other';
15131
15131
  /** Purpose classification */
15132
15132
  document_type?: 'vision' | 'plan' | 'decision' | 'research' | 'spec' | 'audit' | 'session' | 'feedback' | 'case-study' | 'narrative' | 'bug-report' | 'archive-collection' | 'rfc' | 'runbook' | 'guide' | 'onboarding' | 'brief' | 'report' | 'reference';
15133
- /** Author (free-form: name, email, or handle) */
15133
+ /** Author (free-form: name, email, or handle). Promote to a `node_owned_by_person` edge if ownership must be queryable. */
15134
15134
  author?: string;
15135
15135
  /** ISO 8601 last-meaningful-update */
15136
15136
  last_updated?: ISODateTime;
@@ -15601,7 +15601,7 @@ interface DepartmentProperties {
15601
15601
  budget?: number;
15602
15602
  /** Charter / purpose statement for the department */
15603
15603
  department_mission?: string;
15604
- /** Department leader (person or role reference) */
15604
+ /** Department leader (person or role reference). Promote to a `node_owned_by_person` edge if ownership must be queryable. */
15605
15605
  leader?: string;
15606
15606
  /** Fiscal year the headcount / budget numbers apply to */
15607
15607
  fiscal_year?: string;
@@ -15643,7 +15643,7 @@ interface CeremonyProperties {
15643
15643
  cadence?: Cadence;
15644
15644
  /** Typical duration of the meeting in minutes */
15645
15645
  duration_minutes?: number;
15646
- /** People or roles who attend */
15646
+ /** People or roles who attend. Promote individuals to `node_owned_by_person` edges if participation must be queryable. */
15647
15647
  participants?: string;
15648
15648
  }
15649
15649
  /** CapacityPlan entity.
@@ -16293,7 +16293,7 @@ interface AgentTaskProperties {
16293
16293
  interface ReviewGateProperties {
16294
16294
  /** Kind of review required at this gate */
16295
16295
  gate_type?: 'human_review' | 'automated_check' | 'approval';
16296
- /** People or roles that must approve */
16296
+ /** People or roles that must approve. Promote to `node_owned_by_person` edges (one per name) if ownership must be queryable. */
16297
16297
  required_approvers?: string[];
16298
16298
  /** Current approval status of the gate */
16299
16299
  gate_status?: 'pending' | 'approved' | 'rejected' | 'bypassed';
@@ -16531,7 +16531,7 @@ interface PartnershipProperties {
16531
16531
  partnership_tier?: 'strategic' | 'preferred' | 'standard' | 'trial';
16532
16532
  /** Exposure if the partnership fails (concentration risk, IP risk, etc.) */
16533
16533
  risk_level?: UPGAssessment;
16534
- /** Internal owner */
16534
+ /** Internal owner. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
16535
16535
  owner?: string;
16536
16536
  /** Date the partnership became effective (ISO 8601) */
16537
16537
  start_date?: ISODate;
@@ -16550,7 +16550,7 @@ interface KeyResourceProperties {
16550
16550
  resource_type?: 'physical' | 'intellectual' | 'human' | 'financial';
16551
16551
  /** Criticality to the business model */
16552
16552
  criticality?: Priority;
16553
- /** Accountable person or team */
16553
+ /** Accountable person or team. Promote to a `node_owned_by_person` edge if ownership must be queryable. */
16554
16554
  owner?: string;
16555
16555
  /** Replacement difficulty */
16556
16556
  scarcity_risk?: UPGAssessment;
@@ -16581,7 +16581,7 @@ interface KeyActivityProperties {
16581
16581
  frequency_period?: Duration;
16582
16582
  /** Qualitative tier. Use when an exact rate is unknown. */
16583
16583
  frequency_rating?: FrequencyRating;
16584
- /** Operationally accountable team or individual */
16584
+ /** Operationally accountable team or individual. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
16585
16585
  operational_owner?: string;
16586
16586
  /** Bottleneck or scaling constraint */
16587
16587
  capacity_constraint?: string;
@@ -17755,7 +17755,7 @@ interface ServiceLevelAgreementProperties {
17755
17755
  effective_date?: ISODate;
17756
17756
  /** ISO date expires. Pairs with `agreement_term` for renewal logic. */
17757
17757
  expiry_date?: ISODate;
17758
- /** Party accountable on the service provider side */
17758
+ /** Party accountable on the service provider side. Promote to a `node_owned_by_team` edge if ownership must be queryable. */
17759
17759
  owner?: string;
17760
17760
  /** What happens if the SLA is breached (credits, penalties, escalation path) */
17761
17761
  consequence_of_breach?: string;
@@ -21822,7 +21822,7 @@ declare function isCanonical(text: string): boolean;
21822
21822
  * it stamps the `upg_version` field of every `.upg` file written by the SDK.
21823
21823
  * The `check:version-lockstep` gate enforces this at release time.
21824
21824
  */
21825
- declare const UPG_VERSION: "0.12.2";
21825
+ declare const UPG_VERSION: "0.12.4";
21826
21826
  /**
21827
21827
  * The `.upg` JSON document format version. Written to the `upg_version` field.
21828
21828
  * Evolves independently from `UPG_VERSION` (the catalogue version).