T-GCIL-relation-entity
Status: planning/proposed · Impact: medium · Complexity: large
SDLC has no typed edge between capabilities — depends_on is task-only and
related is untyped. Stand up Relation as the dependency-intent edge —
the allowed direction of dependency between two Capabilities, the one edge
kind code can violate — gated on its first consuming projection per the
D-ORMG activation rule (D-3PDM-cross-project-data-model-adoption P5 as
amended 2026-07-17, finding F7).
Proposed
Section titled “Proposed”- Full S-0005 package at
plugin/lib/model/entities/relation/:relation_type: depends_on(single value at birth; a negative form likemust_not_depend_onmay join under consumer pressure),from_id/to_idcapability wikilinks, freeform body; base-36 ids; create/preview-id ops; registry rows plusidentifier.ts{ RL, relations, base36 }(D-0002-entity-identifier-shape already reservesRL). - The four code-fact edge types (
calls | emits | reads | writes) are deliberately NOT part of the schema — they duplicate derivable system information and arrive later as derived edges (fromlocations[]+ analysis), rendered distinctly and never stored (P5 amendment). - Ships with its first consumer: the capability-graph view (nodes =
capabilities via
parent_key, stored Relation edges rendered as intent) or an equivalent audit rendering. - Target consumer #2 (later): conformance checking — stored
depends_ondiffed against the derived call graph flags violations. - D-ORMG Relation row flips
planned → activeon ship.
Acceptance criteria
Section titled “Acceptance criteria”- AC-1:
sdlc relation createmints a valid instance; audit validates it. - AC-2: audit reports broken
from_id/to_idreferences (target must be a capability). - AC-3: the first consuming projection ships in the same milestone and renders Relation edges.
- AC-4: the D-ORMG Relation row is
active; the identifier gate acceptsRL-…ids. - AC-5: at least one real Relation instance exists in the corpus.
Out of scope
Section titled “Out of scope”- Contract (
CT) — stays deferred (3 donor instances, 1 broken). - Migrating existing prose wikilinks into Relation instances.
- Derived code-fact edges (
calls/emits/reads/writes) and the conformance diff — future work on the derived plane; never stored as entities.
Dependencies
Section titled “Dependencies”- Activation-gated: do not start until the consuming projection is scheduled
in the same milestone (D-ORMG activation rule). No hard
depends_ontoday.
Discovery context
Section titled “Discovery context”D-3PDM-cross-project-data-model-adoptionP5 / finding F7: the donor corpus holds 47 Relations (calls 24, depends_on 22) vs 3 Contracts — cheap edges got used; rich edges didn’t.- 2026-07-17 model review (P5 amendment): enum trimmed to dependency intent.
The donor’s 24 hand-authored
callsedges were copies of derivable facts — unverifiable at authoring time, drift-prone by construction; derive facts, store commitments.