actorDesigns are compared between a base commit and the working tree at entry grain
spec:consumers.design-diffChanged since the base graph base da4b141: behavior.rules[9]; design.packRows; relation.decidedBy:spec:decisions.roadmap-priority
Base input: schema 0.11.0, 405 Specs.
Packs: pack:design-iteration-v1, pack:design-management-v1, pack:self-hosting-v1
Design: 8 design entries · 4 pinned declarations · 1 decision
Findings: no errors, no warnings
specs/consumers/design-diff.sdp.md
No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
The original design compared graph snapshots. Comparison concerns the curated graph a design lives in and needs no symbol identity.
Iterating on a design asks what changed since the last reading. The first adopter asks for a comparison by Spec id, section and entry key that tells changed declaration text from changed prose, moved entries, readiness edits, relation edits and new or removed examples, and for what changed since a design pass, read against the commit that pass read (libar-platform/docs/feedback/sdp-feedback-02.md, items 30 and 31). Git shows the changed lines; this comparison shows the changed design.
Intent
- A reviewer or an agent starting the next design pass over a Pack, holding the commit the last pass read.
problem- A line diff of the carriers shows edits but not which Specs, entries, questions and relations changed, so each pass re-reads the whole Pack to find what moved.
outcome- Show what changed in a design between a base commit and the working tree, down to the Spec, section and keyed entry, so a reviewer reads what changed since the last pass.
Behavior
ruleline 28 ·specs/consumers/design-diff.sdp.md:28- The design diff compares a base graph with the current graph.
ruleline 29 ·specs/consumers/design-diff.sdp.md:29- A comparison is a catalog recipe that takes the graph
sdp buildwrote at the base commit as a recipe parameter and compares it with the graph the evaluation derives from the working tree, including uncommitted edits; it adds no verb or binding. ruleline 30 ·specs/consumers/design-diff.sdp.md:30- The base graph is input the caller holds, derived from the repository alone at the base commit; it never answers in the graph's name, and the comparison writes nothing.
ruleline 31 ·specs/consumers/design-diff.sdp.md:31- The caller always names the base. The recipe reads no record of a design pass and keeps none, and a corpus that notes which commit a pass read keeps that note outside the graph.
ruleline 32 ·specs/consumers/design-diff.sdp.md:32- Two graphs written by different engine versions are compared on what both carry; the result reports each side's schema version, and a difference is a diagnostic in the result, never a refusal.
ruleline 33 ·specs/consumers/design-diff.sdp.md:33- It reports the Specs added and removed, and for a Spec present in both graphs the changes to its title, kind, altitude, stated readiness, relations, narrative and each section.
ruleline 34 ·specs/consumers/design-diff.sdp.md:34- Inside the Design and UI sections, the open questions and other keyed sections apart from rules and flows, it compares keyed entries by key and reports each as added, removed, changed in value or moved in order.
ruleline 35 ·specs/consumers/design-diff.sdp.md:35- Rule and flow entries match first by unchanged text, preferring the same key for repeated wording, then by retained key; remaining unkeyed base entries pair in list order, including an entry reworded while adding a key. An unmatched keyed base entry is removed, and an unmatched head entry is added. Other unkeyed entries have no identity across the two graphs and compare as part of their whole section.
ruleline 36 ·specs/consumers/design-diff.sdp.md:36- A rule or flow with unchanged text whose key was added, removed or changed is one
keyedchange naming its old and new address, or none; only a text change ischanged. An unchanged entry moving between rules and flows ismoved; when one graph keeps no order across rules and flows, keyed entries compare by order within each list and aruleOrderdiagnostic names the Spec. ruleline 37 ·specs/consumers/design-diff.sdp.md:37- It reports changes to Pack membership, member order and what a Pack's order means, and to the code units, verifiers and delivery facts bound to each Spec, kept apart from the authored changes because they derive from anchors.
ruleline 38 ·specs/consumers/design-diff.sdp.md:38- A comparison states facts about the two graphs and confers nothing. It grants no approval, raises no staleness flag, moves no readiness and never records that a pass happened.
11 unkeyed rules.
Design
diffRecipeline 42 ·specs/consumers/design-diff.sdp.md:42- recipe 35, the design diff, takes
params.base, the graph objectsdp buildwrote at the base commit, an optionalparams.packthat limits the comparison to the Specs that are members of that Pack at either commit, andparams.detail; it comparesparams.basewith thegraphbinding and reads nothing else. diffShapeline 43 ·specs/consumers/design-diff.sdp.md:43{ base: { schemaVersion, specs }, head: { schemaVersion, specs }, diagnostics, totals, specs: { added: [id], removed: [id], changed }, packs, bindings, leftOut }, wheretotalscounts each list anddiagnosticslists schema-version differences, parts outside the common schema, a Pack absent from both graphs, and Specs compared without order across rules and flows;base.specsandhead.specscount the Specs of the comparison scope present on each side, the scope being every Spec or, withpack, the Pack's members in either graph, while the top-levelspecsobject carries the change lists.no citation recorded
changedSpecRowline 44 ·specs/consumers/design-diff.sdp.md:44{ id, parts: [part] }in the summary and{ id, parts: [{ part, change, from, to }] }withdetail: true;changeisadded,removed,changed,movedorkeyed. Forkeyed,fromandtocarry the old and new entry addresses,nullmeaning none; other changes carry the values on each side, a rule or flow value as{ list, text }. A text change while adding a key is onechangedentry.no citation recorded
diffPartsline 45 ·specs/consumers/design-diff.sdp.md:45- a part is
title,specKind,altitude,statedReadiness,narrative,relation.<type>:<target>, a keyed entry asdesign.<key>,ui.<key>,question.<key>,rule.<key>orterm.<term>, an unkeyed rule or flow asbehavior.rules[<index>]orbehavior.flows[<index>], using its head index; a removed unkeyed entry uses its base index with a(base)mark, such asbehavior.rules[1] (base), so it cannot share a name with a head entry at that index; an unkeyed question list asintent.openQuestions, and any other section as its name. movedEntryline 46 ·specs/consumers/design-diff.sdp.md:46- a keyed entry whose value is unchanged and whose position among the keyed entries of its section changed is
moved; an entry whose value changed ischangedwhatever its position. For rules and flows, unchanged text with a different key takeskeyedprecedence, then a list change or relative order change among retained entries ismoved; anonymous entries compare order within their list. Adding or removing a key alone moves no other entry. packRowsline 47 ·specs/consumers/design-diff.sdp.md:47packsrows are{ id, change, membersAdded, membersRemoved, reordered, orderChanged, orderBefore, orderAfter }for each Pack added, removed or changed in membership, member order or order meaning;orderBeforeandorderAfterare"reading"or"priority", null on a side where the Pack is absent, andorderChangedis true when both sides hold the Pack and the two differ. An absentorderreads as"reading"in every schema version; a value the head's engine does not know is outside the common schema, listed indiagnosticsand not compared; that Pack's membership and member order still compare, itsorderChangedis false, and the side holding the unknown value reads null.membersAddedandmembersRemovedkeep their respective manifest order.no citation recorded
bindingRowsline 48 ·specs/consumers/design-diff.sdp.md:48bindingsrows are{ id, implementedBy, referencedBy, verifiers, deliveryFacts }, each an{ added, removed }pair of ids or fact names, kept apart fromspecsbecause they derive from anchors.no citation recorded
baseRecipeline 49 ·specs/consumers/design-diff.sdp.md:49- The catalog shows how to derive the base graph in a worktree at the base commit with the corpus's exclusions. When constant-form anchors use relative engine imports, as in this repository, run the base worktree's own engine, then pass its
generated/graph.jsonasbaseand remove the worktree.
Verification
Verifier bindings
- test:protocol.design-diff-recipe · anchored · test anchor binding present ·
test/iteration-recipes.test.ts:34External 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 - test:protocol.roadmap-priority · checks Pack priority extraction, comparison and Studio change notes · anchored · test anchor binding present ·
test/roadmap-priority.test.ts:44External run evidence from
test/roadmap-priority.test.tsTest anchors:
test:protocol.roadmap-priority. Specs verified by those bindings: spec:carrier.markdown-pack-authoring, spec:consumers.design-diff, spec:consumers.spec-studio.diff-page, spec:consumers.spec-studio.pack-page, spec:extraction.pack-member-order, spec:model.pack-aggregate.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 derives equal Markdown and TypeScript Pack nodes and edges, serializes order last, and exposes it through the reader roadmap priority manifest passed 47.3 ms refuses the invalid Markdown value reading roadmap priority manifest passed 1.58 ms refuses the invalid Markdown value arbitrary roadmap priority manifest passed 1.33 ms refuses the invalid Markdown value true roadmap priority manifest passed 1.28 ms refuses the invalid Markdown value null roadmap priority manifest passed 1.65 ms refuses the invalid Markdown value [] roadmap priority manifest passed 1.21 ms refuses the invalid Markdown value {} roadmap priority manifest passed 1.24 ms refuses the invalid TypeScript value "reading" roadmap priority manifest passed 3.6 ms refuses the invalid TypeScript value "arbitrary" roadmap priority manifest passed 2.76 ms refuses the invalid TypeScript value true roadmap priority manifest passed 3.43 ms refuses the invalid TypeScript value null roadmap priority manifest passed 3.5 ms refuses the invalid TypeScript value [] roadmap priority manifest passed 2.87 ms refuses the invalid TypeScript value {} roadmap priority manifest passed 3.83 ms refuses the invalid TypeScript value undefined roadmap priority manifest passed 2.78 ms refuses the invalid TypeScript value chosenOrder roadmap priority manifest passed 3.35 ms names a removed Pack by its order meaning (priority true) roadmap priority design diff passed 14.29 ms names a removed Pack by its order meaning (priority false) roadmap priority design diff passed 12.82 ms names an added roadmap and preserves manifest order in its member delta roadmap priority design diff passed 17.33 ms labels Pack membership by its order meaning (priority true) roadmap priority design diff passed 8.11 ms labels Pack membership by its order meaning (priority false) roadmap priority design diff passed 5.46 ms states order values when a change is not a known roadmap transition roadmap priority design diff passed 4.7 ms documents the order comparison fields, default and diagnostic in the recipe contract roadmap priority design diff passed 1.09 ms compares a priority transition to true without a membership edit roadmap priority design diff passed 3.05 ms compares a priority transition to false without a membership edit roadmap priority design diff passed 2.22 ms reads an absent order as reading order in a base schema that predates the field roadmap priority design diff passed 7.31 ms marks the absent side of an added or removed roadmap as null (true) roadmap priority design diff passed 2.44 ms marks the absent side of an added or removed roadmap as null (false) roadmap priority design diff passed 2.06 ms diagnoses an unknown order at the base without reporting an order change roadmap priority design diff passed 1.69 ms diagnoses an unknown order at the head without reporting an order change roadmap priority design diff passed 1.71 ms still compares membership and member order when the base order is unknown roadmap priority design diff passed 2.58 ms still compares membership and member order when the head order is unknown roadmap priority design diff passed 6.34 ms keeps an order-only change in the selected Pack's comparison scope roadmap priority design diff passed 3.01 ms shows no roadmap transition for a membership-only change (priority true) roadmap priority design diff passed 7.93 ms shows no roadmap transition for a membership-only change (priority false) roadmap priority design diff passed 6.63 ms shows the roadmap transition to true on the diff and Pack pages roadmap priority design diff passed 8.43 ms shows the roadmap transition to false on the diff and Pack pages roadmap priority design diff passed 6.96 ms
Design view
Requirement drawing
- Declared verifying examples: no declared verifying example.
The diagram as text
- spec:consumers.design-diff: Designs are compared between a base commit and the working tree at entry grain · declared Spec
- spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores · declared Spec
- impl:protocol.design-diff-recipe: realizes the design diff in the shipped recipe catalog · anchored code ·
test/iteration-recipes.test.ts:27 - test:protocol.design-diff-recipe: test:protocol.design-diff-recipe · anchored test binding · binding present ·
test/iteration-recipes.test.ts:34 - test:protocol.roadmap-priority: checks Pack priority extraction, comparison and Studio change notes · anchored test binding · binding present ·
test/roadmap-priority.test.ts:44 - spec:consumers.design-diff refines spec:consumers.projections-model · declared
- impl:protocol.design-diff-recipe satisfies spec:consumers.design-diff · anchored
- test:protocol.design-diff-recipe verifies spec:consumers.design-diff · anchored
- test:protocol.roadmap-priority verifies spec:consumers.design-diff · anchored
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred and chosen syntax: requirementDiagram; exact refines, satisfies and verifies, with claim words in nodes and per-edge comments.
Decisions
- A roadmap states advisory priority in the graph
A roadmap is a Pack whose manifest states
order: priority; its members' authored order is the corpus's advisory priority, first entry first.orderis an optional manifest field whose one lawful value ispriority, and a Pack without it keeps the reading order every Pack has. Priority is preference among bodies of work and nothing more: it carries no date, no dependency, no status and no gate, and no check, recipe or page treats a place on a roadmap as permission, obligation or sequence. Everything a roadmap shows about an entry, what it still needs and what holds it, is read from the graph each time. A corpus may keep several roadmaps, and a Spec may be listed on any number of them.
Runtime
impl:protocol.design-diff-recipe· realizes the design diff in the shipped recipe catalog ·test/iteration-recipes.test.ts:27Uses
None.
Runtime observation: not tracked.
Evidence
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Impact
- E4: constrainedBy · declared — equal sources derive equal graphs, so a difference records a source change
The diagram as text
- spec:consumers.agent-surface.recipe-parameters: Recipes take parameters as data and ship as runnable files
- 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.intent-composition.proposal: A change proposal is addressed, based and checked before it lands
- spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores
- spec:consumers.spec-studio.data.inputs: The Studio reads two named inputs beside the graph, a base graph and run records
- spec:consumers.spec-studio.diff-page: The diff page shows what changed in the design since a base graph
- spec:decisions.roadmap-priority: A roadmap states advisory priority in the graph
- spec:extraction.determinism: Committed source derives byte-identical output
- spec:consumers.design-diff constrainedBy spec:extraction.determinism · declared — equal sources derive equal graphs, so a difference records a source change
- spec:consumers.design-diff decidedBy spec:decisions.roadmap-priority · declared
- spec:consumers.design-diff dependsOn spec:consumers.agent-surface.recipe-parameters · declared — the base graph is supplied as recipe-parameter data, including the KEY=@PATH file form
- spec:consumers.design-diff refines spec:consumers.projections-model · declared
- spec:consumers.delivery-session-on-ramp dependsOn spec:consumers.design-diff · declared — the design loop starts from what changed since the last pass
- spec:consumers.intent-composition.proposal dependsOn spec:consumers.design-diff · declared
- spec:consumers.spec-studio.data.inputs dependsOn spec:consumers.design-diff · declared — the base graph input is the design diff's base
- spec:consumers.spec-studio.diff-page dependsOn spec:consumers.design-diff · declared — the page renders the design diff between the base graph and the graph built
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.projections-model · stated ready, floor ready
- dependsOn · spec:consumers.agent-surface.recipe-parameters · stated ready, floor ready
- constrainedBy · spec:extraction.determinism · stated ready, floor ready
- decidedBy · spec:decisions.roadmap-priority · 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
Implementing units
impl:protocol.proposal-schema-and-recipe·test/iteration-recipes.test.ts:1510impl:protocol.studio-proposal-contract·src/studio-elements/proposal.ts:1
Referencing units
None.
Enabled verifiers: test:protocol.proposal-schema-and-recipe
Packs: pack:design-iteration-v1, pack:design-management-v1, pack:self-hosting-v1
- spec:consumers.spec-studio.data.inputs
Implementing units
impl:protocol.studio-base-input·src/cli/studio-inputs.ts:9impl:protocol.studio-command·src/cli/studio-command.ts:106impl:protocol.studio-inputs·src/projections/studio/inputs.ts:1
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.data.inputs.both-given, spec:consumers.spec-studio.data.inputs.graph-only
- spec:consumers.spec-studio.diff-page
Implementing units
impl:protocol.studio-diff·src/projections/studio/pages/diff-page.ts:91
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.diff-page.changed-entry, test:protocol.roadmap-priority
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
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.data.inputs.both-given
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-inputs-both-given
- spec:consumers.spec-studio.data.inputs.graph-only
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-graph-only
- spec:consumers.spec-studio.diff-page.changed-entry
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-diff-changed-entry
- 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.spec-studio.register-input
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
- spec:consumers.spec-studio.runs-page
Implementing units
impl:protocol.studio-run-rows·src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-runs-page·src/projections/studio/pages/runs-page.ts:6
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.runs-page.external-evidence
- 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.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
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 3
- 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.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.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.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.intent-panel.refresh-keeps-intents
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-intents-refresh
- spec:consumers.spec-studio.runs-page.external-evidence
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.run-external
- 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.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.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 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.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.export.self-contained
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-export-contained
- 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.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
- 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.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.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.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.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.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.dependency-first
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-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.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.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.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.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.structural-mermaid
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
- spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus
Distance 7
- 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
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| constrainedBy · outgoing | Committed source derives byte-identical outputspec:extraction.determinism · resolves | declared | equal sources derive equal graphs, so a difference records a source change | None |
| decidedBy · outgoing | A roadmap states advisory priority in the graphspec:decisions.roadmap-priority · resolves | declared | None | None |
| dependsOn · outgoing | Recipes take parameters as data and ship as runnable filesspec:consumers.agent-surface.recipe-parameters · resolves | declared | the base graph is supplied as recipe-parameter data, including the KEY=@PATH file form | None |
| refines · outgoing | Projections fan out from one graph without becoming truth storesspec:consumers.projections-model · resolves | declared | None | None |
| dependsOn · incoming | Delivery sessions route work from current graph statespec:consumers.delivery-session-on-ramp · resolves | declared | the design loop starts from what changed since the last pass | None |
| dependsOn · incoming | A change proposal is addressed, based and checked before it landsspec:consumers.intent-composition.proposal · resolves | declared | None | None |
| dependsOn · incoming | The Studio reads two named inputs beside the graph, a base graph and run recordsspec:consumers.spec-studio.data.inputs · resolves | declared | the base graph input is the design diff's base | None |
| dependsOn · incoming | The diff page shows what changed in the design since a base graphspec:consumers.spec-studio.diff-page · resolves | declared | the page renders the design diff between the base graph and the graph built | None |
Bindings
Implementation binding: present
impl:protocol.design-diff-recipe· realizes the design diff in the shipped recipe catalog ·test/iteration-recipes.test.ts:27· role projection
Design reference: none
Verifier binding: present
- test:protocol.design-diff-recipe · anchored ·
test/iteration-recipes.test.ts:34· test anchor - test:protocol.roadmap-priority · checks Pack priority extraction, comparison and Studio change notes · anchored ·
test/roadmap-priority.test.ts:44· 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.