Spec Studio

Design Review renders graph context without becoming a gate

spec:consumers.design-reviewUse Case / Behavior · featureready floor ready

Packs: pack:self-hosting-v1

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

Findings: no errors, no warnings

specs/consumers/design-review.sdp.md

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

Intent
outcome
Give a human a regenerable, contextual view for deciding how to state readiness without recording approval as graph truth.
Behavior
rule line 25 · specs/consumers/design-review.sdp.md:25
The Design Review renders a Spec or a Pack in context with its readiness, relations, bindings, authored open questions, verifier coverage gaps on Pack pages, and findings, all read from the graph.
rule line 26 · specs/consumers/design-review.sdp.md:26
The review is a pure projection that resolves through ordinary source edits, git, and conformance checks; it stores no findings and writes no canonical source.
rule line 27 · specs/consumers/design-review.sdp.md:27
A human may use the review context when stating readiness, while validators check only the structural readiness floor and never record or require review approval.
rule line 28 · specs/consumers/design-review.sdp.md:28
The view is deterministic generated Markdown with an index and pages for Specs and Packs; richer visual representations remain outside this behavior.
rule line 29 · specs/consumers/design-review.sdp.md:29
The page set is a function of the graph alone — it carries no timestamp, no commit, and no run identity — so two renders of the same corpus are byte-identical.
rule.linkTargets line 30 · specs/consumers/design-review.sdp.md:30
A link target percent-encodes each path segment and keeps directory separators and line fragments.

no example exercises it

rule.fieldEscaping line 31 · specs/consumers/design-review.sdp.md:31
Prose and table fields escape Markdown's structural characters.

no example exercises it

rule.openSectionList line 32 · specs/consumers/design-review.sdp.md:32
Each entry of a design or ui section renders as a list item in authored order with its key as inline code; a structured value renders as fenced JSON under its item.

no example exercises it

rule.inlineCode line 33 · specs/consumers/design-review.sdp.md:33
Inline code uses a backtick delimiter longer than any backtick run inside the value.

no example exercises it

rule line 34 · specs/consumers/design-review.sdp.md:34
An open question that carries a key opens with the key as inline code, #<key>, before its text.
rule line 35 · specs/consumers/design-review.sdp.md:35
A Spec page lists the code units that realize the Spec and, apart, the units that reference it, each with its file and line, its role and, for a component, its layer and context; a reference confers no implementation binding.
rule line 36 · specs/consumers/design-review.sdp.md:36
The renderer reads the reader and returns pages; writing them is the caller's job.

8 unkeyed rules.

Verifying examples

The view is the graph read twice, and the corpus is untouched by reading it · spec:consumers.design-review.pure-projection · ready floor ready

Executable Spec

Given an extraction root holding a Pack, its member Specs, and one member the checks warn about
When the Design Review renders the graph derived from that root
Then the page set holds the index page {indexPage: "index.md"}, one page per Spec, and one page per Pack
Then the page {packPage: "pack/orders-v1.md"} renders its members in context
Then the page {specPage: "spec/orders.create-order.empty-cart.md"} renders the finding {findingId: "conformance/verifies-linkage"} as data
Then a second render from a freshly derived graph is byte-identical: {byteIdentical: true}
Then the render leaves the extraction root byte-identical: {rootUntouched: true}

Open example

Example space

Given an extraction root holding a Pack, its member Specs, and one member the checks warn about
When the Design Review renders the graph derived from that root
Then the page set holds the index page {indexPage:string}, one page per Spec, and one page per Pack
Then the page {packPage:string} renders its members in context
Then the page {specPage:string} renders the finding {findingId:string} as data
Then a second render from a freshly derived graph is byte-identical: {byteIdentical:boolean}
Then the render leaves the extraction root byte-identical: {rootUntouched:boolean}
UI

The generated Design Review exposes three page anatomies from the same graph.

specPage line 41 · specs/consumers/design-review.sdp.md:41
A Spec page presents descriptors, the narrative, readiness, bindings, the authored sections, relations and findings in one context.
packPage line 42 · specs/consumers/design-review.sdp.md:42
A Pack page presents the Pack's design as its child spec:consumers.design-review.pack-design-page states.

Cited at

  • test/recipes.test.ts:3596
indexPage line 43 · specs/consumers/design-review.sdp.md:43
The index holds one Markdown table of Specs, a linked list of Packs and the findings table, with stable links into each page.
Verification

Verifier bindings

  • spec:consumers.design-review.pure-projection · The view is the graph read twice, and the corpus is untouched by reading it · declared · example enabled · specs/consumers/design-review.pure-projection.sdp.md

    External run evidence from test/self-hosting-projections.test.ts

    Test anchors: test:protocol.binding-language-views.bound-spec-page, test:protocol.binding-language-views.pack-member-table, test:protocol.derived-readiness-banner.dishonest-divergence, test:protocol.derived-readiness-banner.honest-headroom, test:protocol.derived-readiness-banner.idea-floor-unmet, test:protocol.design-review.pure-projection, test:protocol.diagnostic-rendering.composed-location, test:protocol.diagnostic-rendering.table-cell-location, test:protocol.wholesale-view-rewrite.build-invalidates-view, test:protocol.wholesale-view-rewrite.failed-run-view-removed, test:protocol.wholesale-view-rewrite.late-stale-page, test:protocol.wholesale-view-rewrite.stale-page-removed. Specs verified by those bindings: spec:consumers.binding-language-views, spec:consumers.binding-language-views.bound-spec-page, spec:consumers.binding-language-views.pack-member-table, spec:consumers.derived-readiness-banner, spec:consumers.derived-readiness-banner.dishonest-divergence, spec:consumers.derived-readiness-banner.honest-headroom, spec:consumers.design-review, spec:consumers.design-review.pure-projection, spec:consumers.wholesale-view-rewrite, spec:consumers.wholesale-view-rewrite.build-invalidates-view, spec:consumers.wholesale-view-rewrite.failed-run-view-removed, spec:consumers.wholesale-view-rewrite.late-stale-page, spec:consumers.wholesale-view-rewrite.stale-page-removed, spec:validation.diagnostic-rendering, spec:validation.diagnostic-rendering.composed-location, spec:validation.diagnostic-rendering.table-cell-location.

    Run 1: external run evidence from vitest 4.1.10

    Build: CI 391 · Branch: cursor/media-plan-and-articles-09b1 · Commit: 076cd4f1f85640d8236e5cca1bffffa68ab79a33 · Start: 2026-10-31T15:32:20.471Z · Stop: 2026-10-31T15:34:02.073Z

    NameSuiteResultDuration
    executes the bound example against a fresh worldThe view is the graph read twice, and the corpus is untouched by reading it (spec:consumers.design-review.pure-projection)passed99.39 ms
    executes the bound example against a fresh worldAn overstated rung raises the banner and names the clause that refused (spec:consumers.derived-readiness-banner.dishonest-divergence)passed2.14 ms
    executes the bound example against a fresh worldA rung the structure overshoots renders as information, not as a banner (spec:consumers.derived-readiness-banner.honest-headroom)passed1.17 ms
    renders a Spec whose idea floor is unmet with no rung and a below-idea bannernot recordedpassed0.85 ms
    executes the bound example against a fresh worldA fully bound Spec renders binding language on the page and in the index (spec:consumers.binding-language-views.bound-spec-page)passed1.85 ms
    executes the bound example against a fresh worldThe Pack member table speaks the page's binding language, not a shorthand (spec:consumers.binding-language-views.pack-member-table)passed1.91 ms
    executes the bound example against a fresh worldA page from an earlier run does not survive the next one (spec:consumers.wholesale-view-rewrite.stale-page-removed)passed7.25 ms
    executes the bound example against a fresh worldA page the build's invalidation never saw still does not survive the swap (spec:consumers.wholesale-view-rewrite.late-stale-page)passed4.19 ms
    executes the bound example against a fresh worldA run that cannot produce a current view leaves no view at all (spec:consumers.wholesale-view-rewrite.failed-run-view-removed)passed2.63 ms
    executes the bound example against a fresh worldA build that never renders still takes the old view down (spec:consumers.wholesale-view-rewrite.build-invalidates-view)passed2.79 ms
    executes the bound example against a fresh worldOne finding, three location shapes, one composition rule (spec:validation.diagnostic-rendering.composed-location)passed0.65 ms
    executes the bound example against a fresh worldThe same three location shapes, rendered as table cells (spec:validation.diagnostic-rendering.table-cell-location)passed0.43 ms

Example space

None.

Bound points

Oracle binding: none

Coverage

Unbound

None.

Design view

Requirement drawing

Requirement drawing for spec:consumers.design-review

Shown as text: this drawing exceeds the height budget of 2000 pixels after folding.

The diagram as text
  • spec:consumers.design-review: Design Review renders graph context without becoming a gate · declared Spec
  • spec:consumers.binding-language-views: Views speak binding language, never the internal fact name · declared Spec
  • spec:consumers.derived-readiness-banner: Derived readiness renders beside the stated rung and warns in one direction · declared Spec
  • spec:consumers.design-review.pack-design-page: A Pack page shows where the Pack's design stands · declared Spec
  • spec:consumers.design-review.pure-projection: The view is the graph read twice, and the corpus is untouched by reading it · declared Spec
  • spec:consumers.wholesale-view-rewrite: Every view run rewrites the view wholesale · declared Spec
  • spec:decisions.authored-entry-order: The Design Review renders open-section entries as a list · declared Spec
  • spec:decisions.question-key-rendering: The Design Review shows an open question's key · declared Spec
  • spec:consumers.binding-language-views.bound-spec-page: A fully bound Spec renders binding language on the page and in the index · declared Spec
  • spec:consumers.binding-language-views.pack-member-table: The Pack member table speaks the page's binding language, not a shorthand · declared Spec
  • spec:consumers.derived-readiness-banner.dishonest-divergence: An overstated rung raises the banner and names the clause that refused · declared Spec
  • spec:consumers.derived-readiness-banner.honest-headroom: A rung the structure overshoots renders as information, not as a banner · declared Spec
  • spec:consumers.wholesale-view-rewrite.build-invalidates-view: A build that never renders still takes the old view down · declared Spec
  • spec:consumers.wholesale-view-rewrite.failed-run-view-removed: A run that cannot produce a current view leaves no view at all · declared Spec
  • spec:consumers.wholesale-view-rewrite.late-stale-page: A page the build's invalidation never saw still does not survive the swap · declared Spec
  • spec:consumers.wholesale-view-rewrite.stale-page-removed: A page from an earlier run does not survive the next one · declared Spec
  • spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores · declared Spec
  • spec:decisions.shipped-projections-frozen: The shipped projections stay frozen · declared Spec
  • spec:decisions.pack-design-page: The Design Review's Pack page presents the Pack's design · declared Spec
  • impl:protocol.binding-language-index-table: renders binding presence in index and Pack tables · anchored code · src/projections/design-review-pages.ts:201
  • impl:protocol.binding-language-spec-page: renders implementation, verifier, oracle, and observation binding language · anchored code · src/projections/design-review-context.ts:95
  • impl:protocol.build-pipeline-emit: stages build outputs, checks determinism and invalidates projections · anchored code · src/cli/build-command.ts:251
  • impl:protocol.derived-readiness-banner: renders stated readiness beside the structural floor and dishonest divergence · anchored code · src/projections/design-review-context.ts:18
  • impl:protocol.design-review: renders the contextual Design Review projection · anchored code · src/projections/design-review.ts:44
  • impl:protocol.design-review-codec: shared Design Review Markdown paths and links · anchored code · src/projections/design-review-markdown.ts:3
  • impl:protocol.pack-design-page: renders the Pack page from the Pack design · anchored code · src/projections/design-review-pages.ts:120
  • impl:protocol.pack-design-sections: renders the Pack page's next-rung, boundary, question and code sections · anchored code · src/projections/design-review-pack-sections.ts:19
  • impl:protocol.wholesale-view-rewrite: publishes each Design Review as one wholesale temporary-directory replacement · anchored code · src/cli/validate-view-command.ts:128
  • test:protocol.binding-language-views.bound-spec-page: the bound-surface point verifies the rendered binding vocabulary · anchored test binding · binding present · test/self-hosting-projections.test.ts:789
  • test:protocol.binding-language-views.pack-member-table: the pack-member point verifies the aggregate half of the rendered binding vocabulary · anchored test binding · binding present · test/self-hosting-projections.test.ts:799
  • test:protocol.derived-readiness-banner.dishonest-divergence: the overstated-rung point verifies the banner and its first unmet clause · anchored test binding · binding present · test/self-hosting-projections.test.ts:461
  • test:protocol.derived-readiness-banner.honest-headroom: the understated-rung point verifies the one-direction bound on the banner · anchored test binding · binding present · test/self-hosting-projections.test.ts:482
  • test:protocol.derived-readiness-banner.idea-floor-unmet: a Spec below the idea floor renders the floor reached as none and the banner below idea · anchored test binding · binding present · test/self-hosting-projections.test.ts:518
  • test:protocol.design-review.pure-projection: the pure-projection point verifies the view's own law over a whole-pipeline root · anchored test binding · binding present · test/self-hosting-projections.test.ts:303
  • test:protocol.pack-design-page: the Pack page renders the Pack design in its fixed order · anchored test binding · binding present · test/design-review-pack-page.test.ts:8
  • test:protocol.wholesale-view-rewrite.build-invalidates-view: the build point verifies the up-front invalidation on a command that renders no view · anchored test binding · binding present · test/self-hosting-projections.test.ts:1064
  • test:protocol.wholesale-view-rewrite.failed-run-view-removed: the failed-run point verifies that an uncertifiable view is removed, not left readable · anchored test binding · binding present · test/self-hosting-projections.test.ts:1032
  • test:protocol.wholesale-view-rewrite.late-stale-page: the late-page point verifies that the swap itself evicts what invalidation missed · anchored test binding · binding present · test/self-hosting-projections.test.ts:996
  • test:protocol.wholesale-view-rewrite.stale-page-removed: the stale-page point verifies the wholesale rewrite of the view directory · anchored test binding · binding present · test/self-hosting-projections.test.ts:960
  • spec:consumers.binding-language-views refines spec:consumers.design-review · declared
  • spec:consumers.binding-language-views.bound-spec-page refines spec:consumers.binding-language-views · declared
  • spec:consumers.binding-language-views.bound-spec-page verifies spec:consumers.binding-language-views · declared
  • spec:consumers.binding-language-views.pack-member-table refines spec:consumers.binding-language-views · declared
  • spec:consumers.binding-language-views.pack-member-table verifies spec:consumers.binding-language-views · declared
  • spec:consumers.derived-readiness-banner refines spec:consumers.design-review · declared
  • spec:consumers.derived-readiness-banner.dishonest-divergence refines spec:consumers.derived-readiness-banner · declared
  • spec:consumers.derived-readiness-banner.dishonest-divergence verifies spec:consumers.derived-readiness-banner · declared
  • spec:consumers.derived-readiness-banner.honest-headroom refines spec:consumers.derived-readiness-banner · declared
  • spec:consumers.derived-readiness-banner.honest-headroom verifies spec:consumers.derived-readiness-banner · declared
  • spec:consumers.design-review refines spec:consumers.projections-model · declared
  • spec:consumers.design-review.pack-design-page refines spec:consumers.design-review · declared
  • spec:consumers.design-review.pure-projection refines spec:consumers.design-review · declared
  • spec:consumers.design-review.pure-projection verifies spec:consumers.design-review · declared
  • spec:consumers.wholesale-view-rewrite refines spec:consumers.design-review · declared
  • spec:consumers.wholesale-view-rewrite.build-invalidates-view refines spec:consumers.wholesale-view-rewrite · declared
  • spec:consumers.wholesale-view-rewrite.build-invalidates-view verifies spec:consumers.wholesale-view-rewrite · declared
  • spec:consumers.wholesale-view-rewrite.failed-run-view-removed refines spec:consumers.wholesale-view-rewrite · declared
  • spec:consumers.wholesale-view-rewrite.failed-run-view-removed verifies spec:consumers.wholesale-view-rewrite · declared
  • spec:consumers.wholesale-view-rewrite.late-stale-page refines spec:consumers.wholesale-view-rewrite · declared
  • spec:consumers.wholesale-view-rewrite.late-stale-page verifies spec:consumers.wholesale-view-rewrite · declared
  • spec:consumers.wholesale-view-rewrite.stale-page-removed refines spec:consumers.wholesale-view-rewrite · declared
  • spec:consumers.wholesale-view-rewrite.stale-page-removed verifies spec:consumers.wholesale-view-rewrite · declared
  • spec:decisions.authored-entry-order refines spec:consumers.design-review · declared
  • spec:decisions.authored-entry-order refines spec:decisions.shipped-projections-frozen · declared — carves out how the Design Review renders open-section entries, as a list in authored order
  • spec:decisions.pack-design-page refines spec:consumers.design-review.pack-design-page · declared
  • spec:decisions.question-key-rendering refines spec:consumers.design-review · declared
  • spec:decisions.question-key-rendering refines spec:decisions.shipped-projections-frozen · declared — carves out one change, an open question's key shown before its text
  • impl:protocol.binding-language-index-table satisfies spec:consumers.binding-language-views · anchored
  • impl:protocol.binding-language-spec-page satisfies spec:consumers.binding-language-views · anchored
  • impl:protocol.build-pipeline-emit satisfies spec:consumers.wholesale-view-rewrite · anchored
  • impl:protocol.derived-readiness-banner satisfies spec:consumers.derived-readiness-banner · anchored
  • impl:protocol.design-review satisfies spec:consumers.design-review · anchored
  • impl:protocol.design-review-codec satisfies spec:consumers.design-review · anchored
  • impl:protocol.pack-design-page satisfies spec:consumers.design-review.pack-design-page · anchored
  • impl:protocol.pack-design-sections references spec:consumers.design-review.pack-design-page · anchored
  • impl:protocol.wholesale-view-rewrite satisfies spec:consumers.wholesale-view-rewrite · anchored
  • test:protocol.binding-language-views.bound-spec-page verifies spec:consumers.binding-language-views.bound-spec-page · anchored
  • test:protocol.binding-language-views.pack-member-table verifies spec:consumers.binding-language-views.pack-member-table · anchored
  • test:protocol.derived-readiness-banner.dishonest-divergence verifies spec:consumers.derived-readiness-banner.dishonest-divergence · anchored
  • test:protocol.derived-readiness-banner.honest-headroom verifies spec:consumers.derived-readiness-banner.honest-headroom · anchored
  • test:protocol.derived-readiness-banner.idea-floor-unmet verifies spec:consumers.derived-readiness-banner · anchored
  • test:protocol.design-review.pure-projection verifies spec:consumers.design-review.pure-projection · anchored
  • test:protocol.pack-design-page verifies spec:consumers.design-review.pack-design-page · anchored
  • test:protocol.wholesale-view-rewrite.build-invalidates-view verifies spec:consumers.wholesale-view-rewrite.build-invalidates-view · anchored
  • test:protocol.wholesale-view-rewrite.failed-run-view-removed verifies spec:consumers.wholesale-view-rewrite.failed-run-view-removed · anchored
  • test:protocol.wholesale-view-rewrite.late-stale-page verifies spec:consumers.wholesale-view-rewrite.late-stale-page · anchored
  • test:protocol.wholesale-view-rewrite.stale-page-removed verifies spec:consumers.wholesale-view-rewrite.stale-page-removed · anchored

Decisions

  • Bindings are optional, plural, and may reference a design

    On a code anchor, satisfies is optional and plural; on a test anchor, verifies is plural and non-empty. The constant form accepts one ref(…) or a fresh array literal of them. Each resolving target confers its fact, and implemented stays a whole-Spec fact. An anchored edge references runs from a CodeNode to a Spec, from references?: readonly SpecId[] on a code anchor; it may target any Spec, decisions included, confers no delivery fact, moves no readiness floor, and the drift alarm ignores it. It says this code answers to that design without claiming to realize it: the unit follows the design without realizing any of its promises, or realizes part of a Spec whose remaining promises no unit yet realizes, so a change to the design asks the code to follow. A design that builds on existing code states that by a typed relation to the Spec the code satisfies, never by a reference from the code. A target named in both satisfies and references is an error. An identity-only code anchor, with no satisfies and no references, is lawful: it mints a CodeNode for structure and for byFile, and nothing else.

  • Architectural significance is annotated where it is realized

    Architectural significance is annotated on the anchor of the unit that realizes it. A code anchor may carry role, the architectural pattern the unit plays; a component: anchor may additionally carry layer, one of edge, application, domain, adapter, or infrastructure, and context, its bounded context. The component: anchor is anchored architecture: it is the declared component, and there is no separate architecture file, because the anchor sits where the component is realized. It is not the original design's declared Component that could exist before code; an unrealized component lives in Specs and never as an invented CodeNode. A role is a free, corpus-owned vocabulary whose taxonomy the census renders with counts from the graph; service, decider, projection, read-model, codec, contract, barrel, and utility are the lineage set, not a closed list. layer is a closed set, and a value outside it is an envelope error; layer or context on a non-component anchor is an envelope error. All three attributes are optional, and omission is lawful.

  • The Design Review renders open-section entries as a list

    The Design Review renders each entry of a design or ui section as a list item in authored order, its key as inline code. A string value renders as Markdown text through the prose escaping rule; a number or boolean renders as inline code; an array or object renders as a fenced JSON block nested under its item, so a structured value the TypeScript carrier admits survives without loss. The fenced-JSON rule of the Design Review stops covering an open section as a whole and keeps covering a structured value inside one entry. The freeze on the four shipped projections stands for everything else.

  • The Design Review shows an open question's key

    The Design Review renders an open question that carries a key with the key as inline code, #<key>, at the start of its item, before the question's text; a question without a key renders as its text. The freeze on the four shipped projections stands for everything else.

  • The shipped projections stay frozen

    Re-specifying the shipped Design Review, census, Mermaid, or Gherkin projection is refused. These four projections are the ruled read surfaces over the one graph. A later decision Spec that supersedes this one replaces the ruling whole; a decision Spec that refines this one narrows it for one projection or one rendering and leaves the rest frozen. Either passes the ADR three-part test.

Runtime
  • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol

    Uses

    • component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocol
    • component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocol
    • component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol
    • component:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
    • component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol
  • impl:protocol.design-review · renders the contextual Design Review projection · src/projections/design-review.ts:44

    Component: component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.design-review-codec · shared Design Review Markdown paths and links · src/projections/design-review-markdown.ts:3

    Component: component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · 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
Relations of spec:consumers.design-review
The diagram as text
  • spec:consumers.binding-language-views: Views speak binding language, never the internal fact name
  • spec:consumers.derived-readiness-banner: Derived readiness renders beside the stated rung and warns in one direction
  • spec:consumers.design-review: Design Review renders graph context without becoming a gate
  • spec:consumers.design-review.pack-design-page: A Pack page shows where the Pack's design stands
  • spec:consumers.design-review.pure-projection: The view is the graph read twice, and the corpus is untouched by reading it
  • spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores
  • spec:consumers.wholesale-view-rewrite: Every view run rewrites the view wholesale
  • spec:decisions.anchor-binding-grain: Bindings are optional, plural, and may reference a design
  • spec:decisions.architectural-annotation: Architectural significance is annotated where it is realized
  • spec:decisions.authored-entry-order: The Design Review renders open-section entries as a list
  • spec:decisions.question-key-rendering: The Design Review shows an open question's key
  • spec:decisions.shipped-projections-frozen: The shipped projections stay frozen
  • spec:validation.diagnostic-rendering: One diagnostic currency, its location composed from structured fields
  • spec:consumers.design-review decidedBy spec:decisions.anchor-binding-grain · declared — a Spec page lists the units that reference it apart from the units that realize it
  • spec:consumers.design-review decidedBy spec:decisions.architectural-annotation · declared — binding rows show a unit's role and a component's layer and context
  • spec:consumers.design-review decidedBy spec:decisions.authored-entry-order · declared — open-section entries render as a list in authored order
  • spec:consumers.design-review decidedBy spec:decisions.question-key-rendering · declared — a keyed open question shows its key before its text
  • spec:consumers.design-review decidedBy spec:decisions.shipped-projections-frozen · declared
  • spec:consumers.design-review refines spec:consumers.projections-model · declared
  • spec:validation.diagnostic-rendering dependsOn spec:consumers.design-review · declared
  • spec:consumers.binding-language-views refines spec:consumers.design-review · declared
  • spec:consumers.derived-readiness-banner refines spec:consumers.design-review · declared
  • spec:consumers.design-review.pack-design-page refines spec:consumers.design-review · declared
  • spec:consumers.design-review.pure-projection refines spec:consumers.design-review · declared
  • spec:consumers.wholesale-view-rewrite refines spec:consumers.design-review · declared
  • spec:decisions.authored-entry-order refines spec:consumers.design-review · declared
  • spec:decisions.question-key-rendering refines spec:consumers.design-review · declared
  • spec:consumers.design-review.pure-projection verifies spec:consumers.design-review · 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

Rested on by

Distance 1

Distance 2

Distance 3

Distance 4

Distance 5

Distance 6

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingBindings are optional, plural, and may reference a design
spec:decisions.anchor-binding-grain · resolves
declareda Spec page lists the units that reference it apart from the units that realize itNone
decidedBy · outgoingArchitectural significance is annotated where it is realized
spec:decisions.architectural-annotation · resolves
declaredbinding rows show a unit's role and a component's layer and contextNone
decidedBy · outgoingThe Design Review renders open-section entries as a list
spec:decisions.authored-entry-order · resolves
declaredopen-section entries render as a list in authored orderNone
decidedBy · outgoingThe Design Review shows an open question's key
spec:decisions.question-key-rendering · resolves
declareda keyed open question shows its key before its textNone
decidedBy · outgoingThe shipped projections stay frozen
spec:decisions.shipped-projections-frozen · resolves
declaredNoneNone
refines · outgoingProjections fan out from one graph without becoming truth stores
spec:consumers.projections-model · resolves
declaredNoneNone
dependsOn · incomingOne diagnostic currency, its location composed from structured fields
spec:validation.diagnostic-rendering · resolves
declaredNoneNone
refines · incomingViews speak binding language, never the internal fact name
spec:consumers.binding-language-views · resolves
declaredNoneNone
refines · incomingDerived readiness renders beside the stated rung and warns in one direction
spec:consumers.derived-readiness-banner · resolves
declaredNoneNone
refines · incomingA Pack page shows where the Pack's design stands
spec:consumers.design-review.pack-design-page · resolves
declaredNoneNone
refines · incomingThe view is the graph read twice, and the corpus is untouched by reading it
spec:consumers.design-review.pure-projection · resolves
declaredNoneNone
refines · incomingEvery view run rewrites the view wholesale
spec:consumers.wholesale-view-rewrite · resolves
declaredNoneNone
refines · incomingThe Design Review renders open-section entries as a list
spec:decisions.authored-entry-order · resolves
declaredNoneNone
refines · incomingThe Design Review shows an open question's key
spec:decisions.question-key-rendering · resolves
declaredNoneNone
verifies · incomingThe view is the graph read twice, and the corpus is untouched by reading it
spec:consumers.design-review.pure-projection · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.design-review · renders the contextual Design Review projection · src/projections/design-review.ts:44 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.design-review-codec · shared Design Review Markdown paths and links · src/projections/design-review-markdown.ts:3 · role codec · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

Composing (0)

Composing needs the script.