problemA change proposal is addressed, based and checked before it lands
spec:consumers.intent-composition.proposalPacks: pack:design-iteration-v1, pack:design-management-v1, pack:self-hosting-v1
Design: 7 design entries · 2 pinned declarations · no decisions
Findings: no errors, no warnings
specs/consumers/intent-composition.proposal.sdp.md
No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
The original design's patch loop made every change from a view reviewable and checked before it touched source. A patch named its target, the graph hash it was made against, a rationale, its operations and who proposed it; a CLI checked its schema and its base, applied it to a copy of the graph, ran the validators and only then rewrote the Spec files (docs/lineage/v0-design/02-system-architecture.md §2; 07-spec-studio-and-projections.md §6). The Protocol refused the patch and the codemod. A view composes scoped intent, an agent edits source as a person would, git records the edit and the same checks evaluate it. That edit model drops two things the patch loop gave: a proposed change a person can review before an agent applies it, and a guard against a proposal made against an older design.
The first adopter's agents already write proposals in that shape. A design pass returns findings that each name an entry address or a Spec section, state the gap, and propose exact text for a Spec with the entry it replaces or follows (libar-platform/design/advisors/task-pass.md), and its register tool applies a JSON patch only after checking all of it (libar-platform/design/advisors/register.md). This Spec states the reviewable half of the patch loop without the codemod. A proposal is a request that an agent applies as an ordinary edit, checked by sdp validate on a worktree before it merges. It also gives the Spec Studio's composing panel a shape to hand off.
Intent
- A proposed design change travels as free prose, so a reviewer cannot tell what it touches, which version of the design it read, or whether it still applies once the design has moved.
outcome- Give a proposed design change a reviewable shape: what it touches by Spec id or entry address, the commit it was read at, the change requested and why, checked on a worktree before merge.
Contract
ruleline 25 ·specs/consumers/intent-composition.proposal.sdp.md:25- A proposal is one JSON document on one schema, which a recipe takes as a parameter; a Markdown memo is a rendering of that document and never a second source of it.
ruleline 26 ·specs/consumers/intent-composition.proposal.sdp.md:26- A proposal names its scope as one or more Spec ids or entry addresses, each resolved before anything is applied: a Spec id through the reader's Spec context, an entry address through address resolution.
ruleline 27 ·specs/consumers/intent-composition.proposal.sdp.md:27- A proposal names the commit whose graph it was read against.
ruleline 28 ·specs/consumers/intent-composition.proposal.sdp.md:28- A proposal states the requested change in words an agent can apply, such as the exact text for an entry with the address it replaces or follows, a new open question with its flag, or a relation to declare or remove.
ruleline 29 ·specs/consumers/intent-composition.proposal.sdp.md:29- A proposal states its reason in one line.
ruleline 30 ·specs/consumers/intent-composition.proposal.sdp.md:30- The proposal check compares each change's scope between the proposal's base commit and the working tree through the design diff, entry by entry, and reports each change on its own row, so one changed scope never hides the state of another change; the check applies nothing and routes nothing.
ruleline 31 ·specs/consumers/intent-composition.proposal.sdp.md:31- Applying a proposal is an ordinary source edit by an agent or a person; no tool rewrites a carrier from it, and nothing is applied to a copy of the graph first.
ruleline 32 ·specs/consumers/intent-composition.proposal.sdp.md:32- A proposal carries no status, approval or verdict, and the graph records none; whether it was accepted is git history and the adopter's own record.
ruleline 33 ·specs/consumers/intent-composition.proposal.sdp.md:33- A proposal carries no proposer. Whoever hands it over is its author until it is applied, and then git authorship and co-author trailers are the record; the schema refuses the field.
9 unkeyed rules.
Design
proposalDocumentline 37 ·specs/consumers/intent-composition.proposal.sdp.md:37{ "schema": "sdp-proposal/1", "base": "<commit>", "reason": "<one line>", "changes": [change] }, withschema,base,reasonand a non-emptychangesrequired and no other field.no citation recorded
proposalChangeline 38 ·specs/consumers/intent-composition.proposal.sdp.md:38{ "scope": ["<spec id or entry address>"], "request": "<words an agent can apply>", "text": "<exact entry text>", "replaces": "<entry address>", "follows": "<entry address>", "relation": { "action": "declare", "from": "<spec id>", "type": "dependsOn", "target": "<spec id>" }, "reason": "<one line>" }, withscopenon-empty andrequestrequired,replacesandfollowsexclusive,actioneitherdeclareorremove,fromnaming the relation's source Spec, and no other field.no citation recorded
proposalSchemaFileline 39 ·specs/consumers/intent-composition.proposal.sdp.md:39- the package ships the document's JSON Schema as
schemas/sdp-proposal-1.schema.json, so an agent can use it as a structured-output schema; the check recipe validates the same shape itself, and a test holds the two to the same accepted and refused samples. checkRecipeline 40 ·specs/consumers/intent-composition.proposal.sdp.md:40- recipe 38, the proposal check, takes
params.proposalandparams.base, the base graph, and returns{ schemaProblems: [{ path, problem }], base, diagnostics, totals: { changes, moved, unresolved }, changes }, with the design diff'sdiagnosticsfor the Specs it compares; when the document breaks the schema or the base graph is missing it returns the problems and no change rows. checkedScopeline 41 ·specs/consumers/intent-composition.proposal.sdp.md:41- the check resolves and compares the deduplicated union of
scope,replaces,followsandrelation.from, and a change row'sscopereports that union, so an entry a change replaces or follows cannot move unseen. checkRowsline 42 ·specs/consumers/intent-composition.proposal.sdp.md:42- each change row is
{ index, scope: [{ ref, resolvesAtHead, resolvesAtBase, moved }], moved, relationTarget }; an item'smovedis true when its Spec is added or removed between the two graphs, and otherwise, for an entry address, when the entry's value is added, removed or changed, an order-only move leaving it false, or, for a whole Spec, when any of its parts changed or moved in order; the row'smovedis true when any item's is;relationTargetis{ ref, resolvesAtHead }for a declared relation and null otherwise. incomparableScopeline 43 ·specs/consumers/intent-composition.proposal.sdp.md:43- an item outside the common schema, or an otherwise unmoved whole-Spec item whose order across rules and flows one graph does not keep, carries
comparable: falseand areasonin place ofmoved; its row carriescomparable: falseand a nullmovedunless another item moved.
Verification
Verifier bindings
- test:protocol.proposal-schema-and-recipe · anchored · test anchor binding present ·
test/iteration-recipes.test.ts:1517External run evidence from
test/iteration-recipes.test.tsTest anchors:
test:protocol.context-bundle-recipe,test:protocol.design-diff-recipe,test:protocol.perspective-filter-recipe,test:protocol.proposal-schema-and-recipe. Specs verified by those bindings: spec:consumers.context-bundle, spec:consumers.design-diff, spec:consumers.intent-composition.proposal, spec:consumers.review-perspectives.Run 1: external run evidence from vitest 4.1.10
Build: CI 380 · Branch: feature/roadmap-and-slices-v0 · Commit: 34909918bf0be0e849959644401797191cae379f · Start: 2026-10-22T17:40:31.456Z · Stop: 2026-10-22T17:42:16.171Z
Name Suite Result Duration compares keyed values, keyed order and unkeyed sections while keeping bindings apart iteration loop: design diff passed 72.53 ms compares question fields by key, whole unkeyed questions, envelope fields and other sections iteration loop: design diff passed 30.62 ms reports added and removed Specs and Packs, filters the union of membership, and ignores source lines iteration loop: design diff passed 40.64 ms diagnoses required input and schema differences and compares common content iteration loop: design diff passed 12.84 ms runs the documented base-worktree procedure, preserves constant anchors, and compares HEAD iteration loop: design diff passed 24191.88 ms compares a keyed rule that becomes a flow at the same address iteration loop: design diff passed 40.12 ms compares new Design entries across schema versions when the base corpus has none iteration loop: design diff passed 20.7 ms diagnoses uncertain optional fields at base 0.9.0 and head 0.9.0 iteration loop: design diff passed 12.31 ms diagnoses uncertain optional fields at base 0.9.0 and head 0.10.0 iteration loop: design diff passed 14.37 ms diagnoses uncertain optional fields at base 0.10.0 and head 0.9.0 iteration loop: design diff passed 25.38 ms normalizes legacy rule markers in graphs with comparable rule-key capability iteration loop: design diff passed 14.26 ms invents no order across rules and flows from a legacy base iteration loop: design diff passed 24.92 ms compares a legacy base's keyed entries by order within each list iteration loop: design diff passed 28.06 ms reports proposal scopes outside the common schema as incomparable iteration loop: design diff passed 13.58 ms lists all authored reasons into and out of the planning subject in type/from/to order relation reasons in planning recipes passed 19.97 ms keeps dependency reasons in context-bundle footing relation reasons in planning recipes passed 9.01 ms matches every declared selector, combines requirements, and keeps authored order unless prioritized iteration loop: perspective filter passed 55.16 ms matches layers and contexts only through named bindings and keeps anchored matches apart iteration loop: perspective filter passed 32.84 ms reports malformed and unsupported selectors while applying understood ones iteration loop: perspective filter passed 33.17 ms keeps term addresses, term lines and key maps through the section cut iteration loop: context bundle passed 26.54 ms keeps questions and declarations in one place and member-example steps only in their member row iteration loop: context bundle passed 19.18 ms takes the declaration cut last only with addresses and keeps compact pointers and links iteration loop: context bundle passed 77.64 ms cuts a pinned dotted key to its line when it has no entry address iteration loop: context bundle passed 46.93 ms composes both scopes, dependency footing, declarations, example bindings and a perspective subset iteration loop: context bundle passed 24.38 ms takes all six whole-mode cuts in fixed order and counts the complete returned value including Unicode iteration loop: context bundle passed 45.42 ms keeps a pinned declaration whole through the sixth cut when its key contains a dot iteration loop: context bundle passed 18.09 ms reports invalid, missing, doubled and unknown scopes without a partial bundle iteration loop: context bundle passed 39.62 ms accepts term scopes and detects changed definitions through their authored keys iteration loop: proposal schema and check passed 27.58 ms holds the schema and recipe to the same accepted and refused documents iteration loop: proposal schema and check passed 115.66 ms checks the complete scope union, resolves both graphs, and reports each change independently iteration loop: proposal schema and check passed 18.38 ms agrees with recipe 35 on added, removed and changed entry values and on whole-Spec changes iteration loop: proposal schema and check passed 28.57 ms excludes anchor-only changes and requires the caller's base graph iteration loop: proposal schema and check passed 29.83 ms compares interleaved keyed rules and flows in their authored order and reports verifier changes apart iteration loop: comparison and budget edges passed 31.26 ms cuts example text once and preserves compact pointers after the sixth cut iteration loop: comparison and budget edges passed 32.28 ms reads the base graph and proposal from named JSON files through the real parameter seam iteration loop: comparison and budget edges passed 9.74 ms requires a test bound directly to an example before the bundle names it enabled iteration loop: example enablement passed 15.3 ms compares rule order by text and other anonymous collections as a whole iteration loop: anonymous collection order passed 25.17 ms keeps addresses in each place when narrative, example, question and section text are cut iteration loop: protected entry addresses passed 56.27 ms
Design view
Requirement drawing
The diagram as text
- spec:consumers.intent-composition.proposal: A change proposal is addressed, based and checked before it lands · declared Spec
- spec:consumers.intent-composition.proposal.memo: Recipe 49 renders a change proposal as the Markdown memo a person reviews · declared Spec
- spec:consumers.intent-composition.proposal.memo.shared: Recipe 49 and the composing panel write one memo for one proposal · declared Spec
- spec:consumers.intent-composition: Composed intent hands off on one proposal shape · declared Spec
- impl:protocol.proposal-memo-recipe: realizes the catalog proposal memo through its verbatim body check · anchored code ·
test/recipes.test.ts:7298 - impl:protocol.proposal-schema-and-recipe: realizes the shipped proposal schema and proposal check in the recipe catalog · anchored code ·
test/iteration-recipes.test.ts:1510 - impl:protocol.studio-proposal-contract: browser proposal shape and schema checks · anchored code ·
src/studio-elements/proposal.ts:1 - impl:protocol.studio-proposal-memo: renders proposal fields verbatim with fences that outgrow their content · anchored code ·
src/studio-elements/memo.ts:13 - oracle:protocol.studio-memo: oracle:protocol.studio-memo · anchored oracle binding ·
test/studio-s5.test.ts:262 - test:protocol.proposal-schema-and-recipe: test:protocol.proposal-schema-and-recipe · anchored test binding · binding present ·
test/iteration-recipes.test.ts:1517 - test:protocol.studio-memo-shared: test:protocol.studio-memo-shared · anchored test binding · binding present ·
test/studio-s5.test.ts:272 - spec:consumers.intent-composition.proposal refines spec:consumers.intent-composition · declared
- spec:consumers.intent-composition.proposal.memo refines spec:consumers.intent-composition.proposal · declared
- spec:consumers.intent-composition.proposal.memo.shared refines spec:consumers.intent-composition.proposal.memo · declared
- spec:consumers.intent-composition.proposal.memo.shared verifies spec:consumers.intent-composition.proposal.memo · declared
- impl:protocol.proposal-memo-recipe satisfies spec:consumers.intent-composition.proposal.memo · anchored
- impl:protocol.proposal-schema-and-recipe satisfies spec:consumers.intent-composition.proposal · anchored
- impl:protocol.studio-proposal-contract satisfies spec:consumers.intent-composition.proposal · anchored
- impl:protocol.studio-proposal-memo satisfies spec:consumers.intent-composition.proposal.memo · anchored
- oracle:protocol.studio-memo models spec:consumers.intent-composition.proposal.memo · anchored
- test:protocol.proposal-schema-and-recipe verifies spec:consumers.intent-composition.proposal · anchored
- test:protocol.studio-memo-shared verifies spec:consumers.intent-composition.proposal.memo.shared · anchored
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.
Decisions
No decision record named.
Runtime
component:protocol.studio-elements· optional browser behavior and proposal handoff ·src/studio-elements/index.ts:13· layer edge · context protocol Uses
component:protocol.projections· read-only output, layout and owned publication ·src/projections/design-review.ts:29· layer edge · context protocol component:protocol.reader· the typed graph contract and body evaluator ·src/reader/reader.ts:671· layer application · context protocol
impl:protocol.proposal-schema-and-recipe· realizes the shipped proposal schema and proposal check in the recipe catalog ·test/iteration-recipes.test.ts:1510Uses
None.
impl:protocol.studio-proposal-contract· browser proposal shape and schema checks ·src/studio-elements/proposal.ts:1Component:
component:protocol.studio-elements· optional browser behavior and proposal handoff ·src/studio-elements/index.ts:13· layer edge · context protocol Uses
None.
Runtime observation: not tracked.
Evidence
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Impact
The diagram as text
- spec:consumers.agent-surface.address-and-cycle-recipes: Address resolution and dependency cycles stay executable graph recipes
- spec:consumers.delivery-session-on-ramp: Delivery sessions route work from current graph state
- spec:consumers.design-diff: Designs are compared between a base commit and the working tree at entry grain
- spec:consumers.edit-model: Views compose scoped intent instead of patching canonical source
- spec:consumers.intent-composition: Composed intent hands off on one proposal shape
- spec:consumers.intent-composition.proposal: A change proposal is addressed, based and checked before it lands
- spec:consumers.intent-composition.proposal.memo: Recipe 49 renders a change proposal as the Markdown memo a person reviews
- spec:consumers.obsidian-vault.iteration: A design pass is followed and answered from the vault
- spec:consumers.spec-studio.intent-panel: A composing panel on every page gathers scoped intent for an agent
- spec:consumers.upgrade-kit.rule-key-proposal: The rule-key proposal keys every unkeyed rule as a change proposal
- spec:protocol.roadmap-replaces-plans: The Protocol reads its next work from its roadmap and keeps its delivery record in git and its pull requests
- spec:consumers.intent-composition.proposal dependsOn spec:consumers.agent-surface.address-and-cycle-recipes · declared — the check resolves entry-address scopes through address resolution
- spec:consumers.intent-composition.proposal dependsOn spec:consumers.design-diff · declared
- spec:consumers.intent-composition.proposal dependsOn spec:consumers.edit-model · declared
- spec:consumers.intent-composition.proposal refines spec:consumers.intent-composition · declared
- spec:consumers.delivery-session-on-ramp dependsOn spec:consumers.intent-composition.proposal · declared — the design loop hands its findings back as a change proposal checked against its base
- spec:consumers.obsidian-vault.iteration dependsOn spec:consumers.intent-composition.proposal · declared — intent composed in the vault hands off on the one proposal contract
- spec:consumers.spec-studio.intent-panel dependsOn spec:consumers.intent-composition.proposal · declared — the panel hands off a change proposal
- spec:consumers.upgrade-kit.rule-key-proposal dependsOn spec:consumers.intent-composition.proposal · declared — the recipe writes a change proposal in the shape the proposal check reads
- spec:protocol.roadmap-replaces-plans dependsOn spec:consumers.intent-composition.proposal · declared — a review's findings against Specs travel as a checked change proposal
- spec:consumers.intent-composition.proposal.memo refines spec:consumers.intent-composition.proposal · declared
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
Rests on
- refines · spec:consumers.intent-composition · stated ready, floor ready
- dependsOn · spec:consumers.agent-surface.address-and-cycle-recipes · stated ready, floor ready
- dependsOn · spec:consumers.design-diff · stated ready, floor ready
- dependsOn · spec:consumers.edit-model · stated ready, floor ready
Rested on by
Distance 1
- spec:consumers.delivery-session-on-ramp
Implementing units
impl:protocol.delivery-session-on-ramp·test/skills.test.ts:83
Referencing units
None.
Enabled verifiers: test:protocol.delivery-session-on-ramp
Packs: pack:self-hosting-v1
- spec:consumers.intent-composition.proposal.memo
Implementing units
impl:protocol.proposal-memo-recipe·test/recipes.test.ts:7298impl:protocol.studio-proposal-memo·src/studio-elements/memo.ts:13
Referencing units
None.
Enabled verifiers: spec:consumers.intent-composition.proposal.memo.shared
- spec:consumers.obsidian-vault.iteration
Implementing units
impl:protocol.vault-sync·src/projections/vault/sync.ts:98impl:protocol.vault-text·src/projections/vault/text.ts:30impl:protocol.vault-watch·src/cli/vault-command.ts:219
Referencing units
None.
Enabled verifiers: spec:consumers.obsidian-vault.iteration.watch-rewrites-changed-notes, spec:consumers.obsidian-vault.iteration.watch-source-anchor
- spec:consumers.spec-studio.intent-panel
Implementing units
impl:protocol.studio-compose·src/studio-elements/compose.ts:13impl:protocol.studio-frame·src/projections/studio/pages/frame.ts:6impl:protocol.studio-intent-panel·src/studio-elements/intent-panel.ts:51impl:protocol.studio-intent-panel-element·src/studio-elements/intent-panel-element.ts:14impl:protocol.studio-scenario-editor·src/studio-elements/scenario-editor.ts:17
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.intent-panel.refresh-keeps-intents, test:protocol.studio-intent-handoff
- spec:consumers.upgrade-kit.rule-key-proposal
Implementing units
impl:protocol.rule-key-proposal-recipe·test/upgrade-kit.test.ts:742
Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable, spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean
- spec:protocol.roadmap-replaces-plans
Implementing units
impl:protocol.roadmap-practice·test/check-self-hosting-gates.test.ts:52
Referencing units
None.
Enabled verifiers: test:protocol.roadmap-practice
Distance 2
- spec:consumers.graph-first-planning
Implementing units
impl:protocol.graph-first-planning·test/skills.test.ts:290
Referencing units
None.
Enabled verifiers: test:protocol.graph-first-planning
Packs: pack:self-hosting-v1
- spec:consumers.intent-composition.proposal.memo.shared
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-memo-shared
- spec:consumers.obsidian-vault.iteration.watch-rewrites-changed-notes
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.consumers.obsidian-vault.iteration.watch-rewrites-changed-notes
- spec:consumers.obsidian-vault.iteration.watch-source-anchor
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.consumers.obsidian-vault.iteration.watch-source-anchor
- spec:consumers.roadmap.memo
Implementing units
impl:protocol.roadmap-memo-recipe·test/roadmap.test.ts:27impl:protocol.studio-roadmap-page·src/projections/studio/pages/roadmap-page.ts:168
Referencing units
None.
Enabled verifiers: test:protocol.roadmap-memo-recipe, test:protocol.studio-roadmap-page
- spec:consumers.spec-studio.components
Implementing units
component:protocol.studio-elements·src/studio-elements/index.ts:13impl:protocol.studio-compose·src/studio-elements/compose.ts:13impl:protocol.studio-diagram-element·src/studio-elements/diagram.ts:23impl:protocol.studio-filter·src/studio-elements/filter.ts:25impl:protocol.studio-intent-panel-element·src/studio-elements/intent-panel-element.ts:14impl:protocol.studio-maturity-map·src/projections/studio/pages/maturity-map.ts:7impl:protocol.studio-pack-page·src/projections/studio/pages/pack-page.ts:68impl:protocol.studio-scenario-editor·src/studio-elements/scenario-editor.ts:17impl:protocol.studio-search-results·src/studio-elements/search-results.ts:95impl:protocol.studio-spec-structure·src/projections/studio/pages/spec-structure.ts:44impl:protocol.studio-verification-panels·src/projections/studio/pages/spec-verification.ts:74
Referencing units
None.
Enabled verifiers: test:protocol.studio-intent-handoff
- spec:consumers.spec-studio.intent-panel.refresh-keeps-intents
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-intents-refresh
- spec:consumers.spec-studio.verification-panels
Implementing units
impl:protocol.studio-run-rows·src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-verification-panels·src/projections/studio/pages/spec-verification.ts:74
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.verification-panels.rule-coverage, test:protocol.studio-panels
- spec:consumers.studio-on-ramp
Implementing units
impl:protocol.studio-on-ramp·test/skills.test.ts:1693
Referencing units
None.
Enabled verifiers: test:protocol.studio-on-ramp
- spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.rule-key-proposal.collision-and-unkeyable
- spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.rule-key-proposal.proposal-applies-clean
- spec:consumers.vault-on-ramp
Implementing units
impl:protocol.vault-on-ramp·test/skills.test.ts:1995
Referencing units
None.
Enabled verifiers: test:protocol.vault-on-ramp
- spec:protocol.delivery-record-cleanup
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
Distance 3
- spec:consumers.readiness-planner
Implementing units
impl:protocol.statement-queue-recipe·test/self-hosting-readiness-planner.test.ts:74
Referencing units
None.
Enabled verifiers: spec:consumers.readiness-planner.cycle-shares-a-round, spec:consumers.readiness-planner.decision-first, spec:consumers.readiness-planner.dependency-order, spec:consumers.readiness-planner.owner-question-holds
- spec:consumers.roadmap
Implementing units
impl:protocol.roadmap-recipe·test/roadmap.test.ts:20
Referencing units
None.
Enabled verifiers: spec:consumers.roadmap.blocking-part, spec:consumers.roadmap.buildable-part, spec:consumers.roadmap.built-work, spec:consumers.roadmap.design-part, spec:consumers.roadmap.drifting-part, spec:consumers.roadmap.missing-evidence, spec:consumers.roadmap.outside-parent, spec:consumers.roadmap.statement-order, spec:consumers.roadmap.statement-part, test:protocol.roadmap-recipe
- spec:consumers.spec-studio.diagrams
Implementing units
impl:protocol.studio-architecture-diagrams·src/projections/studio/diagrams/architecture.ts:4impl:protocol.studio-diagram-element·src/studio-elements/diagram.ts:23impl:protocol.studio-diagram-model·src/projections/studio/diagrams/model.ts:1impl:protocol.studio-diagrams·src/projections/studio/diagrams/svg.ts:73impl:protocol.studio-relation-diagrams·src/projections/studio/diagrams/bands.ts:10
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.diagrams.folds-by-context, spec:consumers.spec-studio.diagrams.folds-by-layer, spec:consumers.spec-studio.diagrams.within-bound, test:protocol.studio-diagram-core
- spec:consumers.spec-studio.page-elements
Implementing units
component:protocol.studio-elements·src/studio-elements/index.ts:13impl:protocol.studio-copy·src/studio-elements/copy.ts:22impl:protocol.studio-expander·src/studio-elements/expander.ts:16impl:protocol.studio-filter·src/studio-elements/filter.ts:25impl:protocol.studio-search-form·src/studio-elements/search.ts:18impl:protocol.studio-search-results·src/studio-elements/search-results.ts:95impl:protocol.studio-stamp·src/studio-elements/stamp.ts:30
Referencing units
None.
Enabled verifiers: test:protocol.studio-copy-source, test:protocol.studio-page-elements
- spec:consumers.spec-studio.roadmap-page
Implementing units
impl:protocol.studio-roadmap-page·src/projections/studio/pages/roadmap-page.ts:168
Referencing units
None.
Enabled verifiers: test:protocol.studio-roadmap-page
- spec:consumers.spec-studio.verification-panels.rule-coverage
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-rule-coverage
Distance 4
- spec:consumers.design-slice
Implementing units
impl:protocol.design-slice-recipe·test/self-hosting-design-slice.test.ts:148
Referencing units
impl:protocol.studio-slice-answer·src/projections/studio/slice-answer.ts:1
Enabled verifiers: spec:consumers.design-slice.chain, spec:consumers.design-slice.component-absent, spec:consumers.design-slice.component-differing, spec:consumers.design-slice.component-matching, spec:consumers.design-slice.component-unreadable, spec:consumers.design-slice.component-unrelated, spec:consumers.design-slice.decision-backlink, spec:consumers.design-slice.dependency-cycle, spec:consumers.design-slice.folded-example, spec:consumers.design-slice.independent-example, spec:consumers.design-slice.outside-components, spec:consumers.design-slice.outside-holding, spec:consumers.design-slice.outside-satisfied, spec:consumers.design-slice.outside-unbound, test:protocol.design-slice
- spec:consumers.projections-model.roadmap-views
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
- spec:consumers.readiness-planner.cycle-shares-a-round
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.cycle-shares-a-round
- spec:consumers.readiness-planner.decision-first
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.decision-first
- spec:consumers.readiness-planner.dependency-order
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.dependency-order
- spec:consumers.readiness-planner.owner-question-holds
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.owner-question-holds
- spec:consumers.roadmap.blocking-part
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.blocking-part
- spec:consumers.roadmap.buildable-part
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.buildable-part
- spec:consumers.roadmap.built-work
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.built-work
- spec:consumers.roadmap.design-part
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.design-part
- spec:consumers.roadmap.drifting-part
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.drifting-part
- spec:consumers.roadmap.missing-evidence
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.missing-evidence
- spec:consumers.roadmap.outside-parent
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.outside-parent
- spec:consumers.roadmap.statement-order
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.statement-order
- spec:consumers.roadmap.statement-part
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.roadmap.statement-part
- spec:consumers.spec-studio.diagram-kinds
Implementing units
impl:protocol.studio-architecture-lens·src/projections/studio/pages/architecture-page.ts:50impl:protocol.studio-capability-diagrams·src/projections/studio/diagrams/capability.ts:101impl:protocol.studio-diagram-layout·src/projections/studio/diagrams/layout.ts:140impl:protocol.studio-diagram-source·src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams·src/projections/studio/diagrams/svg.ts:73impl:protocol.studio-maturity-map·src/projections/studio/pages/maturity-map.ts:7impl:protocol.studio-requirement-diagram·src/projections/studio/diagrams/requirement.ts:12impl:protocol.studio-slice-architecture·src/projections/studio/diagrams/slice.ts:219impl:protocol.studio-slice-dependencies·src/projections/studio/diagrams/slice.ts:10
Referencing units
None.
Enabled verifiers: test:protocol.studio-diagram-catalog
- spec:consumers.spec-studio.diagram-kinds.edge-routing
Implementing units
impl:protocol.studio-diagram-routing·src/projections/studio/diagrams/routing.ts:38impl:protocol.studio-diagrams·src/projections/studio/diagrams/svg.ts:73
Referencing units
None.
Enabled verifiers: test:protocol.studio-diagram-core
- spec:consumers.spec-studio.diagram-kinds.legibility
Implementing units
impl:protocol.studio-diagram-element·src/studio-elements/diagram.ts:23impl:protocol.studio-diagram-layout·src/projections/studio/diagrams/layout.ts:140impl:protocol.studio-diagrams·src/projections/studio/diagrams/svg.ts:73
Referencing units
None.
Enabled verifiers: test:protocol.studio-diagram-core
- spec:consumers.spec-studio.diagram-kinds.mermaid-source
Implementing units
impl:protocol.studio-diagram-source·src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams·src/projections/studio/diagrams/svg.ts:73
Referencing units
None.
Enabled verifiers: test:protocol.studio-diagram-core
- spec:consumers.spec-studio.diagrams.folds-by-context
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-diagram-folds-context
- spec:consumers.spec-studio.diagrams.folds-by-layer
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-diagram-folds-layer
- spec:consumers.spec-studio.diagrams.within-bound
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-diagram-within-bound
- spec:consumers.spec-studio.lenses.architecture
Implementing units
impl:protocol.studio-architecture-lens·src/projections/studio/pages/architecture-page.ts:50
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.lenses.architecture.planned-apart, test:protocol.studio-architecture-maturity-requirement
- spec:consumers.spec-studio.owner-queue
Implementing units
impl:protocol.studio-owner-queue·src/projections/studio/pages/queue-page.ts:9
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.owner-queue.dependency-first
- spec:consumers.spec-studio.slice-page
Implementing units
impl:protocol.studio-slice-page·src/projections/studio/pages/slice-page.ts:25
Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-page
- spec:consumers.spec-studio.spec-page
Implementing units
impl:protocol.studio-requirement-view·src/projections/studio/pages/requirement-view.ts:8impl:protocol.studio-spec-page·src/projections/studio/pages/spec-page.ts:201impl:protocol.studio-spec-structure·src/projections/studio/pages/spec-structure.ts:44
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.spec-page.cited-declaration, test:protocol.studio-architecture-maturity-requirement, test:protocol.studio-panels
- spec:consumers.upgrade-kit
Implementing units
impl:protocol.upgrade-guide·test/upgrade-kit.test.ts:87
Referencing units
None.
Enabled verifiers: test:protocol.upgrade-guide
Distance 5
- spec:consumers.design-slice.chain
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.chain
- spec:consumers.design-slice.component-absent
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.component-absent
- spec:consumers.design-slice.component-differing
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.component-differing
- spec:consumers.design-slice.component-matching
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.component-matching
- spec:consumers.design-slice.component-unreadable
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.component-unreadable
- spec:consumers.design-slice.component-unrelated
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.component-unrelated
- spec:consumers.design-slice.decision-backlink
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.decision-backlink
- spec:consumers.design-slice.dependency-cycle
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.dependency-cycle
- spec:consumers.design-slice.folded-example
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.folded-example
- spec:consumers.design-slice.independent-example
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.independent-example
- spec:consumers.design-slice.outside-components
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.outside-components
- spec:consumers.design-slice.outside-holding
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.outside-holding
- spec:consumers.design-slice.outside-satisfied
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.outside-satisfied
- spec:consumers.design-slice.outside-unbound
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-slice.outside-unbound
- spec:consumers.spec-studio.capability-map-page
Implementing units
impl:protocol.studio-capabilities-page·src/projections/studio/pages/capabilities-page.ts:78impl:protocol.studio-filter·src/studio-elements/filter.ts:25impl:protocol.studio-frame·src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page·src/projections/studio/pages/index-page.ts:8
Referencing units
None.
Enabled verifiers: test:protocol.studio-capabilities
- spec:consumers.spec-studio.diagram-kinds.capability-tree
Implementing units
impl:protocol.studio-capability-diagrams·src/projections/studio/diagrams/capability.ts:101impl:protocol.studio-diagram-source·src/projections/studio/diagrams/mermaid.ts:13
Referencing units
None.
Enabled verifiers: test:protocol.studio-capabilities
- spec:consumers.spec-studio.diagram-kinds.dependency
Implementing units
impl:protocol.studio-slice-dependencies·src/projections/studio/diagrams/slice.ts:10
Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-dependency
- spec:consumers.spec-studio.diagram-kinds.maturity-picture
Implementing units
impl:protocol.studio-maturity-map·src/projections/studio/pages/maturity-map.ts:7
Referencing units
None.
Enabled verifiers: test:protocol.studio-architecture-maturity-requirement
- spec:consumers.spec-studio.diagram-kinds.requirement-trace
Implementing units
impl:protocol.studio-requirement-diagram·src/projections/studio/diagrams/requirement.ts:12impl:protocol.studio-requirement-view·src/projections/studio/pages/requirement-view.ts:8
Referencing units
None.
Enabled verifiers: test:protocol.studio-architecture-maturity-requirement, test:protocol.studio-diagram-core
- spec:consumers.spec-studio.diagram-kinds.scoped-architecture
Implementing units
impl:protocol.studio-slice-architecture·src/projections/studio/diagrams/slice.ts:219
Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-architecture
- spec:consumers.spec-studio.export
Implementing units
impl:protocol.studio-diagram-element·src/studio-elements/diagram.ts:23impl:protocol.studio-expander·src/studio-elements/expander.ts:16impl:protocol.studio-pack-export·src/projections/studio/pages/export-page.ts:35impl:protocol.studio-pack-page·src/projections/studio/pages/pack-page.ts:68
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.export.self-contained, test:protocol.studio-intent-handoff
- spec:consumers.spec-studio.lenses.architecture.planned-apart
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-architecture-planned-apart
- spec:consumers.spec-studio.lenses.architecture.unit-register
Implementing units
impl:protocol.studio-unit-register·src/projections/studio/pages/architecture-register.ts:7
Referencing units
None.
Enabled verifiers: test:protocol.studio-architecture-maturity-requirement
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1, pack:spec-studio-v1
- spec:consumers.spec-studio.owner-queue.dependency-first
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-queue-dependency-first
- spec:consumers.spec-studio.spec-page.cited-declaration
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-cited-declaration
- spec:consumers.spec-studio.spec-page.core
Implementing units
impl:protocol.studio-spec-page·src/projections/studio/pages/spec-page.ts:201
Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
- spec:consumers.structural-mermaid
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
- spec:consumers.upgrade-kit.capability-adoption
Implementing units
impl:protocol.capability-adoption-recipe·test/upgrade-kit.test.ts:514
Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
Distance 6
- spec:consumers.spec-studio.export.self-contained
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-export-contained
- spec:consumers.spec-studio.pack-page.maturity-map
Implementing units
impl:protocol.studio-maturity-map·src/projections/studio/pages/maturity-map.ts:7
Referencing units
None.
Enabled verifiers: test:protocol.studio-architecture-maturity-requirement, test:protocol.studio-panels
- spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | Address resolution and dependency cycles stay executable graph recipesspec:consumers.agent-surface.address-and-cycle-recipes · resolves | declared | the check resolves entry-address scopes through address resolution | None |
| dependsOn · outgoing | Designs are compared between a base commit and the working tree at entry grainspec:consumers.design-diff · resolves | declared | None | None |
| dependsOn · outgoing | Views compose scoped intent instead of patching canonical sourcespec:consumers.edit-model · resolves | declared | None | None |
| refines · outgoing | Composed intent hands off on one proposal shapespec:consumers.intent-composition · resolves | declared | None | None |
| dependsOn · incoming | Delivery sessions route work from current graph statespec:consumers.delivery-session-on-ramp · resolves | declared | the design loop hands its findings back as a change proposal checked against its base | None |
| dependsOn · incoming | A design pass is followed and answered from the vaultspec:consumers.obsidian-vault.iteration · resolves | declared | intent composed in the vault hands off on the one proposal contract | None |
| dependsOn · incoming | A composing panel on every page gathers scoped intent for an agentspec:consumers.spec-studio.intent-panel · resolves | declared | the panel hands off a change proposal | None |
| dependsOn · incoming | The rule-key proposal keys every unkeyed rule as a change proposalspec:consumers.upgrade-kit.rule-key-proposal · resolves | declared | the recipe writes a change proposal in the shape the proposal check reads | None |
| dependsOn · incoming | The Protocol reads its next work from its roadmap and keeps its delivery record in git and its pull requestsspec:protocol.roadmap-replaces-plans · resolves | declared | a review's findings against Specs travel as a checked change proposal | None |
| refines · incoming | Recipe 49 renders a change proposal as the Markdown memo a person reviewsspec:consumers.intent-composition.proposal.memo · resolves | declared | None | None |
Bindings
Implementation binding: present
impl:protocol.proposal-schema-and-recipe· realizes the shipped proposal schema and proposal check in the recipe catalog ·test/iteration-recipes.test.ts:1510· role contract impl:protocol.studio-proposal-contract· browser proposal shape and schema checks ·src/studio-elements/proposal.ts:1· role contract · component component:protocol.studio-elements· layer edge · context protocol
Design reference: none
Verifier binding: present
- test:protocol.proposal-schema-and-recipe · anchored ·
test/iteration-recipes.test.ts:1517· test anchor
Expected-outcome oracle: none
Runtime observation: not tracked.
Run results: not recorded in the graph.
Findings
None.
Composing (0)
Composing needs the script.