outcomesdp q give one answer.spec:consumers.spec-studio.data.recipe-answersPacks: pack:self-hosting-v1, pack:spec-studio-v1
Design: 2 design entries · no pinned declarations · no decisions
Findings: no errors, no warnings
specs/consumers/spec-studio.data.recipe-answers.sdp.md
No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
The lenses, the registers, the owner queue, the slice and roadmap pages, the diff and runs pages and the panels of a Spec page show recipe answers. Each takes its answer from the recipe's shipped body, evaluated over the graph the build derived, so a page and sdp q give one answer. The two Design entries name every evaluation a build runs and which page reads each answer, so a builder and a test author read one list.
outcomesdp q give one answer.rule.recipeEvaluation line 20 · specs/consumers/spec-studio.data.recipe-answers.sdp.md:20dist/recipes/ holds, over the graph, reader and validation report it derived, with the parameters the recipe evaluations name, through the body evaluation sdp q runs; it re-implements no recipe, so a page and sdp q give one answer.no example exercises it
rule.oncePerBuild line 21 · specs/consumers/spec-studio.data.recipe-answers.sdp.md:21no example exercises it
0 unkeyed rules.
recipeEvaluations line 24 · specs/consumers/spec-studio.data.recipe-answers.sdp.md:24{ detail: true }; recipe 29 with { pack: id } and recipe 54 with { pack: id, detail: true } for every Pack; recipe 55 with { pack: id } for every Pack whose manifest states order: priority; recipe 21 with { spec: id } and recipe 30 with { specs: [id] } for every Spec; recipe 34 with { spec: id } for every Spec that is not an example, Specs in no Pack included; given a base graph, recipe 35 with { base, detail: true }, and with { base, pack: id, detail: true } for every Pack; given run records, recipe 45 with { runs }.pageRecipes line 25 · specs/consumers/spec-studio.data.recipe-answers.sdp.md:25epicIds from recipe 52; the glossary renders reader values only; the capabilities lens renders recipe 52; the architecture lens renders recipes 17 and 43; the tests lens renders every recipe 34 answer, recipe 44, and recipe 45 given run records; a Spec page renders its recipe 21, 30 and 34 answers, its own space from recipe 44, the recipe 51 rows that cite its entries, the recipe 45 files whose specs hold its id, and its own row of recipe 35's whole-corpus answer; a Pack page renders the totals of its recipe 29 answer and, given a base graph, its own recipe 35 answer; a slice page renders its Pack's recipe 54 answer; the roadmap page renders recipe 53 and each roadmap's recipe 55 memo; the registers render recipes 20, 31, 24 beside recipe 51's rows, and 33; the owner queue renders recipe 46; the diff page renders recipe 35's whole-corpus answer; the runs page renders recipe 45; an export renders the values of the pages it holds.test/studio-s1.test.ts:273test/studio-s1.test.tsTest anchors: test:protocol.studio-architecture-planned-apart, test:protocol.studio-coverage-literal, test:protocol.studio-coverage-number, test:protocol.studio-diagram-folds-context, test:protocol.studio-diagram-folds-layer, test:protocol.studio-diagram-within-bound, test:protocol.studio-lenses, test:protocol.studio-tests-coverage-row. Specs verified by those bindings: spec:consumers.agent-surface.example-space-coverage, spec:consumers.agent-surface.example-space-coverage.number-not-enumerable, spec:consumers.agent-surface.example-space-coverage.uncovered-literal, spec:consumers.spec-studio.data.recipe-answers, spec:consumers.spec-studio.diagrams, spec:consumers.spec-studio.diagrams.folds-by-context, spec:consumers.spec-studio.diagrams.folds-by-layer, spec:consumers.spec-studio.diagrams.within-bound, spec:consumers.spec-studio.lenses, spec:consumers.spec-studio.lenses.architecture, spec:consumers.spec-studio.lenses.architecture.planned-apart, spec:consumers.spec-studio.lenses.evidence, spec:consumers.spec-studio.lenses.packs, spec:consumers.spec-studio.lenses.tests, spec:consumers.spec-studio.lenses.tests.coverage-row.
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
| Name | Suite | Result | Duration |
|---|---|---|---|
| bounds and folds 12 components | Studio diagrams | passed | 30.61 ms |
| bounds and folds 45 components | Studio diagrams | passed | 7.71 ms |
| bounds and folds 50 components | Studio diagrams | passed | 18.03 ms |
| keeps every edge in an open text fallback | Studio diagrams | passed | 2.56 ms |
| orders grid contexts and layers and wraps cells within the fixed width budget | Studio diagrams | passed | 4.7 ms |
| draws planned-use edges dashed independently of planned box outlines | Studio diagrams | passed | 0.78 ms |
| checks the edge bound even when boxes fit | Studio diagrams | passed | 0.69 ms |
| places folded contexts and layers in their own bands below the grid | Studio diagrams | passed | 4.25 ms |
| places outgoing relation bands above the subject and folds ties in relation order | Studio diagrams | passed | 10.09 ms |
| folds trace relation groups and leaves member overflow as text | Studio diagrams | passed | 3.04 ms |
| keeps recipe and diagram edges in code-unit order under forced Czech collation | Studio lenses | passed | 129.74 ms |
| publishes all five ordered lenses and honest evidence without script | Studio lenses | passed | 41.5 ms |
| reads verifier binding from the delivery fact and gives absent coverage its own filter value | Studio lenses | passed | 17.84 ms |
| labels a primitive-only space with no examples not measurable and hides it under covered | Studio lenses | passed | 27.26 ms |
| classifies 'number' with points [ '1' ] and mixed=false as 'not-measurable' | Studio lenses | passed | 17.82 ms |
| classifies 'string' with points [ '"a"' ] and mixed=false as 'not-measurable' | Studio lenses | passed | 11.69 ms |
| classifies 'boolean' with points [ 'true' ] and mixed=false as 'not-measurable' | Studio lenses | passed | 13.27 ms |
| classifies '"a"|"b"' with points [] and mixed=false as 'uncovered' | Studio lenses | passed | 6.82 ms |
| classifies '"a"|"b"' with points [ '"a"' ] and mixed=false as 'uncovered' | Studio lenses | passed | 7.04 ms |
| classifies '"a"|"b"' with points [ '"a"', '"b"' ] and mixed=false as 'covered' | Studio lenses | passed | 20.44 ms |
| classifies '"a"|"b"' with points [ '"a"' ] and mixed=true as 'uncovered' | Studio lenses | passed | 19.79 ms |
| classifies '"a"|"b"' with points [ '"a"', '"b"' ] and mixed=true as 'covered' | Studio lenses | passed | 23.06 ms |
| renders member subjects, code spans, used-by counts, differences and empty components | Studio lenses | passed | 16.1 ms |
| describes evidence sources as not tracked | Studio lenses | passed | 2.69 ms |
| executes the bound example against a fresh world | An architecture within the bound draws in one diagram, the same bytes twice (spec:consumers.spec-studio.diagrams.within-bound) | passed | 18.43 ms |
| executes the bound example against a fresh world | An architecture over the bound folds by context (spec:consumers.spec-studio.diagrams.folds-by-context) | passed | 11.36 ms |
| executes the bound example against a fresh world | One context over the bound folds by layer (spec:consumers.spec-studio.diagrams.folds-by-layer) | passed | 11.28 ms |
| executes the bound example against a fresh world | A component design no anchor realizes draws planned beside the built one (spec:consumers.spec-studio.lenses.architecture.planned-apart) | passed | 21.54 ms |
| executes the bound example against a fresh world | A Spec's row on the tests lens counts its exercised keyed rules (spec:consumers.spec-studio.lenses.tests.coverage-row) | passed | 20.54 ms |
| executes the bound example against a fresh world | A literal no example binds is reported uncovered, and an unbound child is named (spec:consumers.agent-surface.example-space-coverage.uncovered-literal) | passed | 5.25 ms |
| executes the bound example against a fresh world | A number slot is not enumerable and reports no uncovered value (spec:consumers.agent-surface.example-space-coverage.number-not-enumerable) | passed | 3.13 ms |
| reuses the build's reader and validation findings during Studio recipe evaluation | not recorded | passed | 3.65 ms |
| documents the component and member fields recipe 17 adds | not recorded | passed | 1.47 ms |
| evaluates each shipped recipe once for its assigned parameters and shares Pack totals, with base false | not recorded | passed | 18.31 ms |
| evaluates each shipped recipe once for its assigned parameters and shares Pack totals, with base true | not recorded | passed | 15.91 ms |
| keeps label lines bounded and orders member depths numerically with outside units last | not recorded | passed | 1.76 ms |
| labels planned uses, reports unreadable designs and keeps unknown structure visible | not recorded | passed | 9.16 ms |
| gives unstated context and layer folds addressable text descriptions | not recorded | passed | 1.11 ms |
| names a single edge relation once in the legend and preserves its text equivalent | not recorded | passed | 1.76 ms |
| names solid and planned uses once without repeating edge labels | not recorded | passed | 0.58 ms |
src/projections/studio/recipes.ts:34src/projections/studio/pages/register-answers.ts:4test/studio-s1.test.ts:273Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because references require exact labels unavailable in requirement syntax.
No decision record named.
component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29Uses
component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100component:protocol.notation · the leaf step codec · src/notation/slots.ts:261component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72impl:protocol.studio-recipes · evaluates shipped recipe bodies once and shares answers between Studio pages · src/projections/studio/recipes.ts:34Component: component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29
Uses
api:protocol.evaluate-body · evaluates bodies and shipped recipes over one in-memory reader, graph and report · src/reader/evaluate-body.ts:120impl:protocol.reader · typed graph queries, entry adapters and context joins · src/reader/reader.ts:687Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
Implementing units
impl:protocol.studio-slice-page · src/projections/studio/pages/slice-page.ts:25Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-page
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | The evaluation sink runs one body and prints its returnspec:consumers.agent-surface.evaluation-sink · resolves | declared | the build composes recipe answers through the same body evaluation sdp q runs | None |
| refines · outgoing | The Studio renders from the reader's values and embeds only what its script readsspec:consumers.spec-studio.data · resolves | declared | None | None |
| dependsOn · incoming | A slice page shows a Pack's design as one wholespec:consumers.spec-studio.slice-page · resolves | declared | the build evaluates the slice recipe once for each Pack, and the page reads that answer | None |
impl:protocol.studio-recipes · evaluates shipped recipe bodies once and shares answers between Studio pages · src/projections/studio/recipes.ts:34component:protocol.projections · layer edge · context protocolimpl:protocol.studio-register-contracts · shared recipe answer shapes for Studio registers · src/projections/studio/pages/register-answers.ts:4component:protocol.projections · layer edge · context protocoltest/studio-s1.test.ts:273Runtime observation: not tracked.
Run results: not recorded in the graph.
None.
Composing needs the script.