Spec Studio

Planning truths live in ruled graph homes

spec:decisions.planning-truths-placementDecision Record · featureready floor ready

Packs: pack:self-hosting-v1

Design: no design entries · no pinned declarations · no decisions

Findings: no errors, no warnings

specs/decisions/planning-truths-placement.sdp.md

No open questions and no blocking questions; implementation binding none, verifier binding none, and expected-outcome oracle none.

Intent
outcome
Give every planning-truth type one ruled home in the graph so plans point to the graph for law and may keep advisory execution and recovery records, and the briefs index shape is retired as a carrier of law.
Decision
context
The prose briefs index carried dependency maps, decision gates, do-not-reopen rows, re-entry triggers, ownership rulings, selection-pressure heuristics, and session law, but none of those truth types had a ruled home in the graph, so plan documents drifted into carrying law the graph could not check.
decision
Each planning-truth type lives in its ruled home. Work-item dependency truth rides dependsOn edges, with independence as absence of the edge and scheduling phrases never authored. Decision gates live on decision-kind Specs, linked by decidedBy. Do-not-reopen rows split by what they carry: a tradeoff refusal becomes a decision-kind Spec, which a later decision that supersedes it replaces whole and a later decision that refines it narrows for one case, either under the ADR three-part test; a row that restates a behavior guarantee already homed on a carrying Spec stays on that Spec and changes by ordinary Spec revision; a hold stays a blocking open question on its own Spec and is never minted as a decision. A lawful non-decision stays in the plan record as evidence. A deferral carries its re-entry trigger in the trigger field of its own blocking open question, and declares dependsOn separately when a true precondition exists. Exclusive ownership is one Spec identity per deliverable with consumers depending on it. Selection-pressure heuristics are advisory only, carried as behavior rules on the graph-first planning Spec or in recipes. Session law splits separately, across behavior rules on the graph-first planning Spec, the delivery-session on-ramp's handoff rule, and the plan file. The briefs index shape is retired as a carrier of law.
rationale
  • The closed six-relation vocabulary already expresses every ruled home, so the ruling costs no engine work and keeps planning prose free of sequencing authority. New relation types such as precedes, inArc, or forbids were refused: each one is engine surface across the model, parser, extraction, validators, oracle rosters, and agent-surface docs, buying machine-checkable planning relations the corpus does not need. A constraint-kind home for refusals was refused because refusals are decisions. A single session-law home was refused because the planning Spec must not own per-session routing.
consequences
  • Plans point to the graph for law and may keep advisory execution and recovery records. Plan numbering, recorded work order and staleness never become graph structure or workflow authority. The do-not-reopen register lives across its ruled homes: tradeoff refusals in decision Specs, already-homed guarantees on their carrying Specs, and holds as blocking open questions. This ruling is replaced only by a later decision-kind Spec that supersedes it, or narrowed by one that refines it, and either passes the ADR three-part test.
  • A decision refines the Spec whose question it settles, and that Spec names the decision through decidedBy; a decision that narrows one part of another decision refines that decision.
  • A deferral that is itself a ruling stays on its decision Spec, which names its re-entry condition, rather than on a blocking open question: the MCP-deferred decision holds MCP integration, and the carried-evidence decision (MD-16) holds external doc: decision targets.
Verification

Verifier bindings

No verifier binding recorded.

Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
  • Test or oracle bindings: no recorded binding.
Requirement drawing for spec:decisions.planning-truths-placement
The diagram as text
  • spec:decisions.planning-truths-placement: Planning truths live in ruled graph homes · declared Spec
  • spec:decisions.roadmap-over-plans: Plan and review files stop carrying the delivery record once the roadmap and the pull request do · declared Spec
  • spec:decisions.roadmap-priority: A roadmap states advisory priority in the graph · declared Spec
  • spec:model.relations: Specs declare typed directed relations · declared Spec
  • spec:decisions.pack-markdown-carrier: Packs have a Markdown manifest carrier · declared Spec
  • impl:protocol.pack-aggregate: Pack aggregate and model references · anchored code · src/model/pack.ts:23
  • impl:protocol.pack-member-order: keeps manifest member order on the Pack node · anchored code · src/extract/derive.ts:153
  • spec:decisions.planning-truths-placement refines spec:model.relations · declared
  • spec:decisions.roadmap-over-plans refines spec:decisions.planning-truths-placement · declared — narrows what a plan file may still carry once a roadmap holds priority
  • spec:decisions.roadmap-priority refines spec:decisions.pack-markdown-carrier · declared — opens the closed Pack manifest envelope to one optional field, `order`
  • spec:decisions.roadmap-priority refines spec:decisions.planning-truths-placement · declared — narrows the refusal of recorded work order for one case, the advisory priority of a roadmap
  • impl:protocol.pack-aggregate references spec:decisions.roadmap-priority · anchored
  • impl:protocol.pack-member-order references spec:decisions.roadmap-priority · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because references require exact labels unavailable in requirement syntax.

Decisions

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:decisions.planning-truths-placement
Relations of spec:decisions.planning-truths-placementdecidedBy · declareddecidedBy · declareddecidedBy · declareddecidedBy · declaredrefines · declaredrefines · declaredrefines · declareddecidedBy · declareddecidedBy · declareddecidedBy · declaredOutgoing refinesspec:model.relationsSpecs declare typeddirected relations…model.relationsSubjectspec:decisions.planning-truths-placementPlanning truths live inruled graph homes…decisions.planning-truths-placementIncoming refinesspec:decisions.roadmap-over-plansPlan and review files stopcarrying the deliveryrecord once the roadmap andthe pull request do…decisions.roadmap-over-plansspec:decisions.roadmap-priorityA roadmap states advisorypriority in the graph…decisions.roadmap-priorityIncoming decidedByspec:consumers.adopter-on-rampAn adopter learns graphhomes, carrier grammar andshipped paths from theon-ramps…consumers.adopter-on-rampspec:consumers.delivery-session-on-rampDelivery sessions routework from current graphstate…consumers.delivery-session-on-rampspec:consumers.graph-first-planningThe next body of work isplanned from the graph, notfrom a prose index…consumers.graph-first-planningspec:consumers.impact-graph.symbol-reachExhaustive symbol reachwaits for alanguage-neutral identity…consumers.impact-graph.symbol-reachspec:model.open-question-fieldsAn open question may namewho decides it, its links,a provisional reading and are-entry trigger…model.open-question-fieldsspec:validation.superseded-decision-signalA Spec shaped by asuperseded decision warns…validation.superseded-decision-signal
The diagram as text
  • spec:consumers.adopter-on-ramp: An adopter learns graph homes, carrier grammar and shipped paths from the on-ramps
  • spec:consumers.delivery-session-on-ramp: Delivery sessions route work from current graph state
  • spec:consumers.graph-first-planning: The next body of work is planned from the graph, not from a prose index
  • spec:consumers.impact-graph.symbol-reach: Exhaustive symbol reach waits for a language-neutral identity
  • spec:decisions.planning-truths-placement: Planning truths live in ruled graph homes
  • spec:decisions.roadmap-over-plans: Plan and review files stop carrying the delivery record once the roadmap and the pull request do
  • spec:decisions.roadmap-priority: A roadmap states advisory priority in the graph
  • spec:model.open-question-fields: An open question may name who decides it, its links, a provisional reading and a re-entry trigger
  • spec:model.relations: Specs declare typed directed relations
  • spec:validation.superseded-decision-signal: A Spec shaped by a superseded decision warns
  • spec:decisions.planning-truths-placement refines spec:model.relations · declared
  • spec:consumers.adopter-on-ramp decidedBy spec:decisions.planning-truths-placement · declared
  • spec:consumers.delivery-session-on-ramp decidedBy spec:decisions.planning-truths-placement · declared
  • spec:consumers.graph-first-planning decidedBy spec:decisions.planning-truths-placement · declared
  • spec:consumers.impact-graph.symbol-reach decidedBy spec:decisions.planning-truths-placement · declared — that decision homes a deferral as a blocking open question on its own Spec, as symbol identity is here
  • spec:model.open-question-fields decidedBy spec:decisions.planning-truths-placement · declared — a deferral's re-entry trigger rides its own blocking question, the home that decision rules
  • spec:model.relations decidedBy spec:decisions.planning-truths-placement · declared — planning truths ride these six relation types, and new relation types were refused
  • spec:validation.superseded-decision-signal decidedBy spec:decisions.planning-truths-placement · declared — supersedes replaces a decision whole and refines narrows it
  • spec:decisions.roadmap-over-plans refines spec:decisions.planning-truths-placement · declared — narrows what a plan file may still carry once a roadmap holds priority
  • spec:decisions.roadmap-priority refines spec:decisions.planning-truths-placement · declared — narrows the refusal of recorded work order for one case, the advisory priority of a roadmap
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.

Rests on

Rested on by

Distance 1

Distance 2

Distance 3

Distance 4

Distance 5

Distance 6

Distance 7

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingSpecs declare typed directed relations
spec:model.relations · resolves
declaredNoneNone
decidedBy · incomingAn adopter learns graph homes, carrier grammar and shipped paths from the on-ramps
spec:consumers.adopter-on-ramp · resolves
declaredNoneNone
decidedBy · incomingDelivery sessions route work from current graph state
spec:consumers.delivery-session-on-ramp · resolves
declaredNoneNone
decidedBy · incomingThe next body of work is planned from the graph, not from a prose index
spec:consumers.graph-first-planning · resolves
declaredNoneNone
decidedBy · incomingExhaustive symbol reach waits for a language-neutral identity
spec:consumers.impact-graph.symbol-reach · resolves
declaredthat decision homes a deferral as a blocking open question on its own Spec, as symbol identity is hereNone
decidedBy · incomingAn open question may name who decides it, its links, a provisional reading and a re-entry trigger
spec:model.open-question-fields · resolves
declareda deferral's re-entry trigger rides its own blocking question, the home that decision rulesNone
decidedBy · incomingSpecs declare typed directed relations
spec:model.relations · resolves
declaredplanning truths ride these six relation types, and new relation types were refusedNone
decidedBy · incomingA Spec shaped by a superseded decision warns
spec:validation.superseded-decision-signal · resolves
declaredsupersedes replaces a decision whole and refines narrows itNone
refines · incomingPlan and review files stop carrying the delivery record once the roadmap and the pull request do
spec:decisions.roadmap-over-plans · resolves
declarednarrows what a plan file may still carry once a roadmap holds priorityNone
refines · incomingA roadmap states advisory priority in the graph
spec:decisions.roadmap-priority · resolves
declarednarrows the refusal of recorded work order for one case, the advisory priority of a roadmapNone

Bindings

Implementation binding: none

Design reference: none

Verifier binding: none

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

Composing (0)

Composing needs the script.