Edge-type registry22 canonical edge types
Canonical edge vocabulary for the GCC Build OS Decision Graph. Packs may reference these edge types but cannot extend the vocabulary (invariant I10). Every edge persists with state in {active, terminated} and a terminated_at column; revocation is event-driven state change, never DELETE (invariant I2). DAG-participating edges are validated together for acyclicity by invariant I6. Tenant scope is carried implicitly by tenant_id on every node (see decisions section); no belongs_to_tenant edge type exists.
| edge type | source → target | cardinality | DAG | states |
|---|---|---|---|---|
| depends_on | Decision, Capability, Milestone, Gate, Question → Decision, Capability, Milestone, Gate, Question | N:N | DAG | active, terminated |
| blocks | Decision, Capability, Milestone, Gate, Question → Decision, Capability, Milestone, Gate, Question | N:N | DAG | active, terminated |
| evidence_for | Question, Document, Answer → Decision | N:N | — | active, terminated |
| references | Document → Tenant, Function, Workstream, WorkstreamPack, Capability, Question, Answer, Decision, Milestone, Gate, TransitionWave, Risk, Assumption, Issue, Stakeholder, LegalEntity, Control, MaturityDimension, ProgrammeMemoryEvent | N:N | — | active, terminated |
| cites | Answer → Document | N:N | — | active, terminated |
| linked_to | Question, Capability, Risk, Assumption, Issue → Question, Capability, Risk, Assumption, Issue, Milestone | N:N | — | active, terminated |
| has_role_on | Stakeholder → Workstream, WorkstreamPack, Capability, Question, Decision, Milestone, Gate, TransitionWave, Risk, Assumption, Issue, Control, MaturityDimension, ProgrammeMemoryEvent, Document | N:N | — | active, terminated |
| captured_by | ProgrammeMemoryEvent → Stakeholder | N:1 | — | active, terminated |
| enables | Decision → Capability | N:N | — | active, terminated |
| sequenced_under | Capability → Milestone | N:N | — | active, terminated |
| moves_through | Capability → TransitionWave | N:N | — | active, terminated |
| supersedes | Decision → Decision | N:1 | DAG | active, terminated |
| invalidates | ProgrammeMemoryEvent → Assumption | N:N | DAG | active, terminated |
| annotated_by | Decision → ProgrammeMemoryEvent | N:N | — | active, terminated |
| mitigates | Control → Risk | N:N | — | active, terminated |
| targets | ProgrammeMemoryEvent → Document, Decision, Capability, Stakeholder, Milestone, Gate, Risk, Assumption, Issue | N:N | — | active, terminated |
| defines | WorkstreamPack → Workstream, Question, Capability, Decision, MaturityDimension, Gate, Milestone, Control | N:N | — | active, terminated |
| installed_into | WorkstreamPack → Tenant | N:1 | — | active, terminated |
| measured_along | Capability → MaturityDimension | N:N | — | active, terminated |
| affiliated_with | Stakeholder, Decision, Capability → LegalEntity | N:N | — | active, terminated |
| under_function | Workstream → Function | N:1 | — | active, terminated |
| provides_capability | Workstream → Capability | N:N | — | active, terminated |