Spec Studio

pack:spec-studio-v1specs/consumers/spec-studio.pack.sdp.md

Exported from the Spec Studio

pack:spec-studio-v1

Where the design stands

  • 64 members in authored reading order; no unresolved members.
  • No members held below their stated next rung.
  • No members waiting only for their author's statement.
  • 162 design entries and 45 pinned declarations.
  • 1 open question and no blocking questions.
  • 37 members with an implementation binding.
  • 3 members with a design reference.
  • 45 outside Specs the Pack rests on; 15 outside Specs rest on the Pack; no outside Specs verify it; no outside Specs supersede it.

Maturity map

64 members at stated ready and floor ready: full member list.

Stated readiness by floor reached
Rows: stated readiness, idea to ready. Columns: floor reached, none to ready. Each mark counts one member; above 100 members a cell is solid. Floor none is distinct from idea.

Outlined diagonal: matches. Right of diagonal: floor above statement. Left of diagonal: statement above floor.

Maturity map for Spec StudioFloor reached →Stated readiness ↓noneideascopeddefinedreadyideascopeddefinedreadystated ready, floor ready: 64 members64
Maturity map as text
Counts by stated readiness and floor reached. To the right the floor exceeds the statement; to the left the statement exceeds the floor.
Stated rung / floor reachedfloor nonefloor ideafloor scopedfloor definedfloor ready
stated idea—————
stated scoped—————
stated defined—————
stated ready————64
stated ready, floor ready · 64 members
Mermaid source

Preferred syntax: block. Fixed categorical cells; membership appears in comments.

Framing

The Spec Studio of the original design, docs/lineage/v0-design/07-spec-studio-and-projections.md sections 1 to 3, 11 and 12, in the order a reviewer reads it: what the Studio is and why it renders HTML; the data it reads, with the recipe answers it composes and its two named inputs, and the verb that publishes and watches it; its shell, search and navigation; its four lenses, with the index that is the Packs lens and the coverage recipe the tests lens reads; the Pack page and its maturity map; the Spec page with its core and its panels; the register pages, the owner queue, and the diff, runs and glossary pages, with the run-evidence recipe the runs page reads; the composing panel and the memo it hands off; its custom elements, the decisions that shape them, and the diagrams the engine draws for them; its phone layout; the Pack export and print; how a build is stamped and shared; and the skill that teaches an agent to publish, share and read the Studio and to apply what a person composes in it. Each Spec is followed by the examples that will verify it. Recipe 27, references into a design, shows each member's code bindings and the implemented Specs it builds on.

Vocabulary: spec:consumers.projections-model

Members

1. The Spec Studio is a static HTML workbench over the one graphbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio

Design

No design entries · no pinned declarations

Decisions

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-command · validates and renders the Studio with independent byte checks and diagnostic exit codes · src/cli/studio-command.ts:106 · role publisher · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.studio-data · assembles reader contexts, Pack totals, rails and search records for static pages · src/projections/studio/data.ts:279 · role contract · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

2. The Studio renders HTML, and the HTML stays deriveddecision · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding none

spec:decisions.studio-html-surface

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: none

3. The Studio renders from the reader's values and embeds only what its script readscontract · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.data

Design

5 design entries · 5 pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-data · assembles reader contexts, Pack totals, rails and search records for static pages · src/projections/studio/data.ts:279 · role contract · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

4. A page takes each recipe answer from the recipe's shipped bodycontract · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.data.recipe-answers

Design

2 design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-recipes · evaluates shipped recipe bodies once and shares answers between Studio pages · src/projections/studio/recipes.ts:34 · role service · component component:protocol.projections · layer edge · context protocol

Design reference: present

  • impl:protocol.studio-register-contracts · shared recipe answer shapes for Studio registers · src/projections/studio/pages/register-answers.ts:4 · role contract · component component:protocol.projections · layer edge · context protocol

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

5. The Studio reads two named inputs beside the graph, a base graph and run recordscontract · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.data.inputs

Design

2 design entries · 2 pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-base-input · reads named Studio base graphs and run inputs · src/cli/studio-inputs.ts:9 · role codec · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.studio-command · validates and renders the Studio with independent byte checks and diagnostic exit codes · src/cli/studio-command.ts:106 · role publisher · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.studio-inputs · named base graph and run input contract · src/projections/studio/inputs.ts:1 · role contract · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

2 verifiers, 2 enabled · 2 verifying examples, 2 enabled

6. Without inputs the page set is the graph's aloneexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.data.inputs.graph-only

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

7. Both inputs add their pages, named, and the same inputs write the same bytesexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.data.inputs.both-given

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

8. sdp studio publishes the Studio as one page setbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.publisher

Design

No design entries · no pinned declarations

Decisions

  • spec:decisions.shipped-projections-frozen · stated ready

Open questions

None.

Implementation binding: present

  • impl:protocol.build-pipeline-emit · stages build outputs, checks determinism and invalidates projections · src/cli/build-command.ts:251 · role service · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.studio-command · validates and renders the Studio with independent byte checks and diagnostic exit codes · src/cli/studio-command.ts:106 · role publisher · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.studio-page-catalog · selects Studio pages, optional inputs and Pack exports · src/projections/studio/pages/index.ts:21 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-paths · encodes uppercase id letters for collision-free Pack and Spec page paths · src/projections/studio/paths.ts:2 · role codec · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-publish · copies local assets and replaces the Studio directory through its temporary sibling · src/projections/studio/publish.ts:24 · role publisher · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

2 verifiers, 2 enabled · no verifying examples, 0 enabled

9. sdp studio --watch rebuilds the page set on each carrier changebehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.publisher.watch

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-watch · awaits the plain Studio publication in each coalesced carrier-watch cycle · src/cli/studio-command.ts:122 · role service · component component:protocol.cli · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · 1 verifying example, 1 enabled

10. Each watch cycle writes the page set a plain run writesexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.publisher.watch.matches-plain-run

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

11. The Studio's shell frames every page with navigation, a rail and a canvasbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.shell

Design

5 design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-code-spans · escapes and maps code spans across Studio text · src/projections/studio/pages/code-spans.ts:9 · role codec · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-html · shared Studio HTML, source and link encoding · src/projections/studio/pages/html.ts:8 · role codec · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-text · escapes prose and links graph-resolving mentions · src/projections/studio/pages/text.ts:7 · role codec · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

12. Search finds a Spec, a Pack, an entry or a bound file by a wordbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.search

Design

6 design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-concept-match · matches concepts deterministically across graph and browser queries · src/reader/concept-match.ts:43 · role reader · component component:protocol.reader · layer application · context protocol
  • impl:protocol.studio-search-page · publishes search records beside the browser results view · src/projections/studio/pages/search-page.ts:5 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-search-results · ranks and renders concept, entry and file search hits · src/studio-elements/search-results.ts:95 · role projection · component component:protocol.studio-elements · layer edge · context protocol

Design reference: none

Verifier binding: present

3 verifiers, 3 enabled · no verifying examples, 0 enabled

13. Every page of the page set is reached from the top navigation and the indexbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.navigation

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-index-page · renders Pack disclosures and filterable Spec rows · src/projections/studio/pages/index-page.ts:8 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

2 verifiers, 2 enabled · no verifying examples, 0 enabled

14. Five lenses read the graph as Packs, capabilities, architecture, tests and evidencebehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.lenses

Design

1 design entry · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-architecture-lens · renders recipe component rows and planned designs as architecture and member diagrams · src/projections/studio/pages/architecture-page.ts:50 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-evidence-lens · names the four evidence sources and what would bring each into the Studio · src/projections/studio/pages/evidence-page.ts:3 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-tests-lens · renders shared rule and example-space coverage with filters and verifier bindings · src/projections/studio/pages/tests-page.ts:34 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

15. The Packs lens groups every Spec by the Packs that hold itbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.lenses.packs

Design

1 design entry · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-index-page · renders Pack disclosures and filterable Spec rows · src/projections/studio/pages/index-page.ts:8 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

16. The index says where the corpus stands and narrows every Specbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.index-page

Design

7 design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-index-page · renders Pack disclosures and filterable Spec rows · src/projections/studio/pages/index-page.ts:8 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

17. The architecture lens draws components by context and layer, the planned beside the builtbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.lenses.architecture

Design

5 design entries · 1 pinned declaration

Decisions

  • spec:decisions.architectural-annotation · stated ready

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-architecture-lens · renders recipe component rows and planned designs as architecture and member diagrams · src/projections/studio/pages/architecture-page.ts:50 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

2 verifiers, 2 enabled · 1 verifying example, 1 enabled

18. The architecture page lists each component's significant units by rolebehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.lenses.architecture.unit-register

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-unit-register · renders component source bindings and role-grouped recorded units · src/projections/studio/pages/architecture-register.ts:7 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

19. A component design no anchor realizes draws planned beside the built oneexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.lenses.architecture.planned-apart

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

20. The tests lens shows how far each Spec's verification reachesbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.lenses.tests

Design

3 design entries · no pinned declarations

Decisions

  • spec:decisions.binding-not-liveness · stated ready
  • spec:decisions.verification-posture-not-realization · stated ready

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-tests-lens · renders shared rule and example-space coverage with filters and verifier bindings · src/projections/studio/pages/tests-page.ts:34 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · 1 verifying example, 1 enabled

21. A Spec's row on the tests lens counts its exercised keyed rulesexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.lenses.tests.coverage-row

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

22. Example spaces report which values their examples coverbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.agent-surface.example-space-coverage

Design

7 design entries · 5 pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.example-space-coverage-recipe · asserts realization of shipped recipe 44 · test/studio-s1.test.ts:856
  • impl:protocol.example-space-decoding · shared example-space interpretation for contracts and reader contexts · src/notation/example-space.ts:473 · role codec · component component:protocol.reader · layer application · context protocol

Design reference: none

Verifier binding: present

2 verifiers, 2 enabled · 2 verifying examples, 2 enabled

23. A literal no example binds is reported uncovered, and an unbound child is namedexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.agent-surface.example-space-coverage.uncovered-literal

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

24. A number slot is not enumerable and reports no uncovered valueexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.agent-surface.example-space-coverage.number-not-enumerable

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

25. The evidence lens names each source of runtime evidence and reads it as not trackedbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.lenses.evidence

Design

1 design entry · no pinned declarations

Decisions

  • spec:decisions.binding-not-liveness · stated ready

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-evidence-lens · names the four evidence sources and what would bring each into the Studio · src/projections/studio/pages/evidence-page.ts:3 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

26. A Pack page shows the Pack's design as one card per memberbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.pack-page

Design

7 design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-pack-page · renders Pack members, maturity and boundary joins · src/projections/studio/pages/pack-page.ts:68 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

2 verifiers, 2 enabled · no verifying examples, 0 enabled

27. A Pack page's maturity map places every member by its stated rung and its floorbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.pack-page.maturity-map

Design

1 design entry · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-maturity-map · places resolved Pack members by their stated rung and floor in authored order · src/projections/studio/pages/maturity-map.ts:7 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

2 verifiers, 2 enabled · no verifying examples, 0 enabled

28. A Spec page shows one Spec in collapsible panels, in a fixed orderbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.spec-page

Design

10 design entries · no pinned declarations

Decisions

  • spec:decisions.authored-entry-order · stated ready

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-requirement-view · selects Spec refiners, verifying examples and their recorded bindings · src/projections/studio/pages/requirement-view.ts:8 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-spec-page · renders Spec intent, relations and realization bindings · src/projections/studio/pages/spec-page.ts:201 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-spec-structure · renders requirement and trace diagrams and the recorded structural neighborhood · src/projections/studio/pages/spec-structure.ts:44 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

3 verifiers, 3 enabled · 1 verifying example, 1 enabled

29. A pinned declaration shows the test line that cites itexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.spec-page.cited-declaration

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

30. A Spec page's core shows the whole Spec, with an anchor for every entrybehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.spec-page.core

Design

8 design entries · no pinned declarations

Decisions

  • spec:decisions.authored-entry-order · stated ready

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-spec-page · renders Spec intent, relations and realization bindings · src/projections/studio/pages/spec-page.ts:201 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

31. The panels for examples, targets, verifiers and evidencebehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.verification-panels

Design

8 design entries · no pinned declarations

Decisions

  • spec:decisions.binding-not-liveness · stated ready
  • spec:decisions.verification-posture-not-realization · stated ready

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-run-rows · renders recipe 45 file rows shared by the runs page and verification panel · src/projections/studio/pages/run-rows.ts:69 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-verification-panels · renders rule coverage, example cards, constraint targets, verifiers and example-space coverage · src/projections/studio/pages/spec-verification.ts:74 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

2 verifiers, 2 enabled · 1 verifying example, 1 enabled

32. Each keyed rule shows the examples that exercise it, or that none doesexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.verification-panels.rule-coverage

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

33. The corpus's registers are pages a reviewer opens from a linkbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.registers

Design

4 design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-registers · renders question, decision, declaration and backlog registers · src/projections/studio/pages/registers-page.ts:47 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · 1 verifying example, 1 enabled

34. The questions page lists the Specs with a blocking question firstexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.registers.blocking-first

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

35. The owner queue page orders the statements and questions only a person can settlebehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.owner-queue

Design

2 design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-owner-queue · renders waiting readiness statements and decider questions · src/projections/studio/pages/queue-page.ts:9 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · 1 verifying example, 1 enabled

36. The owner queue lists a waiting statement after the one it rests onexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.owner-queue.dependency-first

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

37. The diff page shows what changed in the design since a base graphbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.diff-page

Design

4 design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-diff · renders declared design changes and binding changes separately · src/projections/studio/pages/diff-page.ts:91 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

2 verifiers, 2 enabled · 1 verifying example, 1 enabled

38. The diff page shows a changed entry's base and built valuesexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.diff-page.changed-entry

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

39. The runs page shows the run records the build was given, joined to test filesbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.runs-page

Design

3 design entries · no pinned declarations

Decisions

  • spec:decisions.binding-not-liveness · stated ready

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-run-rows · renders recipe 45 file rows shared by the runs page and verification panel · src/projections/studio/pages/run-rows.ts:69 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-runs-page · renders readable CTRF inputs, file results, unjoined records and diagnostics · src/projections/studio/pages/runs-page.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · 1 verifying example, 1 enabled

40. The runs page shows a run as external evidence from a test fileexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.runs-page.external-evidence

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

41. CI run records are joined to verifiers in a viewbehavior · ready floor ready · 1 open, 0 blocking questions · implementation binding present · verifier binding present

spec:observation.run-evidence

Design

7 design entries · 5 pinned declarations

Decisions

  • spec:decisions.binding-not-liveness · stated ready

Open questions

  • non-blocking · question.freshness · line 28 · specs/observation/run-evidence.sdp.md:28 · How does a view say a run is stale: by its commit against the commit being read, or by whether the bound files changed between the two?Decider: ownerProvisional: Display the run and source commit identifiers when they differ, as the differing-commit rule requires; whether freshness also follows changes to bound files remains open.

Implementation binding: present

  • impl:protocol.run-evidence-recipe · asserts realization of Run evidence in docs/agent-surface/recipes.md · test/recipes.test.ts:7277
  • impl:protocol.studio-runs-page · renders readable CTRF inputs, file results, unjoined records and diagnostics · src/projections/studio/pages/runs-page.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

2 verifiers, 2 enabled · 2 verifying examples, 2 enabled

42. A test whose reporter wrote an absolute path joins its anchored fileexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:observation.run-evidence.absolute-path-joins

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

43. A test in a file with no test anchor is reported as unjoinedexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:observation.run-evidence.unanchored-file-unjoined

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

44. The glossary page lists every term the corpus's Specs definebehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.glossary-page

Design

2 design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-glossary · renders Model terms with their entry-address links · src/projections/studio/pages/glossary-page.ts:7 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · 1 verifying example, 1 enabled

45. A word two Specs define appears once per Spec on the glossary pageexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.glossary-page.same-word-twice

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

46. A composing panel on every page gathers scoped intent for an agentbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.intent-panel

Design

9 design entries · 3 pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-compose · opens a native request dialog beside build-rendered scopes without changing their content · src/studio-elements/compose.ts:13 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-intent-panel · gathers ordered intents under the page-root storage key and partitions their hand-off · src/studio-elements/intent-panel.ts:51 · role service · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-intent-panel-element · displays gathered requests and writes copy selections or local download links · src/studio-elements/intent-panel-element.ts:14 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-scenario-editor · gathers the edited Given, When and Then as exact text scoped to its subject · src/studio-elements/scenario-editor.ts:17 · role interaction · component component:protocol.studio-elements · layer edge · context protocol

Design reference: none

Verifier binding: present

2 verifiers, 2 enabled · 1 verifying example, 1 enabled

47. Refreshing a tab keeps every gathered intentexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.intent-panel.refresh-keeps-intents

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

48. Recipe 49 renders a change proposal as the Markdown memo a person reviewscontract · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.intent-composition.proposal.memo

Design

5 design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.proposal-memo-recipe · realizes the catalog proposal memo through its verbatim body check · test/recipes.test.ts:7298
  • impl:protocol.studio-proposal-memo · renders proposal fields verbatim with fences that outgrow their content · src/studio-elements/memo.ts:13 · role projection · component component:protocol.studio-elements · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · 1 verifying example, 1 enabled

49. Recipe 49 and the composing panel write one memo for one proposalexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.intent-composition.proposal.memo.shared

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

50. The Studio's custom elements each hold one view the build renderscontract · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.components

Design

10 design entries · 10 pinned declarations

Decisions

Open questions

None.

Implementation binding: present

  • component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · role interaction · layer edge · context protocol
  • impl:protocol.studio-compose · opens a native request dialog beside build-rendered scopes without changing their content · src/studio-elements/compose.ts:13 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-filter · filters build-rendered rows through their recorded attributes · src/studio-elements/filter.ts:25 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-intent-panel-element · displays gathered requests and writes copy selections or local download links · src/studio-elements/intent-panel-element.ts:14 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-maturity-map · places resolved Pack members by their stated rung and floor in authored order · src/projections/studio/pages/maturity-map.ts:7 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-pack-page · renders Pack members, maturity and boundary joins · src/projections/studio/pages/pack-page.ts:68 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-scenario-editor · gathers the edited Given, When and Then as exact text scoped to its subject · src/studio-elements/scenario-editor.ts:17 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-search-results · ranks and renders concept, entry and file search hits · src/studio-elements/search-results.ts:95 · role projection · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-spec-structure · renders requirement and trace diagrams and the recorded structural neighborhood · src/projections/studio/pages/spec-structure.ts:44 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-verification-panels · renders rule coverage, example cards, constraint targets, verifiers and example-space coverage · src/projections/studio/pages/spec-verification.ts:74 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

51. The Studio is built from custom elements, not a frameworkdecision · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding none

spec:decisions.studio-web-components

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: none

52. The build renders every Studio view, and an element only enhances itdecision · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding none

spec:decisions.studio-build-renders

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: present

  • impl:protocol.studio-architecture-lens · renders recipe component rows and planned designs as architecture and member diagrams · src/projections/studio/pages/architecture-page.ts:50 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-diagrams · deterministic grid and band layouts with bounded folds and full text equivalents · src/projections/studio/diagrams/svg.ts:73 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-evidence-lens · names the four evidence sources and what would bring each into the Studio · src/projections/studio/pages/evidence-page.ts:3 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-recipes · evaluates shipped recipe bodies once and shares answers between Studio pages · src/projections/studio/recipes.ts:34 · role service · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-tests-lens · renders shared rule and example-space coverage with filters and verifier bindings · src/projections/studio/pages/tests-page.ts:34 · role projection · component component:protocol.projections · layer edge · context protocol

Verifier binding: none

53. The engine lays out every Studio diagram as static SVG when the page set is builtdecision · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding none

spec:decisions.studio-diagram-renderer

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: present

  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-diagrams · deterministic grid and band layouts with bounded folds and full text equivalents · src/projections/studio/diagrams/svg.ts:73 · role projection · component component:protocol.projections · layer edge · context protocol

Verifier binding: none

54. A diagram is laid out from graph values into SVG with a text equivalentcontract · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.diagrams

Design

14 design entries · 4 pinned declarations

Decisions

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-architecture-diagrams · architecture grids and bounded context and layer folds · src/projections/studio/diagrams/architecture.ts:4 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-diagram-model · shared diagram boxes, edges and drawing bounds · src/projections/studio/diagrams/model.ts:1 · role contract · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-diagrams · deterministic grid and band layouts with bounded folds and full text equivalents · src/projections/studio/diagrams/svg.ts:73 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-relation-diagrams · relation and member bands and bounded relation folds · src/projections/studio/diagrams/bands.ts:10 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

4 verifiers, 4 enabled · 3 verifying examples, 3 enabled

55. An architecture within the bound draws in one diagram, the same bytes twiceexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.diagrams.within-bound

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

56. An architecture over the bound folds by contextexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.diagrams.folds-by-context

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

57. One context over the bound folds by layerexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.diagrams.folds-by-layer

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

58. A few custom elements filter, search, open and copy on a rendered pagecontract · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.page-elements

Design

6 design entries · 6 pinned declarations

Decisions

Open questions

None.

Implementation binding: present

  • component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · role interaction · layer edge · context protocol
  • impl:protocol.studio-copy · copies text with selection fallback and failure feedback · src/studio-elements/copy.ts:22 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-expander · opens fragment ancestors and expands disclosures for print · src/studio-elements/expander.ts:16 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-filter · filters build-rendered rows through their recorded attributes · src/studio-elements/filter.ts:25 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-search-form · routes search forms through page-root URLs and fragments · src/studio-elements/search.ts:18 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-search-results · ranks and renders concept, entry and file search hits · src/studio-elements/search-results.ts:95 · role projection · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-stamp · resolves published stamps and source links in the browser · src/studio-elements/stamp.ts:30 · role interaction · component component:protocol.studio-elements · layer edge · context protocol

Design reference: none

Verifier binding: present

2 verifiers, 2 enabled · no verifying examples, 0 enabled

59. The Studio reads on a phone as on a desktopbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.responsive

Design

3 design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

60. A Pack exports as one file, and every page prints as a documentbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.export

Design

5 design entries · 1 pinned declaration

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-expander · opens fragment ancestors and expands disclosures for print · src/studio-elements/expander.ts:16 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-pack-export · copies rendered canvas content into one inline-styled document with prefixed element references · src/projections/studio/pages/export-page.ts:35 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-pack-page · renders Pack members, maturity and boundary joins · src/projections/studio/pages/pack-page.ts:68 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

2 verifiers, 2 enabled · 1 verifying example, 1 enabled

61. A Pack's export opens alone and keeps its links inside itexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.export.self-contained

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

62. A Studio build is stamped and shared from a static hostbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.spec-studio.sharing

Design

9 design entries · 3 pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.stamp-command · writes the publishing stamp without extraction or rendering · src/cli/stamp-command.ts:8 · role publisher · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.studio-preview-workflow · asserts the reusable Studio preview workflow and Protocol CI caller · test/studio-s4.test.ts:742
  • impl:protocol.studio-stamp · resolves published stamps and source links in the browser · src/studio-elements/stamp.ts:30 · role interaction · component component:protocol.studio-elements · layer edge · context protocol

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · 1 verifying example, 1 enabled

63. The stamp is written beside the page set, and a later build removes itexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.spec-studio.sharing.stamp-written-apart

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

64. The Studio skill teaches agents to publish, share and read the Spec Studiobehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.studio-on-ramp

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.studio-on-ramp · asserts realization of the shipped Studio skill document · test/skills.test.ts:1693

Design reference: none

Verifier binding: present

1 verifier, 1 enabled · no verifying examples, 0 enabled

Boundary

Rests on (45)
SpecStated rungImplementation bindingJoined members
spec:carrier.markdown-body-grammar
spec:carrier.markdown-body-grammar
readypresentdependsOn: spec:consumers.spec-studio.glossary-page
spec:carrier.slot-notation
spec:carrier.slot-notation
readypresentdependsOn: spec:consumers.agent-surface.example-space-coverage
spec:consumers.agent-surface.design-recipes
spec:consumers.agent-surface.design-recipes
readypresentrefines: spec:consumers.agent-surface.example-space-coverage
dependsOn: spec:consumers.spec-studio.registers
spec:consumers.agent-surface.evaluation-sink
spec:consumers.agent-surface.evaluation-sink
readypresentdependsOn: spec:consumers.spec-studio.data.recipe-answers
spec:consumers.agent-surface.recipe-parameters
spec:consumers.agent-surface.recipe-parameters
readypresentdependsOn: spec:observation.run-evidence
spec:consumers.agent-surface.register-recipes
spec:consumers.agent-surface.register-recipes
readypresentdependsOn: spec:consumers.spec-studio.registers
spec:consumers.binding-language-views
spec:consumers.binding-language-views
readypresentdependsOn: spec:consumers.spec-studio.index-page, spec:consumers.spec-studio.pack-page, spec:consumers.spec-studio.spec-page, spec:consumers.spec-studio.spec-page.core
spec:consumers.derived-readiness-banner
spec:consumers.derived-readiness-banner
readypresentdependsOn: spec:consumers.spec-studio.index-page, spec:consumers.spec-studio.pack-page, spec:consumers.spec-studio.pack-page.maturity-map, spec:consumers.spec-studio.spec-page, spec:consumers.spec-studio.spec-page.core
spec:consumers.design-diff
spec:consumers.design-diff
readypresentdependsOn: spec:consumers.spec-studio.data.inputs, spec:consumers.spec-studio.diff-page
spec:consumers.edit-model
spec:consumers.edit-model
readynonedependsOn: spec:consumers.spec-studio, spec:consumers.spec-studio.intent-panel
spec:consumers.engine-provenance
spec:consumers.engine-provenance
readypresentdependsOn: spec:consumers.spec-studio.sharing
spec:consumers.intent-composition
spec:consumers.intent-composition
readynonerefines: spec:consumers.spec-studio.intent-panel
dependsOn: spec:consumers.studio-on-ramp
spec:consumers.intent-composition.proposal
spec:consumers.intent-composition.proposal
readypresentrefines: spec:consumers.intent-composition.proposal.memo
dependsOn: spec:consumers.spec-studio.intent-panel
spec:consumers.pack-design
spec:consumers.pack-design
readypresentdependsOn: spec:consumers.spec-studio.data, spec:consumers.spec-studio.pack-page, spec:consumers.spec-studio.spec-page
spec:consumers.projections-model
spec:consumers.projections-model
readypresentrefines: spec:consumers.spec-studio, spec:observation.run-evidence
spec:consumers.reader
spec:consumers.reader
readypresentdependsOn: spec:consumers.spec-studio, spec:consumers.spec-studio.data, spec:consumers.spec-studio.search
spec:consumers.readiness-planner
spec:consumers.readiness-planner
readypresentdependsOn: spec:consumers.spec-studio.owner-queue
spec:consumers.reading-on-ramp
spec:consumers.reading-on-ramp
readypresentrefines: spec:consumers.studio-on-ramp
spec:consumers.spec-studio.diagram-kinds.maturity-picture
spec:consumers.spec-studio.diagram-kinds.maturity-picture
readypresentdependsOn: spec:consumers.spec-studio.pack-page.maturity-map
spec:consumers.spec-studio.diagram-kinds.requirement-trace
spec:consumers.spec-studio.diagram-kinds.requirement-trace
readypresentdependsOn: spec:consumers.spec-studio.spec-page
spec:consumers.validate-watch
spec:consumers.validate-watch
readypresentdependsOn: spec:consumers.spec-studio.publisher.watch
spec:consumers.wholesale-view-rewrite
spec:consumers.wholesale-view-rewrite
readypresentdependsOn: spec:consumers.spec-studio.publisher
spec:decisions.architectural-annotation
spec:decisions.architectural-annotation
readynonedependsOn: spec:consumers.spec-studio.diagrams
decidedBy: spec:consumers.spec-studio.lenses.architecture
spec:decisions.authored-entry-order
spec:decisions.authored-entry-order
readynonedecidedBy: spec:consumers.spec-studio.spec-page, spec:consumers.spec-studio.spec-page.core
spec:decisions.binding-not-liveness
spec:decisions.binding-not-liveness
readynonedecidedBy: spec:consumers.spec-studio.lenses.tests, spec:consumers.spec-studio.lenses.evidence, spec:consumers.spec-studio.verification-panels, spec:consumers.spec-studio.runs-page, spec:observation.run-evidence
spec:decisions.shipped-projections-frozen
spec:decisions.shipped-projections-frozen
readynonedecidedBy: spec:consumers.spec-studio, spec:consumers.spec-studio.publisher
spec:decisions.verification-posture-not-realization
spec:decisions.verification-posture-not-realization
readynonedecidedBy: spec:consumers.spec-studio.lenses.tests, spec:consumers.spec-studio.verification-panels
spec:extraction.claim-taxonomy
spec:extraction.claim-taxonomy
readypresentdependsOn: spec:consumers.spec-studio.responsive
spec:extraction.contract-declarations
spec:extraction.contract-declarations
readypresentdependsOn: spec:consumers.spec-studio.registers
spec:extraction.delivery-facts
spec:extraction.delivery-facts
readypresentdependsOn: spec:observation.run-evidence
spec:extraction.determinism
spec:extraction.determinism
readypresentdependsOn: spec:decisions.studio-diagram-renderer
constrainedBy: spec:consumers.spec-studio, spec:consumers.spec-studio.data, spec:consumers.spec-studio.data.inputs, spec:consumers.spec-studio.publisher, spec:consumers.spec-studio.diagrams, spec:consumers.spec-studio.export, spec:consumers.spec-studio.sharing
spec:extraction.entry-citations
spec:extraction.entry-citations
readypresentdependsOn: spec:consumers.spec-studio.spec-page, spec:consumers.spec-studio.registers
spec:extraction.entry-locations
spec:extraction.entry-locations
readypresentdependsOn: spec:consumers.spec-studio.data, spec:consumers.spec-studio.spec-page, spec:consumers.spec-studio.spec-page.core
spec:extraction.executable-contracts
spec:extraction.executable-contracts
readypresentdependsOn: spec:consumers.agent-surface.example-space-coverage, spec:consumers.spec-studio.verification-panels
spec:extraction.pack-member-order
spec:extraction.pack-member-order
readypresentdependsOn: spec:consumers.spec-studio.data, spec:consumers.spec-studio.lenses.packs
spec:extraction.regenerability
spec:extraction.regenerability
readypresentdependsOn: spec:decisions.studio-html-surface
spec:extraction.schema-versioning
spec:extraction.schema-versioning
readypresentdependsOn: spec:consumers.spec-studio.sharing
spec:model.open-question-fields
spec:model.open-question-fields
readypresentdependsOn: spec:consumers.spec-studio.pack-page, spec:consumers.spec-studio.spec-page, spec:consumers.spec-studio.spec-page.core
spec:model.open-question-keys
spec:model.open-question-keys
readypresentdependsOn: spec:consumers.spec-studio.spec-page, spec:consumers.spec-studio.intent-panel
spec:model.planned-architecture
spec:model.planned-architecture
readypresentdependsOn: spec:consumers.spec-studio.lenses.architecture
spec:model.relation-reasons
spec:model.relation-reasons
readypresentdependsOn: spec:consumers.spec-studio.spec-page, spec:consumers.spec-studio.spec-page.core
spec:model.rule-keys
spec:model.rule-keys
readypresentdependsOn: spec:consumers.spec-studio.lenses.tests, spec:consumers.spec-studio.spec-page, spec:consumers.spec-studio.spec-page.core, spec:consumers.spec-studio.verification-panels
spec:model.term-addresses
spec:model.term-addresses
readypresentdependsOn: spec:consumers.spec-studio.spec-page, spec:consumers.spec-studio.glossary-page
spec:validation.next-rung-floor
spec:validation.next-rung-floor
readypresentdependsOn: spec:consumers.spec-studio.data
spec:validation.prose-mentions
spec:validation.prose-mentions
readypresentdependsOn: spec:consumers.spec-studio.shell
Rested on by (15)
SpecStated rungImplementation bindingJoined members
spec:consumers.command-line
spec:consumers.command-line
readypresentdependsOn: spec:consumers.spec-studio.publisher
spec:consumers.roadmap.memo
spec:consumers.roadmap.memo
readypresentdependsOn: spec:consumers.intent-composition.proposal.memo
spec:consumers.spec-studio.capability-map-page
spec:consumers.spec-studio.capability-map-page
readypresentrefines: spec:consumers.spec-studio.lenses
dependsOn: spec:consumers.spec-studio.index-page
spec:consumers.spec-studio.cited-line-text
spec:consumers.spec-studio.cited-line-text
scopednonerefines: spec:consumers.spec-studio
dependsOn: spec:consumers.spec-studio.registers
spec:consumers.spec-studio.diagram-kinds
spec:consumers.spec-studio.diagram-kinds
readypresentrefines: spec:consumers.spec-studio.diagrams
decidedBy: spec:decisions.studio-diagram-renderer
spec:consumers.spec-studio.diagram-kinds.edge-routing
spec:consumers.spec-studio.diagram-kinds.edge-routing
readypresentrefines: spec:consumers.spec-studio.diagrams
spec:consumers.spec-studio.diagram-kinds.legibility
spec:consumers.spec-studio.diagram-kinds.legibility
readypresentrefines: spec:consumers.spec-studio.diagrams
dependsOn: spec:consumers.spec-studio.responsive
spec:consumers.spec-studio.diagram-kinds.mermaid-source
spec:consumers.spec-studio.diagram-kinds.mermaid-source
readypresentdependsOn: spec:consumers.spec-studio.page-elements
decidedBy: spec:decisions.studio-diagram-renderer
spec:consumers.spec-studio.diagram-kinds.requirement-trace
spec:consumers.spec-studio.diagram-kinds.requirement-trace
readypresentdependsOn: spec:consumers.spec-studio.data
spec:consumers.spec-studio.diagram-kinds.scoped-architecture
spec:consumers.spec-studio.diagram-kinds.scoped-architecture
readypresentdependsOn: spec:consumers.spec-studio.lenses.architecture
spec:consumers.spec-studio.register-input
spec:consumers.spec-studio.register-input
scopednonerefines: spec:consumers.spec-studio
dependsOn: spec:consumers.spec-studio.data.inputs
spec:consumers.spec-studio.roadmap-page
spec:consumers.spec-studio.roadmap-page
readypresentrefines: spec:consumers.spec-studio
dependsOn: spec:consumers.spec-studio.data, spec:consumers.spec-studio.publisher, spec:consumers.spec-studio.shell
spec:consumers.spec-studio.slice-page
spec:consumers.spec-studio.slice-page
readypresentrefines: spec:consumers.spec-studio
dependsOn: spec:consumers.spec-studio.data.recipe-answers, spec:consumers.spec-studio.pack-page, spec:consumers.spec-studio.diagrams
spec:consumers.structural-mermaid
spec:consumers.structural-mermaid
scopednonedependsOn: spec:consumers.spec-studio.lenses.architecture
spec:protocol.roadmap-replaces-plans
spec:protocol.roadmap-replaces-plans
readypresentdependsOn: spec:observation.run-evidence, spec:consumers.intent-composition.proposal.memo
Verified by (0)

None.

Superseded by (0)

None.

Members with no verifier binding

The graph records bindings and never runs, so no page shows a run result. Decision records are left out: a decision never needs a verifier binding.

None.

Findings

None.

1. The Spec Studio is a static HTML workbench over the one graph

spec:consumers.spec-studio

The Spec Studio is a static HTML workbench over the one graph

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

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.sdp.md

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

Intent
actor
A person in the repository who designs a capability ahead of its code and iterates on it in passes, and a pull request reviewer who holds only a link; both read far more than they change.
problem
The generated Markdown Design Review offers no built-in search or filters, and navigation is through its links, so reviewers in the first adopter open carrier files alongside it.
outcome
Give a person reviewing a design one generated HTML workbench that explores the whole graph through lenses, shows each Spec and Pack in context, and turns a wanted change into scoped intent rather than an edit.
Behavior
rule line 27 · specs/consumers/spec-studio.sdp.md:27
The read-only Studio ships in the open-source package @libar-dev/software-delivery-protocol, beside the four shipped projections; hosted review, shared comments and hosted previews may later ship under @libar-ai/.
rule line 28 · specs/consumers/spec-studio.sdp.md:28
The Studio is a projection of the one graph: its page set under generated/spec-studio/ is regenerated from the graph, states no truth, and confers nothing back into the graph.
rule.staticPageSet line 29 · specs/consumers/spec-studio.sdp.md:29
The Studio is a static page set: the index page, which is the Packs lens; a search page; a page for each other lens, each register, the owner queue, the roadmap and the glossary; one page and one slice page per Pack, one page per Spec; one export file per Pack; and, when the build is given their inputs, a diff page and a runs page; with their local assets. Its build renders each page whole, so a page needs no server, and every page but the search page reads without its script, which adds filtering, search, copying, pan and zoom, and the composing panel.

no example exercises it

rule line 30 · specs/consumers/spec-studio.sdp.md:30
The Studio works offline: the same files open from the file system through file:// for local use and from any static host for sharing.
rule line 31 · specs/consumers/spec-studio.sdp.md:31
The Studio is reproducible: one graph and the same inputs render byte-identical files, and an asset whose filename embeds a hash of its content gets the same name from the same graph.
rule line 32 · specs/consumers/spec-studio.sdp.md:32
The Studio is read-rich: everything the graph holds about a Spec or a Pack is explorable in it.
rule line 33 · specs/consumers/spec-studio.sdp.md:33
The Studio is write-careful: it writes nothing to canonical source, and a change a person wants leaves it as scoped intent for an agent, as spec:consumers.edit-model states.
rule.noSecondGraph line 34 · specs/consumers/spec-studio.sdp.md:34
The Studio never builds a second graph: every join, claim, delivery fact, derived readiness, floor failure and finding it shows is a value the reader computed when the Studio was built, and the page computes none of them again.

no example exercises it

rule.recipeAnswers line 35 · specs/consumers/spec-studio.sdp.md:35
A page shows a catalog recipe's answer only when the Studio's design names that recipe, and the build composes the answer over the graph it derived; the page recomputes none of it.

no example exercises it

rule.namedInputs line 36 · specs/consumers/spec-studio.sdp.md:36
Beside the graph the Studio reads only two optional inputs, a base graph and run records; each is named on every page that shows it, never becomes graph data, a delivery fact or a verdict, and never answers in the graph's name.

no example exercises it

rule line 37 · specs/consumers/spec-studio.sdp.md:37
The Studio stands beside the shipped Design Review, census, Mermaid and Gherkin projections and re-specifies none of them, which spec:decisions.shipped-projections-frozen keeps as they are.

7 unkeyed rules.

Verification · manual
criteria
  • The Studio is accepted when a person given only a link to a build of the first adopter's corpus completes, from the page set alone, the five tasks the first adopter set over its history-view Pack (libar-platform/docs/feedback/sdp-feedback-01.md): find the history contract, locate OD-157, explain the aggregate dependency, find one declaration's type comparison down to the source line that checks it, and say whether a paused-rebuild example has native-backend evidence. Given no run records, the last task passes when the person finds that the example requires the native backend tier, reads whether a verifier is bound to it, and reports that no run result is supplied.
  • The same person names which statements the owner can make first, from the owner queue page.
  • The same person, given a build with a base graph, names what changed in the design since the base, from the diff page.
  • The same person names which components are designed and not yet built, from the architecture lens.
mode
manual
Verification

Verifier bindings

  • test:protocol.studio-publisher · anchored · test anchor binding present · test/studio-publisher.test.ts:26
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio
The diagram as text
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • spec:consumers.spec-studio.cited-line-text: A pinned declaration shows the words of each test line that cites it · declared Spec · no satisfying binding
  • spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders · declared Spec
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads · declared Spec
  • spec:consumers.spec-studio.diff-page: The diff page shows what changed in the design since a base graph · declared Spec
  • spec:consumers.spec-studio.export: A Pack exports as one file, and every page prints as a document · declared Spec
  • spec:consumers.spec-studio.glossary-page: The glossary page lists every term the corpus's Specs define · declared Spec
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence · declared Spec
  • spec:consumers.spec-studio.navigation: Every page of the page set is reached from the top navigation and the index · declared Spec
  • spec:consumers.spec-studio.owner-queue: The owner queue page orders the statements and questions only a person can settle · declared Spec
  • spec:consumers.spec-studio.pack-page: A Pack page shows the Pack's design as one card per member · declared Spec
  • spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set · declared Spec
  • spec:consumers.spec-studio.register-input: An outside register is a named Studio input, so a cited token links to its entry · declared Spec · no satisfying binding
  • spec:consumers.spec-studio.registers: The corpus's registers are pages a reviewer opens from a link · declared Spec
  • spec:consumers.spec-studio.responsive: The Studio reads on a phone as on a desktop · declared Spec
  • spec:consumers.spec-studio.roadmap-page: The roadmap page shows the upcoming work in priority order, split by what it needs · declared Spec
  • spec:consumers.spec-studio.runs-page: The runs page shows the run records the build was given, joined to test files · declared Spec
  • spec:consumers.spec-studio.sharing: A Studio build is stamped and shared from a static host · declared Spec
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas · declared Spec
  • spec:consumers.spec-studio.slice-page: A slice page shows a Pack's design as one whole · declared Spec
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order · declared Spec
  • spec:decisions.studio-html-surface: The Studio renders HTML, and the HTML stays derived · declared Spec
  • spec:decisions.studio-web-components: The Studio is built from custom elements, not a framework · declared Spec
  • spec:consumers.spec-studio.diff-page.changed-entry: The diff page shows a changed entry's base and built values · declared Spec
  • spec:consumers.spec-studio.export.self-contained: A Pack's export opens alone and keeps its links inside it · declared Spec
  • spec:consumers.spec-studio.glossary-page.same-word-twice: A word two Specs define appears once per Spec on the glossary page · declared Spec
  • spec:consumers.spec-studio.owner-queue.dependency-first: The owner queue lists a waiting statement after the one it rests on · declared Spec
  • spec:consumers.spec-studio.registers.blocking-first: The questions page lists the Specs with a blocking question first · declared Spec
  • spec:consumers.spec-studio.runs-page.external-evidence: The runs page shows a run as external evidence from a test file · declared Spec
  • spec:consumers.spec-studio.sharing.stamp-written-apart: The stamp is written beside the page set, and a later build removes it · declared Spec
  • spec:consumers.spec-studio.spec-page.cited-declaration: A pinned declaration shows the test line that cites it · declared Spec
  • spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores · declared Spec
  • spec:consumers.spec-studio.capability-map-page: The capability map page makes refinement readable by epic · declared Spec
  • spec:consumers.spec-studio.data.inputs: The Studio reads two named inputs beside the graph, a base graph and run records · declared Spec
  • spec:consumers.spec-studio.data.recipe-answers: A page takes each recipe answer from the recipe's shipped body · declared Spec
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent · declared Spec
  • spec:consumers.spec-studio.lenses.architecture: The architecture lens draws components by context and layer, the planned beside the built · declared Spec
  • spec:consumers.spec-studio.lenses.evidence: The evidence lens names each source of runtime evidence and reads it as not tracked · declared Spec
  • spec:consumers.spec-studio.lenses.packs: The Packs lens groups every Spec by the Packs that hold it · declared Spec
  • spec:consumers.spec-studio.lenses.tests: The tests lens shows how far each Spec's verification reaches · declared Spec
  • spec:consumers.spec-studio.pack-page.maturity-map: A Pack page's maturity map places every member by its stated rung and its floor · declared Spec
  • spec:consumers.spec-studio.page-elements: A few custom elements filter, search, open and copy on a rendered page · declared Spec
  • spec:consumers.spec-studio.publisher.watch: sdp studio --watch rebuilds the page set on each carrier change · declared Spec
  • spec:consumers.roadmap: A roadmap orders the next bodies of work, and the graph says what each still needs · declared Spec
  • spec:consumers.spec-studio.search: Search finds a Spec, a Pack, an entry or a bound file by a word · declared Spec
  • spec:consumers.design-slice: A slice reads a Pack as one design, with the architecture it touches and what each member needs next · declared Spec
  • spec:consumers.spec-studio.spec-page.core: A Spec page's core shows the whole Spec, with an anchor for every entry · declared Spec
  • spec:consumers.spec-studio.verification-panels: The panels for examples, targets, verifiers and evidence · declared Spec
  • spec:decisions.studio-build-renders: The build renders every Studio view, and an element only enhances it · declared Spec
  • spec:decisions.studio-diagram-renderer: The engine lays out every Studio diagram as static SVG when the page set is built · declared Spec
  • component:protocol.studio-elements: optional browser behavior and proposal handoff · anchored code · src/studio-elements/index.ts:13
  • impl:protocol.build-pipeline-emit: stages build outputs, checks determinism and invalidates projections · anchored code · src/cli/build-command.ts:251
  • impl:protocol.stamp-command: writes the publishing stamp without extraction or rendering · anchored code · src/cli/stamp-command.ts:8
  • impl:protocol.studio-architecture-lens: renders recipe component rows and planned designs as architecture and member diagrams · anchored code · src/projections/studio/pages/architecture-page.ts:50
  • impl:protocol.studio-code-spans: escapes and maps code spans across Studio text · anchored code · src/projections/studio/pages/code-spans.ts:9
  • impl:protocol.studio-command: validates and renders the Studio with independent byte checks and diagnostic exit codes · anchored code · src/cli/studio-command.ts:106
  • impl:protocol.studio-compose: opens a native request dialog beside build-rendered scopes without changing their content · anchored code · src/studio-elements/compose.ts:13
  • impl:protocol.studio-data: assembles reader contexts, Pack totals, rails and search records for static pages · anchored code · src/projections/studio/data.ts:279
  • impl:protocol.studio-diagram-element: adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · anchored code · src/studio-elements/diagram.ts:23
  • impl:protocol.studio-diff: renders declared design changes and binding changes separately · anchored code · src/projections/studio/pages/diff-page.ts:91
  • impl:protocol.studio-evidence-lens: names the four evidence sources and what would bring each into the Studio · anchored code · src/projections/studio/pages/evidence-page.ts:3
  • impl:protocol.studio-expander: opens fragment ancestors and expands disclosures for print · anchored code · src/studio-elements/expander.ts:16
  • impl:protocol.studio-filter: filters build-rendered rows through their recorded attributes · anchored code · src/studio-elements/filter.ts:25
  • impl:protocol.studio-frame: renders Studio navigation, page rails and composing controls · anchored code · src/projections/studio/pages/frame.ts:6
  • impl:protocol.studio-glossary: renders Model terms with their entry-address links · anchored code · src/projections/studio/pages/glossary-page.ts:7
  • impl:protocol.studio-html: shared Studio HTML, source and link encoding · anchored code · src/projections/studio/pages/html.ts:8
  • impl:protocol.studio-index-page: renders Pack disclosures and filterable Spec rows · anchored code · src/projections/studio/pages/index-page.ts:8
  • impl:protocol.studio-intent-panel-element: displays gathered requests and writes copy selections or local download links · anchored code · src/studio-elements/intent-panel-element.ts:14
  • impl:protocol.studio-maturity-map: places resolved Pack members by their stated rung and floor in authored order · anchored code · src/projections/studio/pages/maturity-map.ts:7
  • impl:protocol.studio-owner-queue: renders waiting readiness statements and decider questions · anchored code · src/projections/studio/pages/queue-page.ts:9
  • impl:protocol.studio-pack-export: copies rendered canvas content into one inline-styled document with prefixed element references · anchored code · src/projections/studio/pages/export-page.ts:35
  • impl:protocol.studio-pack-page: renders Pack members, maturity and boundary joins · anchored code · src/projections/studio/pages/pack-page.ts:68
  • impl:protocol.studio-page-catalog: selects Studio pages, optional inputs and Pack exports · anchored code · src/projections/studio/pages/index.ts:21
  • impl:protocol.studio-paths: encodes uppercase id letters for collision-free Pack and Spec page paths · anchored code · src/projections/studio/paths.ts:2
  • impl:protocol.studio-preview-workflow: asserts the reusable Studio preview workflow and Protocol CI caller · anchored code · test/studio-s4.test.ts:742
  • impl:protocol.studio-publish: copies local assets and replaces the Studio directory through its temporary sibling · anchored code · src/projections/studio/publish.ts:24
  • impl:protocol.studio-registers: renders question, decision, declaration and backlog registers · anchored code · src/projections/studio/pages/registers-page.ts:47
  • impl:protocol.studio-requirement-view: selects Spec refiners, verifying examples and their recorded bindings · anchored code · src/projections/studio/pages/requirement-view.ts:8
  • impl:protocol.studio-roadmap-page: renders roadmap needs, holding parts and the shared Markdown memo · anchored code · src/projections/studio/pages/roadmap-page.ts:168
  • impl:protocol.studio-run-rows: renders recipe 45 file rows shared by the runs page and verification panel · anchored code · src/projections/studio/pages/run-rows.ts:69
  • impl:protocol.studio-runs-page: renders readable CTRF inputs, file results, unjoined records and diagnostics · anchored code · src/projections/studio/pages/runs-page.ts:6
  • impl:protocol.studio-scenario-editor: gathers the edited Given, When and Then as exact text scoped to its subject · anchored code · src/studio-elements/scenario-editor.ts:17
  • impl:protocol.studio-search-results: ranks and renders concept, entry and file search hits · anchored code · src/studio-elements/search-results.ts:95
  • impl:protocol.studio-slice-page: design slice summaries, member needs, architecture comparisons and boundary tables · anchored code · src/projections/studio/pages/slice-page.ts:25
  • impl:protocol.studio-spec-page: renders Spec intent, relations and realization bindings · anchored code · src/projections/studio/pages/spec-page.ts:201
  • impl:protocol.studio-spec-structure: renders requirement and trace diagrams and the recorded structural neighborhood · anchored code · src/projections/studio/pages/spec-structure.ts:44
  • impl:protocol.studio-stamp: resolves published stamps and source links in the browser · anchored code · src/studio-elements/stamp.ts:30
  • impl:protocol.studio-tests-lens: renders shared rule and example-space coverage with filters and verifier bindings · anchored code · src/projections/studio/pages/tests-page.ts:34
  • impl:protocol.studio-text: escapes prose and links graph-resolving mentions · anchored code · src/projections/studio/pages/text.ts:7
  • impl:protocol.studio-verification-panels: renders rule coverage, example cards, constraint targets, verifiers and example-space coverage · anchored code · src/projections/studio/pages/spec-verification.ts:74
  • oracle:protocol.runs-page: oracle:protocol.runs-page · anchored oracle binding · test/studio-s4.test.ts:360
  • oracle:protocol.studio-citations: oracle:protocol.studio-citations · anchored oracle binding · test/studio-s2.test.ts:130
  • oracle:protocol.studio-diff-page: oracle:protocol.studio-diff-page · anchored oracle binding · test/studio-s3.test.ts:196
  • oracle:protocol.studio-export: oracle:protocol.studio-export · anchored oracle binding · test/studio-s5.test.ts:302
  • oracle:protocol.studio-glossary-page: oracle:protocol.studio-glossary-page · anchored oracle binding · test/studio-s3.test.ts:268
  • oracle:protocol.studio-owner-queue: oracle:protocol.studio-owner-queue · anchored oracle binding · test/studio-s3.test.ts:132
  • oracle:protocol.studio-registers: oracle:protocol.studio-registers · anchored oracle binding · test/studio-s3.test.ts:79
  • oracle:protocol.studio-sharing: oracle:protocol.studio-sharing · anchored oracle binding · test/studio-s4.test.ts:538
  • test:protocol.roadmap-priority: checks Pack priority extraction, comparison and Studio change notes · anchored test binding · binding present · test/roadmap-priority.test.ts:44
  • test:protocol.run-external: test:protocol.run-external · anchored test binding · binding present · test/studio-s4.test.ts:378
  • test:protocol.studio-architecture-maturity-requirement: test:protocol.studio-architecture-maturity-requirement · anchored test binding · binding present · test/studio-panels.test.ts:35
  • test:protocol.studio-cited-declaration: test:protocol.studio-cited-declaration · anchored test binding · binding present · test/studio-s2.test.ts:139
  • test:protocol.studio-data: test:protocol.studio-data · anchored test binding · binding present · test/studio-data.test.ts:26
  • test:protocol.studio-diff-changed-entry: test:protocol.studio-diff-changed-entry · anchored test binding · binding present · test/studio-s3.test.ts:210
  • test:protocol.studio-export-contained: test:protocol.studio-export-contained · anchored test binding · binding present · test/studio-s5.test.ts:312
  • test:protocol.studio-glossary-same-word-twice: test:protocol.studio-glossary-same-word-twice · anchored test binding · binding present · test/studio-s3.test.ts:278
  • test:protocol.studio-intent-handoff: test:protocol.studio-intent-handoff · anchored test binding · binding present · test/studio-s5.test.ts:407
  • test:protocol.studio-lenses: test:protocol.studio-lenses · anchored test binding · binding present · test/studio-s1.test.ts:273
  • test:protocol.studio-navigation: test:protocol.studio-navigation · anchored test binding · binding present · test/studio-s3.test.ts:317
  • test:protocol.studio-pages: test:protocol.studio-pages · anchored test binding · binding present · test/studio-pages.test.ts:18
  • test:protocol.studio-panels: test:protocol.studio-panels · anchored test binding · binding present · test/studio-s2.test.ts:256
  • test:protocol.studio-publisher: test:protocol.studio-publisher · anchored test binding · binding present · test/studio-publisher.test.ts:26
  • test:protocol.studio-queue-dependency-first: test:protocol.studio-queue-dependency-first · anchored test binding · binding present · test/studio-s3.test.ts:142
  • test:protocol.studio-registers-blocking-first: test:protocol.studio-registers-blocking-first · anchored test binding · binding present · test/studio-s3.test.ts:89
  • test:protocol.studio-roadmap-page: test:protocol.studio-roadmap-page · anchored test binding · binding present · test/studio-roadmap.test.ts:24
  • test:protocol.studio-slice-page: test:protocol.studio-slice-page · anchored test binding · binding present · test/studio-slice.test.ts:132
  • test:protocol.studio-stamp-apart: test:protocol.studio-stamp-apart · anchored test binding · binding present · test/studio-s4.test.ts:555
  • spec:consumers.spec-studio refines spec:consumers.projections-model · declared
  • spec:consumers.spec-studio.capability-map-page refines spec:consumers.spec-studio.lenses · declared — the Capabilities page is a lens that reads refinement
  • spec:consumers.spec-studio.cited-line-text refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.components refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.data refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.data.inputs refines spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.data.recipe-answers refines spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.diagrams refines spec:consumers.spec-studio.components · declared
  • spec:consumers.spec-studio.diff-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.diff-page.changed-entry refines spec:consumers.spec-studio.diff-page · declared
  • spec:consumers.spec-studio.diff-page.changed-entry verifies spec:consumers.spec-studio.diff-page · declared
  • spec:consumers.spec-studio.export refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.export.self-contained refines spec:consumers.spec-studio.export · declared
  • spec:consumers.spec-studio.export.self-contained verifies spec:consumers.spec-studio.export · declared
  • spec:consumers.spec-studio.glossary-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.glossary-page.same-word-twice refines spec:consumers.spec-studio.glossary-page · declared
  • spec:consumers.spec-studio.glossary-page.same-word-twice verifies spec:consumers.spec-studio.glossary-page · declared
  • spec:consumers.spec-studio.lenses refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.lenses.architecture refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.evidence refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.packs refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.tests refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.navigation refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.owner-queue refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.owner-queue.dependency-first refines spec:consumers.spec-studio.owner-queue · declared
  • spec:consumers.spec-studio.owner-queue.dependency-first verifies spec:consumers.spec-studio.owner-queue · declared
  • spec:consumers.spec-studio.pack-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.pack-page.maturity-map refines spec:consumers.spec-studio.pack-page · declared
  • spec:consumers.spec-studio.page-elements refines spec:consumers.spec-studio.components · declared
  • spec:consumers.spec-studio.publisher refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.publisher.watch refines spec:consumers.spec-studio.publisher · declared
  • spec:consumers.spec-studio.register-input refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.registers refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.registers.blocking-first refines spec:consumers.spec-studio.registers · declared
  • spec:consumers.spec-studio.registers.blocking-first verifies spec:consumers.spec-studio.registers · declared
  • spec:consumers.spec-studio.responsive refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.roadmap-page refines spec:consumers.roadmap · declared — the page is the roadmap's reading for a person
  • spec:consumers.spec-studio.roadmap-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.runs-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.runs-page.external-evidence refines spec:consumers.spec-studio.runs-page · declared
  • spec:consumers.spec-studio.runs-page.external-evidence verifies spec:consumers.spec-studio.runs-page · declared
  • spec:consumers.spec-studio.search refines spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.sharing refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.sharing.stamp-written-apart refines spec:consumers.spec-studio.sharing · declared
  • spec:consumers.spec-studio.sharing.stamp-written-apart verifies spec:consumers.spec-studio.sharing · declared
  • spec:consumers.spec-studio.shell refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.slice-page refines spec:consumers.design-slice · declared — the page is the design slice's reading for a person
  • spec:consumers.spec-studio.slice-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.spec-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.spec-page.cited-declaration refines spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.spec-page.cited-declaration verifies spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.spec-page.core refines spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.verification-panels refines spec:consumers.spec-studio.spec-page · declared
  • spec:decisions.studio-build-renders refines spec:decisions.studio-web-components · declared — narrows where a view's values come from; the build writes them into the markup, so a host carries that markup and supplies no graph data
  • spec:decisions.studio-diagram-renderer refines spec:decisions.studio-web-components · declared — narrows how an element that shows a diagram renders it; the element only enhances an SVG the build drew
  • spec:decisions.studio-html-surface refines spec:consumers.spec-studio · declared
  • spec:decisions.studio-web-components refines spec:consumers.spec-studio · declared
  • component:protocol.studio-elements satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.build-pipeline-emit satisfies spec:consumers.spec-studio.publisher · anchored
  • impl:protocol.stamp-command satisfies spec:consumers.spec-studio.sharing · anchored
  • impl:protocol.studio-architecture-lens satisfies spec:consumers.spec-studio.lenses · anchored
  • impl:protocol.studio-code-spans satisfies spec:consumers.spec-studio.shell · anchored
  • impl:protocol.studio-command satisfies spec:consumers.spec-studio.publisher · anchored
  • impl:protocol.studio-command satisfies spec:consumers.spec-studio · anchored
  • impl:protocol.studio-compose satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-data satisfies spec:consumers.spec-studio.data · anchored
  • impl:protocol.studio-data satisfies spec:consumers.spec-studio · anchored
  • impl:protocol.studio-diagram-element satisfies spec:consumers.spec-studio.responsive · anchored
  • impl:protocol.studio-diagram-element satisfies spec:consumers.spec-studio.export · anchored
  • impl:protocol.studio-diagram-element satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-diff satisfies spec:consumers.spec-studio.diff-page · anchored
  • impl:protocol.studio-evidence-lens satisfies spec:consumers.spec-studio.lenses · anchored
  • impl:protocol.studio-expander satisfies spec:consumers.spec-studio.export · anchored
  • impl:protocol.studio-filter satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio.shell · anchored
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio.responsive · anchored
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio · anchored
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio.lenses · anchored
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio.navigation · anchored
  • impl:protocol.studio-glossary satisfies spec:consumers.spec-studio.glossary-page · anchored
  • impl:protocol.studio-html satisfies spec:consumers.spec-studio.shell · anchored
  • impl:protocol.studio-index-page satisfies spec:consumers.spec-studio.navigation · anchored
  • impl:protocol.studio-intent-panel-element satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-maturity-map satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-owner-queue satisfies spec:consumers.spec-studio.owner-queue · anchored
  • impl:protocol.studio-pack-export satisfies spec:consumers.spec-studio.export · anchored
  • impl:protocol.studio-pack-page satisfies spec:consumers.spec-studio.pack-page · anchored
  • impl:protocol.studio-pack-page satisfies spec:consumers.spec-studio.export · anchored
  • impl:protocol.studio-pack-page satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-page-catalog satisfies spec:consumers.spec-studio.publisher · anchored
  • impl:protocol.studio-paths satisfies spec:consumers.spec-studio.publisher · anchored
  • impl:protocol.studio-preview-workflow satisfies spec:consumers.spec-studio.sharing · anchored
  • impl:protocol.studio-publish satisfies spec:consumers.spec-studio.publisher · anchored
  • impl:protocol.studio-registers satisfies spec:consumers.spec-studio.registers · anchored
  • impl:protocol.studio-requirement-view satisfies spec:consumers.spec-studio.spec-page · anchored
  • impl:protocol.studio-roadmap-page satisfies spec:consumers.spec-studio.roadmap-page · anchored
  • impl:protocol.studio-run-rows satisfies spec:consumers.spec-studio.runs-page · anchored
  • impl:protocol.studio-runs-page satisfies spec:consumers.spec-studio.runs-page · anchored
  • impl:protocol.studio-scenario-editor satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-search-results satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-slice-page satisfies spec:consumers.spec-studio.slice-page · anchored
  • impl:protocol.studio-spec-page satisfies spec:consumers.spec-studio.spec-page · anchored
  • impl:protocol.studio-spec-structure satisfies spec:consumers.spec-studio.spec-page · anchored
  • impl:protocol.studio-spec-structure satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-stamp satisfies spec:consumers.spec-studio.sharing · anchored
  • impl:protocol.studio-tests-lens satisfies spec:consumers.spec-studio.lenses · anchored
  • impl:protocol.studio-text satisfies spec:consumers.spec-studio.shell · anchored
  • impl:protocol.studio-verification-panels satisfies spec:consumers.spec-studio.components · anchored
  • oracle:protocol.runs-page models spec:consumers.spec-studio.runs-page · anchored
  • oracle:protocol.studio-citations models spec:consumers.spec-studio.spec-page · anchored
  • oracle:protocol.studio-diff-page models spec:consumers.spec-studio.diff-page · anchored
  • oracle:protocol.studio-export models spec:consumers.spec-studio.export · anchored
  • oracle:protocol.studio-glossary-page models spec:consumers.spec-studio.glossary-page · anchored
  • oracle:protocol.studio-owner-queue models spec:consumers.spec-studio.owner-queue · anchored
  • oracle:protocol.studio-registers models spec:consumers.spec-studio.registers · anchored
  • oracle:protocol.studio-sharing models spec:consumers.spec-studio.sharing · anchored
  • test:protocol.roadmap-priority verifies spec:consumers.spec-studio.diff-page · anchored
  • test:protocol.roadmap-priority verifies spec:consumers.spec-studio.pack-page · anchored
  • test:protocol.run-external verifies spec:consumers.spec-studio.runs-page.external-evidence · anchored
  • test:protocol.studio-architecture-maturity-requirement verifies spec:consumers.spec-studio.spec-page · anchored
  • test:protocol.studio-cited-declaration verifies spec:consumers.spec-studio.spec-page.cited-declaration · anchored
  • test:protocol.studio-data verifies spec:consumers.spec-studio.data · anchored
  • test:protocol.studio-data verifies spec:consumers.spec-studio.publisher · anchored
  • test:protocol.studio-diff-changed-entry verifies spec:consumers.spec-studio.diff-page.changed-entry · anchored
  • test:protocol.studio-export-contained verifies spec:consumers.spec-studio.export.self-contained · anchored
  • test:protocol.studio-glossary-same-word-twice verifies spec:consumers.spec-studio.glossary-page.same-word-twice · anchored
  • test:protocol.studio-intent-handoff verifies spec:consumers.spec-studio.responsive · anchored
  • test:protocol.studio-intent-handoff verifies spec:consumers.spec-studio.export · anchored
  • test:protocol.studio-intent-handoff verifies spec:consumers.spec-studio.components · anchored
  • test:protocol.studio-lenses verifies spec:consumers.spec-studio.lenses · anchored
  • test:protocol.studio-navigation verifies spec:consumers.spec-studio.navigation · anchored
  • test:protocol.studio-pages verifies spec:consumers.spec-studio.shell · anchored
  • test:protocol.studio-pages verifies spec:consumers.spec-studio.pack-page · anchored
  • test:protocol.studio-panels verifies spec:consumers.spec-studio.spec-page · anchored
  • test:protocol.studio-publisher verifies spec:consumers.spec-studio.publisher · anchored
  • test:protocol.studio-publisher verifies spec:consumers.spec-studio · anchored
  • test:protocol.studio-queue-dependency-first verifies spec:consumers.spec-studio.owner-queue.dependency-first · anchored
  • test:protocol.studio-registers-blocking-first verifies spec:consumers.spec-studio.registers.blocking-first · anchored
  • test:protocol.studio-roadmap-page verifies spec:consumers.spec-studio.roadmap-page · anchored
  • test:protocol.studio-roadmap-page verifies spec:consumers.spec-studio.navigation · anchored
  • test:protocol.studio-slice-page verifies spec:consumers.spec-studio.slice-page · anchored
  • test:protocol.studio-stamp-apart verifies spec:consumers.spec-studio.sharing.stamp-written-apart · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.

Decisions

  • spec:decisions.shipped-projections-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.

  • The build renders every Studio view, and an element only enhances it

    The build renders every Studio view into the page's markup from reader values and the recipe answers its page names, and a custom element adds only the interaction its view needs; a host page that embeds a view carries the markup the build wrote and loads the element script, and supplies no graph data.

  • The Studio renders HTML, and the HTML stays derived

    The Studio renders generated HTML as its surface. The HTML is derived and never committed: git diffs stay over the canonical Spec source, and the Studio's files are regenerated from the graph.

  • The Studio is built from custom elements, not a framework

    The Studio is built from Web Components, custom elements written without React, Vue, Svelte or another framework.

Runtime
  • component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocol

    Uses

    • component:protocol.adapters · external runtime and source adapters · src/adapters/vitest.ts:23 · layer adapter · context protocol
    • component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocol
    • 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.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocol
    • component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol
    • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
    • component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol
  • 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.studio-command · validates and renders the Studio with independent byte checks and diagnostic exit codes · src/cli/studio-command.ts:106

    Component: component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-data · assembles reader contexts, Pack totals, rails and search records for static pages · src/projections/studio/data.ts:279

    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.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6

    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.spec-studio
Relations of spec:consumers.spec-studiodependsOn · declaredrefines · declareddependsOn · declareddecidedBy · declareddecidedBy · declareddecidedBy · declaredconstrainedBy · declaredrefines · declaredOutgoing refinesspec:consumers.projections-modelProjections fan out fromone graph without becomingtruth stores…consumers.projections-modelOutgoing dependsOnspec:consumers.edit-modelViews compose scoped intentinstead of patchingcanonical source…consumers.edit-modelspec:consumers.readerThe reader bridges agententry points to composablegraph context…consumers.readerOutgoing constrainedByspec:extraction.determinismCommitted source derivesbyte-identical output…extraction.determinismOutgoing decidedByspec:decisions.shipped-projections-frozenThe shipped projectionsstay frozen…decisions.shipped-projections-frozenspec:decisions.studio-build-rendersThe build renders everyStudio view, and an elementonly enhances it…decisions.studio-build-rendersSubjectspec:consumers.spec-studioThe Spec Studio is a staticHTML workbench over the onegraph…consumers.spec-studioIncoming refinesspec:consumers.spec-studio.fold.Incoming.refines22 Incoming refines, folded…consumers.spec-studio.fold.Incoming.refines
The diagram as text
  • spec:consumers.edit-model: Views compose scoped intent instead of patching canonical source
  • spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores
  • spec:consumers.reader: The reader bridges agent entry points to composable graph context
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.cited-line-text: A pinned declaration shows the words of each test line that cites it
  • spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • spec:consumers.spec-studio.diff-page: The diff page shows what changed in the design since a base graph
  • spec:consumers.spec-studio.export: A Pack exports as one file, and every page prints as a document
  • spec:consumers.spec-studio.glossary-page: The glossary page lists every term the corpus's Specs define
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence
  • spec:consumers.spec-studio.navigation: Every page of the page set is reached from the top navigation and the index
  • spec:consumers.spec-studio.owner-queue: The owner queue page orders the statements and questions only a person can settle
  • spec:consumers.spec-studio.pack-page: A Pack page shows the Pack's design as one card per member
  • spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set
  • spec:consumers.spec-studio.register-input: An outside register is a named Studio input, so a cited token links to its entry
  • spec:consumers.spec-studio.registers: The corpus's registers are pages a reviewer opens from a link
  • spec:consumers.spec-studio.responsive: The Studio reads on a phone as on a desktop
  • spec:consumers.spec-studio.roadmap-page: The roadmap page shows the upcoming work in priority order, split by what it needs
  • spec:consumers.spec-studio.runs-page: The runs page shows the run records the build was given, joined to test files
  • spec:consumers.spec-studio.sharing: A Studio build is stamped and shared from a static host
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:consumers.spec-studio.slice-page: A slice page shows a Pack's design as one whole
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order
  • spec:decisions.shipped-projections-frozen: The shipped projections stay frozen
  • spec:decisions.studio-build-renders: The build renders every Studio view, and an element only enhances it
  • spec:decisions.studio-html-surface: The Studio renders HTML, and the HTML stays derived
  • spec:decisions.studio-web-components: The Studio is built from custom elements, not a framework
  • spec:extraction.determinism: Committed source derives byte-identical output
  • spec:consumers.spec-studio constrainedBy spec:extraction.determinism · declared
  • spec:consumers.spec-studio decidedBy spec:decisions.shipped-projections-frozen · declared
  • spec:consumers.spec-studio decidedBy spec:decisions.studio-build-renders · declared
  • spec:consumers.spec-studio decidedBy spec:decisions.studio-html-surface · declared
  • spec:consumers.spec-studio decidedBy spec:decisions.studio-web-components · declared
  • spec:consumers.spec-studio dependsOn spec:consumers.edit-model · declared — wanted changes leave the view as intent for an ordinary source edit
  • spec:consumers.spec-studio dependsOn spec:consumers.reader · declared
  • spec:consumers.spec-studio refines spec:consumers.projections-model · declared
  • spec:consumers.spec-studio.cited-line-text refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.components refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.data refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.diff-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.export refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.glossary-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.lenses refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.navigation refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.owner-queue refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.pack-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.publisher refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.register-input refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.registers refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.responsive refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.roadmap-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.runs-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.sharing refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.shell refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.slice-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.spec-page refines spec:consumers.spec-studio · declared
  • spec:decisions.studio-html-surface refines spec:consumers.spec-studio · declared
  • spec:decisions.studio-web-components refines spec:consumers.spec-studio · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

  • refines · spec:consumers.projections-model · stated ready, floor ready
  • dependsOn · spec:consumers.edit-model · stated ready, floor ready
  • dependsOn · spec:consumers.reader · stated ready, floor ready
  • constrainedBy · spec:extraction.determinism · stated ready, floor ready
  • decidedBy · spec:decisions.shipped-projections-frozen · stated ready, floor ready
  • decidedBy · spec:decisions.studio-build-renders · stated ready, floor ready
  • decidedBy · spec:decisions.studio-html-surface · stated ready, floor ready
  • decidedBy · spec:decisions.studio-web-components · stated ready, floor ready

Rested on by

Distance 1

  • spec:consumers.spec-studio.cited-line-text

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:roadmap, pack:self-hosting-v1

  • spec:consumers.spec-studio.components

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-compose · src/studio-elements/compose.ts:13
    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68
    • impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44
    • impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-intent-handoff

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.data

    Implementing units

    • impl:protocol.studio-data · src/projections/studio/data.ts:279

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-data

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.export

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.glossary-page

    Implementing units

    • impl:protocol.studio-glossary · src/projections/studio/pages/glossary-page.ts:7

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.glossary-page.same-word-twice

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses

    Implementing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.navigation

    Implementing units

    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-navigation, test:protocol.studio-roadmap-page

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.pack-page

    Implementing units

    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap-priority, test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.publisher

    Implementing units

    • impl:protocol.build-pipeline-emit · src/cli/build-command.ts:251
    • impl:protocol.studio-command · src/cli/studio-command.ts:106
    • impl:protocol.studio-page-catalog · src/projections/studio/pages/index.ts:21
    • impl:protocol.studio-paths · src/projections/studio/paths.ts:2
    • impl:protocol.studio-publish · src/projections/studio/publish.ts:24

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-data, test:protocol.studio-publisher

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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.registers

    Implementing units

    • impl:protocol.studio-registers · src/projections/studio/pages/registers-page.ts:47

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.registers.blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.responsive

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-intent-handoff

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.runs-page

    Implementing units

    • impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.sharing

    Implementing units

    • impl:protocol.stamp-command · src/cli/stamp-command.ts:8
    • impl:protocol.studio-preview-workflow · test/studio-s4.test.ts:742
    • impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.sharing.stamp-written-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.shell

    Implementing units

    • impl:protocol.studio-code-spans · src/projections/studio/pages/code-spans.ts:9
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-html · src/projections/studio/pages/html.ts:8
    • impl:protocol.studio-text · src/projections/studio/pages/text.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.spec-page

    Implementing units

    • impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8
    • impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:decisions.studio-html-surface

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:decisions.studio-web-components

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 2

Distance 3

  • spec:consumers.command-line.generate-check-failure

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.generate-check-failure

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.command-line.generate-writes-every-root

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.generate-writes-every-root

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.command-line.verb-help-touches-nothing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.verb-help-touches-nothing

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.engine-provenance

    Implementing units

    • impl:protocol.build-artifacts · src/cli/build-artifacts.ts:182
    • impl:protocol.engine-provenance-cli · src/cli/sdp.ts:102

    Referencing units

    None.

    Enabled verifiers: test:protocol.engine-provenance

    Packs: pack:design-management-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.data.inputs.both-given

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-inputs-both-given

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.data.inputs.graph-only

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-graph-only

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagram-kinds

    Implementing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219
    • impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-catalog

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.edge-routing

    Implementing units

    • impl:protocol.studio-diagram-routing · src/projections/studio/diagrams/routing.ts:38
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagrams.folds-by-context

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-context

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.folds-by-layer

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-layer

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.within-bound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-within-bound

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.planned-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-planned-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.unit-register

    Implementing units

    • impl:protocol.studio-unit-register · src/projections/studio/pages/architecture-register.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-maturity-requirement

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.tests.coverage-row

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-tests-coverage-row

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.publisher.watch.matches-plain-run

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-watch-plain

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.verification-panels.rule-coverage

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-rule-coverage

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.structural-mermaid

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:design-management-v1, pack:self-hosting-v1

Distance 4

  • spec:consumers.spec-studio.diagram-kinds.capability-tree

    Implementing units

    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

Relations

Relation and directionOther endClaimReasonExercised keys
constrainedBy · outgoingspec:extraction.determinism
spec:extraction.determinism · resolves
declaredNoneNone
decidedBy · outgoingspec:decisions.shipped-projections-frozen
spec:decisions.shipped-projections-frozen · resolves
declaredNoneNone
decidedBy · outgoingThe build renders every Studio view, and an element only enhances it
spec:decisions.studio-build-renders · resolves
declaredNoneNone
decidedBy · outgoingThe Studio renders HTML, and the HTML stays derived
spec:decisions.studio-html-surface · resolves
declaredNoneNone
decidedBy · outgoingThe Studio is built from custom elements, not a framework
spec:decisions.studio-web-components · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.edit-model
spec:consumers.edit-model · resolves
declaredwanted changes leave the view as intent for an ordinary source editNone
dependsOn · outgoingspec:consumers.reader
spec:consumers.reader · resolves
declaredNoneNone
refines · outgoingspec:consumers.projections-model
spec:consumers.projections-model · resolves
declaredNoneNone
refines · incomingspec:consumers.spec-studio.cited-line-text
spec:consumers.spec-studio.cited-line-text · resolves
declaredNoneNone
refines · incomingThe Studio's custom elements each hold one view the build renders
spec:consumers.spec-studio.components · resolves
declaredNoneNone
refines · incomingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
refines · incomingThe diff page shows what changed in the design since a base graph
spec:consumers.spec-studio.diff-page · resolves
declaredNoneNone
refines · incomingA Pack exports as one file, and every page prints as a document
spec:consumers.spec-studio.export · resolves
declaredNoneNone
refines · incomingThe glossary page lists every term the corpus's Specs define
spec:consumers.spec-studio.glossary-page · resolves
declaredNoneNone
refines · incomingFive lenses read the graph as Packs, capabilities, architecture, tests and evidence
spec:consumers.spec-studio.lenses · resolves
declaredNoneNone
refines · incomingEvery page of the page set is reached from the top navigation and the index
spec:consumers.spec-studio.navigation · resolves
declaredNoneNone
refines · incomingThe owner queue page orders the statements and questions only a person can settle
spec:consumers.spec-studio.owner-queue · resolves
declaredNoneNone
refines · incomingA Pack page shows the Pack's design as one card per member
spec:consumers.spec-studio.pack-page · resolves
declaredNoneNone
refines · incomingsdp studio publishes the Studio as one page set
spec:consumers.spec-studio.publisher · resolves
declaredNoneNone
refines · incomingspec:consumers.spec-studio.register-input
spec:consumers.spec-studio.register-input · resolves
declaredNoneNone
refines · incomingThe corpus's registers are pages a reviewer opens from a link
spec:consumers.spec-studio.registers · resolves
declaredNoneNone
refines · incomingThe Studio reads on a phone as on a desktop
spec:consumers.spec-studio.responsive · resolves
declaredNoneNone
refines · incomingspec:consumers.spec-studio.roadmap-page
spec:consumers.spec-studio.roadmap-page · resolves
declaredNoneNone
refines · incomingThe runs page shows the run records the build was given, joined to test files
spec:consumers.spec-studio.runs-page · resolves
declaredNoneNone
refines · incomingA Studio build is stamped and shared from a static host
spec:consumers.spec-studio.sharing · resolves
declaredNoneNone
refines · incomingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredNoneNone
refines · incomingspec:consumers.spec-studio.slice-page
spec:consumers.spec-studio.slice-page · resolves
declaredNoneNone
refines · incomingA Spec page shows one Spec in collapsible panels, in a fixed order
spec:consumers.spec-studio.spec-page · resolves
declaredNoneNone
refines · incomingThe Studio renders HTML, and the HTML stays derived
spec:decisions.studio-html-surface · resolves
declaredNoneNone
refines · incomingThe Studio is built from custom elements, not a framework
spec:decisions.studio-web-components · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.studio-command · validates and renders the Studio with independent byte checks and diagnostic exit codes · src/cli/studio-command.ts:106 · role publisher · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.studio-data · assembles reader contexts, Pack totals, rails and search records for static pages · src/projections/studio/data.ts:279 · role contract · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-publisher · anchored · test/studio-publisher.test.ts:26 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

2. The Studio renders HTML, and the HTML stays derived

spec:decisions.studio-html-surface

The Studio renders HTML, and the HTML stays derived

spec:decisions.studio-html-surfaceDecision Record · featureready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/decisions/studio-html-surface.sdp.md

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

Intent
outcome
Give reviewers a Studio with search, filters and collapsible views while git diffs stay over canonical Spec source.
Decision
context
When a model writes the Specs, a person's main act is review, and review reads tables, diagrams, code, comparisons and examples across many Specs. The first adopter's reviewers need search, filters, navigation and progressive disclosure across a Pack, which the generated Markdown pages do not give: the Pack page's member table is too wide for those readers, and they open the carrier files instead.
decision
The Studio renders generated HTML as its surface. The HTML is derived and never committed: git diffs stay over the canonical Spec source, and the Studio's files are regenerated from the graph.
rationale
  • HTML conveys more per screen: collapsible sections, wide tables that scroll in place, SVG diagrams, highlighted code and side-by-side comparisons are native to it.
  • HTML is shareable: a page set uploaded to any static host is a link a reviewer opens without installing anything.
  • HTML is interactive: search, filters and navigation run in the page over values the build wrote, which Markdown cannot do.
  • The Studio's code renders its HTML from the graph, so the original's argument from generation time and token cost, which priced a page a model writes, does not apply.
alternatives
  • Markdown renders in Markdown viewers and agents read it as text; the generated Markdown Design Review lacks the Studio's search, filters and collapsible views, so it stays beside the Studio.
consequences
  • The principal trade-off of HTML, diffs that are noisier in git, is sidestepped because the HTML is derived and never committed.
  • The Studio stands beside the Markdown Design Review. The Studio is an interactive workbench, the frozen Markdown Design Review is a generated view for agents and Markdown readers, and git review stays over canonical Spec source; neither view ranks above the other.
  • The case for derived HTML holds for any canonical carrier, because it rests on the HTML being derived and never committed, not on the Specs being written in TypeScript.
  • The richer interactions the original design lists, such as moving a target on a slider, running a scenario harness or reordering members by drag and drop, wait for later phases and their own Specs; the Studio's first build is read-only.
Verification

Verifier bindings

No verifier binding recorded.

Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
  • Satisfying or referencing units: no recorded binding.
  • Test or oracle bindings: no recorded binding.
Requirement drawing for spec:decisions.studio-html-surface

Arrows: refines (declared).

The diagram as text
  • spec:decisions.studio-html-surface: The Studio renders HTML, and the HTML stays derived · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • spec:decisions.studio-html-surface refines spec:consumers.spec-studio · declared
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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:decisions.studio-html-surface
Relations of spec:decisions.studio-html-surfacedecidedBy · declaredrefines · declareddependsOn · declaredOutgoing refinesspec:consumers.spec-studioThe Spec Studio is a staticHTML workbench over the onegraph…consumers.spec-studioOutgoing dependsOnspec:extraction.regenerabilityGenerated artifacts aredisposable projections…extraction.regenerabilitySubjectspec:decisions.studio-html-surfaceThe Studio renders HTML,and the HTML stays derived…decisions.studio-html-surface
The diagram as text
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:decisions.studio-html-surface: The Studio renders HTML, and the HTML stays derived
  • spec:extraction.regenerability: Generated artifacts are disposable projections
  • spec:decisions.studio-html-surface dependsOn spec:extraction.regenerability · declared — disposable HTML can be regenerated from the graph instead of committed as authored source
  • spec:decisions.studio-html-surface refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio decidedBy spec:decisions.studio-html-surface · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

  • refines · spec:consumers.spec-studio · stated ready, floor ready
  • dependsOn · spec:extraction.regenerability · stated ready, floor ready

Rested on by

Distance 1

  • spec:consumers.spec-studio

    Implementing units

    • impl:protocol.studio-command · src/cli/studio-command.ts:106
    • impl:protocol.studio-data · src/projections/studio/data.ts:279
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-publisher

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 2

  • spec:consumers.spec-studio.cited-line-text

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:roadmap, pack:self-hosting-v1

  • spec:consumers.spec-studio.components

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-compose · src/studio-elements/compose.ts:13
    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68
    • impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44
    • impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-intent-handoff

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.data

    Implementing units

    • impl:protocol.studio-data · src/projections/studio/data.ts:279

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-data

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.export

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.glossary-page

    Implementing units

    • impl:protocol.studio-glossary · src/projections/studio/pages/glossary-page.ts:7

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.glossary-page.same-word-twice

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses

    Implementing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.navigation

    Implementing units

    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-navigation, test:protocol.studio-roadmap-page

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.pack-page

    Implementing units

    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap-priority, test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.publisher

    Implementing units

    • impl:protocol.build-pipeline-emit · src/cli/build-command.ts:251
    • impl:protocol.studio-command · src/cli/studio-command.ts:106
    • impl:protocol.studio-page-catalog · src/projections/studio/pages/index.ts:21
    • impl:protocol.studio-paths · src/projections/studio/paths.ts:2
    • impl:protocol.studio-publish · src/projections/studio/publish.ts:24

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-data, test:protocol.studio-publisher

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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.registers

    Implementing units

    • impl:protocol.studio-registers · src/projections/studio/pages/registers-page.ts:47

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.registers.blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.responsive

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-intent-handoff

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.runs-page

    Implementing units

    • impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.sharing

    Implementing units

    • impl:protocol.stamp-command · src/cli/stamp-command.ts:8
    • impl:protocol.studio-preview-workflow · test/studio-s4.test.ts:742
    • impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.sharing.stamp-written-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.shell

    Implementing units

    • impl:protocol.studio-code-spans · src/projections/studio/pages/code-spans.ts:9
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-html · src/projections/studio/pages/html.ts:8
    • impl:protocol.studio-text · src/projections/studio/pages/text.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.spec-page

    Implementing units

    • impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8
    • impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:decisions.studio-web-components

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 3

Distance 4

  • spec:consumers.command-line.generate-check-failure

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.generate-check-failure

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.command-line.generate-writes-every-root

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.generate-writes-every-root

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.command-line.verb-help-touches-nothing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.verb-help-touches-nothing

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.engine-provenance

    Implementing units

    • impl:protocol.build-artifacts · src/cli/build-artifacts.ts:182
    • impl:protocol.engine-provenance-cli · src/cli/sdp.ts:102

    Referencing units

    None.

    Enabled verifiers: test:protocol.engine-provenance

    Packs: pack:design-management-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.data.inputs.both-given

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-inputs-both-given

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.data.inputs.graph-only

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-graph-only

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagram-kinds

    Implementing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219
    • impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-catalog

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.edge-routing

    Implementing units

    • impl:protocol.studio-diagram-routing · src/projections/studio/diagrams/routing.ts:38
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagrams.folds-by-context

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-context

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.folds-by-layer

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-layer

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.within-bound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-within-bound

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.planned-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-planned-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.unit-register

    Implementing units

    • impl:protocol.studio-unit-register · src/projections/studio/pages/architecture-register.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-maturity-requirement

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.tests.coverage-row

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-tests-coverage-row

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.publisher.watch.matches-plain-run

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-watch-plain

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.verification-panels.rule-coverage

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-rule-coverage

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.structural-mermaid

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:design-management-v1, pack:self-hosting-v1

Distance 5

  • spec:consumers.spec-studio.diagram-kinds.capability-tree

    Implementing units

    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:extraction.regenerability
spec:extraction.regenerability · resolves
declareddisposable HTML can be regenerated from the graph instead of committed as authored sourceNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
decidedBy · incomingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone

Bindings

Implementation binding: none

Design reference: none

Verifier binding: none

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

3. The Studio renders from the reader's values and embeds only what its script reads

spec:consumers.spec-studio.data

The Studio renders from the reader's values and embeds only what its script reads

spec:consumers.spec-studio.dataContract · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.data.sdp.md

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

The build writes each value into the page's markup, so a page reads in full as HTML. Search is the exception: a browser refuses a fetch from a page opened through file://, so the search page carries its index inside it. On the first adopter's corpus that index is too large to repeat on every page, which is why search runs on a page of its own.

Intent
outcome
Render every Studio page from the values the reader returns for the graph the agent surface reads, so a page derives nothing of its own and carries only the data its script needs.
Contract
rule.readerValues line 24 · specs/consumers/spec-studio.data.sdp.md:24
The build renders the index from specs(), packs(), findings(), each Spec's design columns and the epic memberships recipe 52 answers, a Pack page from packContext and the Pack totals, a Spec page from specContext, and the search page from the search index; every page's rail renders the rail values. A page states no value the reader did not return or a named recipe did not answer, apart from counts the build takes of those values.

no example exercises it

rule.embeddedData line 25 · specs/consumers/spec-studio.data.sdp.md:25
A page whose script reads data embeds it in one script element of type application/json with the id sdp-data, serialized as JSON with every < then written as the six characters \u003c, so no text can close the element. The search page embeds the search index there; every other page embeds no data, because its values are in its markup.

no example exercises it

rule.noDataFiles line 26 · specs/consumers/spec-studio.data.sdp.md:26
The page set writes no data file of its own: an agent reads the graph through sdp q, and sdp build writes the serialized graph.

no example exercises it

rule.noSlices line 27 · specs/consumers/spec-studio.data.sdp.md:27
The Studio's data holds no context bundle or other AI slice: the context bundle is composed on each invocation and never saved, and a design pass composes one with its recipe when it needs it. A slice page renders the design slice's answer into its markup, as every page renders its values, and embeds no slice data.

no example exercises it

0 unkeyed rules.

Design
packTotals line 30 · specs/consumers/spec-studio.data.sdp.md:30
{ members: number; unresolved: number; heldBelowNextRung: number; waitingForAuthor: number; entries: number; declarations: number; openQuestions: number; blockingQuestions: number; withImplementations: number; withReferences: number; restsOn: number; restedOnBy: number; verifiedBy: number; supersededBy: number }, the totals recipe 29 returns for the Pack, each counted as that recipe counts it.

no citation recorded

railValues line 31 · specs/consumers/spec-studio.data.sdp.md:31
{ packs: { id: string; title?: string; members: { id: string; title?: string; statedReadiness?: string; ownsExampleSpace: boolean }[] }[]; findings: { errors: number; warnings: number } }, the values every page's rail renders: each Pack in id order with its members in authored order, a member owning an example space when its Spec context carries one, and the validation report's findings counted by severity.

no citation recorded

searchIndex line 32 · specs/consumers/spec-studio.data.sdp.md:32
{ records: SearchRecord[] }, one record per graph node, in id order.

no citation recorded

searchRecord line 33 · specs/consumers/spec-studio.data.sdp.md:33
{ id: string; nodeType: "Primitive" | "Pack" | "Anchor" | "CodeNode"; page: string | null; title?: string; label?: string; framing?: string; narrative?: string; sections?: Record<string, unknown>; file?: string; line?: number; specKind?: string; statedReadiness?: string; floorReached?: string | null; bindings: { edge: string; specId: string }[]; entries: SearchEntry[] }: title, label, framing, narrative and sections exactly as the graph node holds them, the fields findByConcept reads; page the node's page path in the page set, null for an Anchor or a CodeNode; file and line as recorded; the kind and the two rungs on a Spec only, floorReached null when no rung derives; bindings the Specs an Anchor's or CodeNode's outgoing edges reach, with the edge type, and empty for any other node.

no citation recorded

searchEntry line 34 · specs/consumers/spec-studio.data.sdp.md:34
{ section: string; entry: string | null; key: string | null; address: string | null; line: number | null; text: string }, one per value recipe 23's walk reaches in a Spec's narrative and sections, taken with no term: each string, and each value that is not a string under a key the author coins, as its JSON text; in that walk's order, with that recipe's entry path, coined key, address and line. A term matches an entry as that recipe matches it, a string by its key or text and any other value by its key only, so the entries a term matches are the rows recipe 23 returns for it.

no citation recorded

Verification

Verifier bindings

  • test:protocol.studio-data · anchored · test anchor binding present · test/studio-data.test.ts:26
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.data
The diagram as text
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads · declared Spec
  • spec:consumers.spec-studio.data.inputs: The Studio reads two named inputs beside the graph, a base graph and run records · declared Spec
  • spec:consumers.spec-studio.data.recipe-answers: A page takes each recipe answer from the recipe's shipped body · declared Spec
  • spec:consumers.spec-studio.data.inputs.both-given: Both inputs add their pages, named, and the same inputs write the same bytes · declared Spec
  • spec:consumers.spec-studio.data.inputs.graph-only: Without inputs the page set is the graph's alone · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.studio-base-input: reads named Studio base graphs and run inputs · anchored code · src/cli/studio-inputs.ts:9
  • impl:protocol.studio-command: validates and renders the Studio with independent byte checks and diagnostic exit codes · anchored code · src/cli/studio-command.ts:106
  • impl:protocol.studio-data: assembles reader contexts, Pack totals, rails and search records for static pages · anchored code · src/projections/studio/data.ts:279
  • impl:protocol.studio-inputs: named base graph and run input contract · anchored code · src/projections/studio/inputs.ts:1
  • impl:protocol.studio-recipes: evaluates shipped recipe bodies once and shares answers between Studio pages · anchored code · src/projections/studio/recipes.ts:34
  • impl:protocol.studio-register-contracts: shared recipe answer shapes for Studio registers · anchored code · src/projections/studio/pages/register-answers.ts:4
  • oracle:protocol.studio-inputs: oracle:protocol.studio-inputs · anchored oracle binding · test/studio-s4.test.ts:417
  • test:protocol.studio-data: test:protocol.studio-data · anchored test binding · binding present · test/studio-data.test.ts:26
  • test:protocol.studio-graph-only: test:protocol.studio-graph-only · anchored test binding · binding present · test/studio-s4.test.ts:434
  • test:protocol.studio-inputs-both-given: test:protocol.studio-inputs-both-given · anchored test binding · binding present · test/studio-s4.test.ts:464
  • test:protocol.studio-lenses: test:protocol.studio-lenses · anchored test binding · binding present · test/studio-s1.test.ts:273
  • spec:consumers.spec-studio.data refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.data.inputs refines spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.data.inputs.both-given refines spec:consumers.spec-studio.data.inputs · declared
  • spec:consumers.spec-studio.data.inputs.both-given verifies spec:consumers.spec-studio.data.inputs · declared
  • spec:consumers.spec-studio.data.inputs.graph-only refines spec:consumers.spec-studio.data.inputs · declared
  • spec:consumers.spec-studio.data.inputs.graph-only verifies spec:consumers.spec-studio.data.inputs · declared
  • spec:consumers.spec-studio.data.recipe-answers refines spec:consumers.spec-studio.data · declared
  • impl:protocol.studio-base-input satisfies spec:consumers.spec-studio.data.inputs · anchored
  • impl:protocol.studio-command satisfies spec:consumers.spec-studio.data.inputs · anchored
  • impl:protocol.studio-data satisfies spec:consumers.spec-studio.data · anchored
  • impl:protocol.studio-inputs satisfies spec:consumers.spec-studio.data.inputs · anchored
  • impl:protocol.studio-recipes satisfies spec:consumers.spec-studio.data.recipe-answers · anchored
  • impl:protocol.studio-register-contracts references spec:consumers.spec-studio.data.recipe-answers · anchored
  • oracle:protocol.studio-inputs models spec:consumers.spec-studio.data.inputs · anchored
  • test:protocol.studio-data verifies spec:consumers.spec-studio.data · anchored
  • test:protocol.studio-graph-only verifies spec:consumers.spec-studio.data.inputs.graph-only · anchored
  • test:protocol.studio-inputs-both-given verifies spec:consumers.spec-studio.data.inputs.both-given · anchored
  • test:protocol.studio-lenses verifies spec:consumers.spec-studio.data.recipe-answers · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

No decision record named.

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.studio-data · assembles reader contexts, Pack totals, rails and search records for static pages · src/projections/studio/data.ts:279

    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.spec-studio.data
The diagram as text
  • spec:consumers.pack-design: The Pack context carries the Pack's design
  • spec:consumers.reader: The reader bridges agent entry points to composable graph context
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • 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.data.recipe-answers: A page takes each recipe answer from the recipe's shipped body
  • spec:consumers.spec-studio.diagram-kinds.requirement-trace: A requirement drawing separates intent from realization and verification
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent
  • spec:consumers.spec-studio.glossary-page: The glossary page lists every term the corpus's Specs define
  • spec:consumers.spec-studio.index-page: The index says where the corpus stands and narrows every Spec
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence
  • spec:consumers.spec-studio.owner-queue: The owner queue page orders the statements and questions only a person can settle
  • spec:consumers.spec-studio.pack-page: A Pack page shows the Pack's design as one card per member
  • spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set
  • spec:consumers.spec-studio.registers: The corpus's registers are pages a reviewer opens from a link
  • spec:consumers.spec-studio.roadmap-page: The roadmap page shows the upcoming work in priority order, split by what it needs
  • spec:consumers.spec-studio.search: Search finds a Spec, a Pack, an entry or a bound file by a word
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order
  • spec:consumers.spec-studio.spec-page.core: A Spec page's core shows the whole Spec, with an anchor for every entry
  • spec:extraction.determinism: Committed source derives byte-identical output
  • spec:extraction.entry-locations: The graph records where each addressable entry is written
  • spec:extraction.pack-member-order: A Pack node keeps its members in authored order
  • spec:validation.next-rung-floor: The floor names what blocks the floor's next rung
  • spec:consumers.spec-studio.data constrainedBy spec:extraction.determinism · declared
  • spec:consumers.spec-studio.data dependsOn spec:consumers.pack-design · declared
  • spec:consumers.spec-studio.data dependsOn spec:consumers.reader · declared
  • spec:consumers.spec-studio.data dependsOn spec:extraction.entry-locations · declared
  • spec:consumers.spec-studio.data dependsOn spec:extraction.pack-member-order · declared
  • spec:consumers.spec-studio.data dependsOn spec:validation.next-rung-floor · declared
  • spec:consumers.spec-studio.data refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.components dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.diagram-kinds.requirement-trace dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.diagrams dependsOn spec:consumers.spec-studio.data · declared — a diagram is laid out from the values and recipe answers its page renders
  • spec:consumers.spec-studio.glossary-page dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.index-page dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.lenses dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.owner-queue dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.pack-page dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.publisher dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.registers dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.roadmap-page dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.search dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.shell dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.spec-page dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.spec-page.core dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.data.inputs refines spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.data.recipe-answers refines spec:consumers.spec-studio.data · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

  • refines · spec:consumers.spec-studio · stated ready, floor ready
  • dependsOn · spec:consumers.pack-design · stated ready, floor ready
  • dependsOn · spec:consumers.reader · stated ready, floor ready
  • dependsOn · spec:extraction.entry-locations · stated ready, floor ready
  • dependsOn · spec:extraction.pack-member-order · stated ready, floor ready
  • dependsOn · spec:validation.next-rung-floor · stated ready, floor ready
  • constrainedBy · spec:extraction.determinism · stated ready, floor ready

Rested on by

Distance 1

  • spec:consumers.spec-studio.components

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-compose · src/studio-elements/compose.ts:13
    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68
    • impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44
    • impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-intent-handoff

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.data.inputs

    Implementing units

    • impl:protocol.studio-base-input · src/cli/studio-inputs.ts:9
    • impl:protocol.studio-command · src/cli/studio-command.ts:106
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.data.recipe-answers

    Implementing units

    • impl:protocol.studio-recipes · src/projections/studio/recipes.ts:34

    Referencing units

    • impl:protocol.studio-register-contracts · src/projections/studio/pages/register-answers.ts:4

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagram-kinds.requirement-trace

    Implementing units

    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl: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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagrams

    Implementing units

    • impl:protocol.studio-architecture-diagrams · src/projections/studio/diagrams/architecture.ts:4
    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagram-model · src/projections/studio/diagrams/model.ts:1
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.glossary-page

    Implementing units

    • impl:protocol.studio-glossary · src/projections/studio/pages/glossary-page.ts:7

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.glossary-page.same-word-twice

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.index-page

    Implementing units

    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses

    Implementing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.pack-page

    Implementing units

    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap-priority, test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.publisher

    Implementing units

    • impl:protocol.build-pipeline-emit · src/cli/build-command.ts:251
    • impl:protocol.studio-command · src/cli/studio-command.ts:106
    • impl:protocol.studio-page-catalog · src/projections/studio/pages/index.ts:21
    • impl:protocol.studio-paths · src/projections/studio/paths.ts:2
    • impl:protocol.studio-publish · src/projections/studio/publish.ts:24

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-data, test:protocol.studio-publisher

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.registers

    Implementing units

    • impl:protocol.studio-registers · src/projections/studio/pages/registers-page.ts:47

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.registers.blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.search

    Implementing units

    • impl:protocol.studio-concept-match · src/reader/concept-match.ts:43
    • impl:protocol.studio-search-page · src/projections/studio/pages/search-page.ts:5
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-concept-match, test:protocol.studio-page-elements, test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.shell

    Implementing units

    • impl:protocol.studio-code-spans · src/projections/studio/pages/code-spans.ts:9
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-html · src/projections/studio/pages/html.ts:8
    • impl:protocol.studio-text · src/projections/studio/pages/text.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.spec-page

    Implementing units

    • impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8
    • impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 2

  • spec:consumers.command-line

    Implementing units

    • impl:protocol.adopter-help · src/cli/help.ts:167
    • impl:protocol.agent-surface-cli · src/cli/sdp.ts:94
    • impl:protocol.build-args · src/cli/build-args.ts:11
    • impl:protocol.generate-command · src/cli/generate-command.ts:34

    Referencing units

    None.

    Enabled verifiers: spec:consumers.command-line.generate-check-failure, spec:consumers.command-line.generate-writes-every-root, spec:consumers.command-line.verb-help-touches-nothing

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.capability-map-page

    Implementing units

    • impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.cited-line-text

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:roadmap, pack:self-hosting-v1

  • spec:consumers.spec-studio.data.inputs.both-given

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-inputs-both-given

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.data.inputs.graph-only

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-graph-only

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagram-kinds

    Implementing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219
    • impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-catalog

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.edge-routing

    Implementing units

    • impl:protocol.studio-diagram-routing · src/projections/studio/diagrams/routing.ts:38
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.legibility

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagrams.folds-by-context

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-context

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.folds-by-layer

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-layer

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.within-bound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-within-bound

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.export

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.glossary-page.same-word-twice

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-glossary-same-word-twice

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.evidence

    Implementing units

    • impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.packs

    Implementing units

    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.tests

    Implementing units

    • impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.lenses.tests.coverage-row

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.navigation

    Implementing units

    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-navigation, test:protocol.studio-roadmap-page

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.owner-queue.dependency-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-queue-dependency-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.page-elements

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-copy · src/studio-elements/copy.ts:22
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-search-form · src/studio-elements/search.ts:18
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-copy-source, test:protocol.studio-page-elements

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.publisher.watch

    Implementing units

    • impl:protocol.studio-watch · src/cli/studio-command.ts:122

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.publisher.watch.matches-plain-run

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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.registers.blocking-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-registers-blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.runs-page

    Implementing units

    • impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.sharing

    Implementing units

    • impl:protocol.stamp-command · src/cli/stamp-command.ts:8
    • impl:protocol.studio-preview-workflow · test/studio-s4.test.ts:742
    • impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.sharing.stamp-written-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.spec-page.cited-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-cited-declaration

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.verification-panels

    Implementing units

    • impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 3

  • spec:consumers.command-line.generate-check-failure

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.generate-check-failure

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.command-line.generate-writes-every-root

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.generate-writes-every-root

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.command-line.verb-help-touches-nothing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.verb-help-touches-nothing

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.engine-provenance

    Implementing units

    • impl:protocol.build-artifacts · src/cli/build-artifacts.ts:182
    • impl:protocol.engine-provenance-cli · src/cli/sdp.ts:102

    Referencing units

    None.

    Enabled verifiers: test:protocol.engine-provenance

    Packs: pack:design-management-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.capability-tree

    Implementing units

    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diff-page.changed-entry

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diff-changed-entry

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.export.self-contained

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-export-contained

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.planned-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-planned-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.unit-register

    Implementing units

    • impl:protocol.studio-unit-register · src/projections/studio/pages/architecture-register.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-maturity-requirement

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.tests.coverage-row

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-tests-coverage-row

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.publisher.watch.matches-plain-run

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-watch-plain

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.runs-page.external-evidence

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.run-external

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.sharing.stamp-written-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-stamp-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.verification-panels.rule-coverage

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-rule-coverage

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.structural-mermaid

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:design-management-v1, pack:self-hosting-v1

Relations

Relation and directionOther endClaimReasonExercised keys
constrainedBy · outgoingspec:extraction.determinism
spec:extraction.determinism · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.pack-design
spec:consumers.pack-design · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.reader
spec:consumers.reader · resolves
declaredNoneNone
dependsOn · outgoingspec:extraction.entry-locations
spec:extraction.entry-locations · resolves
declaredNoneNone
dependsOn · outgoingspec:extraction.pack-member-order
spec:extraction.pack-member-order · resolves
declaredNoneNone
dependsOn · outgoingspec:validation.next-rung-floor
spec:validation.next-rung-floor · resolves
declaredNoneNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
dependsOn · incomingThe Studio's custom elements each hold one view the build renders
spec:consumers.spec-studio.components · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.spec-studio.diagram-kinds.requirement-trace
spec:consumers.spec-studio.diagram-kinds.requirement-trace · resolves
declaredNoneNone
dependsOn · incomingA diagram is laid out from graph values into SVG with a text equivalent
spec:consumers.spec-studio.diagrams · resolves
declareda diagram is laid out from the values and recipe answers its page rendersNone
dependsOn · incomingThe glossary page lists every term the corpus's Specs define
spec:consumers.spec-studio.glossary-page · resolves
declaredNoneNone
dependsOn · incomingThe index says where the corpus stands and narrows every Spec
spec:consumers.spec-studio.index-page · resolves
declaredNoneNone
dependsOn · incomingFive lenses read the graph as Packs, capabilities, architecture, tests and evidence
spec:consumers.spec-studio.lenses · resolves
declaredNoneNone
dependsOn · incomingThe owner queue page orders the statements and questions only a person can settle
spec:consumers.spec-studio.owner-queue · resolves
declaredNoneNone
dependsOn · incomingA Pack page shows the Pack's design as one card per member
spec:consumers.spec-studio.pack-page · resolves
declaredNoneNone
dependsOn · incomingsdp studio publishes the Studio as one page set
spec:consumers.spec-studio.publisher · resolves
declaredNoneNone
dependsOn · incomingThe corpus's registers are pages a reviewer opens from a link
spec:consumers.spec-studio.registers · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.spec-studio.roadmap-page
spec:consumers.spec-studio.roadmap-page · resolves
declaredNoneNone
dependsOn · incomingSearch finds a Spec, a Pack, an entry or a bound file by a word
spec:consumers.spec-studio.search · resolves
declaredNoneNone
dependsOn · incomingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredNoneNone
dependsOn · incomingA Spec page shows one Spec in collapsible panels, in a fixed order
spec:consumers.spec-studio.spec-page · resolves
declaredNoneNone
dependsOn · incomingA Spec page's core shows the whole Spec, with an anchor for every entry
spec:consumers.spec-studio.spec-page.core · resolves
declaredNoneNone
refines · incomingThe Studio reads two named inputs beside the graph, a base graph and run records
spec:consumers.spec-studio.data.inputs · resolves
declaredNoneNone
refines · incomingA page takes each recipe answer from the recipe's shipped body
spec:consumers.spec-studio.data.recipe-answers · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.studio-data · assembles reader contexts, Pack totals, rails and search records for static pages · src/projections/studio/data.ts:279 · role contract · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-data · anchored · test/studio-data.test.ts:26 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

4. A page takes each recipe answer from the recipe's shipped body

spec:consumers.spec-studio.data.recipe-answers

A page takes each recipe answer from the recipe's shipped body

spec:consumers.spec-studio.data.recipe-answersContract · storyready floor ready

Packs: 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.

Intent
outcome
Compose every recipe answer a Studio page shows by evaluating the recipe's shipped body over the graph the build derived, so a page and sdp q give one answer.
Contract
rule.recipeEvaluation line 20 · specs/consumers/spec-studio.data.recipe-answers.sdp.md:20
The build composes each recipe answer a page shows by evaluating that recipe's shipped body, the one dist/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:21
Each evaluation the recipe evaluations name runs once per build, and every page that shows its answer reads that one answer.

no example exercises it

0 unkeyed rules.

Design
recipeEvaluations line 24 · specs/consumers/spec-studio.data.recipe-answers.sdp.md:24
a build evaluates each of these once, with no parameter unless one is named: recipes 17, 20, 24, 31, 33, 43, 44, 46, 51 and 53; recipe 52 with { 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:25
the index renders reader values and each Spec's epicIds 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.
Verification

Verifier bindings

  • test:protocol.studio-lenses · anchored · test anchor binding present · test/studio-s1.test.ts:273
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.data.recipe-answers
The diagram as text
  • spec:consumers.spec-studio.data.recipe-answers: A page takes each recipe answer from the recipe's shipped body · declared Spec
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads · declared Spec
  • impl:protocol.studio-recipes: evaluates shipped recipe bodies once and shares answers between Studio pages · anchored code · src/projections/studio/recipes.ts:34
  • impl:protocol.studio-register-contracts: shared recipe answer shapes for Studio registers · anchored code · src/projections/studio/pages/register-answers.ts:4
  • test:protocol.studio-lenses: test:protocol.studio-lenses · anchored test binding · binding present · test/studio-s1.test.ts:273
  • spec:consumers.spec-studio.data.recipe-answers refines spec:consumers.spec-studio.data · declared
  • impl:protocol.studio-recipes satisfies spec:consumers.spec-studio.data.recipe-answers · anchored
  • impl:protocol.studio-register-contracts references spec:consumers.spec-studio.data.recipe-answers · anchored
  • test:protocol.studio-lenses verifies spec:consumers.spec-studio.data.recipe-answers · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

No decision record named.

Runtime
  • 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.studio-recipes · evaluates shipped recipe bodies once and shares answers between Studio pages · src/projections/studio/recipes.ts:34

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

    Uses

    • api:protocol.evaluate-body · evaluates bodies and shipped recipes over one in-memory reader, graph and report · src/reader/evaluate-body.ts:120
    • impl:protocol.reader · typed graph queries, entry adapters and context joins · src/reader/reader.ts:687

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.spec-studio.data.recipe-answers
Relations of spec:consumers.spec-studio.data.recipe-answersdependsOn · declaredrefines · declareddependsOn · declaredOutgoing refinesspec:consumers.spec-studio.dataThe Studio renders from thereader's values and embedsonly what its script reads…spec-studio.dataOutgoing dependsOnspec:consumers.agent-surface.evaluation-sinkThe evaluation sink runsone body and prints itsreturn…agent-surface.evaluation-sinkSubjectspec:consumers.spec-studio.data.recipe-answersA page takes each recipeanswer from the recipe'sshipped body…spec-studio.data.recipe-answersIncoming dependsOnspec:consumers.spec-studio.slice-pageA slice page shows a Pack'sdesign as one whole…spec-studio.slice-page
The diagram as text
  • spec:consumers.agent-surface.evaluation-sink: The evaluation sink runs one body and prints its return
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • spec:consumers.spec-studio.data.recipe-answers: A page takes each recipe answer from the recipe's shipped body
  • spec:consumers.spec-studio.slice-page: A slice page shows a Pack's design as one whole
  • spec:consumers.spec-studio.data.recipe-answers dependsOn spec:consumers.agent-surface.evaluation-sink · declared — the build composes recipe answers through the same body evaluation `sdp q` runs
  • spec:consumers.spec-studio.data.recipe-answers refines spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.slice-page dependsOn spec:consumers.spec-studio.data.recipe-answers · declared — the build evaluates the slice recipe once for each Pack, and the page reads that answer
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.spec-studio.data · stated ready, floor ready
  • dependsOn · spec:consumers.agent-surface.evaluation-sink · stated ready, floor ready

Rested on by

Distance 1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:consumers.agent-surface.evaluation-sink
spec:consumers.agent-surface.evaluation-sink · resolves
declaredthe build composes recipe answers through the same body evaluation sdp q runsNone
refines · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.spec-studio.slice-page
spec:consumers.spec-studio.slice-page · resolves
declaredthe build evaluates the slice recipe once for each Pack, and the page reads that answerNone

Bindings

Implementation binding: present

  • impl:protocol.studio-recipes · evaluates shipped recipe bodies once and shares answers between Studio pages · src/projections/studio/recipes.ts:34 · role service · component component:protocol.projections · layer edge · context protocol

Design reference: present

  • impl:protocol.studio-register-contracts · shared recipe answer shapes for Studio registers · src/projections/studio/pages/register-answers.ts:4 · role contract · component component:protocol.projections · layer edge · context protocol

Verifier binding: present

  • test:protocol.studio-lenses · anchored · test/studio-s1.test.ts:273 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

5. The Studio reads two named inputs beside the graph, a base graph and run records

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.data.inputsContract · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.data.inputs.sdp.md

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

Two inputs may ride beside the graph: the graph an earlier commit wrote, so a page can show what changed since, and CI run records, so a reviewer reads what ran beside the verifier bindings. Each is named on the command line and on every page that shows it, and neither answers in the graph's name. Without them the page set is what the graph alone writes.

Intent
outcome
Let the Studio's build read a base graph and run records beside the graph, each named where it shows, while the graph alone writes the page set when neither is given.
Contract
rule.namedInputs line 25 · specs/consumers/spec-studio.data.inputs.sdp.md:25
Beside the graph the build reads at most two inputs, each named on the command line: a base graph, the graph object sdp build wrote at an earlier commit, which reaches recipe 35 as params.base; and run records, each one Common Test Report Format document, which reach recipe 45 as params.runs. The build reads neither in any other way.

spec:consumers.spec-studio.data.inputs.both-given · enabled, spec:consumers.spec-studio.data.inputs.graph-only · enabled

rule.inputFlags line 26 · specs/consumers/spec-studio.data.inputs.sdp.md:26
The studio verb also takes --base PATH, naming the base graph, a JSON file sdp build wrote; --base-label TEXT, the words that name the base graph on its pages; and --runs PATH, naming one run record, a JSON file in the Common Test Report Format, repeatable, the records keeping the order of their flags. --base-label without --base, or --base given twice, is refused.

spec:consumers.spec-studio.data.inputs.both-given · enabled

rule.inputPlacement line 27 · specs/consumers/spec-studio.data.inputs.sdp.md:27
Before extraction or output cleanup, the command refuses an input path that the build could write or remove, including a path beneath a projection root and an alias resolving to such a path; it reports the flag and path, exits 1 and changes no file.

no example exercises it

rule.unreadableInput line 28 · specs/consumers/spec-studio.data.inputs.sdp.md:28
An input file that cannot be read or does not hold JSON refuses the run before extraction, with exit 1 and one line on stderr naming the flag and the path; a JSON value a recipe cannot read shows on its page as that recipe's diagnostics.

no example exercises it

rule.inputPages line 29 · specs/consumers/spec-studio.data.inputs.sdp.md:29
An input adds pages and page sections, never a data file: the base graph adds diff.html and the changed-since-base sections of the Spec and Pack pages, and run records add runs.html and the run rows of the tests lens and the verification panels.

spec:consumers.spec-studio.data.inputs.both-given · enabled, spec:consumers.spec-studio.data.inputs.graph-only · enabled

rule.inputNaming line 30 · specs/consumers/spec-studio.data.inputs.sdp.md:30
A page that shows an input names it in words, the base graph by its label when it was given one, its schema version and its Spec count, and a run as spec:consumers.spec-studio.runs-page names it; no page holds an input's path.

spec:consumers.spec-studio.data.inputs.both-given · enabled

rule.inputsNeverGraph line 31 · specs/consumers/spec-studio.data.inputs.sdp.md:31
An input never becomes graph data, a delivery fact, a finding, a rung or a verdict: no page counts a run toward a binding, and no difference from the base moves a rung.

spec:consumers.spec-studio.data.inputs.both-given · enabled

rule.inputsUntouched line 32 · specs/consumers/spec-studio.data.inputs.sdp.md:32
A run leaves every input file byte-identical.

no example exercises it

rule.sameInputsSameBytes line 33 · specs/consumers/spec-studio.data.inputs.sdp.md:33
Without inputs the page set is the one the graph alone writes; with them, the same graph and the same input bytes and labels write the same page set, byte for byte, and a value an input carries, such as a run's commit and times, shows only on the pages that name that input.

spec:consumers.spec-studio.data.inputs.both-given · enabled, spec:consumers.spec-studio.data.inputs.graph-only · enabled

0 unkeyed rules.

Verifying examples

Both inputs add their pages, named, and the same inputs write the same bytes · spec:consumers.spec-studio.data.inputs.both-given · ready floor ready

Executable Spec

Given an extraction root holding a Pack and its member Specs
Given the studio command is given the base graph {base: "an earlier graph of the root"} and the run records {runs: "one CTRF report"}
When the studio command runs twice with those inputs
Then the two runs wrote byte-identical files: {byteIdentical: true}
Then the page set holds the diff page: {diffPage: true}
Then the page set holds the runs page: {runsPage: true}
Then every page that shows an input names it and holds no input path: {inputsNamed: true}

Open example

Without inputs the page set is the graph's alone · spec:consumers.spec-studio.data.inputs.graph-only · ready floor ready

Executable Spec

Given an extraction root holding a Pack and its member Specs
Given the studio command is given the base graph {base: "none"} and the run records {runs: "none"}
When the studio command runs twice with those inputs
Then the two runs wrote byte-identical files: {byteIdentical: true}
Then the page set holds the diff page: {diffPage: false}
Then the page set holds the runs page: {runsPage: false}
Then every page that shows an input names it and holds no input path: {inputsNamed: true}

Open example

Example space

Given an extraction root holding a Pack and its member Specs
Given the studio command is given the base graph {base:"none"|"an earlier graph of the root"} and the run records {runs:"none"|"one CTRF report"}
When the studio command runs twice with those inputs
Then the two runs wrote byte-identical files: {byteIdentical:boolean}
Then the page set holds the diff page: {diffPage:boolean}
Then the page set holds the runs page: {runsPage:boolean}
Then every page that shows an input names it and holds no input path: {inputsNamed:boolean}
Design
studioInputs line 36 · specs/consumers/spec-studio.data.inputs.sdp.md:36
{ base?: { graph: unknown; label: string | null }; runs: unknown[] }, the inputs the command hands the build: base absent without a base graph, runs the run records in the order the command names them and empty without any.

no citation recorded

baseName line 37 · specs/consumers/spec-studio.data.inputs.sdp.md:37
{ label: string | null; schemaVersion: string; specs: number }, how a page names the base graph: the label the command gave or null, the base graph's schemaVersion, and its count of Spec nodes.

no citation recorded

Verification

Verifier bindings

Example space

  • base · "none" | "an earlier graph of the root" · declared by the studio command is given the base graph {base} and the run records {runs}
  • runs · "none" | "one CTRF report" · declared by the studio command is given the base graph {base} and the run records {runs}

Bound points

Examplebaseruns
spec:consumers.spec-studio.data.inputs.both-given"an earlier graph of the root""one CTRF report"
spec:consumers.spec-studio.data.inputs.graph-only"none""none"

Oracle binding: present · oracle:protocol.studio-inputs · test/studio-s4.test.ts:417

Coverage

Unbound

  • base: None
  • runs: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.data.inputs
Requirement drawing for spec:consumers.spec-studio.data.inputssatisfies · anchoredsatisfies · anchoredsatisfies · anchoredmodels · anchoredrefines · declaredrefines, verifies · declaredrefines, verifies · declaredverifies · anchoredverifies · anchoredIntended Specsspec:consumers.spec-studio.data.inputsThe Studio reads two namedinputs beside the graph, abase graph and run records…consumers.spec-studio.data.inputsdeclared SpecDeclared verifying examplesspec:consumers.spec-studio.data.inputs.both-givenBoth inputs add theirpages, named, and the sameinputs write the same bytes…consumers.spec-studio.data.inputs.both-givendeclared Specspec:consumers.spec-studio.data.inputs.graph-onlyWithout inputs the page setis the graph's alone…consumers.spec-studio.data.inputs.graph-onlydeclared SpecSatisfying or referencingunitsimpl:protocol.studio-base-inputreads named Studio basegraphs and run inputs…protocol.studio-base-inputanchored codeimpl:protocol.studio-commandvalidates and renders theStudio with independentbyte checks and diagnosticexit codes…protocol.studio-commandanchored codeimpl:protocol.studio-inputsnamed base graph and runinput contractimpl:protocol.studio-inputsanchored codeTest or oracle bindingsoracle:protocol.studio-inputsoracle:protocol.studio-inputsoracle:protocol.studio-inputsanchored oracle bindingtest:protocol.studio-graph-onlytest:protocol.studio-graph-only…protocol.studio-graph-onlyanchored test binding ·binding presenttest:protocol.studio-inputs-both-giventest:protocol.studio-inputs-both-given…protocol.studio-inputs-both-givenanchored test binding ·binding presentOutside the selected setspec:consumers.spec-studio.dataThe Studio renders from thereader's values and embedsonly what its script reads…consumers.spec-studio.datadeclared Spec
The diagram as text
  • spec:consumers.spec-studio.data.inputs: The Studio reads two named inputs beside the graph, a base graph and run records · declared Spec
  • spec:consumers.spec-studio.data.inputs.both-given: Both inputs add their pages, named, and the same inputs write the same bytes · declared Spec
  • spec:consumers.spec-studio.data.inputs.graph-only: Without inputs the page set is the graph's alone · declared Spec
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads · declared Spec
  • impl:protocol.studio-base-input: reads named Studio base graphs and run inputs · anchored code · src/cli/studio-inputs.ts:9
  • impl:protocol.studio-command: validates and renders the Studio with independent byte checks and diagnostic exit codes · anchored code · src/cli/studio-command.ts:106
  • impl:protocol.studio-inputs: named base graph and run input contract · anchored code · src/projections/studio/inputs.ts:1
  • oracle:protocol.studio-inputs: oracle:protocol.studio-inputs · anchored oracle binding · test/studio-s4.test.ts:417
  • test:protocol.studio-graph-only: test:protocol.studio-graph-only · anchored test binding · binding present · test/studio-s4.test.ts:434
  • test:protocol.studio-inputs-both-given: test:protocol.studio-inputs-both-given · anchored test binding · binding present · test/studio-s4.test.ts:464
  • spec:consumers.spec-studio.data.inputs refines spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.data.inputs.both-given refines spec:consumers.spec-studio.data.inputs · declared
  • spec:consumers.spec-studio.data.inputs.both-given verifies spec:consumers.spec-studio.data.inputs · declared
  • spec:consumers.spec-studio.data.inputs.graph-only refines spec:consumers.spec-studio.data.inputs · declared
  • spec:consumers.spec-studio.data.inputs.graph-only verifies spec:consumers.spec-studio.data.inputs · declared
  • impl:protocol.studio-base-input satisfies spec:consumers.spec-studio.data.inputs · anchored
  • impl:protocol.studio-command satisfies spec:consumers.spec-studio.data.inputs · anchored
  • impl:protocol.studio-inputs satisfies spec:consumers.spec-studio.data.inputs · anchored
  • oracle:protocol.studio-inputs models spec:consumers.spec-studio.data.inputs · anchored
  • test:protocol.studio-graph-only verifies spec:consumers.spec-studio.data.inputs.graph-only · anchored
  • test:protocol.studio-inputs-both-given verifies spec:consumers.spec-studio.data.inputs.both-given · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

No decision record named.

Runtime
  • component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocol

    Uses

    • component:protocol.adapters · external runtime and source adapters · src/adapters/vitest.ts:23 · layer adapter · context protocol
    • component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocol
    • 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.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocol
    • component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol
    • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
    • component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol
  • 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.studio-base-input · reads named Studio base graphs and run inputs · src/cli/studio-inputs.ts:9

    Component: component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-command · validates and renders the Studio with independent byte checks and diagnostic exit codes · src/cli/studio-command.ts:106

    Component: component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-inputs · named base graph and run input contract · src/projections/studio/inputs.ts:1

    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.spec-studio.data.inputs
The diagram as text
  • spec:consumers.design-diff: Designs are compared between a base commit and the working tree at entry grain
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • 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.data.inputs.both-given: Both inputs add their pages, named, and the same inputs write the same bytes
  • spec:consumers.spec-studio.data.inputs.graph-only: Without inputs the page set is the graph's alone
  • spec:consumers.spec-studio.diff-page: The diff page shows what changed in the design since a base graph
  • spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set
  • spec:consumers.spec-studio.register-input: An outside register is a named Studio input, so a cited token links to its entry
  • spec:consumers.spec-studio.runs-page: The runs page shows the run records the build was given, joined to test files
  • spec:consumers.studio-on-ramp: The Studio skill teaches agents to publish, share and read the Spec Studio
  • spec:extraction.determinism: Committed source derives byte-identical output
  • spec:observation.run-evidence: CI run records are joined to verifiers in a view
  • spec:consumers.spec-studio.data.inputs constrainedBy spec:extraction.determinism · 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.data.inputs dependsOn spec:consumers.spec-studio.publisher · declared — each input is named by a flag of the studio verb
  • spec:consumers.spec-studio.data.inputs dependsOn spec:observation.run-evidence · declared — the run records input is read only as run evidence
  • spec:consumers.spec-studio.data.inputs refines spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.diff-page dependsOn spec:consumers.spec-studio.data.inputs · declared — the base graph reaches the page as the build's named base input
  • spec:consumers.spec-studio.register-input dependsOn spec:consumers.spec-studio.data.inputs · declared — the register joins the base graph and the run records as a named input
  • spec:consumers.spec-studio.runs-page dependsOn spec:consumers.spec-studio.data.inputs · declared — the run records reach the page as the build's named runs input
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.spec-studio.data.inputs · declared — the skill teaches the base graph and run records and where they may lie
  • spec:consumers.spec-studio.data.inputs.both-given refines spec:consumers.spec-studio.data.inputs · declared
  • spec:consumers.spec-studio.data.inputs.graph-only refines spec:consumers.spec-studio.data.inputs · declared
  • spec:consumers.spec-studio.data.inputs.both-given verifies spec:consumers.spec-studio.data.inputs · declared
  • spec:consumers.spec-studio.data.inputs.graph-only verifies spec:consumers.spec-studio.data.inputs · 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

Relations

Relation and directionOther endClaimReasonExercised keys
constrainedBy · outgoingspec:extraction.determinism
spec:extraction.determinism · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.design-diff
spec:consumers.design-diff · resolves
declaredthe base graph input is the design diff's baseNone
dependsOn · outgoingsdp studio publishes the Studio as one page set
spec:consumers.spec-studio.publisher · resolves
declaredeach input is named by a flag of the studio verbNone
dependsOn · outgoingCI run records are joined to verifiers in a view
spec:observation.run-evidence · resolves
declaredthe run records input is read only as run evidenceNone
refines · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
dependsOn · incomingThe diff page shows what changed in the design since a base graph
spec:consumers.spec-studio.diff-page · resolves
declaredthe base graph reaches the page as the build's named base inputNone
dependsOn · incomingspec:consumers.spec-studio.register-input
spec:consumers.spec-studio.register-input · resolves
declaredthe register joins the base graph and the run records as a named inputNone
dependsOn · incomingThe runs page shows the run records the build was given, joined to test files
spec:consumers.spec-studio.runs-page · resolves
declaredthe run records reach the page as the build's named runs inputNone
dependsOn · incomingThe Studio skill teaches agents to publish, share and read the Spec Studio
spec:consumers.studio-on-ramp · resolves
declaredthe skill teaches the base graph and run records and where they may lieNone
refines · incomingBoth inputs add their pages, named, and the same inputs write the same bytes
spec:consumers.spec-studio.data.inputs.both-given · resolves
declaredNoneNone
refines · incomingWithout inputs the page set is the graph's alone
spec:consumers.spec-studio.data.inputs.graph-only · resolves
declaredNoneNone
verifies · incomingBoth inputs add their pages, named, and the same inputs write the same bytes
spec:consumers.spec-studio.data.inputs.both-given · resolves
declaredNonenamedInputs, inputFlags, inputPages, inputNaming, inputsNeverGraph, sameInputsSameBytes
verifies · incomingWithout inputs the page set is the graph's alone
spec:consumers.spec-studio.data.inputs.graph-only · resolves
declaredNonenamedInputs, inputPages, sameInputsSameBytes

Bindings

Implementation binding: present

  • impl:protocol.studio-base-input · reads named Studio base graphs and run inputs · src/cli/studio-inputs.ts:9 · role codec · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.studio-command · validates and renders the Studio with independent byte checks and diagnostic exit codes · src/cli/studio-command.ts:106 · role publisher · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.studio-inputs · named base graph and run input contract · src/projections/studio/inputs.ts:1 · role contract · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.studio-inputs · test/studio-s4.test.ts:417

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

6. Without inputs the page set is the graph's alone

spec:consumers.spec-studio.data.inputs.graph-only

Without inputs the page set is the graph's alone

spec:consumers.spec-studio.data.inputs.graph-onlyExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.data.inputs.graph-only.sdp.md

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

Intent
outcome
Execute the graph-only build: no input, no input page, and the same bytes twice.
assumptions
  • The world writes a root with one Pack of two member Specs, runs the studio command twice with no input flag, and compares the two page sets file by file; it reads every page for the words base graph and run evidence, which no page may hold without an input.
Behavior

Examples

Given an extraction root holding a Pack and its member Specs
Given the studio command is given the base graph {base: "none"} and the run records {runs: "none"}
When the studio command runs twice with those inputs
Then the two runs wrote byte-identical files: {byteIdentical: true}
Then the page set holds the diff page: {diffPage: false}
Then the page set holds the runs page: {runsPage: false}
Then every page that shows an input names it and holds no input path: {inputsNamed: true}
Verification

Verifier bindings

  • test:protocol.studio-graph-only · anchored · test anchor binding present · test/studio-s4.test.ts:434
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.data.inputs.graph-only
The diagram as text
  • spec:consumers.spec-studio.data.inputs.graph-only: Without inputs the page set is the graph's alone · declared Spec
  • spec:consumers.spec-studio.data.inputs: The Studio reads two named inputs beside the graph, a base graph and run records · declared Spec
  • test:protocol.studio-graph-only: test:protocol.studio-graph-only · anchored test binding · binding present · test/studio-s4.test.ts:434
  • spec:consumers.spec-studio.data.inputs.graph-only refines spec:consumers.spec-studio.data.inputs · declared
  • spec:consumers.spec-studio.data.inputs.graph-only verifies spec:consumers.spec-studio.data.inputs · declared
  • test:protocol.studio-graph-only verifies spec:consumers.spec-studio.data.inputs.graph-only · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.data.inputs.graph-only
  • E2: verifies · declared
The diagram as text
  • 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.data.inputs.graph-only: Without inputs the page set is the graph's alone
  • spec:consumers.spec-studio.data.inputs.graph-only refines spec:consumers.spec-studio.data.inputs · declared
  • spec:consumers.spec-studio.data.inputs.graph-only verifies spec:consumers.spec-studio.data.inputs · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingThe Studio reads two named inputs beside the graph, a base graph and run records
spec:consumers.spec-studio.data.inputs · resolves
declaredNoneNone
verifies · outgoingThe Studio reads two named inputs beside the graph, a base graph and run records
spec:consumers.spec-studio.data.inputs · resolves
declaredNonenamedInputs, inputPages, sameInputsSameBytes

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-graph-only · anchored · test/studio-s4.test.ts:434 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

7. Both inputs add their pages, named, and the same inputs write the same bytes

spec:consumers.spec-studio.data.inputs.both-given

Both inputs add their pages, named, and the same inputs write the same bytes

spec:consumers.spec-studio.data.inputs.both-givenExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.data.inputs.both-given.sdp.md

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

Intent
outcome
Execute the two named inputs: each adds its page, each page names its input without its path, and two runs with the same inputs write the same bytes.
assumptions
  • The world writes a root with one Pack of two member Specs and a test anchor verifying the first, writes the root's graph with sdp build and keeps it outside the root as the base, adds a third Spec, writes one CTRF report whose one test names the anchored test file, and runs the studio command twice with both inputs and the label before. It reads the diff and runs pages for the label and the tool name, checks that no file in the page set holds either input's path, and checks that the graph the build derived holds no node or edge from either input.
Behavior

Examples

Given an extraction root holding a Pack and its member Specs
Given the studio command is given the base graph {base: "an earlier graph of the root"} and the run records {runs: "one CTRF report"}
When the studio command runs twice with those inputs
Then the two runs wrote byte-identical files: {byteIdentical: true}
Then the page set holds the diff page: {diffPage: true}
Then the page set holds the runs page: {runsPage: true}
Then every page that shows an input names it and holds no input path: {inputsNamed: true}
Verification

Verifier bindings

  • test:protocol.studio-inputs-both-given · anchored · test anchor binding present · test/studio-s4.test.ts:464
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.data.inputs.both-given
The diagram as text
  • spec:consumers.spec-studio.data.inputs.both-given: Both inputs add their pages, named, and the same inputs write the same bytes · declared Spec
  • spec:consumers.spec-studio.data.inputs: The Studio reads two named inputs beside the graph, a base graph and run records · declared Spec
  • test:protocol.studio-inputs-both-given: test:protocol.studio-inputs-both-given · anchored test binding · binding present · test/studio-s4.test.ts:464
  • spec:consumers.spec-studio.data.inputs.both-given refines spec:consumers.spec-studio.data.inputs · declared
  • spec:consumers.spec-studio.data.inputs.both-given verifies spec:consumers.spec-studio.data.inputs · declared
  • test:protocol.studio-inputs-both-given verifies spec:consumers.spec-studio.data.inputs.both-given · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.data.inputs.both-given
  • E2: verifies · declared
The diagram as text
  • 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.data.inputs.both-given: Both inputs add their pages, named, and the same inputs write the same bytes
  • spec:consumers.spec-studio.data.inputs.both-given refines spec:consumers.spec-studio.data.inputs · declared
  • spec:consumers.spec-studio.data.inputs.both-given verifies spec:consumers.spec-studio.data.inputs · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingThe Studio reads two named inputs beside the graph, a base graph and run records
spec:consumers.spec-studio.data.inputs · resolves
declaredNoneNone
verifies · outgoingThe Studio reads two named inputs beside the graph, a base graph and run records
spec:consumers.spec-studio.data.inputs · resolves
declaredNonenamedInputs, inputFlags, inputPages, inputNaming, inputsNeverGraph, sameInputsSameBytes

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-inputs-both-given · anchored · test/studio-s4.test.ts:464 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

8. sdp studio publishes the Studio as one page set

spec:consumers.spec-studio.publisher

sdp studio publishes the Studio as one page set

spec:consumers.spec-studio.publisherUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

Design: no design entries · no pinned declarations · 1 decision

Findings: no errors, no warnings

specs/consumers/spec-studio.publisher.sdp.md

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

The Studio has its own verb and root beside the four shipped publishers, and is written the way they are. Its page set opens from the file system and uploads to a static host unchanged. The run adds no stamp, commit or time, so two runs over one graph write the same bytes, and a publishing step that wants build context writes its stamp beside the page set.

Intent
outcome
Publish the Studio under its own root as one page set the graph and its named inputs alone determine, which opens through file:// and uploads to a static host unchanged.
Behavior
rule.verb line 25 · specs/consumers/spec-studio.publisher.sdp.md:25
sdp studio [root] [--exclude PATH]... [--check-clean] validates the graph and writes the Studio's page set to <root>/generated/spec-studio/; root defaults to the working directory, and each exclusion is a root-relative path prefix, as for the shipped publishers.

no example exercises it

rule.ownRoot line 26 · specs/consumers/spec-studio.publisher.sdp.md:26
A run writes nothing outside its root, writes no stamp, and leaves every carrier and source file under the root byte-identical.

no example exercises it

rule.readsNoNetwork line 27 · specs/consumers/spec-studio.publisher.sdp.md:27
A run reads no network: every byte it reads is a file under the root, a file its flags name, or a file the package ships.

no example exercises it

rule.wholesale line 28 · specs/consumers/spec-studio.publisher.sdp.md:28
A run writes its page set to generated/spec-studio.tmp/, removes the prior root and renames the temporary into place, so no page of an earlier run survives a later one and no temporary survives a completed run.

no example exercises it

rule.buildInvalidates line 29 · specs/consumers/spec-studio.publisher.sdp.md:29
Every command that enters the shared build, sdp studio among them, removes generated/spec-studio/ and its temporary sibling before extraction, beside the four roots spec:consumers.wholesale-view-rewrite names; a removal failure refuses the command before extraction.

no example exercises it

Cited at

  • test/skills.test.ts:1763
rule.checkClean line 30 · specs/consumers/spec-studio.publisher.sdp.md:30
sdp studio --check-clean renders an independent twin and refuses divergent renders, then compares the current root with the new render; missing or drifted output returns nonzero and is removed, and clean output is replaced wholesale with byte-identical content.

no example exercises it

rule.findingsShown line 31 · specs/consumers/spec-studio.publisher.sdp.md:31
Findings never withhold the page set: a run over a graph with validation findings still publishes and returns the validation exit code, and each finding shows on the index, and also on its subject's page when its subject is a Spec or a Pack. A run whose extraction fails publishes nothing and returns nonzero.

no example exercises it

rule.pageSet line 32 · specs/consumers/spec-studio.publisher.sdp.md:32
The page set holds index.html, search.html, one packs/<name>.html and one slices/<name>.html per Pack, one specs/<name>.html per Spec, and assets/studio.css and assets/studio.js. <name> is the id after its namespace, with each uppercase ASCII letter written as _ and its lowercase, so no two pages collide on a file system that ignores case.

no example exercises it

rule.deterministic line 33 · specs/consumers/spec-studio.publisher.sdp.md:33
Two runs over one graph and the same inputs write byte-identical files, and no file holds a time, a commit, an absolute path or a host name of the run's own.

no example exercises it

rule.linksResolve line 34 · specs/consumers/spec-studio.publisher.sdp.md:34
Every link a page writes stays inside the page set: it resolves to a page the run wrote and, with a fragment, to an element id that page carries, apart from the search page's term fragment search.html#q=<term>, which names no element. No page links a carrier or source file, an editor URI or an external address; the only link that leaves the page set is one the stamp element adds in the browser from a present stamp's source template.

no example exercises it

0 unkeyed rules.

Example space

Given an extraction root holding {corpus:"a Pack and its member Specs"|"a Spec with a validation error"|"a carrier the extractor refuses"} and a stale Studio page {stalePage:string}
When the studio command runs twice at that root, with check-clean {checkClean:boolean}
Then each run exits {exitCode:number}
Then the page set holds the entry page {entryPage:string}
Then the two runs wrote byte-identical files: {byteIdentical:boolean}
Then the stale page survives: {staleSurvives:boolean}
Then a temporary Studio sibling survives: {temporarySurvives:boolean}
Then every carrier and source file under the root stays byte-identical: {rootUntouched:boolean}
Then every link a page writes resolves inside the page set: {linksResolve:boolean}
Verification

Verifier bindings

  • test:protocol.studio-data · anchored · test anchor binding present · test/studio-data.test.ts:26
  • test:protocol.studio-publisher · anchored · test anchor binding present · test/studio-publisher.test.ts:26

Example space

  • corpus · "a Pack and its member Specs" | "a Spec with a validation error" | "a carrier the extractor refuses" · declared by an extraction root holding {corpus} and a stale Studio page {stalePage}
  • stalePage · string · declared by an extraction root holding {corpus} and a stale Studio page {stalePage}
  • checkClean · boolean · declared by the studio command runs twice at that root, with check-clean {checkClean}

Bound points

No bound example points recorded.

Oracle binding: none

Coverage

corpus
Declared valueExamples
"a Pack and its member Specs"no example
"a Spec with a validation error"no example
"a carrier the extractor refuses"no example

stalePage: No bound values · not enumerable

checkClean: No bound values · not enumerable

Unbound

  • corpus: None
  • stalePage: None
  • checkClean: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.publisher
The diagram as text
  • spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set · declared Spec
  • spec:consumers.spec-studio.publisher.watch: sdp studio --watch rebuilds the page set on each carrier change · declared Spec
  • spec:consumers.spec-studio.publisher.watch.matches-plain-run: Each watch cycle writes the page set a plain run writes · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.build-pipeline-emit: stages build outputs, checks determinism and invalidates projections · anchored code · src/cli/build-command.ts:251
  • impl:protocol.studio-command: validates and renders the Studio with independent byte checks and diagnostic exit codes · anchored code · src/cli/studio-command.ts:106
  • impl:protocol.studio-page-catalog: selects Studio pages, optional inputs and Pack exports · anchored code · src/projections/studio/pages/index.ts:21
  • impl:protocol.studio-paths: encodes uppercase id letters for collision-free Pack and Spec page paths · anchored code · src/projections/studio/paths.ts:2
  • impl:protocol.studio-publish: copies local assets and replaces the Studio directory through its temporary sibling · anchored code · src/projections/studio/publish.ts:24
  • impl:protocol.studio-watch: awaits the plain Studio publication in each coalesced carrier-watch cycle · anchored code · src/cli/studio-command.ts:122
  • oracle:protocol.studio-watch: oracle:protocol.studio-watch · anchored oracle binding · test/studio-s5.test.ts:346
  • test:protocol.studio-data: test:protocol.studio-data · anchored test binding · binding present · test/studio-data.test.ts:26
  • test:protocol.studio-publisher: test:protocol.studio-publisher · anchored test binding · binding present · test/studio-publisher.test.ts:26
  • test:protocol.studio-watch-plain: test:protocol.studio-watch-plain · anchored test binding · binding present · test/studio-s5.test.ts:359
  • spec:consumers.spec-studio.publisher refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.publisher.watch refines spec:consumers.spec-studio.publisher · declared
  • spec:consumers.spec-studio.publisher.watch.matches-plain-run refines spec:consumers.spec-studio.publisher.watch · declared
  • spec:consumers.spec-studio.publisher.watch.matches-plain-run verifies spec:consumers.spec-studio.publisher.watch · declared
  • impl:protocol.build-pipeline-emit satisfies spec:consumers.spec-studio.publisher · anchored
  • impl:protocol.studio-command satisfies spec:consumers.spec-studio.publisher · anchored
  • impl:protocol.studio-page-catalog satisfies spec:consumers.spec-studio.publisher · anchored
  • impl:protocol.studio-paths satisfies spec:consumers.spec-studio.publisher · anchored
  • impl:protocol.studio-publish satisfies spec:consumers.spec-studio.publisher · anchored
  • impl:protocol.studio-watch satisfies spec:consumers.spec-studio.publisher.watch · anchored
  • oracle:protocol.studio-watch models spec:consumers.spec-studio.publisher.watch · anchored
  • test:protocol.studio-data verifies spec:consumers.spec-studio.publisher · anchored
  • test:protocol.studio-publisher verifies spec:consumers.spec-studio.publisher · anchored
  • test:protocol.studio-watch-plain verifies spec:consumers.spec-studio.publisher.watch.matches-plain-run · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.

Decisions

  • spec:decisions.shipped-projections-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.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocol

    Uses

    • component:protocol.adapters · external runtime and source adapters · src/adapters/vitest.ts:23 · layer adapter · context protocol
    • component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocol
    • 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.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocol
    • component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol
    • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
    • component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol
  • 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.build-pipeline-emit · stages build outputs, checks determinism and invalidates projections · src/cli/build-command.ts:251

    Component: component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-command · validates and renders the Studio with independent byte checks and diagnostic exit codes · src/cli/studio-command.ts:106

    Component: component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-page-catalog · selects Studio pages, optional inputs and Pack exports · src/projections/studio/pages/index.ts:21

    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.studio-paths · encodes uppercase id letters for collision-free Pack and Spec page paths · src/projections/studio/paths.ts:2

    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.studio-publish · copies local assets and replaces the Studio directory through its temporary sibling · src/projections/studio/publish.ts:24

    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.spec-studio.publisher

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

The diagram as text
  • spec:consumers.command-line: Every verb answers --help, and one verb writes every projection root
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • 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.export: A Pack exports as one file, and every page prints as a document
  • spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set
  • spec:consumers.spec-studio.publisher.watch: sdp studio --watch rebuilds the page set on each carrier change
  • spec:consumers.spec-studio.roadmap-page: The roadmap page shows the upcoming work in priority order, split by what it needs
  • spec:consumers.spec-studio.sharing: A Studio build is stamped and shared from a static host
  • spec:consumers.studio-on-ramp: The Studio skill teaches agents to publish, share and read the Spec Studio
  • spec:consumers.wholesale-view-rewrite: Every view run rewrites the view wholesale
  • spec:decisions.shipped-projections-frozen: The shipped projections stay frozen
  • spec:extraction.determinism: Committed source derives byte-identical output
  • spec:consumers.spec-studio.publisher constrainedBy spec:extraction.determinism · declared
  • spec:consumers.spec-studio.publisher decidedBy spec:decisions.shipped-projections-frozen · declared — the Studio publishes to a root of its own beside the four frozen ones
  • spec:consumers.spec-studio.publisher dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.publisher dependsOn spec:consumers.wholesale-view-rewrite · declared — the Studio's root is written, invalidated and certified the way the shipped roots are
  • spec:consumers.spec-studio.publisher refines spec:consumers.spec-studio · declared
  • spec:consumers.command-line dependsOn spec:consumers.spec-studio.publisher · declared — the Studio's page set is one of the roots the verb writes
  • spec:consumers.spec-studio.data.inputs dependsOn spec:consumers.spec-studio.publisher · declared — each input is named by a flag of the studio verb
  • spec:consumers.spec-studio.export dependsOn spec:consumers.spec-studio.publisher · declared — the export files are part of the page set the publisher writes
  • spec:consumers.spec-studio.roadmap-page dependsOn spec:consumers.spec-studio.publisher · declared — an entry's element id carries the name the page set gives its roadmap's Pack page
  • spec:consumers.spec-studio.sharing dependsOn spec:consumers.spec-studio.publisher · declared — the stamp and the preview take the page set the publisher wrote
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.spec-studio.publisher · declared — the skill teaches the verb, its watch and what each shared build removes
  • spec:consumers.spec-studio.publisher.watch refines spec:consumers.spec-studio.publisher · declared

Rests on

  • refines · spec:consumers.spec-studio · stated ready, floor ready
  • dependsOn · spec:consumers.spec-studio.data · stated ready, floor ready
  • dependsOn · spec:consumers.wholesale-view-rewrite · stated ready, floor ready
  • constrainedBy · spec:extraction.determinism · stated ready, floor ready
  • decidedBy · spec:decisions.shipped-projections-frozen · stated ready, floor ready

Rested on by

Distance 1

Distance 2

  • spec:consumers.command-line.generate-check-failure

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.generate-check-failure

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.command-line.generate-writes-every-root

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.generate-writes-every-root

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.command-line.verb-help-touches-nothing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.verb-help-touches-nothing

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.engine-provenance

    Implementing units

    • impl:protocol.build-artifacts · src/cli/build-artifacts.ts:182
    • impl:protocol.engine-provenance-cli · src/cli/sdp.ts:102

    Referencing units

    None.

    Enabled verifiers: test:protocol.engine-provenance

    Packs: pack:design-management-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.data.inputs.both-given

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-inputs-both-given

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.data.inputs.graph-only

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-graph-only

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.export.self-contained

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-export-contained

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.publisher.watch.matches-plain-run

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-watch-plain

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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:69
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.sharing.stamp-written-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-stamp-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.shell

    Implementing units

    • impl:protocol.studio-code-spans · src/projections/studio/pages/code-spans.ts:9
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-html · src/projections/studio/pages/html.ts:8
    • impl:protocol.studio-text · src/projections/studio/pages/text.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.spec-page

    Implementing units

    • impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8
    • impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 3

Distance 4

  • spec:consumers.spec-studio.capability-map-page

    Implementing units

    • impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.cited-line-text

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:roadmap, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.owner-queue.dependency-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-queue-dependency-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.registers.blocking-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-registers-blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.verification-panels.rule-coverage

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-rule-coverage

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Relations

Relation and directionOther endClaimReasonExercised keys
constrainedBy · outgoingspec:extraction.determinism
spec:extraction.determinism · resolves
declaredNoneNone
decidedBy · outgoingspec:decisions.shipped-projections-frozen
spec:decisions.shipped-projections-frozen · resolves
declaredthe Studio publishes to a root of its own beside the four frozen onesNone
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.wholesale-view-rewrite
spec:consumers.wholesale-view-rewrite · resolves
declaredthe Studio's root is written, invalidated and certified the way the shipped roots areNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.command-line
spec:consumers.command-line · resolves
declaredthe Studio's page set is one of the roots the verb writesNone
dependsOn · incomingThe Studio reads two named inputs beside the graph, a base graph and run records
spec:consumers.spec-studio.data.inputs · resolves
declaredeach input is named by a flag of the studio verbNone
dependsOn · incomingA Pack exports as one file, and every page prints as a document
spec:consumers.spec-studio.export · resolves
declaredthe export files are part of the page set the publisher writesNone
dependsOn · incomingspec:consumers.spec-studio.roadmap-page
spec:consumers.spec-studio.roadmap-page · resolves
declaredan entry's element id carries the name the page set gives its roadmap's Pack pageNone
dependsOn · incomingA Studio build is stamped and shared from a static host
spec:consumers.spec-studio.sharing · resolves
declaredthe stamp and the preview take the page set the publisher wroteNone
dependsOn · incomingThe Studio skill teaches agents to publish, share and read the Spec Studio
spec:consumers.studio-on-ramp · resolves
declaredthe skill teaches the verb, its watch and what each shared build removesNone
refines · incomingsdp studio --watch rebuilds the page set on each carrier change
spec:consumers.spec-studio.publisher.watch · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.build-pipeline-emit · stages build outputs, checks determinism and invalidates projections · src/cli/build-command.ts:251 · role service · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.studio-command · validates and renders the Studio with independent byte checks and diagnostic exit codes · src/cli/studio-command.ts:106 · role publisher · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.studio-page-catalog · selects Studio pages, optional inputs and Pack exports · src/projections/studio/pages/index.ts:21 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-paths · encodes uppercase id letters for collision-free Pack and Spec page paths · src/projections/studio/paths.ts:2 · role codec · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-publish · copies local assets and replaces the Studio directory through its temporary sibling · src/projections/studio/publish.ts:24 · role publisher · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-data · anchored · test/studio-data.test.ts:26 · test anchor
  • test:protocol.studio-publisher · anchored · test/studio-publisher.test.ts:26 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

9. sdp studio --watch rebuilds the page set on each carrier change

spec:consumers.spec-studio.publisher.watch

sdp studio --watch rebuilds the page set on each carrier change

spec:consumers.spec-studio.publisher.watchUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.publisher.watch.sdp.md

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

While an author edits, the watch rebuilds the page set on each carrier change, and a person reloads the page to read it. Each cycle writes exactly what a plain run with the same arguments writes, so the watch adds no server, no live reload and no script of its own.

Intent
outcome
Rebuild the Studio's page set on every carrier change while an author edits, each cycle byte for byte what a plain run writes, with no server and no injected script.
Behavior
rule.watch line 20 · specs/consumers/spec-studio.publisher.watch.sdp.md:20
sdp studio --watch installs the carrier watcher validate's watch installs, publishes once at start and again after every carrier create, change, delete or rename, each cycle writing the page set a plain sdp studio with the same arguments writes, byte for byte; it serves no page and injects no script, so a reader reloads to read the new build. Findings print each cycle and the process stays alive; a cycle whose extraction fails removes the page set; operator SIGINT exits 0; edits to source files and input files start no cycle; --watch cannot combine with --check-clean.

spec:consumers.spec-studio.publisher.watch.matches-plain-run · enabled

0 unkeyed rules.

Verifying examples

Each watch cycle writes the page set a plain run writes · spec:consumers.spec-studio.publisher.watch.matches-plain-run · ready floor ready

Executable Spec

Given an extraction root holding a Pack and its member Specs and a stale Studio page {stalePage: "specs/probe.departed.html"}
When the studio command runs under watch at that root while one member carrier changes {changes: 2} times
Then the watch exits {exitCode: 0} on SIGINT
Then each watch cycle wrote the page set a plain run writes: {cyclesMatchPlainRun: true}
Then the page set holds a script the plain run does not write: {injectedScript: false}
Then the stale page survives: {staleSurvives: false}
Then a temporary Studio sibling survives: {temporarySurvives: false}

Open example

Example space

Given an extraction root holding a Pack and its member Specs and a stale Studio page {stalePage:string}
When the studio command runs under watch at that root while one member carrier changes {changes:number} times
Then the watch exits {exitCode:number} on SIGINT
Then each watch cycle wrote the page set a plain run writes: {cyclesMatchPlainRun:boolean}
Then the page set holds a script the plain run does not write: {injectedScript:boolean}
Then the stale page survives: {staleSurvives:boolean}
Then a temporary Studio sibling survives: {temporarySurvives:boolean}
Verification

Verifier bindings

Example space

  • stalePage · string · declared by an extraction root holding a Pack and its member Specs and a stale Studio page {stalePage}
  • changes · number · declared by the studio command runs under watch at that root while one member carrier changes {changes} times

Bound points

ExamplestalePagechanges
spec:consumers.spec-studio.publisher.watch.matches-plain-run"specs/probe.departed.html"2

Oracle binding: present · oracle:protocol.studio-watch · test/studio-s5.test.ts:346

Coverage

stalePage: "specs/probe.departed.html" · spec:consumers.spec-studio.publisher.watch.matches-plain-run · not enumerable

changes: 2 · spec:consumers.spec-studio.publisher.watch.matches-plain-run · not enumerable

Unbound

  • stalePage: None
  • changes: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.publisher.watch
The diagram as text
  • spec:consumers.spec-studio.publisher.watch: sdp studio --watch rebuilds the page set on each carrier change · declared Spec
  • spec:consumers.spec-studio.publisher.watch.matches-plain-run: Each watch cycle writes the page set a plain run writes · declared Spec
  • spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set · declared Spec
  • impl:protocol.studio-watch: awaits the plain Studio publication in each coalesced carrier-watch cycle · anchored code · src/cli/studio-command.ts:122
  • oracle:protocol.studio-watch: oracle:protocol.studio-watch · anchored oracle binding · test/studio-s5.test.ts:346
  • test:protocol.studio-watch-plain: test:protocol.studio-watch-plain · anchored test binding · binding present · test/studio-s5.test.ts:359
  • spec:consumers.spec-studio.publisher.watch refines spec:consumers.spec-studio.publisher · declared
  • spec:consumers.spec-studio.publisher.watch.matches-plain-run refines spec:consumers.spec-studio.publisher.watch · declared
  • spec:consumers.spec-studio.publisher.watch.matches-plain-run verifies spec:consumers.spec-studio.publisher.watch · declared
  • impl:protocol.studio-watch satisfies spec:consumers.spec-studio.publisher.watch · anchored
  • oracle:protocol.studio-watch models spec:consumers.spec-studio.publisher.watch · anchored
  • test:protocol.studio-watch-plain verifies spec:consumers.spec-studio.publisher.watch.matches-plain-run · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

No decision record named.

Runtime
  • component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocol

    Uses

    • component:protocol.adapters · external runtime and source adapters · src/adapters/vitest.ts:23 · layer adapter · context protocol
    • component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocol
    • 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.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocol
    • component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol
    • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
    • component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol
  • impl:protocol.studio-watch · awaits the plain Studio publication in each coalesced carrier-watch cycle · src/cli/studio-command.ts:122

    Component: component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · 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.spec-studio.publisher.watch
  • E4: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set
  • spec:consumers.spec-studio.publisher.watch: sdp studio --watch rebuilds the page set on each carrier change
  • spec:consumers.spec-studio.publisher.watch.matches-plain-run: Each watch cycle writes the page set a plain run writes
  • spec:consumers.validate-watch: Validation re-runs while an author edits carriers
  • spec:consumers.spec-studio.publisher.watch dependsOn spec:consumers.validate-watch · declared — the watch reruns on the carrier events validate's watch follows
  • spec:consumers.spec-studio.publisher.watch refines spec:consumers.spec-studio.publisher · declared
  • spec:consumers.spec-studio.publisher.watch.matches-plain-run refines spec:consumers.spec-studio.publisher.watch · declared
  • spec:consumers.spec-studio.publisher.watch.matches-plain-run verifies spec:consumers.spec-studio.publisher.watch · 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

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:consumers.validate-watch
spec:consumers.validate-watch · resolves
declaredthe watch reruns on the carrier events validate's watch followsNone
refines · outgoingsdp studio publishes the Studio as one page set
spec:consumers.spec-studio.publisher · resolves
declaredNoneNone
refines · incomingEach watch cycle writes the page set a plain run writes
spec:consumers.spec-studio.publisher.watch.matches-plain-run · resolves
declaredNoneNone
verifies · incomingEach watch cycle writes the page set a plain run writes
spec:consumers.spec-studio.publisher.watch.matches-plain-run · resolves
declaredNonewatch

Bindings

Implementation binding: present

  • impl:protocol.studio-watch · awaits the plain Studio publication in each coalesced carrier-watch cycle · src/cli/studio-command.ts:122 · role service · component component:protocol.cli · layer edge · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.studio-watch · test/studio-s5.test.ts:346

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

10. Each watch cycle writes the page set a plain run writes

spec:consumers.spec-studio.publisher.watch.matches-plain-run

Each watch cycle writes the page set a plain run writes

spec:consumers.spec-studio.publisher.watch.matches-plain-runExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.publisher.watch.matches-plain-run.sdp.md

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

Intent
outcome
Execute the watch on a root whose member carrier changes, and hold each cycle's page set to a plain run's.
assumptions
  • The world writes a root with one Pack of two member Specs and plants the stale page, starts the watch through the command's watch hooks, changes the first member's title twice, waiting for each cycle, and after each cycle runs a plain studio command over a copy of the root as it stands and compares the two page sets file by file; it then stops the watch with SIGINT and reads the exit code.
Behavior

Examples

Given an extraction root holding a Pack and its member Specs and a stale Studio page {stalePage: "specs/probe.departed.html"}
When the studio command runs under watch at that root while one member carrier changes {changes: 2} times
Then the watch exits {exitCode: 0} on SIGINT
Then each watch cycle wrote the page set a plain run writes: {cyclesMatchPlainRun: true}
Then the page set holds a script the plain run does not write: {injectedScript: false}
Then the stale page survives: {staleSurvives: false}
Then a temporary Studio sibling survives: {temporarySurvives: false}
Verification

Verifier bindings

  • test:protocol.studio-watch-plain · anchored · test anchor binding present · test/studio-s5.test.ts:359
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.publisher.watch.matches-plain-run
The diagram as text
  • spec:consumers.spec-studio.publisher.watch.matches-plain-run: Each watch cycle writes the page set a plain run writes · declared Spec
  • spec:consumers.spec-studio.publisher.watch: sdp studio --watch rebuilds the page set on each carrier change · declared Spec
  • test:protocol.studio-watch-plain: test:protocol.studio-watch-plain · anchored test binding · binding present · test/studio-s5.test.ts:359
  • spec:consumers.spec-studio.publisher.watch.matches-plain-run refines spec:consumers.spec-studio.publisher.watch · declared
  • spec:consumers.spec-studio.publisher.watch.matches-plain-run verifies spec:consumers.spec-studio.publisher.watch · declared
  • test:protocol.studio-watch-plain verifies spec:consumers.spec-studio.publisher.watch.matches-plain-run · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.publisher.watch.matches-plain-run
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.publisher.watch: sdp studio --watch rebuilds the page set on each carrier change
  • spec:consumers.spec-studio.publisher.watch.matches-plain-run: Each watch cycle writes the page set a plain run writes
  • spec:consumers.spec-studio.publisher.watch.matches-plain-run refines spec:consumers.spec-studio.publisher.watch · declared
  • spec:consumers.spec-studio.publisher.watch.matches-plain-run verifies spec:consumers.spec-studio.publisher.watch · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingsdp studio --watch rebuilds the page set on each carrier change
spec:consumers.spec-studio.publisher.watch · resolves
declaredNoneNone
verifies · outgoingsdp studio --watch rebuilds the page set on each carrier change
spec:consumers.spec-studio.publisher.watch · resolves
declaredNonewatch

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-watch-plain · anchored · test/studio-s5.test.ts:359 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

11. The Studio's shell frames every page with navigation, a rail and a canvas

spec:consumers.spec-studio.shell

The Studio's shell frames every page with navigation, a rail and a canvas

spec:consumers.spec-studio.shellUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.shell.sdp.md

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

The shell carries what every page shares, including the rules that keep a page readable: by keyboard, without color, on a phone and without its script. Recent edits stay out of it, because a page is a function of the graph alone and git holds the history.

Intent
outcome
Let a person move between the index, Packs and Specs from any page, find a Spec by what they remember of it, and read every page by keyboard, on a phone and without its script.
Behavior
rule line 27 · specs/consumers/spec-studio.shell.sdp.md:27
Every page has the same shell: a top navigation, a left rail and a main canvas, and it opens with a link that skips to the canvas.
rule line 28 · specs/consumers/spec-studio.shell.sdp.md:28
A search field is on every page; spec:consumers.spec-studio.search states what it matches and how its results show.
rule line 29 · specs/consumers/spec-studio.shell.sdp.md:29
The rail's count of findings is the count of the validation report's findings, never a count the page derives.
rule.noRecentEdits line 30 · specs/consumers/spec-studio.shell.sdp.md:30
The shell shows no recent edits and no other history: git holds it.

no example exercises it

rule.stamp line 31 · specs/consumers/spec-studio.shell.sdp.md:31
Served over http or https, the shell reads stamp.json beside the page set and, when it loads, shows the build context it names; a page opened through file:// requests nothing and shows no stamp.

no example exercises it

rule.rungBadge line 32 · specs/consumers/spec-studio.shell.sdp.md:32
A stated rung shows as a badge that carries the rung's word, colored from a palette of four that stays distinct under color blindness; the floor reached shows beside it as words with no color of its own, and only the divergence banner adds a warning color, beside its words.

no example exercises it

rule.wordsBesideColor line 33 · specs/consumers/spec-studio.shell.sdp.md:33
Every meaning a color conveys is also written in words, so no reading depends on color.

no example exercises it

rule.keyboard line 34 · specs/consumers/spec-studio.shell.sdp.md:34
Every link and control is reachable from the keyboard in reading order and shows where the focus is.

no example exercises it

rule.lineLength line 35 · specs/consumers/spec-studio.shell.sdp.md:35
Prose runs no wider than about 80 characters, and a table wider than the canvas scrolls inside its own box, never the page.

no example exercises it

rule.text line 36 · specs/consumers/spec-studio.shell.sdp.md:36
Authored text renders as plain text with each inline code span as code, and no other Markdown is read. A mention the prose-mentions validator reads links to its target's page when the target resolves, and to the entry when the mention is an entry address.

no example exercises it

rule.withoutScript line 37 · specs/consumers/spec-studio.shell.sdp.md:37
Every page but the search page reads in full without its script: its collapsible parts are native disclosure elements, and only filtering, copying, the stamp, pan and zoom, and the composing panel need the script. The search page needs its script to match, and without it says so and links to the index.

no example exercises it

3 unkeyed rules.

UI

The parts of the shell, top to bottom and left to right.

topNavigation line 41 · specs/consumers/spec-studio.shell.sdp.md:41
the Studio's name linking to the index, then Packs, linking to the index's Packs section, then the search field; each lens page the page set holds adds its entry in the order spec:consumers.spec-studio.lenses gives.
stampLine line 42 · specs/consumers/spec-studio.shell.sdp.md:42
at the end of the top navigation, the stamp's corpus commit, engine and build time, when the stamp loads.
leftRail line 43 · specs/consumers/spec-studio.shell.sdp.md:43
on a Pack page, the Pack's members in authored order, each linked to its card on the page; on a Spec page, each Pack the Spec belongs to with its members in authored order, each linked to its Spec page and the current one marked; on any other page, every Pack; then, on a Pack or Spec page, under an Example spaces heading shown only when there is one, each member of the rail's Packs that owns an example space, linked to its Spec page, with no harness named; then the validation report's finding counts by severity, linked to the index's findings.
railOnPhone line 44 · specs/consumers/spec-studio.shell.sdp.md:44
below the phone breakpoint the rail follows the canvas, so a page opens on its content.
mainCanvas line 45 · specs/consumers/spec-studio.shell.sdp.md:45
the page of the Spec or Pack selected in the rail or in a lens.
Verification

Verifier bindings

  • test:protocol.studio-pages · anchored · test anchor binding present · test/studio-pages.test.ts:18
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.shell
The diagram as text
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas · declared Spec
  • spec:consumers.spec-studio.search: Search finds a Spec, a Pack, an entry or a bound file by a word · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.studio-code-spans: escapes and maps code spans across Studio text · anchored code · src/projections/studio/pages/code-spans.ts:9
  • impl:protocol.studio-concept-match: matches concepts deterministically across graph and browser queries · anchored code · src/reader/concept-match.ts:43
  • impl:protocol.studio-frame: renders Studio navigation, page rails and composing controls · anchored code · src/projections/studio/pages/frame.ts:6
  • impl:protocol.studio-html: shared Studio HTML, source and link encoding · anchored code · src/projections/studio/pages/html.ts:8
  • impl:protocol.studio-search-page: publishes search records beside the browser results view · anchored code · src/projections/studio/pages/search-page.ts:5
  • impl:protocol.studio-search-results: ranks and renders concept, entry and file search hits · anchored code · src/studio-elements/search-results.ts:95
  • impl:protocol.studio-text: escapes prose and links graph-resolving mentions · anchored code · src/projections/studio/pages/text.ts:7
  • test:protocol.studio-concept-match: test:protocol.studio-concept-match · anchored test binding · binding present · test/concept-match.test.ts:9
  • test:protocol.studio-page-elements: test:protocol.studio-page-elements · anchored test binding · binding present · test/studio-elements.test.ts:26
  • test:protocol.studio-pages: test:protocol.studio-pages · anchored test binding · binding present · test/studio-pages.test.ts:18
  • spec:consumers.spec-studio.search refines spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.shell refines spec:consumers.spec-studio · declared
  • impl:protocol.studio-code-spans satisfies spec:consumers.spec-studio.shell · anchored
  • impl:protocol.studio-concept-match satisfies spec:consumers.spec-studio.search · anchored
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio.shell · anchored
  • impl:protocol.studio-html satisfies spec:consumers.spec-studio.shell · anchored
  • impl:protocol.studio-search-page satisfies spec:consumers.spec-studio.search · anchored
  • impl:protocol.studio-search-results satisfies spec:consumers.spec-studio.search · anchored
  • impl:protocol.studio-text satisfies spec:consumers.spec-studio.shell · anchored
  • test:protocol.studio-concept-match verifies spec:consumers.spec-studio.search · anchored
  • test:protocol.studio-page-elements verifies spec:consumers.spec-studio.search · anchored
  • test:protocol.studio-pages verifies spec:consumers.spec-studio.shell · anchored
  • test:protocol.studio-pages verifies spec:consumers.spec-studio.search · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

No decision record named.

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.studio-code-spans · escapes and maps code spans across Studio text · src/projections/studio/pages/code-spans.ts:9

    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.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6

    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.studio-html · shared Studio HTML, source and link encoding · src/projections/studio/pages/html.ts:8

    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.studio-text · escapes prose and links graph-resolving mentions · src/projections/studio/pages/text.ts:7

    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.spec-studio.shell
The diagram as text
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • spec:consumers.spec-studio.index-page: The index says where the corpus stands and narrows every Spec
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence
  • spec:consumers.spec-studio.navigation: Every page of the page set is reached from the top navigation and the index
  • spec:consumers.spec-studio.owner-queue: The owner queue page orders the statements and questions only a person can settle
  • spec:consumers.spec-studio.pack-page: A Pack page shows the Pack's design as one card per member
  • spec:consumers.spec-studio.page-elements: A few custom elements filter, search, open and copy on a rendered page
  • spec:consumers.spec-studio.registers: The corpus's registers are pages a reviewer opens from a link
  • spec:consumers.spec-studio.responsive: The Studio reads on a phone as on a desktop
  • spec:consumers.spec-studio.roadmap-page: The roadmap page shows the upcoming work in priority order, split by what it needs
  • spec:consumers.spec-studio.search: Search finds a Spec, a Pack, an entry or a bound file by a word
  • spec:consumers.spec-studio.sharing: A Studio build is stamped and shared from a static host
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:consumers.spec-studio.spec-page.core: A Spec page's core shows the whole Spec, with an anchor for every entry
  • spec:validation.prose-mentions: Every Spec id written in prose resolves
  • spec:consumers.spec-studio.shell dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.shell dependsOn spec:consumers.spec-studio.lenses · declared — the top navigation opens each lens
  • spec:consumers.spec-studio.shell dependsOn spec:consumers.spec-studio.responsive · declared — the rail moves below the canvas under the phone breakpoint
  • spec:consumers.spec-studio.shell dependsOn spec:consumers.spec-studio.sharing · declared — the shell shows the stamp a publishing step writes beside the page set
  • spec:consumers.spec-studio.shell dependsOn spec:validation.prose-mentions · declared — a mention links where the validator resolves it
  • spec:consumers.spec-studio.shell refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.index-page dependsOn spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.navigation dependsOn spec:consumers.spec-studio.shell · declared — the entries extend the shell's top navigation
  • spec:consumers.spec-studio.owner-queue dependsOn spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.pack-page dependsOn spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.page-elements dependsOn spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.registers dependsOn spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.roadmap-page dependsOn spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.spec-page.core dependsOn spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.search refines spec:consumers.spec-studio.shell · 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

  • spec:consumers.spec-studio.index-page

    Implementing units

    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.navigation

    Implementing units

    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-navigation, test:protocol.studio-roadmap-page

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.pack-page

    Implementing units

    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap-priority, test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.page-elements

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-copy · src/studio-elements/copy.ts:22
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-search-form · src/studio-elements/search.ts:18
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-copy-source, test:protocol.studio-page-elements

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.registers

    Implementing units

    • impl:protocol.studio-registers · src/projections/studio/pages/registers-page.ts:47

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.registers.blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.search

    Implementing units

    • impl:protocol.studio-concept-match · src/reader/concept-match.ts:43
    • impl:protocol.studio-search-page · src/projections/studio/pages/search-page.ts:5
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-concept-match, test:protocol.studio-page-elements, test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 2

  • spec:consumers.spec-studio.capability-map-page

    Implementing units

    • impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.cited-line-text

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:roadmap, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.export

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.owner-queue.dependency-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-queue-dependency-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.registers.blocking-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-registers-blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

Distance 3

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
dependsOn · outgoingFive lenses read the graph as Packs, capabilities, architecture, tests and evidence
spec:consumers.spec-studio.lenses · resolves
declaredthe top navigation opens each lensNone
dependsOn · outgoingThe Studio reads on a phone as on a desktop
spec:consumers.spec-studio.responsive · resolves
declaredthe rail moves below the canvas under the phone breakpointNone
dependsOn · outgoingA Studio build is stamped and shared from a static host
spec:consumers.spec-studio.sharing · resolves
declaredthe shell shows the stamp a publishing step writes beside the page setNone
dependsOn · outgoingspec:validation.prose-mentions
spec:validation.prose-mentions · resolves
declareda mention links where the validator resolves itNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
dependsOn · incomingThe index says where the corpus stands and narrows every Spec
spec:consumers.spec-studio.index-page · resolves
declaredNoneNone
dependsOn · incomingEvery page of the page set is reached from the top navigation and the index
spec:consumers.spec-studio.navigation · resolves
declaredthe entries extend the shell's top navigationNone
dependsOn · incomingThe owner queue page orders the statements and questions only a person can settle
spec:consumers.spec-studio.owner-queue · resolves
declaredNoneNone
dependsOn · incomingA Pack page shows the Pack's design as one card per member
spec:consumers.spec-studio.pack-page · resolves
declaredNoneNone
dependsOn · incomingA few custom elements filter, search, open and copy on a rendered page
spec:consumers.spec-studio.page-elements · resolves
declaredNoneNone
dependsOn · incomingThe corpus's registers are pages a reviewer opens from a link
spec:consumers.spec-studio.registers · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.spec-studio.roadmap-page
spec:consumers.spec-studio.roadmap-page · resolves
declaredNoneNone
dependsOn · incomingA Spec page's core shows the whole Spec, with an anchor for every entry
spec:consumers.spec-studio.spec-page.core · resolves
declaredNoneNone
refines · incomingSearch finds a Spec, a Pack, an entry or a bound file by a word
spec:consumers.spec-studio.search · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.studio-code-spans · escapes and maps code spans across Studio text · src/projections/studio/pages/code-spans.ts:9 · role codec · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-html · shared Studio HTML, source and link encoding · src/projections/studio/pages/html.ts:8 · role codec · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-text · escapes prose and links graph-resolving mentions · src/projections/studio/pages/text.ts:7 · role codec · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-pages · anchored · test/studio-pages.test.ts:18 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

12. Search finds a Spec, a Pack, an entry or a bound file by a word

spec:consumers.spec-studio.search

Search finds a Spec, a Pack, an entry or a bound file by a word

spec:consumers.spec-studio.searchUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.search.sdp.md

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

The first adopter asked to search entry keys, pinned declarations and file paths. A Spec's envelope holds no tags, so search reads what the graph holds: the fields concept search reads, which already include every pinned declaration, plus the keys authors coin and the files the graph records. The page matches with the reader's own code, so a term finds on the page what findByConcept finds through sdp q.

Intent
outcome
Let a person find a Spec, a Pack, a keyed entry or the code bound at a file by a word they remember of it, from any page and with no request.
Behavior
rule.oneMatcher line 21 · specs/consumers/spec-studio.search.sdp.md:21
Search matches with the reader's concept matching, one implementation the package exports without Node dependencies and the page script bundles, so over the fields findByConcept reads, the page returns the nodes it returns, in its order.

no example exercises it

rule.addedFields line 22 · specs/consumers/spec-studio.search.sdp.md:22
Search also matches the keys authors coin, Design and UI keys, open question keys and rule keys, and a node's recorded file path; a node matched only through these follows every node findByConcept matches, in id order. It indexes nothing else.

no example exercises it

rule line 23 · specs/consumers/spec-studio.search.sdp.md:23
A term matches where it appears in a field, without regard to case, as findByConcept matches; an empty term matches nothing.
rule.searchPage line 24 · specs/consumers/spec-studio.search.sdp.md:24
The search field on any page opens the search page with the term in its fragment, search.html#q=<term>; the search page matches as the person types and keeps the term in its fragment, so a search is a link.

no example exercises it

rule.resultShape line 25 · specs/consumers/spec-studio.search.sdp.md:25
Each result names its node type in words. A Spec result shows its title, id, kind, and stated rung beside the floor reached, and opens its page; a Pack result shows its title and id and opens its page, with no readiness; an Anchor or CodeNode result shows its id, label, and recorded file and line as text with a copy action, and links each Spec its edges reach, with the edge type.

no example exercises it

rule.entryHits line 26 · specs/consumers/spec-studio.search.sdp.md:26
A Spec with a matching entry is a result. Under a Spec result, the page lists the Spec's entries the term matches, as spec:consumers.spec-studio.data#design.searchEntry states, in the index's order, each with its section, key and recorded line, linked to the entry's element id on the Spec page when it has an entry address, and otherwise to its section's element id, or to the narrative's.

no example exercises it

rule line 27 · specs/consumers/spec-studio.search.sdp.md:27
The page shows fifty results at a time, with a control that shows the next fifty.
rule line 28 · specs/consumers/spec-studio.search.sdp.md:28
The search page reads only the index it embeds; it fetches nothing and joins nothing.

3 unkeyed rules.

UI
searchField line 31 · specs/consumers/spec-studio.search.sdp.md:31
a labelled text field and a Search button in the top navigation of every page.
resultsHeader line 32 · specs/consumers/spec-studio.search.sdp.md:32
the term, how many nodes and entries match, and the fields searched.
resultCard line 33 · specs/consumers/spec-studio.search.sdp.md:33
one card per node, in result order: its node type in words, title and id, the fields that matched, and the Spec's rungs or the unit's location as the result rule states; then its entry hits.
entryHit line 34 · specs/consumers/spec-studio.search.sdp.md:34
one line per entry: its section, its key as code, its recorded line, and the text around the term, shortened.
noMatch line 35 · specs/consumers/spec-studio.search.sdp.md:35
No node matches and the term, then the fields searched.
needsScript line 36 · specs/consumers/spec-studio.search.sdp.md:36
without script, the search page says that search needs it and links to the index.
Verification

Verifier bindings

  • test:protocol.studio-concept-match · anchored · test anchor binding present · test/concept-match.test.ts:9
  • test:protocol.studio-page-elements · anchored · test anchor binding present · test/studio-elements.test.ts:26
  • test:protocol.studio-pages · anchored · test anchor binding present · test/studio-pages.test.ts:18
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.search
The diagram as text
  • spec:consumers.spec-studio.search: Search finds a Spec, a Pack, an entry or a bound file by a word · declared Spec
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas · declared Spec
  • impl:protocol.studio-concept-match: matches concepts deterministically across graph and browser queries · anchored code · src/reader/concept-match.ts:43
  • impl:protocol.studio-search-page: publishes search records beside the browser results view · anchored code · src/projections/studio/pages/search-page.ts:5
  • impl:protocol.studio-search-results: ranks and renders concept, entry and file search hits · anchored code · src/studio-elements/search-results.ts:95
  • test:protocol.studio-concept-match: test:protocol.studio-concept-match · anchored test binding · binding present · test/concept-match.test.ts:9
  • test:protocol.studio-page-elements: test:protocol.studio-page-elements · anchored test binding · binding present · test/studio-elements.test.ts:26
  • test:protocol.studio-pages: test:protocol.studio-pages · anchored test binding · binding present · test/studio-pages.test.ts:18
  • spec:consumers.spec-studio.search refines spec:consumers.spec-studio.shell · declared
  • impl:protocol.studio-concept-match satisfies spec:consumers.spec-studio.search · anchored
  • impl:protocol.studio-search-page satisfies spec:consumers.spec-studio.search · anchored
  • impl:protocol.studio-search-results satisfies spec:consumers.spec-studio.search · anchored
  • test:protocol.studio-concept-match verifies spec:consumers.spec-studio.search · anchored
  • test:protocol.studio-page-elements verifies spec:consumers.spec-studio.search · anchored
  • test:protocol.studio-pages verifies spec:consumers.spec-studio.search · 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

No decision record named.

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
  • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol

    Uses

    • 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.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol
  • component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
  • impl:protocol.studio-concept-match · matches concepts deterministically across graph and browser queries · src/reader/concept-match.ts:43

    Component: component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol

    Uses

    None.

  • impl:protocol.studio-search-page · publishes search records beside the browser results view · src/projections/studio/pages/search-page.ts:5

    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.studio-search-results · ranks and renders concept, entry and file search hits · src/studio-elements/search-results.ts:95

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.search
The diagram as text
  • spec:consumers.reader: The reader bridges agent entry points to composable graph context
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • spec:consumers.spec-studio.page-elements: A few custom elements filter, search, open and copy on a rendered page
  • spec:consumers.spec-studio.search: Search finds a Spec, a Pack, an entry or a bound file by a word
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:consumers.spec-studio.search dependsOn spec:consumers.reader · declared — the page matches with the reader's concept matching
  • spec:consumers.spec-studio.search dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.search refines spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.page-elements dependsOn spec:consumers.spec-studio.search · 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

  • spec:consumers.spec-studio.page-elements

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-copy · src/studio-elements/copy.ts:22
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-search-form · src/studio-elements/search.ts:18
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-copy-source, test:protocol.studio-page-elements

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 2

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:consumers.reader
spec:consumers.reader · resolves
declaredthe page matches with the reader's concept matchingNone
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
refines · outgoingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredNoneNone
dependsOn · incomingA few custom elements filter, search, open and copy on a rendered page
spec:consumers.spec-studio.page-elements · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.studio-concept-match · matches concepts deterministically across graph and browser queries · src/reader/concept-match.ts:43 · role reader · component component:protocol.reader · layer application · context protocol
  • impl:protocol.studio-search-page · publishes search records beside the browser results view · src/projections/studio/pages/search-page.ts:5 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-search-results · ranks and renders concept, entry and file search hits · src/studio-elements/search-results.ts:95 · role projection · component component:protocol.studio-elements · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-concept-match · anchored · test/concept-match.test.ts:9 · test anchor
  • test:protocol.studio-page-elements · anchored · test/studio-elements.test.ts:26 · test anchor
  • test:protocol.studio-pages · anchored · test/studio-pages.test.ts:18 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

13. Every page of the page set is reached from the top navigation and the index

spec:consumers.spec-studio.navigation

Every page of the page set is reached from the top navigation and the index

spec:consumers.spec-studio.navigationUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.navigation.sdp.md

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

The shell's top navigation reaches the index and each lens, and the index routes a reader by the task they came to do. The register pages, the owner queue, the glossary, and the diff and runs pages join both, so a reviewer with only a link reaches every page from any page and sees which page they are on.

Intent
outcome
Let a person reach every page of the page set from the top navigation of any page, and from the index by the task they came to do.
Behavior
rule.topEntries line 24 · specs/consumers/spec-studio.navigation.sdp.md:24
After the lens entries, the top navigation lists Roadmap, Queue, Questions, Decisions, Declarations, Backlog and Glossary, then Diff when the build was given a base graph and Runs when it was given run records, each linking its page; the search field follows them.

no example exercises it

rule.currentPage line 25 · specs/consumers/spec-studio.navigation.sdp.md:25
The top-navigation link to the page being read carries aria-current="page" and an underline, so it shows by more than color.

no example exercises it

rule.indexRoutes line 26 · specs/consumers/spec-studio.navigation.sdp.md:26
After its four routes, the index's Start here list adds See what comes next, linking the roadmap page; See what the owner can state first, linking the owner queue; See the components by context and layer, linking the architecture lens; and, given a base graph, See what changed since the base, linking the diff page.

no example exercises it

0 unkeyed rules.

Verification

Verifier bindings

  • test:protocol.studio-navigation · anchored · test anchor binding present · test/studio-s3.test.ts:317
  • test:protocol.studio-roadmap-page · anchored · test anchor binding present · test/studio-roadmap.test.ts:24
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.navigation
The diagram as text
  • spec:consumers.spec-studio.navigation: Every page of the page set is reached from the top navigation and the index · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.studio-frame: renders Studio navigation, page rails and composing controls · anchored code · src/projections/studio/pages/frame.ts:6
  • impl:protocol.studio-index-page: renders Pack disclosures and filterable Spec rows · anchored code · src/projections/studio/pages/index-page.ts:8
  • test:protocol.studio-navigation: test:protocol.studio-navigation · anchored test binding · binding present · test/studio-s3.test.ts:317
  • test:protocol.studio-roadmap-page: test:protocol.studio-roadmap-page · anchored test binding · binding present · test/studio-roadmap.test.ts:24
  • spec:consumers.spec-studio.navigation refines spec:consumers.spec-studio · declared
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio.navigation · anchored
  • impl:protocol.studio-index-page satisfies spec:consumers.spec-studio.navigation · anchored
  • test:protocol.studio-navigation verifies spec:consumers.spec-studio.navigation · anchored
  • test:protocol.studio-roadmap-page verifies spec:consumers.spec-studio.navigation · 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

No decision record named.

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.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6

    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.studio-index-page · renders Pack disclosures and filterable Spec rows · src/projections/studio/pages/index-page.ts:8

    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.spec-studio.navigation
The diagram as text
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.index-page: The index says where the corpus stands and narrows every Spec
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence
  • spec:consumers.spec-studio.navigation: Every page of the page set is reached from the top navigation and the index
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:consumers.spec-studio.navigation dependsOn spec:consumers.spec-studio.index-page · declared — the routes extend the index's task list
  • spec:consumers.spec-studio.navigation dependsOn spec:consumers.spec-studio.lenses · declared — the lens entries keep the order the lenses take
  • spec:consumers.spec-studio.navigation dependsOn spec:consumers.spec-studio.shell · declared — the entries extend the shell's top navigation
  • spec:consumers.spec-studio.navigation refines spec:consumers.spec-studio · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingThe index says where the corpus stands and narrows every Spec
spec:consumers.spec-studio.index-page · resolves
declaredthe routes extend the index's task listNone
dependsOn · outgoingFive lenses read the graph as Packs, capabilities, architecture, tests and evidence
spec:consumers.spec-studio.lenses · resolves
declaredthe lens entries keep the order the lenses takeNone
dependsOn · outgoingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredthe entries extend the shell's top navigationNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-index-page · renders Pack disclosures and filterable Spec rows · src/projections/studio/pages/index-page.ts:8 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-navigation · anchored · test/studio-s3.test.ts:317 · test anchor
  • test:protocol.studio-roadmap-page · anchored · test/studio-roadmap.test.ts:24 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

14. Five lenses read the graph as Packs, capabilities, architecture, tests and evidence

spec:consumers.spec-studio.lenses

Five lenses read the graph as Packs, capabilities, architecture, tests and evidence

spec:consumers.spec-studio.lensesUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

Design: 1 design entry · no pinned declarations · no decisions

Findings: no errors, no warnings

specs/consumers/spec-studio.lenses.sdp.md

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

Each lens is a page with a Spec of its own, so each builds on the graph it reads today: the Packs, capabilities, architecture and tests lenses read what the graph records, and the evidence lens reads not tracked until the graph records an observation. This Spec keeps what the five share.

Intent
outcome
Let a person see the graph five ways, by Pack, by capability, by architecture, by verification and by evidence, from one top navigation.
Behavior
rule.order line 18 · specs/consumers/spec-studio.lenses.sdp.md:18
The lenses are pages of the page set, reached from the top navigation in the order Packs, capabilities, architecture, tests, evidence; the index page is the Packs lens and the default landing page.

no example exercises it

rule.lensValues line 19 · specs/consumers/spec-studio.lenses.sdp.md:19
A lens renders reader values and the recipe answers its own Spec names, and computes none of them in the page.

no example exercises it

rule.readOnly line 20 · specs/consumers/spec-studio.lenses.sdp.md:20
A lens writes nothing and states nothing: it lists, groups, draws and links, and a change a person wants from it leaves through the composing panel as scoped intent.

no example exercises it

0 unkeyed rules.

UI
lensPages line 23 · specs/consumers/spec-studio.lenses.sdp.md:23
index.html for the Packs lens, capabilities.html for the capabilities lens, architecture.html, tests.html and evidence.html, each opening with its name and one sentence saying what it reads.
Verification

Verifier bindings

  • test:protocol.studio-lenses · anchored · test anchor binding present · test/studio-s1.test.ts:273
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.lenses
Requirement drawing for spec:consumers.spec-studio.lensesmodels · anchoredrefines · declaredrefines · declaredrefines · declaredrefines · declaredrefines · declaredsatisfies · anchoredsatisfies · anchoredsatisfies · anchoredverifies · anchoredverifies · anchoredverifies · anchoredverifies · anchoredrefines, verifies · declaredrefines · declaredIntended Specs2 modeled Specs · anchored, folded2 modeled Specs · anchored3 refining Specs · declared, folded3 refining Specs · declaredspec:consumers.spec-studio.lensesFive lenses read the graphas Packs, capabilities,architecture, tests andevidence…lensesdeclared SpecDeclared verifying examples2 verifying examples · declared, folded2 verifying examples ·declaredSatisfying or referencingunits7 satisfying units · anchored, folded7 satisfying units ·anchoredTest or oracle bindings2 oracle bindings · anchored, folded2 oracle bindings · anchored5 test bindings · anchored, folded5 test bindings · anchoredOutside the selected set2 refining Specs · declared, folded2 refining Specs · declared2 refined Specs · declared, folded2 refined Specs · declared
The diagram as text
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence · declared Spec
  • spec:consumers.spec-studio.capability-map-page: The capability map page makes refinement readable by epic · declared Spec
  • spec:consumers.spec-studio.lenses.architecture: The architecture lens draws components by context and layer, the planned beside the built · declared Spec
  • spec:consumers.spec-studio.lenses.evidence: The evidence lens names each source of runtime evidence and reads it as not tracked · declared Spec
  • spec:consumers.spec-studio.lenses.packs: The Packs lens groups every Spec by the Packs that hold it · declared Spec
  • spec:consumers.spec-studio.lenses.tests: The tests lens shows how far each Spec's verification reaches · declared Spec
  • spec:consumers.spec-studio.lenses.architecture.planned-apart: A component design no anchor realizes draws planned beside the built one · declared Spec
  • spec:consumers.spec-studio.lenses.tests.coverage-row: A Spec's row on the tests lens counts its exercised keyed rules · declared Spec
  • spec:consumers.capability-map: The capability map reads every epic and its refinement descendants · declared Spec
  • spec:consumers.spec-studio.index-page: The index says where the corpus stands and narrows every Spec · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • spec:consumers.spec-studio.lenses.architecture.unit-register: The architecture page lists each component's significant units by role · declared Spec
  • impl:protocol.studio-architecture-lens: renders recipe component rows and planned designs as architecture and member diagrams · anchored code · src/projections/studio/pages/architecture-page.ts:50
  • impl:protocol.studio-capabilities-page: renders epic evidence, refinement and unreached Specs from the capability map · anchored code · src/projections/studio/pages/capabilities-page.ts:78
  • impl:protocol.studio-evidence-lens: names the four evidence sources and what would bring each into the Studio · anchored code · src/projections/studio/pages/evidence-page.ts:3
  • impl:protocol.studio-filter: filters build-rendered rows through their recorded attributes · anchored code · src/studio-elements/filter.ts:25
  • impl:protocol.studio-frame: renders Studio navigation, page rails and composing controls · anchored code · src/projections/studio/pages/frame.ts:6
  • impl:protocol.studio-index-page: renders Pack disclosures and filterable Spec rows · anchored code · src/projections/studio/pages/index-page.ts:8
  • impl:protocol.studio-tests-lens: renders shared rule and example-space coverage with filters and verifier bindings · anchored code · src/projections/studio/pages/tests-page.ts:34
  • oracle:protocol.studio-architecture: oracle:protocol.studio-architecture · anchored oracle binding · test/studio-s1.test.ts:707
  • oracle:protocol.studio-tests: oracle:protocol.studio-tests · anchored oracle binding · test/studio-s1.test.ts:760
  • test:protocol.studio-architecture-maturity-requirement: test:protocol.studio-architecture-maturity-requirement · anchored test binding · binding present · test/studio-panels.test.ts:35
  • test:protocol.studio-architecture-planned-apart: test:protocol.studio-architecture-planned-apart · anchored test binding · binding present · test/studio-s1.test.ts:716
  • test:protocol.studio-capabilities: test:protocol.studio-capabilities · anchored test binding · binding present · test/studio-capabilities.test.ts:89
  • test:protocol.studio-lenses: test:protocol.studio-lenses · anchored test binding · binding present · test/studio-s1.test.ts:273
  • test:protocol.studio-tests-coverage-row: test:protocol.studio-tests-coverage-row · anchored test binding · binding present · test/studio-s1.test.ts:769
  • spec:consumers.spec-studio.capability-map-page refines spec:consumers.capability-map · declared — the page is the capability map's reading for a person
  • spec:consumers.spec-studio.capability-map-page refines spec:consumers.spec-studio.lenses · declared — the Capabilities page is a lens that reads refinement
  • spec:consumers.spec-studio.index-page refines spec:consumers.spec-studio.lenses.packs · declared — the index is the Packs lens and where a person lands
  • spec:consumers.spec-studio.lenses refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.lenses.architecture refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.architecture.planned-apart refines spec:consumers.spec-studio.lenses.architecture · declared
  • spec:consumers.spec-studio.lenses.architecture.planned-apart verifies spec:consumers.spec-studio.lenses.architecture · declared
  • spec:consumers.spec-studio.lenses.architecture.unit-register refines spec:consumers.spec-studio.lenses.architecture · declared
  • spec:consumers.spec-studio.lenses.evidence refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.packs refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.tests refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.tests.coverage-row refines spec:consumers.spec-studio.lenses.tests · declared
  • spec:consumers.spec-studio.lenses.tests.coverage-row verifies spec:consumers.spec-studio.lenses.tests · declared
  • impl:protocol.studio-architecture-lens satisfies spec:consumers.spec-studio.lenses.architecture · anchored
  • impl:protocol.studio-architecture-lens satisfies spec:consumers.spec-studio.lenses · anchored
  • impl:protocol.studio-capabilities-page satisfies spec:consumers.spec-studio.capability-map-page · anchored
  • impl:protocol.studio-evidence-lens satisfies spec:consumers.spec-studio.lenses.evidence · anchored
  • impl:protocol.studio-evidence-lens satisfies spec:consumers.spec-studio.lenses · anchored
  • impl:protocol.studio-filter satisfies spec:consumers.spec-studio.capability-map-page · anchored
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio.lenses · anchored
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio.capability-map-page · anchored
  • impl:protocol.studio-index-page satisfies spec:consumers.spec-studio.lenses.packs · anchored
  • impl:protocol.studio-index-page satisfies spec:consumers.spec-studio.capability-map-page · anchored
  • impl:protocol.studio-tests-lens satisfies spec:consumers.spec-studio.lenses.tests · anchored
  • impl:protocol.studio-tests-lens satisfies spec:consumers.spec-studio.lenses · anchored
  • oracle:protocol.studio-architecture models spec:consumers.spec-studio.lenses.architecture · anchored
  • oracle:protocol.studio-tests models spec:consumers.spec-studio.lenses.tests · anchored
  • test:protocol.studio-architecture-maturity-requirement verifies spec:consumers.spec-studio.lenses.architecture · anchored
  • test:protocol.studio-architecture-planned-apart verifies spec:consumers.spec-studio.lenses.architecture.planned-apart · anchored
  • test:protocol.studio-capabilities verifies spec:consumers.spec-studio.capability-map-page · anchored
  • test:protocol.studio-lenses verifies spec:consumers.spec-studio.lenses · anchored
  • test:protocol.studio-lenses verifies spec:consumers.spec-studio.lenses.packs · anchored
  • test:protocol.studio-lenses verifies spec:consumers.spec-studio.lenses.evidence · anchored
  • test:protocol.studio-tests-coverage-row verifies spec:consumers.spec-studio.lenses.tests.coverage-row · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.

Decisions

No decision record named.

Runtime
  • component:protocol.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.studio-architecture-lens · renders recipe component rows and planned designs as architecture and member diagrams · src/projections/studio/pages/architecture-page.ts:50

    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.studio-evidence-lens · names the four evidence sources and what would bring each into the Studio · src/projections/studio/pages/evidence-page.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.

  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6

    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.studio-tests-lens · renders shared rule and example-space coverage with filters and verifier bindings · src/projections/studio/pages/tests-page.ts:34

    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.spec-studio.lenses
The diagram as text
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.capability-map-page: The capability map page makes refinement readable by epic
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence
  • spec:consumers.spec-studio.lenses.architecture: The architecture lens draws components by context and layer, the planned beside the built
  • spec:consumers.spec-studio.lenses.evidence: The evidence lens names each source of runtime evidence and reads it as not tracked
  • spec:consumers.spec-studio.lenses.packs: The Packs lens groups every Spec by the Packs that hold it
  • spec:consumers.spec-studio.lenses.tests: The tests lens shows how far each Spec's verification reaches
  • spec:consumers.spec-studio.navigation: Every page of the page set is reached from the top navigation and the index
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:consumers.spec-studio.lenses dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.lenses refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.navigation dependsOn spec:consumers.spec-studio.lenses · declared — the lens entries keep the order the lenses take
  • spec:consumers.spec-studio.shell dependsOn spec:consumers.spec-studio.lenses · declared — the top navigation opens each lens
  • spec:consumers.spec-studio.capability-map-page refines spec:consumers.spec-studio.lenses · declared — the Capabilities page is a lens that reads refinement
  • spec:consumers.spec-studio.lenses.architecture refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.evidence refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.packs refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.tests refines spec:consumers.spec-studio.lenses · 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

  • spec:consumers.spec-studio.capability-map-page

    Implementing units

    • impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.evidence

    Implementing units

    • impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.packs

    Implementing units

    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.tests

    Implementing units

    • impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.lenses.tests.coverage-row

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.navigation

    Implementing units

    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-navigation, test:protocol.studio-roadmap-page

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.shell

    Implementing units

    • impl:protocol.studio-code-spans · src/projections/studio/pages/code-spans.ts:9
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-html · src/projections/studio/pages/html.ts:8
    • impl:protocol.studio-text · src/projections/studio/pages/text.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 2

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.index-page

    Implementing units

    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.planned-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-planned-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.unit-register

    Implementing units

    • impl:protocol.studio-unit-register · src/projections/studio/pages/architecture-register.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-maturity-requirement

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.tests.coverage-row

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-tests-coverage-row

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.pack-page

    Implementing units

    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap-priority, test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.page-elements

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-copy · src/studio-elements/copy.ts:22
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-search-form · src/studio-elements/search.ts:18
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-copy-source, test:protocol.studio-page-elements

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.registers

    Implementing units

    • impl:protocol.studio-registers · src/projections/studio/pages/registers-page.ts:47

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.registers.blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.search

    Implementing units

    • impl:protocol.studio-concept-match · src/reader/concept-match.ts:43
    • impl:protocol.studio-search-page · src/projections/studio/pages/search-page.ts:5
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-concept-match, test:protocol.studio-page-elements, test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.structural-mermaid

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:design-management-v1, pack:self-hosting-v1

Distance 3

  • spec:consumers.spec-studio.cited-line-text

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:roadmap, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.export

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.owner-queue.dependency-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-queue-dependency-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.registers.blocking-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-registers-blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

Distance 4

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
dependsOn · incomingEvery page of the page set is reached from the top navigation and the index
spec:consumers.spec-studio.navigation · resolves
declaredthe lens entries keep the order the lenses takeNone
dependsOn · incomingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredthe top navigation opens each lensNone
refines · incomingspec:consumers.spec-studio.capability-map-page
spec:consumers.spec-studio.capability-map-page · resolves
declaredthe Capabilities page is a lens that reads refinementNone
refines · incomingThe architecture lens draws components by context and layer, the planned beside the built
spec:consumers.spec-studio.lenses.architecture · resolves
declaredNoneNone
refines · incomingThe evidence lens names each source of runtime evidence and reads it as not tracked
spec:consumers.spec-studio.lenses.evidence · resolves
declaredNoneNone
refines · incomingThe Packs lens groups every Spec by the Packs that hold it
spec:consumers.spec-studio.lenses.packs · resolves
declaredNoneNone
refines · incomingThe tests lens shows how far each Spec's verification reaches
spec:consumers.spec-studio.lenses.tests · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.studio-architecture-lens · renders recipe component rows and planned designs as architecture and member diagrams · src/projections/studio/pages/architecture-page.ts:50 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-evidence-lens · names the four evidence sources and what would bring each into the Studio · src/projections/studio/pages/evidence-page.ts:3 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-tests-lens · renders shared rule and example-space coverage with filters and verifier bindings · src/projections/studio/pages/tests-page.ts:34 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-lenses · anchored · test/studio-s1.test.ts:273 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

15. The Packs lens groups every Spec by the Packs that hold it

spec:consumers.spec-studio.lenses.packs

The Packs lens groups every Spec by the Packs that hold it

spec:consumers.spec-studio.lenses.packsUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

Design: 1 design entry · no pinned declarations · no decisions

Findings: no errors, no warnings

specs/consumers/spec-studio.lenses.packs.sdp.md

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

Packs collect Specs for review, while the separate Capabilities page reads authored refinement. The index remains the landing page and keeps each Pack's members in authored order.

Intent
outcome
Let a person reach every Spec through the Packs that hold it, each Pack's members in the order its manifest gives.
Behavior
rule.landing line 20 · specs/consumers/spec-studio.lenses.packs.sdp.md:20
The Packs lens is the index page, the page a person lands on.

no example exercises it

rule.packGrouping line 21 · specs/consumers/spec-studio.lenses.packs.sdp.md:21
The Packs lens groups Specs by Pack, each Pack's members in authored order. The separate Capabilities page reads refinement; selecting an epic narrows the index's Specs section without changing any Pack.

no example exercises it

rule.everySpec line 22 · specs/consumers/spec-studio.lenses.packs.sdp.md:22
A Spec in no Pack is still listed, in the index's Specs section, so the lens hides no Spec.

no example exercises it

0 unkeyed rules.

UI
packsLens line 25 · specs/consumers/spec-studio.lenses.packs.sdp.md:25
the index page's Packs section, one closed disclosure per Pack in id order, its summary line the Pack's title, id and member count, its body the members in authored order with their rung badges.
Verification

Verifier bindings

  • test:protocol.studio-lenses · anchored · test anchor binding present · test/studio-s1.test.ts:273
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.lenses.packs
The diagram as text
  • spec:consumers.spec-studio.lenses.packs: The Packs lens groups every Spec by the Packs that hold it · declared Spec
  • spec:consumers.spec-studio.index-page: The index says where the corpus stands and narrows every Spec · declared Spec
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence · declared Spec
  • impl:protocol.studio-index-page: renders Pack disclosures and filterable Spec rows · anchored code · src/projections/studio/pages/index-page.ts:8
  • test:protocol.studio-lenses: test:protocol.studio-lenses · anchored test binding · binding present · test/studio-s1.test.ts:273
  • test:protocol.studio-pages: test:protocol.studio-pages · anchored test binding · binding present · test/studio-pages.test.ts:18
  • spec:consumers.spec-studio.index-page refines spec:consumers.spec-studio.lenses.packs · declared — the index is the Packs lens and where a person lands
  • spec:consumers.spec-studio.lenses.packs refines spec:consumers.spec-studio.lenses · declared
  • impl:protocol.studio-index-page satisfies spec:consumers.spec-studio.index-page · anchored
  • impl:protocol.studio-index-page satisfies spec:consumers.spec-studio.lenses.packs · anchored
  • test:protocol.studio-lenses verifies spec:consumers.spec-studio.lenses.packs · anchored
  • test:protocol.studio-pages verifies spec:consumers.spec-studio.index-page · 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

No decision record named.

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.studio-index-page · renders Pack disclosures and filterable Spec rows · src/projections/studio/pages/index-page.ts:8

    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.spec-studio.lenses.packs
Relations of spec:consumers.spec-studio.lenses.packsrefines · declaredrefines · declareddependsOn · declaredOutgoing refinesspec:consumers.spec-studio.lensesFive lenses read the graphas Packs, capabilities,architecture, tests andevidence…consumers.spec-studio.lensesOutgoing dependsOnspec:extraction.pack-member-orderA Pack node keeps itsmembers in authored order…extraction.pack-member-orderSubjectspec:consumers.spec-studio.lenses.packsThe Packs lens groups everySpec by the Packs that holdit…consumers.spec-studio.lenses.packsIncoming refinesspec:consumers.spec-studio.index-pageThe index says where thecorpus stands and narrowsevery Spec…consumers.spec-studio.index-page
The diagram as text
  • spec:consumers.spec-studio.index-page: The index says where the corpus stands and narrows every Spec
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence
  • spec:consumers.spec-studio.lenses.packs: The Packs lens groups every Spec by the Packs that hold it
  • spec:extraction.pack-member-order: A Pack node keeps its members in authored order
  • spec:consumers.spec-studio.lenses.packs dependsOn spec:extraction.pack-member-order · declared — the lens lists each Pack's members in the order its manifest gives
  • spec:consumers.spec-studio.lenses.packs refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.index-page refines spec:consumers.spec-studio.lenses.packs · declared — the index is the Packs lens and where a person lands
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

  • spec:consumers.spec-studio.capability-map-page

    Implementing units

    • impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.navigation

    Implementing units

    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-navigation, test:protocol.studio-roadmap-page

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:extraction.pack-member-order
spec:extraction.pack-member-order · resolves
declaredthe lens lists each Pack's members in the order its manifest givesNone
refines · outgoingFive lenses read the graph as Packs, capabilities, architecture, tests and evidence
spec:consumers.spec-studio.lenses · resolves
declaredNoneNone
refines · incomingThe index says where the corpus stands and narrows every Spec
spec:consumers.spec-studio.index-page · resolves
declaredthe index is the Packs lens and where a person landsNone

Bindings

Implementation binding: present

  • impl:protocol.studio-index-page · renders Pack disclosures and filterable Spec rows · src/projections/studio/pages/index-page.ts:8 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-lenses · anchored · test/studio-s1.test.ts:273 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

16. The index says where the corpus stands and narrows every Spec

spec:consumers.spec-studio.index-page

The index says where the corpus stands and narrows every Spec

spec:consumers.spec-studio.index-pageUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.index-page.sdp.md

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

A reader of a large design needs two ways in: by the task they came to do and by a word they remember. The index gives the first and links to search for the second, opens with a summary the build counts, and replaces one long table with a list a person narrows.

Intent
outcome
Give a person one landing page that says where the corpus stands, routes them by task, lists every Pack with its members, and narrows every Spec by the coordinates and bindings they ask about.
Behavior
rule.summary line 24 · specs/consumers/spec-studio.index-page.sdp.md:24
The page opens with a summary the build counts from reader values, each count in a sentence: the Specs and Packs; the Specs at each stated rung; the Specs stated above their floor; the open and blocking questions; the Specs with an implementation binding and with a verifier binding; and the findings by severity.

no example exercises it

rule.taskRoutes line 25 · specs/consumers/spec-studio.index-page.sdp.md:25
A short list then routes by task, in fixed words that quote nothing from the corpus: read a Pack's design, find a Spec, entry or file by a word, narrow the Specs, and read the findings; each route links to its place in the page set.

no example exercises it

rule.packsLens line 26 · specs/consumers/spec-studio.index-page.sdp.md:26
The Packs section lists every Pack in id order with its title and its members in authored order, each member with its stated rung beside its floor; it draws no capability tree.

no example exercises it

rule.specRows line 27 · specs/consumers/spec-studio.index-page.sdp.md:27
The Specs section lists every Spec in id order, one row each: its title and id, kind and altitude, stated rung beside the floor reached, implementation binding and verifier binding as present or none, open and blocking questions, and its Packs.

no example exercises it

rule.filters line 28 · specs/consumers/spec-studio.index-page.sdp.md:28
Filters narrow the Specs section by kind, altitude, stated rung, floor reached, implementation binding, verifier binding, Pack and epic; each filter takes one value or any, the epic filter also takes no epic, the filters combine, and the section says how many of its rows it shows. Without script every row shows.

no example exercises it

rule.findings line 29 · specs/consumers/spec-studio.index-page.sdp.md:29
The findings section lists the validation report's findings in its order, each with its severity in words, its validator id, its subject when it has one, linked to its page when it is a Spec or a Pack and as text otherwise, its message, and its recorded file and line as text.

no example exercises it

0 unkeyed rules.

UI
summary line 32 · specs/consumers/spec-studio.index-page.sdp.md:32
a short list of sentences under the page title, each with a count.
taskRoutes line 33 · specs/consumers/spec-studio.index-page.sdp.md:33
links under a Start here heading, these four first: Read a Pack's design, Find a Spec, entry or file by a word, Narrow the Specs, Read the findings.
packList line 34 · specs/consumers/spec-studio.index-page.sdp.md:34
one closed disclosure per Pack, its summary line the Pack's title, id and member count, its body the members in authored order as links with their rung badges.
specRow line 35 · specs/consumers/spec-studio.index-page.sdp.md:35
one line per Spec: the title linked to its page, the id as code, the rung badge, then as plain text the kind, altitude, floor in words, the two binding values, the question counts and the Packs; the line wraps on a narrow screen.
filterBar line 36 · specs/consumers/spec-studio.index-page.sdp.md:36
one labelled select per filter above the Specs, each listing any and the values the rows hold, and a line saying how many of all rows show.
sectionIds line 37 · specs/consumers/spec-studio.index-page.sdp.md:37
the Packs, Specs and findings sections carry the element ids packs, specs and findings, which the top navigation, the rail and the task routes link to.
findingsList line 38 · specs/consumers/spec-studio.index-page.sdp.md:38
one line per finding, the severity word first.
Verification

Verifier bindings

  • test:protocol.studio-pages · anchored · test anchor binding present · test/studio-pages.test.ts:18
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.index-page
The diagram as text
  • spec:consumers.spec-studio.index-page: The index says where the corpus stands and narrows every Spec · declared Spec
  • spec:consumers.spec-studio.lenses.packs: The Packs lens groups every Spec by the Packs that hold it · declared Spec
  • impl:protocol.studio-index-page: renders Pack disclosures and filterable Spec rows · anchored code · src/projections/studio/pages/index-page.ts:8
  • test:protocol.studio-pages: test:protocol.studio-pages · anchored test binding · binding present · test/studio-pages.test.ts:18
  • spec:consumers.spec-studio.index-page refines spec:consumers.spec-studio.lenses.packs · declared — the index is the Packs lens and where a person lands
  • impl:protocol.studio-index-page satisfies spec:consumers.spec-studio.index-page · anchored
  • test:protocol.studio-pages verifies spec:consumers.spec-studio.index-page · 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

No decision record named.

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.studio-index-page · renders Pack disclosures and filterable Spec rows · src/projections/studio/pages/index-page.ts:8

    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.spec-studio.index-page
Relations of spec:consumers.spec-studio.index-pagedependsOn · declareddependsOn · declareddependsOn · declareddependsOn · declaredrefines · declareddependsOn · declareddependsOn · declaredOutgoing refinesspec:consumers.spec-studio.lenses.packsThe Packs lens groups everySpec by the Packs that holdit…spec-studio.lenses.packsOutgoing dependsOnspec:consumers.binding-language-viewsViews speak bindinglanguage, never theinternal fact name…binding-language-viewsspec:consumers.derived-readiness-bannerDerived readiness rendersbeside the stated rung andwarns in one direction…derived-readiness-bannerspec:consumers.spec-studio.dataThe Studio renders from thereader's values and embedsonly what its script reads…spec-studio.dataspec:consumers.spec-studio.shellThe Studio's shell framesevery page with navigation,a rail and a canvas…spec-studio.shellSubjectspec:consumers.spec-studio.index-pageThe index says where thecorpus stands and narrowsevery Spec…spec-studio.index-pageIncoming dependsOnspec:consumers.spec-studio.capability-map-pageThe capability map pagemakes refinement readableby epic…spec-studio.capability-map-pagespec:consumers.spec-studio.navigationEvery page of the page setis reached from the topnavigation and the index…spec-studio.navigation
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.spec-studio.capability-map-page: The capability map page makes refinement readable by epic
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • spec:consumers.spec-studio.index-page: The index says where the corpus stands and narrows every Spec
  • spec:consumers.spec-studio.lenses.packs: The Packs lens groups every Spec by the Packs that hold it
  • spec:consumers.spec-studio.navigation: Every page of the page set is reached from the top navigation and the index
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:consumers.spec-studio.index-page dependsOn spec:consumers.binding-language-views · declared
  • spec:consumers.spec-studio.index-page dependsOn spec:consumers.derived-readiness-banner · declared
  • spec:consumers.spec-studio.index-page dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.index-page dependsOn spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.index-page refines spec:consumers.spec-studio.lenses.packs · declared — the index is the Packs lens and where a person lands
  • spec:consumers.spec-studio.capability-map-page dependsOn spec:consumers.spec-studio.index-page · declared — the Epic filter extends the index's Specs filters
  • spec:consumers.spec-studio.navigation dependsOn spec:consumers.spec-studio.index-page · declared — the routes extend the index's task list
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

  • spec:consumers.spec-studio.capability-map-page

    Implementing units

    • impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.navigation

    Implementing units

    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-navigation, test:protocol.studio-roadmap-page

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:consumers.binding-language-views
spec:consumers.binding-language-views · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.derived-readiness-banner
spec:consumers.derived-readiness-banner · resolves
declaredNoneNone
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
dependsOn · outgoingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredNoneNone
refines · outgoingThe Packs lens groups every Spec by the Packs that hold it
spec:consumers.spec-studio.lenses.packs · resolves
declaredthe index is the Packs lens and where a person landsNone
dependsOn · incomingspec:consumers.spec-studio.capability-map-page
spec:consumers.spec-studio.capability-map-page · resolves
declaredthe Epic filter extends the index's Specs filtersNone
dependsOn · incomingEvery page of the page set is reached from the top navigation and the index
spec:consumers.spec-studio.navigation · resolves
declaredthe routes extend the index's task listNone

Bindings

Implementation binding: present

  • impl:protocol.studio-index-page · renders Pack disclosures and filterable Spec rows · src/projections/studio/pages/index-page.ts:8 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-pages · anchored · test/studio-pages.test.ts:18 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

17. The architecture lens draws components by context and layer, the planned beside the built

spec:consumers.spec-studio.lenses.architecture

The architecture lens draws components by context and layer, the planned beside the built

spec:consumers.spec-studio.lenses.architectureUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

Design: 5 design entries · 1 pinned declaration · 1 decision

Findings: no errors, no warnings

specs/consumers/spec-studio.lenses.architecture.sdp.md

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

The original's architecture lens drew runtime layers, ports and external systems beside components. The graph holds what the architectural annotation decision admits: a component anchor's layer and bounded context, any unit's role, membership and uses, and no port or external-system node. So the lens groups components by their recorded context and layer and draws membership and uses only. A design ahead of its code states its components in component designs, which no anchor realizes yet; the lens draws them in the same grid, marked planned, so a reader sees what is designed and not built where it will sit.

Intent
outcome
Let a person see the components the code realizes and the components the design plans, grouped by bounded context and layer, with what each uses and what it holds.
Behavior
rule.contextAndLayer line 25 · specs/consumers/spec-studio.lenses.architecture.sdp.md:25
The lens draws every component the anchors realize, from recipe 17's component rows and the attributes the componentRows entry adds to them, grouped by its recorded context and layer as the architecture grid of spec:consumers.spec-studio.diagrams places it, and folds above the bound as that Spec states.

spec:consumers.spec-studio.lenses.architecture.planned-apart · enabled

rule.membershipAndUses line 26 · specs/consumers/spec-studio.lenses.architecture.sdp.md:26
The lens draws component membership, as the member count in each box, and uses, as edges between components, and nothing else: no port, external system, runtime layer or import the impact graph infers.

no example exercises it

rule.usesTable line 27 · specs/consumers/spec-studio.lenses.architecture.sdp.md:27
Beside the architecture drawing comes the component uses table, read from recipe 17's component rows and their counts of unit uses edges: one row per realized component as the user and one column per realized component as the used. A nonzero cell holds the count of anchored unit uses edges behind the pair and links to that use in the row component's detail; a zero cell between two components shows ·, with no anchored use recorded as hidden text and the legend · means no anchored use recorded, and the cell where a component meets itself stays empty. Planned uses, unresolved endpoints and uses within one component stay in their own readings and never enter the table. The table is not a drawing, and it reads in full without script and in print.

no example exercises it

rule.plannedApart line 28 · specs/consumers/spec-studio.lenses.architecture.sdp.md:28
Each component design no anchor realizes, a row of recipe 43's unrealized list, draws in the same grid by its planned context and layer as a planned box, with the uses it plans drawn dashed to the components it names, and is listed again in a Designed, not built section apart from the realized components; a planned use naming a component the lens draws no box for draws no edge and stays listed in its design's row.

spec:consumers.spec-studio.lenses.architecture.planned-apart · enabled

rule.differences line 29 · specs/consumers/spec-studio.lenses.architecture.sdp.md:29
A realized component whose design differs from it lists each differing field, as recipe 43's differing rows give it, with its planned and realized values in its detail, and a design value recipe 43 cannot read lists in the Designed, not built section as unreadable.

no example exercises it

rule.componentDetail line 30 · specs/consumers/spec-studio.lenses.architecture.sdp.md:30
Each realized component has a detail section on the lens page whose element id is its id, which its box and every link to it from another page open: its id, label, layer, context and role; its recorded file and line as text with a copy action; its members, each with its id, label, role and recorded file and line; the components it uses and is used by, each with the count of unit edges; the Specs it and its members satisfy and reference, linked, a component design its anchor satisfies among them; and its member diagram, every value read from its recipe 17 row.

no example exercises it

rule.codeRootedHere line 31 · specs/consumers/spec-studio.lenses.architecture.sdp.md:31
A component diagram rooted at code units, the view spec:consumers.structural-mermaid asked for, is this lens's member diagram, and the shipped Mermaid root draws none.

no example exercises it

rule.unresolvedStructure line 32 · specs/consumers/spec-studio.lenses.architecture.sdp.md:32
A memberOf target the graph holds no component for, and a uses edge an end of which resolves to no component, list in an Unresolved structure section as recipe 17 reports them, never dropped.

no example exercises it

rule.lensSummary line 33 · specs/consumers/spec-studio.lenses.architecture.sdp.md:33
The page opens with sentences the build counts from the two recipes' answers: the components realized and planned, the contexts and layers they state, the uses edges between components, and the designs that differ from their components.

no example exercises it

0 unkeyed rules.

Verifying examples

A component design no anchor realizes draws planned beside the built one · spec:consumers.spec-studio.lenses.architecture.planned-apart · ready floor ready

Executable Spec

Given component anchors that realize {realized: 1} components in the context {context: "orders"} and the layer {layer: "domain"}
Given component designs that plan {planned: 1} more components in that context and layer, which no anchor realizes
When the build renders the architecture lens
Then the context's column holds {boxes: 2} component boxes in the layer's band
Then the diagram marks {plannedBoxes: 1} boxes planned
Then the Designed, not built section lists {listed: 1} component designs

Open example

Example space

Given component anchors that realize {realized:number} components in the context {context:string} and the layer {layer:"edge"|"application"|"domain"|"adapter"|"infrastructure"}
Given component designs that plan {planned:number} more components in that context and layer, which no anchor realizes
When the build renders the architecture lens
Then the context's column holds {boxes:number} component boxes in the layer's band
Then the diagram marks {plannedBoxes:number} boxes planned
Then the Designed, not built section lists {listed:number} component designs
Design
componentRows line 42 · specs/consumers/spec-studio.lenses.architecture.sdp.md:42
{ label: string | null; file: string | null; line: number | null; role: string | null; layer: string | null; context: string | null; referencedSpecs: string[]; usesCounts: { component: string; edges: number }[]; usedByCounts: { component: string; edges: number }[] }, the fields recipe 17 adds to each component row: the component's own label, file, line, role, layer and context as its CodeNode records them, each null when the node records none or no node declares the component; the Specs the component and its members reference, sorted; and, sorted by component, the count of unit uses edges behind each pair usesOut and usedBy name. Each member row gains role: string | null, and every field the recipe returns today keeps its meaning.

no citation recorded

UI
architecturePage line 36 · specs/consumers/spec-studio.lenses.architecture.sdp.md:36
in order, the page title Architecture, the summary sentences, the architecture diagram or its fold with one section per context, the component uses table, the Designed, not built section, the component details in id order, and the Unresolved structure section when it has rows.
usesTable line 37 · specs/consumers/spec-studio.lenses.architecture.sdp.md:37
a table captioned Which components use which in a named, keyboard-focusable scroll region, one row header and one column header per realized component, both in one order: by layer from edge to infrastructure, unlayered components last, then by id; each header names the component's label with its id as code.
designedNotBuilt line 38 · specs/consumers/spec-studio.lenses.architecture.sdp.md:38
a table with one row per unrealized design in Spec id order: the component design's Spec, linked; the planned component's id as code; its planned context, layer and role, or not stated; the components it plans to use; and whether its component anchor exists without satisfying it; a design whose value recipe 43 cannot read adds a row naming the design, the key and the unreadable value.
componentDetail line 39 · specs/consumers/spec-studio.lenses.architecture.sdp.md:39
a heading with the component's id as code and its label, a line with its layer, context and role in words, its source binding apart from its members, then Members grouped by recorded role, Uses with supporting unit edges at the table's fragment targets, Used by, any design differences, Satisfies and References, an empty list reading None, then the member diagram.
Verification

Verifier bindings

  • spec:consumers.spec-studio.lenses.architecture.planned-apart · A component design no anchor realizes draws planned beside the built one · declared · example enabled · specs/consumers/spec-studio.lenses.architecture.planned-apart.sdp.md
  • test:protocol.studio-architecture-maturity-requirement · anchored · test anchor binding present · test/studio-panels.test.ts:35

Example space

  • realized · number · declared by component anchors that realize {realized} components in the context {context} and the layer {layer}
  • context · string · declared by component anchors that realize {realized} components in the context {context} and the layer {layer}
  • layer · "edge" | "application" | "domain" | "adapter" | "infrastructure" · declared by component anchors that realize {realized} components in the context {context} and the layer {layer}
  • planned · number · declared by component designs that plan {planned} more components in that context and layer, which no anchor realizes

Bound points

Examplerealizedcontextlayerplanned
spec:consumers.spec-studio.lenses.architecture.planned-apart1"orders""domain"1

Oracle binding: present · oracle:protocol.studio-architecture · test/studio-s1.test.ts:707

Coverage

realized: 1 · spec:consumers.spec-studio.lenses.architecture.planned-apart · not enumerable

context: "orders" · spec:consumers.spec-studio.lenses.architecture.planned-apart · not enumerable

layer
Declared valueExamples
"edge"no example
"application"no example
"domain"spec:consumers.spec-studio.lenses.architecture.planned-apart
"adapter"no example
"infrastructure"no example

planned: 1 · spec:consumers.spec-studio.lenses.architecture.planned-apart · not enumerable

Unbound

  • realized: None
  • context: None
  • layer: None
  • planned: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.lenses.architecture
  • E4: refines · declared
Requirement drawing for spec:consumers.spec-studio.lenses.architecturesatisfies · anchoredsatisfies · anchoredmodels · anchoredE4refines, verifies · declaredrefines · declaredverifies · anchoredverifies · anchoredverifies · anchoredIntended Specsspec:consumers.spec-studio.lenses.architectureThe architecture lens drawscomponents by context andlayer, the planned besidethe built…consumers.spec-studio.lenses.architecturedeclared Specspec:consumers.spec-studio.lenses.architecture.unit-registerThe architecture page listseach component'ssignificant units by role…consumers.spec-studio.lenses.architecture.unit-registerdeclared SpecDeclared verifying examplesspec:consumers.spec-studio.lenses.architecture.planned-apartA component design noanchor realizes drawsplanned beside the built one…consumers.spec-studio.lenses.architecture.planned-apartdeclared SpecSatisfying or referencingunits2 satisfying units · anchored, folded2 satisfying units ·anchoredTest or oracle bindingsoracle:protocol.studio-architectureoracle:protocol.studio-architecture…protocol.studio-architectureanchored oracle bindingtest:protocol.studio-architecture-maturity-requirementtest:protocol.studio-architecture-maturity-requirement…protocol.studio-architecture-maturity-requirementanchored test binding ·binding presenttest:protocol.studio-architecture-planned-aparttest:protocol.studio-architecture-planned-apart…protocol.studio-architecture-planned-apartanchored test binding ·binding presentOutside the selected setspec:consumers.spec-studio.lensesFive lenses read the graphas Packs, capabilities,architecture, tests andevidence…consumers.spec-studio.lensesdeclared Spec
The diagram as text
  • spec:consumers.spec-studio.lenses.architecture: The architecture lens draws components by context and layer, the planned beside the built · declared Spec
  • spec:consumers.spec-studio.lenses.architecture.planned-apart: A component design no anchor realizes draws planned beside the built one · declared Spec
  • spec:consumers.spec-studio.lenses.architecture.unit-register: The architecture page lists each component's significant units by role · declared Spec
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence · declared Spec
  • impl:protocol.studio-architecture-lens: renders recipe component rows and planned designs as architecture and member diagrams · anchored code · src/projections/studio/pages/architecture-page.ts:50
  • impl:protocol.studio-unit-register: renders component source bindings and role-grouped recorded units · anchored code · src/projections/studio/pages/architecture-register.ts:7
  • oracle:protocol.studio-architecture: oracle:protocol.studio-architecture · anchored oracle binding · test/studio-s1.test.ts:707
  • test:protocol.studio-architecture-maturity-requirement: test:protocol.studio-architecture-maturity-requirement · anchored test binding · binding present · test/studio-panels.test.ts:35
  • test:protocol.studio-architecture-planned-apart: test:protocol.studio-architecture-planned-apart · anchored test binding · binding present · test/studio-s1.test.ts:716
  • spec:consumers.spec-studio.lenses.architecture refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.architecture.planned-apart refines spec:consumers.spec-studio.lenses.architecture · declared
  • spec:consumers.spec-studio.lenses.architecture.planned-apart verifies spec:consumers.spec-studio.lenses.architecture · declared
  • spec:consumers.spec-studio.lenses.architecture.unit-register refines spec:consumers.spec-studio.lenses.architecture · declared
  • impl:protocol.studio-architecture-lens satisfies spec:consumers.spec-studio.lenses.architecture · anchored
  • impl:protocol.studio-unit-register satisfies spec:consumers.spec-studio.lenses.architecture.unit-register · anchored
  • oracle:protocol.studio-architecture models spec:consumers.spec-studio.lenses.architecture · anchored
  • test:protocol.studio-architecture-maturity-requirement verifies spec:consumers.spec-studio.lenses.architecture · anchored
  • test:protocol.studio-architecture-maturity-requirement verifies spec:consumers.spec-studio.lenses.architecture.unit-register · anchored
  • test:protocol.studio-architecture-planned-apart verifies spec:consumers.spec-studio.lenses.architecture.planned-apart · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.

Decisions

  • spec:decisions.architectural-annotation

    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.

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.studio-architecture-lens · renders recipe component rows and planned designs as architecture and member diagrams · src/projections/studio/pages/architecture-page.ts:50

    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.spec-studio.lenses.architecture
Relations of spec:consumers.spec-studio.lenses.architecturedependsOn · declaredrefines · declareddependsOn · declareddecidedBy · declaredrefines · declaredverifies · declareddependsOn · declaredOutgoing refinesspec:consumers.spec-studio.lensesFive lenses read the graphas Packs, capabilities,architecture, tests andevidence…consumers.spec-studio.lensesOutgoing dependsOnspec:consumers.spec-studio.lenses.architecture.fold.Outgoing.dependsOn2 Outgoing dependsOn, folded…consumers.spec-studio.lenses.architecture.fold.Outgoing.dependsOnOutgoing decidedByspec:decisions.architectural-annotationArchitectural significanceis annotated where it isrealized…decisions.architectural-annotationSubjectspec:consumers.spec-studio.lenses.architectureThe architecture lens drawscomponents by context andlayer, the planned besidethe built…consumers.spec-studio.lenses.architectureIncoming refinesspec:consumers.spec-studio.lenses.architecture.fold.Incoming.refines2 Incoming refines, folded…consumers.spec-studio.lenses.architecture.fold.Incoming.refinesIncoming dependsOnspec:consumers.spec-studio.diagram-kinds.scoped-architectureA Spec set draws thearchitecture it touches…consumers.spec-studio.diagram-kinds.scoped-architecturespec:consumers.structural-mermaidMermaid diagrams can berooted at code units…consumers.structural-mermaid
The diagram as text
  • spec:consumers.spec-studio.diagram-kinds.scoped-architecture: A Spec set draws the architecture it touches
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence
  • spec:consumers.spec-studio.lenses.architecture: The architecture lens draws components by context and layer, the planned beside the built
  • spec:consumers.spec-studio.lenses.architecture.planned-apart: A component design no anchor realizes draws planned beside the built one
  • spec:consumers.spec-studio.lenses.architecture.unit-register: The architecture page lists each component's significant units by role
  • spec:consumers.structural-mermaid: Mermaid diagrams can be rooted at code units
  • spec:decisions.architectural-annotation: Architectural significance is annotated where it is realized
  • spec:model.planned-architecture: Components are designed ahead of their code
  • spec:consumers.spec-studio.lenses.architecture decidedBy spec:decisions.architectural-annotation · declared — the lens draws only what component anchors state, membership, uses, layer, context and role
  • spec:consumers.spec-studio.lenses.architecture dependsOn spec:consumers.spec-studio.diagrams · declared — the lens's drawings are the architecture grid and the member diagrams
  • spec:consumers.spec-studio.lenses.architecture dependsOn spec:model.planned-architecture · declared — planned components come from the component designs recipe 43 reads
  • spec:consumers.spec-studio.lenses.architecture refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.diagram-kinds.scoped-architecture dependsOn spec:consumers.spec-studio.lenses.architecture · declared
  • spec:consumers.structural-mermaid dependsOn spec:consumers.spec-studio.lenses.architecture · declared — the lens draws the component diagram rooted at code units this Spec asked for
  • spec:consumers.spec-studio.lenses.architecture.planned-apart refines spec:consumers.spec-studio.lenses.architecture · declared
  • spec:consumers.spec-studio.lenses.architecture.unit-register refines spec:consumers.spec-studio.lenses.architecture · declared
  • spec:consumers.spec-studio.lenses.architecture.planned-apart verifies spec:consumers.spec-studio.lenses.architecture · 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

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.lenses.architecture.planned-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-planned-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:design-management-v1, pack:self-hosting-v1

Distance 2

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingspec:decisions.architectural-annotation
spec:decisions.architectural-annotation · resolves
declaredthe lens draws only what component anchors state, membership, uses, layer, context and roleNone
dependsOn · outgoingA diagram is laid out from graph values into SVG with a text equivalent
spec:consumers.spec-studio.diagrams · resolves
declaredthe lens's drawings are the architecture grid and the member diagramsNone
dependsOn · outgoingspec:model.planned-architecture
spec:model.planned-architecture · resolves
declaredplanned components come from the component designs recipe 43 readsNone
refines · outgoingFive lenses read the graph as Packs, capabilities, architecture, tests and evidence
spec:consumers.spec-studio.lenses · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.spec-studio.diagram-kinds.scoped-architecture
spec:consumers.spec-studio.diagram-kinds.scoped-architecture · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.structural-mermaid
spec:consumers.structural-mermaid · resolves
declaredthe lens draws the component diagram rooted at code units this Spec asked forNone
refines · incomingA component design no anchor realizes draws planned beside the built one
spec:consumers.spec-studio.lenses.architecture.planned-apart · resolves
declaredNoneNone
refines · incomingThe architecture page lists each component's significant units by role
spec:consumers.spec-studio.lenses.architecture.unit-register · resolves
declaredNoneNone
verifies · incomingA component design no anchor realizes draws planned beside the built one
spec:consumers.spec-studio.lenses.architecture.planned-apart · resolves
declaredNonecontextAndLayer, plannedApart

Bindings

Implementation binding: present

  • impl:protocol.studio-architecture-lens · renders recipe component rows and planned designs as architecture and member diagrams · src/projections/studio/pages/architecture-page.ts:50 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • spec:consumers.spec-studio.lenses.architecture.planned-apart · A component design no anchor realizes draws planned beside the built one · declared · specs/consumers/spec-studio.lenses.architecture.planned-apart.sdp.md · example enabled
  • test:protocol.studio-architecture-maturity-requirement · anchored · test/studio-panels.test.ts:35 · test anchor

Expected-outcome oracle: present

  • oracle:protocol.studio-architecture · test/studio-s1.test.ts:707

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

18. The architecture page lists each component's significant units by role

spec:consumers.spec-studio.lenses.architecture.unit-register

The architecture page lists each component's significant units by role

spec:consumers.spec-studio.lenses.architecture.unit-registerUse Case / Behavior · storyready floor ready

Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.lenses.architecture.unit-register.sdp.md

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

A contributor about to change the engine needs the curated register of its significant units: the ports, contracts, pipeline stages and catalogs each component owns, and the designs each unit realizes or answers to. The graph already records them on the anchors. This panel reads them there, grouped by component and role, and shows what no anchor states rather than guessing it.

Intent
outcome
Let a contributor find recorded units and their design bindings through their component and role, with omitted structure visible.
Behavior
rule.recordedOnly line 19 · specs/consumers/spec-studio.lenses.architecture.unit-register.sdp.md:19
The architecture page groups recorded members by role within each recorded component, and shows a component's own source binding apart from its members. A row shows the recorded id, label, file and line and its satisfies and references targets separately. The page reads graph bindings only, never an annotation review or oracle source file.

no example exercises it

rule.omissions line 20 · specs/consumers/spec-studio.lenses.architecture.unit-register.sdp.md:20
Keep a not-stated role group and a no-component section. A binding confers no review approval or execution verdict, and the page shows no inferred accepted badge.

no example exercises it

rule.roleTokens line 21 · specs/consumers/spec-studio.lenses.architecture.unit-register.sdp.md:21
Show each recorded role token without interpreting it through a Protocol-corpus Spec id. An adopter's unfamiliar roles remain visible and produce no finding.

no example exercises it

rule.stableOrder line 22 · specs/consumers/spec-studio.lenses.architecture.unit-register.sdp.md:22
Sort components by id, role groups by token and members by id in code-unit order, with not-stated roles last and the no-component section after the components.

no example exercises it

rule.staticAccess line 23 · specs/consumers/spec-studio.lenses.architecture.unit-register.sdp.md:23
Every row is available without script through native disclosures. The component index links to the existing component section ids, and narrow screens retain readable source paths and separate realization and reference lists.

no example exercises it

0 unkeyed rules.

Verification · reviewed
criteria
  • Render the self-hosted corpus and an adopter with unfamiliar roles, omitted roles and omitted membership. Check ordering, component source rows, target separation, keyboard disclosures and narrow-screen overflow, with no inferred approval badge.
mode
reviewed
Verification

Verifier bindings

  • test:protocol.studio-architecture-maturity-requirement · anchored · test anchor binding present · test/studio-panels.test.ts:35
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.lenses.architecture.unit-register
The diagram as text
  • spec:consumers.spec-studio.lenses.architecture.unit-register: The architecture page lists each component's significant units by role · declared Spec
  • spec:consumers.spec-studio.lenses.architecture: The architecture lens draws components by context and layer, the planned beside the built · declared Spec
  • impl:protocol.studio-unit-register: renders component source bindings and role-grouped recorded units · anchored code · src/projections/studio/pages/architecture-register.ts:7
  • test:protocol.studio-architecture-maturity-requirement: test:protocol.studio-architecture-maturity-requirement · anchored test binding · binding present · test/studio-panels.test.ts:35
  • spec:consumers.spec-studio.lenses.architecture.unit-register refines spec:consumers.spec-studio.lenses.architecture · declared
  • impl:protocol.studio-unit-register satisfies spec:consumers.spec-studio.lenses.architecture.unit-register · anchored
  • test:protocol.studio-architecture-maturity-requirement verifies spec:consumers.spec-studio.lenses.architecture.unit-register · 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

No decision record named.

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.studio-unit-register · renders component source bindings and role-grouped recorded units · src/projections/studio/pages/architecture-register.ts:7

    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.spec-studio.lenses.architecture.unit-register

Arrows: refines (declared).

The diagram as text
  • spec:consumers.spec-studio.lenses.architecture: The architecture lens draws components by context and layer, the planned beside the built
  • spec:consumers.spec-studio.lenses.architecture.unit-register: The architecture page lists each component's significant units by role
  • spec:consumers.spec-studio.lenses.architecture.unit-register refines spec:consumers.spec-studio.lenses.architecture · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingThe architecture lens draws components by context and layer, the planned beside the built
spec:consumers.spec-studio.lenses.architecture · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.studio-unit-register · renders component source bindings and role-grouped recorded units · src/projections/studio/pages/architecture-register.ts:7 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-architecture-maturity-requirement · anchored · test/studio-panels.test.ts:35 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

19. A component design no anchor realizes draws planned beside the built one

spec:consumers.spec-studio.lenses.architecture.planned-apart

A component design no anchor realizes draws planned beside the built one

spec:consumers.spec-studio.lenses.architecture.planned-apartExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.lenses.architecture.planned-apart.sdp.md

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

Intent
outcome
Execute the planned component on the architecture lens: drawn in the grid where its design places it, marked planned, and listed apart.
assumptions
  • The world writes a root with one component anchor, component:probe.orders, that states the context orders and the layer domain, and one component design, a Spec whose Design entries name component:probe.payments in the same context and layer, which no anchor realizes; it builds the page set and reads the architecture page: the boxes in the orders lane and the domain band, the boxes carrying data-planned="true", and the rows of the Designed, not built table.
Behavior

Examples

Given component anchors that realize {realized: 1} components in the context {context: "orders"} and the layer {layer: "domain"}
Given component designs that plan {planned: 1} more components in that context and layer, which no anchor realizes
When the build renders the architecture lens
Then the context's column holds {boxes: 2} component boxes in the layer's band
Then the diagram marks {plannedBoxes: 1} boxes planned
Then the Designed, not built section lists {listed: 1} component designs
Verification

Verifier bindings

  • test:protocol.studio-architecture-planned-apart · anchored · test anchor binding present · test/studio-s1.test.ts:716
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.lenses.architecture.planned-apart
The diagram as text
  • spec:consumers.spec-studio.lenses.architecture.planned-apart: A component design no anchor realizes draws planned beside the built one · declared Spec
  • spec:consumers.spec-studio.lenses.architecture: The architecture lens draws components by context and layer, the planned beside the built · declared Spec
  • test:protocol.studio-architecture-planned-apart: test:protocol.studio-architecture-planned-apart · anchored test binding · binding present · test/studio-s1.test.ts:716
  • spec:consumers.spec-studio.lenses.architecture.planned-apart refines spec:consumers.spec-studio.lenses.architecture · declared
  • spec:consumers.spec-studio.lenses.architecture.planned-apart verifies spec:consumers.spec-studio.lenses.architecture · declared
  • test:protocol.studio-architecture-planned-apart verifies spec:consumers.spec-studio.lenses.architecture.planned-apart · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.lenses.architecture.planned-apart
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.lenses.architecture: The architecture lens draws components by context and layer, the planned beside the built
  • spec:consumers.spec-studio.lenses.architecture.planned-apart: A component design no anchor realizes draws planned beside the built one
  • spec:consumers.spec-studio.lenses.architecture.planned-apart refines spec:consumers.spec-studio.lenses.architecture · declared
  • spec:consumers.spec-studio.lenses.architecture.planned-apart verifies spec:consumers.spec-studio.lenses.architecture · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingThe architecture lens draws components by context and layer, the planned beside the built
spec:consumers.spec-studio.lenses.architecture · resolves
declaredNoneNone
verifies · outgoingThe architecture lens draws components by context and layer, the planned beside the built
spec:consumers.spec-studio.lenses.architecture · resolves
declaredNonecontextAndLayer, plannedApart

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-architecture-planned-apart · anchored · test/studio-s1.test.ts:716 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

20. The tests lens shows how far each Spec's verification reaches

spec:consumers.spec-studio.lenses.tests

The tests lens shows how far each Spec's verification reaches

spec:consumers.spec-studio.lenses.testsUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.lenses.tests.sdp.md

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

A verifier binding states that a verifier exists, and pass and fail stay in CI, so the lens shows bindings and coverage. It shows a run result only when the build was given run records, and then as evidence from a test file, never as a verdict on a Spec.

Intent
outcome
Let a person see, for every Spec, whether a verifier is bound, which keyed rules an example exercises, and which example-space values no example binds.
Behavior
rule.coverageRows line 27 · specs/consumers/spec-studio.lenses.tests.sdp.md:27
The lens lists one row per Spec that is not an example, in id order: its verifier binding as present or none, with its verifiers and how many are enabled; its keyed rules with how many an enabled example exercises, from recipe 34; its unkeyed rules, counted apart because the graph cannot tell which examples exercise a rule with no key; and, when it owns an example space, its uncovered values and the examples that leave a slot unbound, from recipe 44. Each row links to the verification panel of the Spec's page. A space with no enumerable slot is not measurable, whether or not it has examples; otherwise it is uncovered when any enumerable value has no example and covered when all enumerable values have examples. Non-enumerable slots do not affect a mixed space's classification.

spec:consumers.spec-studio.lenses.tests.coverage-row · enabled

Cited at

  • Test line · test/studio-s1.test.ts:433 · test:protocol.studio-tests-coverage-row
rule.bindingsOnly line 28 · specs/consumers/spec-studio.lenses.tests.sdp.md:28
The lens shows verifier bindings and states no run result of its own; with the run records input, a row adds how many of the results recipe 45 joins from its verifiers' test files passed, failed, were skipped, pending or other, labelled as external run evidence from those files and never as a verdict on the Spec or on one verifier.

no example exercises it

rule.filters line 29 · specs/consumers/spec-studio.lenses.tests.sdp.md:29
Filters narrow the rows by verifier binding, by whether a keyed rule goes unexercised, by example-space classification (covered, uncovered, not measurable or no space), and by Pack, and the section says how many rows it shows; without script every row shows.

no example exercises it

Cited at

  • Test line · test/studio-s1.test.ts:434 · test:protocol.studio-tests-coverage-row
rule.testsSummary line 30 · specs/consumers/spec-studio.lenses.tests.sdp.md:30
The page opens with sentences the build counts from the recipes' answers: the Specs with and without a verifier binding, the keyed rules exercised and unexercised, the unkeyed rules, the example spaces with an uncovered value, and, with run records, the inputs it names.

no example exercises it

0 unkeyed rules.

Verifying examples

A Spec's row on the tests lens counts its exercised keyed rules · spec:consumers.spec-studio.lenses.tests.coverage-row · ready floor ready

Executable Spec

Given a Spec with {keyed: 2} keyed rules and {unkeyed: 1} unkeyed rules
Given an example bound to a test anchor that exercises {exercised: 1} of those keyed rules
When the build renders the tests lens
Then the Spec's row reads {coverage: "1 of 2 keyed rules exercised"}
Then the Spec's row reads its verifier binding as {binding: "present"}

Open example

Example space

Given a Spec with {keyed:number} keyed rules and {unkeyed:number} unkeyed rules
Given an example bound to a test anchor that exercises {exercised:number} of those keyed rules
When the build renders the tests lens
Then the Spec's row reads {coverage:string}
Then the Spec's row reads its verifier binding as {binding:"present"|"none"}
UI
testsPage line 33 · specs/consumers/spec-studio.lenses.tests.sdp.md:33
in order, the page title Tests, the summary sentences, the filter bar, and the rows, each a line that wraps on a narrow screen.
coverageRow line 34 · specs/consumers/spec-studio.lenses.tests.sdp.md:34
the Spec's title linked to its page's verification panel, its id as code, then as plain text: verifier binding present or none with <n> verifiers, <m> enabled, <e> of <k> keyed rules exercised, <u> unkeyed rules, and <v> uncovered values when its example space has an enumerable slot, or not measurable when it has a space with no enumerable slot; with run records, external run evidence: and the count of each result.
filterBar line 35 · specs/consumers/spec-studio.lenses.tests.sdp.md:35
one labelled select per filter, each listing any and the values the rows hold, and a line saying how many of all rows show.
Verification

Verifier bindings

Example space

  • keyed · number · declared by a Spec with {keyed} keyed rules and {unkeyed} unkeyed rules
  • unkeyed · number · declared by a Spec with {keyed} keyed rules and {unkeyed} unkeyed rules
  • exercised · number · declared by an example bound to a test anchor that exercises {exercised} of those keyed rules

Bound points

Oracle binding: present · oracle:protocol.studio-tests · test/studio-s1.test.ts:760

Coverage

keyed: 2 · spec:consumers.spec-studio.lenses.tests.coverage-row · not enumerable

unkeyed: 1 · spec:consumers.spec-studio.lenses.tests.coverage-row · not enumerable

exercised: 1 · spec:consumers.spec-studio.lenses.tests.coverage-row · not enumerable

Unbound

  • keyed: None
  • unkeyed: None
  • exercised: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.lenses.tests
The diagram as text
  • spec:consumers.spec-studio.lenses.tests: The tests lens shows how far each Spec's verification reaches · declared Spec
  • spec:consumers.spec-studio.lenses.tests.coverage-row: A Spec's row on the tests lens counts its exercised keyed rules · declared Spec
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence · declared Spec
  • impl:protocol.studio-tests-lens: renders shared rule and example-space coverage with filters and verifier bindings · anchored code · src/projections/studio/pages/tests-page.ts:34
  • oracle:protocol.studio-tests: oracle:protocol.studio-tests · anchored oracle binding · test/studio-s1.test.ts:760
  • test:protocol.studio-tests-coverage-row: test:protocol.studio-tests-coverage-row · anchored test binding · binding present · test/studio-s1.test.ts:769
  • spec:consumers.spec-studio.lenses.tests refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.tests.coverage-row refines spec:consumers.spec-studio.lenses.tests · declared
  • spec:consumers.spec-studio.lenses.tests.coverage-row verifies spec:consumers.spec-studio.lenses.tests · declared
  • impl:protocol.studio-tests-lens satisfies spec:consumers.spec-studio.lenses.tests · anchored
  • oracle:protocol.studio-tests models spec:consumers.spec-studio.lenses.tests · anchored
  • test:protocol.studio-tests-coverage-row verifies spec:consumers.spec-studio.lenses.tests.coverage-row · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

  • spec:decisions.binding-not-liveness

    Delivery facts record bindings and enabled verifier existence; coverage gaps and human readiness practice remain explicit without becoming graph facts.

  • spec:decisions.verification-posture-not-realization

    verification.mode states the intended verification posture; enabled-verifier realization remains a derived fact and the two are never collapsed.

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.studio-tests-lens · renders shared rule and example-space coverage with filters and verifier bindings · src/projections/studio/pages/tests-page.ts:34

    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.spec-studio.lenses.tests
Relations of spec:consumers.spec-studio.lenses.testsdependsOn · declaredrefines · declareddecidedBy · declareddecidedBy · declareddependsOn · declareddependsOn · declaredrefines · declaredverifies · declaredOutgoing refinesspec:consumers.spec-studio.lensesFive lenses read the graphas Packs, capabilities,architecture, tests andevidence…consumers.spec-studio.lensesOutgoing dependsOnspec:consumers.agent-surface.example-space-coverageExample spaces report whichvalues their examples cover…consumers.agent-surface.example-space-coveragespec:model.rule-keysA rule or flow entry maycarry a key that addressesit…model.rule-keysspec:observation.run-evidenceCI run records are joinedto verifiers in a view…observation.run-evidenceOutgoing decidedByspec:decisions.binding-not-livenessBindings state existence,not liveness…decisions.binding-not-livenessspec:decisions.verification-posture-not-realizationVerification mode statesposture, not realization…decisions.verification-posture-not-realizationSubjectspec:consumers.spec-studio.lenses.testsThe tests lens shows howfar each Spec'sverification reaches…consumers.spec-studio.lenses.testsIncoming refinesspec:consumers.spec-studio.lenses.tests.coverage-rowA Spec's row on the testslens counts its exercisedkeyed rules…consumers.spec-studio.lenses.tests.coverage-row
The diagram as text
  • spec:consumers.agent-surface.example-space-coverage: Example spaces report which values their examples cover
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence
  • spec:consumers.spec-studio.lenses.tests: The tests lens shows how far each Spec's verification reaches
  • spec:consumers.spec-studio.lenses.tests.coverage-row: A Spec's row on the tests lens counts its exercised keyed rules
  • spec:decisions.binding-not-liveness: Bindings state existence, not liveness
  • spec:decisions.verification-posture-not-realization: Verification mode states posture, not realization
  • spec:model.rule-keys: A rule or flow entry may carry a key that addresses it
  • spec:observation.run-evidence: CI run records are joined to verifiers in a view
  • spec:consumers.spec-studio.lenses.tests decidedBy spec:decisions.binding-not-liveness · declared
  • spec:consumers.spec-studio.lenses.tests decidedBy spec:decisions.verification-posture-not-realization · declared
  • spec:consumers.spec-studio.lenses.tests dependsOn spec:consumers.agent-surface.example-space-coverage · declared — a row reads its example space's uncovered values from recipe 44
  • spec:consumers.spec-studio.lenses.tests dependsOn spec:model.rule-keys · declared — rule coverage counts the keyed rules examples exercise
  • spec:consumers.spec-studio.lenses.tests dependsOn spec:observation.run-evidence · declared — with run records, a row adds the results recipe 45 joins from its verifiers' files
  • spec:consumers.spec-studio.lenses.tests refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.tests.coverage-row refines spec:consumers.spec-studio.lenses.tests · declared
  • spec:consumers.spec-studio.lenses.tests.coverage-row verifies spec:consumers.spec-studio.lenses.tests · 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

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingspec:decisions.binding-not-liveness
spec:decisions.binding-not-liveness · resolves
declaredNoneNone
decidedBy · outgoingspec:decisions.verification-posture-not-realization
spec:decisions.verification-posture-not-realization · resolves
declaredNoneNone
dependsOn · outgoingExample spaces report which values their examples cover
spec:consumers.agent-surface.example-space-coverage · resolves
declareda row reads its example space's uncovered values from recipe 44None
dependsOn · outgoingspec:model.rule-keys
spec:model.rule-keys · resolves
declaredrule coverage counts the keyed rules examples exerciseNone
dependsOn · outgoingCI run records are joined to verifiers in a view
spec:observation.run-evidence · resolves
declaredwith run records, a row adds the results recipe 45 joins from its verifiers' filesNone
refines · outgoingFive lenses read the graph as Packs, capabilities, architecture, tests and evidence
spec:consumers.spec-studio.lenses · resolves
declaredNoneNone
refines · incomingA Spec's row on the tests lens counts its exercised keyed rules
spec:consumers.spec-studio.lenses.tests.coverage-row · resolves
declaredNoneNone
verifies · incomingA Spec's row on the tests lens counts its exercised keyed rules
spec:consumers.spec-studio.lenses.tests.coverage-row · resolves
declaredNonecoverageRows

Bindings

Implementation binding: present

  • impl:protocol.studio-tests-lens · renders shared rule and example-space coverage with filters and verifier bindings · src/projections/studio/pages/tests-page.ts:34 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.studio-tests · test/studio-s1.test.ts:760

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

21. A Spec's row on the tests lens counts its exercised keyed rules

spec:consumers.spec-studio.lenses.tests.coverage-row

A Spec's row on the tests lens counts its exercised keyed rules

spec:consumers.spec-studio.lenses.tests.coverage-rowExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.lenses.tests.coverage-row.sdp.md

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

Intent
outcome
Execute a tests-lens row: the keyed rules an enabled example exercises against those it does not, and the unkeyed rules apart.
assumptions
  • The world writes a root with one behavior Spec whose Behavior section holds two keyed rules and one unkeyed rule, and one example child that verifies it, exercising the first key, bound by a specTest anchor in a test file; it builds the page set and reads the Spec's row on the tests page.
Behavior

Examples

Given a Spec with {keyed: 2} keyed rules and {unkeyed: 1} unkeyed rules
Given an example bound to a test anchor that exercises {exercised: 1} of those keyed rules
When the build renders the tests lens
Then the Spec's row reads {coverage: "1 of 2 keyed rules exercised"}
Then the Spec's row reads its verifier binding as {binding: "present"}
Verification

Verifier bindings

  • test:protocol.studio-tests-coverage-row · anchored · test anchor binding present · test/studio-s1.test.ts:769
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.lenses.tests.coverage-row
The diagram as text
  • spec:consumers.spec-studio.lenses.tests.coverage-row: A Spec's row on the tests lens counts its exercised keyed rules · declared Spec
  • spec:consumers.spec-studio.lenses.tests: The tests lens shows how far each Spec's verification reaches · declared Spec
  • test:protocol.studio-tests-coverage-row: test:protocol.studio-tests-coverage-row · anchored test binding · binding present · test/studio-s1.test.ts:769
  • spec:consumers.spec-studio.lenses.tests.coverage-row refines spec:consumers.spec-studio.lenses.tests · declared
  • spec:consumers.spec-studio.lenses.tests.coverage-row verifies spec:consumers.spec-studio.lenses.tests · declared
  • test:protocol.studio-tests-coverage-row verifies spec:consumers.spec-studio.lenses.tests.coverage-row · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.lenses.tests.coverage-row
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.lenses.tests: The tests lens shows how far each Spec's verification reaches
  • spec:consumers.spec-studio.lenses.tests.coverage-row: A Spec's row on the tests lens counts its exercised keyed rules
  • spec:consumers.spec-studio.lenses.tests.coverage-row refines spec:consumers.spec-studio.lenses.tests · declared
  • spec:consumers.spec-studio.lenses.tests.coverage-row verifies spec:consumers.spec-studio.lenses.tests · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingThe tests lens shows how far each Spec's verification reaches
spec:consumers.spec-studio.lenses.tests · resolves
declaredNoneNone
verifies · outgoingThe tests lens shows how far each Spec's verification reaches
spec:consumers.spec-studio.lenses.tests · resolves
declaredNonecoverageRows

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-tests-coverage-row · anchored · test/studio-s1.test.ts:769 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

22. Example spaces report which values their examples cover

spec:consumers.agent-surface.example-space-coverage

Example spaces report which values their examples cover

spec:consumers.agent-surface.example-space-coverageUse Case / Behavior · storyready floor ready

Packs: pack:design-management-v1, pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/agent-surface.example-space-coverage.sdp.md

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

The original design rendered a coverage heatmap from each example space: which combinations of its typed slots an example witnesses and which none does (docs/lineage/v0-design/04-authoring-surfaces.md §4 and §4.1, 06-extraction-and-validation.md §8). This Spec reports slot-value coverage; the glossary keeps witness for an example in an outcome class. Coverage is per slot value: no design pass has yet asked which combinations of slots no example exercises, and a combination grid grows with the product of the slots' sizes.

Intent
problem
The graph carries example spaces and bound points, but no reader value or recipe reports which literal slot values example children bind.
outcome
Report each literal slot value with the example children that bind it, and each value no child binds, before code exists.
Behavior
rule.decodedOnce line 22 · specs/consumers/agent-surface.example-space-coverage.sdp.md:22
The engine decodes each Spec's example space into its typed slots, and each example child's steps into its bound point, once, through the notation module that writes the space contracts, and the reader carries both on the Spec context; no recipe or projection parses slot notation a second time.

no example exercises it

rule.catalogRecipe line 23 · specs/consumers/agent-surface.example-space-coverage.sdp.md:23
Slot-value coverage is a catalog recipe, recipe 44, over the decoded reader values, listing each literal-union value with the example children that bind it and each value no child binds.

spec:consumers.agent-surface.example-space-coverage.uncovered-literal · enabled

rule.literalUnions line 24 · specs/consumers/agent-surface.example-space-coverage.sdp.md:24
The recipe enumerates slots typed as closed unions of quoted literals. It reports every other slot type, a boolean included, as not enumerable by this recipe, never as covered or as missing a value.

spec:consumers.agent-surface.example-space-coverage.number-not-enumerable · enabled, spec:consumers.agent-surface.example-space-coverage.uncovered-literal · enabled

rule.perSlotOnly line 25 · specs/consumers/agent-surface.example-space-coverage.sdp.md:25
Coverage is reported per slot value; the recipe reports no combination of two or more slots until a design pass asks which combinations no example exercises.

spec:consumers.agent-surface.example-space-coverage.number-not-enumerable · enabled

rule.eligibleChildren line 26 · specs/consumers/agent-surface.example-space-coverage.sdp.md:26
The examples counted are the children its space contract collects.

spec:consumers.agent-surface.example-space-coverage.uncovered-literal · enabled

rule.unboundSlot line 27 · specs/consumers/agent-surface.example-space-coverage.sdp.md:27
An example that binds no value for a slot is listed under that slot as unbound, never as covering a value of it.

spec:consumers.agent-surface.example-space-coverage.uncovered-literal · enabled

rule.confersNothing line 28 · specs/consumers/agent-surface.example-space-coverage.sdp.md:28
Slot-value coverage reports and confers nothing: it moves no readiness, records no verdict and emits no validation finding.

spec:consumers.agent-surface.example-space-coverage.number-not-enumerable · enabled

0 unkeyed rules.

Verifying examples

A number slot is not enumerable and reports no uncovered value · spec:consumers.agent-surface.example-space-coverage.number-not-enumerable · ready floor ready

Executable Spec

Given an example space that declares the slot {slot: "quantity"} as {declared: "number"}
Given its example children bind {bound: "2; 5"}
When recipe 44 reports the space's coverage
Then the slot is enumerable: {enumerable: false}
Then the values no example binds are {uncovered: ""}
Then the examples that leave the slot unbound are {unbound: ""}

Open example

A literal no example binds is reported uncovered, and an unbound child is named · spec:consumers.agent-surface.example-space-coverage.uncovered-literal · ready floor ready

Executable Spec

Given an example space that declares the slot {slot: "availability"} as {declared: "in stock|out of stock|backordered"}
Given its example children bind {bound: "in stock; in stock; none"}
When recipe 44 reports the space's coverage
Then the slot is enumerable: {enumerable: true}
Then the values no example binds are {uncovered: "out of stock, backordered"}
Then the examples that leave the slot unbound are {unbound: "spec:probe.parent.c3"}

Open example

Example space

Given an example space that declares the slot {slot:string} as {declared:string}
Given its example children bind {bound:string}
When recipe 44 reports the space's coverage
Then the slot is enumerable: {enumerable:boolean}
Then the values no example binds are {uncovered:string}
Then the examples that leave the slot unbound are {unbound:string}
Design
readerSpace line 31 · specs/consumers/agent-surface.example-space-coverage.sdp.md:31
the Spec context of a Spec that owns an example space carries exampleSpace: { slots: ExampleSlot[]; points: BoundPoint[] }, and a Spec that owns none carries no exampleSpace.
exampleSlot line 32 · specs/consumers/agent-surface.example-space-coverage.sdp.md:32
{ name: string; type: "number" | "string" | "boolean" | "enum"; values?: string[]; step: string }, one per slot the space's given and when steps declare, in the order the space contract's dimensions take, values the quoted literals in authored order when type is enum, and step the skeleton of the first step declaring the slot.

no citation recorded

boundPoint line 33 · specs/consumers/agent-surface.example-space-coverage.sdp.md:33
{ example: string; values: Record<string, string | number | boolean> }, one per eligible child in id order, values holding the first value the child binds for each slot, the values the space contract holds for it.

no citation recorded

coverageRecipe line 34 · specs/consumers/agent-surface.example-space-coverage.sdp.md:34
recipe 44, example-space coverage, takes params.spec or params.pack, at most one, and without either reads every Spec that owns an example space; it returns { scope, totals, spaces }, and { diagnostics: [{ parameter, problem }] } alone when the scope names no Spec or Pack, names both, or names a Spec that owns no example space.
coverageSpace line 35 · specs/consumers/agent-surface.example-space-coverage.sdp.md:35
{ spec: string; examples: string[]; slots: CoverageSlot[] }, one per space in Spec id order, examples the eligible children in id order.

no citation recorded

coverageSlot line 36 · specs/consumers/agent-surface.example-space-coverage.sdp.md:36
{ name: string; type: string; step: string; enumerable: boolean; values: { value: string | number | boolean; examples: string[] }[]; unbound: string[] }: for an enumerable slot one value row per declared literal in authored order, a row with no example being an uncovered value; for any other slot one row per distinct value its examples bind, in the order they are first bound; unbound the examples that bind no value for the slot.

no citation recorded

coverageTotals line 37 · specs/consumers/agent-surface.example-space-coverage.sdp.md:37
{ spaces: number; slots: number; enumerable: number; values: number; uncovered: number }, values counting the declared literals of the enumerable slots and uncovered those no example binds.

no citation recorded

Verification

Verifier bindings

Example space

  • slot · string · declared by an example space that declares the slot {slot} as {declared}
  • declared · string · declared by an example space that declares the slot {slot} as {declared}
  • bound · string · declared by its example children bind {bound}

Bound points

Exampleslotdeclaredbound
spec:consumers.agent-surface.example-space-coverage.number-not-enumerable"quantity""number""2; 5"
spec:consumers.agent-surface.example-space-coverage.uncovered-literal"availability""in stock|out of stock|backordered""in stock; in stock; none"

Oracle binding: present · oracle:protocol.studio-coverage · test/studio-s1.test.ts:834

Coverage

slot: "quantity" · spec:consumers.agent-surface.example-space-coverage.number-not-enumerable; "availability" · spec:consumers.agent-surface.example-space-coverage.uncovered-literal · not enumerable

declared: "number" · spec:consumers.agent-surface.example-space-coverage.number-not-enumerable; "in stock|out of stock|backordered" · spec:consumers.agent-surface.example-space-coverage.uncovered-literal · not enumerable

bound: "2; 5" · spec:consumers.agent-surface.example-space-coverage.number-not-enumerable; "in stock; in stock; none" · spec:consumers.agent-surface.example-space-coverage.uncovered-literal · not enumerable

Unbound

  • slot: None
  • declared: None
  • bound: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.agent-surface.example-space-coverage
  • E6: refines, verifies · declared
Requirement drawing for spec:consumers.agent-surface.example-space-coveragesatisfies · anchoredsatisfies · anchoredmodels · anchoredrefines · declaredrefines, verifies · declaredE6verifies · anchoredverifies · anchoredIntended Specsspec:consumers.agent-surface.example-space-coverageExample spaces report whichvalues their examples cover…consumers.agent-surface.example-space-coveragedeclared SpecDeclared verifying examplesspec:consumers.agent-surface.example-space-coverage.number-not-enumerableA number slot is notenumerable and reports nouncovered value…consumers.agent-surface.example-space-coverage.number-not-enumerabledeclared Specspec:consumers.agent-surface.example-space-coverage.uncovered-literalA literal no example bindsis reported uncovered, andan unbound child is named…consumers.agent-surface.example-space-coverage.uncovered-literaldeclared SpecSatisfying or referencingunitsimpl:protocol.example-space-coverage-recipeasserts realization ofshipped recipe 44…protocol.example-space-coverage-recipeanchored codeimpl:protocol.example-space-decodingshared example-spaceinterpretation forcontracts and readercontexts…protocol.example-space-decodinganchored codeTest or oracle bindingsoracle:protocol.studio-coverageoracle:protocol.studio-coverage…protocol.studio-coverageanchored oracle bindingtest:protocol.studio-coverage-literaltest:protocol.studio-coverage-literal…protocol.studio-coverage-literalanchored test binding ·binding presenttest:protocol.studio-coverage-numbertest:protocol.studio-coverage-number…protocol.studio-coverage-numberanchored test binding ·binding presentOutside the selected setspec:consumers.agent-surface.design-recipesDesign work reads itsanswers from catalog recipes…consumers.agent-surface.design-recipesdeclared Spec
The diagram as text
  • spec:consumers.agent-surface.example-space-coverage: Example spaces report which values their examples cover · declared Spec
  • spec:consumers.agent-surface.example-space-coverage.number-not-enumerable: A number slot is not enumerable and reports no uncovered value · declared Spec
  • spec:consumers.agent-surface.example-space-coverage.uncovered-literal: A literal no example binds is reported uncovered, and an unbound child is named · declared Spec
  • spec:consumers.agent-surface.design-recipes: Design work reads its answers from catalog recipes · declared Spec
  • impl:protocol.example-space-coverage-recipe: asserts realization of shipped recipe 44 · anchored code · test/studio-s1.test.ts:856
  • impl:protocol.example-space-decoding: shared example-space interpretation for contracts and reader contexts · anchored code · src/notation/example-space.ts:473
  • oracle:protocol.studio-coverage: oracle:protocol.studio-coverage · anchored oracle binding · test/studio-s1.test.ts:834
  • test:protocol.studio-coverage-literal: test:protocol.studio-coverage-literal · anchored test binding · binding present · test/studio-s1.test.ts:938
  • test:protocol.studio-coverage-number: test:protocol.studio-coverage-number · anchored test binding · binding present · test/studio-s1.test.ts:944
  • spec:consumers.agent-surface.example-space-coverage refines spec:consumers.agent-surface.design-recipes · declared
  • spec:consumers.agent-surface.example-space-coverage.number-not-enumerable refines spec:consumers.agent-surface.example-space-coverage · declared
  • spec:consumers.agent-surface.example-space-coverage.number-not-enumerable verifies spec:consumers.agent-surface.example-space-coverage · declared
  • spec:consumers.agent-surface.example-space-coverage.uncovered-literal refines spec:consumers.agent-surface.example-space-coverage · declared
  • spec:consumers.agent-surface.example-space-coverage.uncovered-literal verifies spec:consumers.agent-surface.example-space-coverage · declared
  • impl:protocol.example-space-coverage-recipe satisfies spec:consumers.agent-surface.example-space-coverage · anchored
  • impl:protocol.example-space-decoding satisfies spec:consumers.agent-surface.example-space-coverage · anchored
  • oracle:protocol.studio-coverage models spec:consumers.agent-surface.example-space-coverage · anchored
  • test:protocol.studio-coverage-literal verifies spec:consumers.agent-surface.example-space-coverage.uncovered-literal · anchored
  • test:protocol.studio-coverage-number verifies spec:consumers.agent-surface.example-space-coverage.number-not-enumerable · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

No decision record named.

Runtime
  • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol

    Uses

    • 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.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol
  • impl:protocol.example-space-coverage-recipe · asserts realization of shipped recipe 44 · test/studio-s1.test.ts:856

    Uses

    None.

  • impl:protocol.example-space-decoding · shared example-space interpretation for contracts and reader contexts · src/notation/example-space.ts:473

    Component: component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · 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.agent-surface.example-space-coverage
Relations of spec:consumers.agent-surface.example-space-coveragedependsOn · declaredrefines · declareddependsOn · declaredrefines · declaredverifies · declaredrefines · declaredverifies · declareddependsOn · declareddependsOn · declaredOutgoing refinesspec:consumers.agent-surface.design-recipesDesign work reads itsanswers from catalog recipes…consumers.agent-surface.design-recipesOutgoing dependsOnspec:carrier.slot-notationSlot notation declares,binds, and refuses to guess…carrier.slot-notationspec:extraction.executable-contractsThe build derives step andspace contracts from graphexamples…extraction.executable-contractsSubjectspec:consumers.agent-surface.example-space-coverageExample spaces report whichvalues their examples cover…consumers.agent-surface.example-space-coverageIncoming refinesspec:consumers.agent-surface.example-space-coverage.number-not-enumerableA number slot is notenumerable and reports nouncovered value…consumers.agent-surface.example-space-coverage.number-not-enumerablespec:consumers.agent-surface.example-space-coverage.uncovered-literalA literal no example bindsis reported uncovered, andan unbound child is named…consumers.agent-surface.example-space-coverage.uncovered-literalIncoming dependsOnspec:consumers.spec-studio.lenses.testsThe tests lens shows howfar each Spec'sverification reaches…consumers.spec-studio.lenses.testsspec:consumers.spec-studio.verification-panelsThe panels for examples,targets, verifiers andevidence…consumers.spec-studio.verification-panels
The diagram as text
  • spec:carrier.slot-notation: Slot notation declares, binds, and refuses to guess
  • spec:consumers.agent-surface.design-recipes: Design work reads its answers from catalog recipes
  • spec:consumers.agent-surface.example-space-coverage: Example spaces report which values their examples cover
  • spec:consumers.agent-surface.example-space-coverage.number-not-enumerable: A number slot is not enumerable and reports no uncovered value
  • spec:consumers.agent-surface.example-space-coverage.uncovered-literal: A literal no example binds is reported uncovered, and an unbound child is named
  • spec:consumers.spec-studio.lenses.tests: The tests lens shows how far each Spec's verification reaches
  • spec:consumers.spec-studio.verification-panels: The panels for examples, targets, verifiers and evidence
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples
  • spec:consumers.agent-surface.example-space-coverage dependsOn spec:carrier.slot-notation · declared
  • spec:consumers.agent-surface.example-space-coverage dependsOn spec:extraction.executable-contracts · declared — its decoded slots and bound points reuse the space-contract interpretation
  • spec:consumers.agent-surface.example-space-coverage refines spec:consumers.agent-surface.design-recipes · declared
  • spec:consumers.spec-studio.lenses.tests dependsOn spec:consumers.agent-surface.example-space-coverage · declared — a row reads its example space's uncovered values from recipe 44
  • spec:consumers.spec-studio.verification-panels dependsOn spec:consumers.agent-surface.example-space-coverage · declared — the grid renders recipe 44's per-slot coverage
  • spec:consumers.agent-surface.example-space-coverage.number-not-enumerable refines spec:consumers.agent-surface.example-space-coverage · declared
  • spec:consumers.agent-surface.example-space-coverage.uncovered-literal refines spec:consumers.agent-surface.example-space-coverage · declared
  • spec:consumers.agent-surface.example-space-coverage.number-not-enumerable verifies spec:consumers.agent-surface.example-space-coverage · declared
  • spec:consumers.agent-surface.example-space-coverage.uncovered-literal verifies spec:consumers.agent-surface.example-space-coverage · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

  • refines · spec:consumers.agent-surface.design-recipes · stated ready, floor ready
  • dependsOn · spec:carrier.slot-notation · stated ready, floor ready
  • dependsOn · spec:extraction.executable-contracts · stated ready, floor ready

Rested on by

Distance 1

Distance 2

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:carrier.slot-notation
spec:carrier.slot-notation · resolves
declaredNoneNone
dependsOn · outgoingspec:extraction.executable-contracts
spec:extraction.executable-contracts · resolves
declaredits decoded slots and bound points reuse the space-contract interpretationNone
refines · outgoingspec:consumers.agent-surface.design-recipes
spec:consumers.agent-surface.design-recipes · resolves
declaredNoneNone
dependsOn · incomingThe tests lens shows how far each Spec's verification reaches
spec:consumers.spec-studio.lenses.tests · resolves
declareda row reads its example space's uncovered values from recipe 44None
dependsOn · incomingThe panels for examples, targets, verifiers and evidence
spec:consumers.spec-studio.verification-panels · resolves
declaredthe grid renders recipe 44's per-slot coverageNone
refines · incomingA number slot is not enumerable and reports no uncovered value
spec:consumers.agent-surface.example-space-coverage.number-not-enumerable · resolves
declaredNoneNone
refines · incomingA literal no example binds is reported uncovered, and an unbound child is named
spec:consumers.agent-surface.example-space-coverage.uncovered-literal · resolves
declaredNoneNone
verifies · incomingA number slot is not enumerable and reports no uncovered value
spec:consumers.agent-surface.example-space-coverage.number-not-enumerable · resolves
declaredNoneliteralUnions, perSlotOnly, confersNothing
verifies · incomingA literal no example binds is reported uncovered, and an unbound child is named
spec:consumers.agent-surface.example-space-coverage.uncovered-literal · resolves
declaredNonecatalogRecipe, literalUnions, eligibleChildren, unboundSlot

Bindings

Implementation binding: present

  • impl:protocol.example-space-coverage-recipe · asserts realization of shipped recipe 44 · test/studio-s1.test.ts:856
  • impl:protocol.example-space-decoding · shared example-space interpretation for contracts and reader contexts · src/notation/example-space.ts:473 · role codec · component component:protocol.reader · layer application · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.studio-coverage · test/studio-s1.test.ts:834

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

23. A literal no example binds is reported uncovered, and an unbound child is named

spec:consumers.agent-surface.example-space-coverage.uncovered-literal

A literal no example binds is reported uncovered, and an unbound child is named

spec:consumers.agent-surface.example-space-coverage.uncovered-literalExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/agent-surface.example-space-coverage.uncovered-literal.sdp.md

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

Intent
outcome
Execute per-value coverage on a closed union with one covered, two uncovered values and one child that binds nothing.
assumptions
  • The world writes a parent Spec whose example space declares the slot as a closed union of the literals the declared value lists, separated by |, and one example child per entry of the bound value, separated by ; , each child refining and verifying the parent and binding that literal, or binding no value where the entry is none; it runs recipe 44's shipped body with the parent as spec and joins the uncovered values and the unbound children's ids with , . The parent's id ends in probe.parent, and each child's id is the parent's followed by .c1, .c2 and on, in order.
Behavior

Examples

Given an example space that declares the slot {slot: "availability"} as {declared: "in stock|out of stock|backordered"}
Given its example children bind {bound: "in stock; in stock; none"}
When recipe 44 reports the space's coverage
Then the slot is enumerable: {enumerable: true}
Then the values no example binds are {uncovered: "out of stock, backordered"}
Then the examples that leave the slot unbound are {unbound: "spec:probe.parent.c3"}
Verification

Verifier bindings

  • test:protocol.studio-coverage-literal · anchored · test anchor binding present · test/studio-s1.test.ts:938
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.agent-surface.example-space-coverage.uncovered-literal
The diagram as text
  • spec:consumers.agent-surface.example-space-coverage.uncovered-literal: A literal no example binds is reported uncovered, and an unbound child is named · declared Spec
  • spec:consumers.agent-surface.example-space-coverage: Example spaces report which values their examples cover · declared Spec
  • test:protocol.studio-coverage-literal: test:protocol.studio-coverage-literal · anchored test binding · binding present · test/studio-s1.test.ts:938
  • spec:consumers.agent-surface.example-space-coverage.uncovered-literal refines spec:consumers.agent-surface.example-space-coverage · declared
  • spec:consumers.agent-surface.example-space-coverage.uncovered-literal verifies spec:consumers.agent-surface.example-space-coverage · declared
  • test:protocol.studio-coverage-literal verifies spec:consumers.agent-surface.example-space-coverage.uncovered-literal · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.agent-surface.example-space-coverage.uncovered-literal
  • E2: verifies · declared
The diagram as text
  • spec:consumers.agent-surface.example-space-coverage: Example spaces report which values their examples cover
  • spec:consumers.agent-surface.example-space-coverage.uncovered-literal: A literal no example binds is reported uncovered, and an unbound child is named
  • spec:consumers.agent-surface.example-space-coverage.uncovered-literal refines spec:consumers.agent-surface.example-space-coverage · declared
  • spec:consumers.agent-surface.example-space-coverage.uncovered-literal verifies spec:consumers.agent-surface.example-space-coverage · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingExample spaces report which values their examples cover
spec:consumers.agent-surface.example-space-coverage · resolves
declaredNoneNone
verifies · outgoingExample spaces report which values their examples cover
spec:consumers.agent-surface.example-space-coverage · resolves
declaredNonecatalogRecipe, literalUnions, eligibleChildren, unboundSlot

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-coverage-literal · anchored · test/studio-s1.test.ts:938 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

24. A number slot is not enumerable and reports no uncovered value

spec:consumers.agent-surface.example-space-coverage.number-not-enumerable

A number slot is not enumerable and reports no uncovered value

spec:consumers.agent-surface.example-space-coverage.number-not-enumerableExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/agent-surface.example-space-coverage.number-not-enumerable.sdp.md

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

Intent
outcome
Execute the not-enumerable answer on a number slot, which reports the values bound and never a missing one.
assumptions
  • The world writes the parent and children as the uncovered-literal example does, with the slot declared as number and each child binding the number its entry names; it runs recipe 44's shipped body with the parent as spec, reads the slot's row, and checks that the validation report and the parent's readiness are the same before and after.
Behavior

Examples

Given an example space that declares the slot {slot: "quantity"} as {declared: "number"}
Given its example children bind {bound: "2; 5"}
When recipe 44 reports the space's coverage
Then the slot is enumerable: {enumerable: false}
Then the values no example binds are {uncovered: ""}
Then the examples that leave the slot unbound are {unbound: ""}
Verification

Verifier bindings

  • test:protocol.studio-coverage-number · anchored · test anchor binding present · test/studio-s1.test.ts:944
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.agent-surface.example-space-coverage.number-not-enumerable
The diagram as text
  • spec:consumers.agent-surface.example-space-coverage.number-not-enumerable: A number slot is not enumerable and reports no uncovered value · declared Spec
  • spec:consumers.agent-surface.example-space-coverage: Example spaces report which values their examples cover · declared Spec
  • test:protocol.studio-coverage-number: test:protocol.studio-coverage-number · anchored test binding · binding present · test/studio-s1.test.ts:944
  • spec:consumers.agent-surface.example-space-coverage.number-not-enumerable refines spec:consumers.agent-surface.example-space-coverage · declared
  • spec:consumers.agent-surface.example-space-coverage.number-not-enumerable verifies spec:consumers.agent-surface.example-space-coverage · declared
  • test:protocol.studio-coverage-number verifies spec:consumers.agent-surface.example-space-coverage.number-not-enumerable · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.agent-surface.example-space-coverage.number-not-enumerable
  • E2: verifies · declared
The diagram as text
  • spec:consumers.agent-surface.example-space-coverage: Example spaces report which values their examples cover
  • spec:consumers.agent-surface.example-space-coverage.number-not-enumerable: A number slot is not enumerable and reports no uncovered value
  • spec:consumers.agent-surface.example-space-coverage.number-not-enumerable refines spec:consumers.agent-surface.example-space-coverage · declared
  • spec:consumers.agent-surface.example-space-coverage.number-not-enumerable verifies spec:consumers.agent-surface.example-space-coverage · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingExample spaces report which values their examples cover
spec:consumers.agent-surface.example-space-coverage · resolves
declaredNoneNone
verifies · outgoingExample spaces report which values their examples cover
spec:consumers.agent-surface.example-space-coverage · resolves
declaredNoneliteralUnions, perSlotOnly, confersNothing

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-coverage-number · anchored · test/studio-s1.test.ts:944 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

25. The evidence lens names each source of runtime evidence and reads it as not tracked

spec:consumers.spec-studio.lenses.evidence

The evidence lens names each source of runtime evidence and reads it as not tracked

spec:consumers.spec-studio.lenses.evidenceUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

Design: 1 design entry · no pinned declarations · 1 decision

Findings: no errors, no warnings

specs/consumers/spec-studio.lenses.evidence.sdp.md

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

The graph derives no observation yet, and no Spec designs a source for build attestations, deployments or bills of materials, so every row of this lens reads not tracked. The lens stays in the navigation so a reader sees what is not tracked rather than assuming it is.

Intent
outcome
Let a person see which kinds of runtime evidence the Studio could show, and that none is tracked until the graph records it.
Behavior
rule.notTracked line 18 · specs/consumers/spec-studio.lenses.evidence.sdp.md:18
The lens lists four sources, runtime observation, build attestations, deployments and software bills of materials, and reads each as not tracked: no delivery fact records an observation, and no Spec designs a source for the other three.

no example exercises it

rule.noInvention line 19 · specs/consumers/spec-studio.lenses.evidence.sdp.md:19
The lens shows no payload, measurement or state it was not given, and never says that a Spec is live, deployed or attested.

no example exercises it

rule.runsElsewhere line 20 · specs/consumers/spec-studio.lenses.evidence.sdp.md:20
CI run records are test evidence: they show in the tests lens and on the runs page when the build is given them, and never in this lens.

no example exercises it

0 unkeyed rules.

UI
evidenceList line 23 · specs/consumers/spec-studio.lenses.evidence.sdp.md:23
one line per source, its name, then not tracked, then what would bring it in: an observation the graph records against a measurable target, or a Spec that designs the source.
Verification

Verifier bindings

  • test:protocol.studio-lenses · anchored · test anchor binding present · test/studio-s1.test.ts:273
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.lenses.evidence
The diagram as text
  • spec:consumers.spec-studio.lenses.evidence: The evidence lens names each source of runtime evidence and reads it as not tracked · declared Spec
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence · declared Spec
  • impl:protocol.studio-evidence-lens: names the four evidence sources and what would bring each into the Studio · anchored code · src/projections/studio/pages/evidence-page.ts:3
  • test:protocol.studio-lenses: test:protocol.studio-lenses · anchored test binding · binding present · test/studio-s1.test.ts:273
  • spec:consumers.spec-studio.lenses.evidence refines spec:consumers.spec-studio.lenses · declared
  • impl:protocol.studio-evidence-lens satisfies spec:consumers.spec-studio.lenses.evidence · anchored
  • test:protocol.studio-lenses verifies spec:consumers.spec-studio.lenses.evidence · 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

  • spec:decisions.binding-not-liveness

    Delivery facts record bindings and enabled verifier existence; coverage gaps and human readiness practice remain explicit without becoming graph facts.

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.studio-evidence-lens · names the four evidence sources and what would bring each into the Studio · src/projections/studio/pages/evidence-page.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.spec-studio.lenses.evidence
Relations of spec:consumers.spec-studio.lenses.evidencerefines · declareddecidedBy · declaredOutgoing refinesspec:consumers.spec-studio.lensesFive lenses read the graphas Packs, capabilities,architecture, tests andevidence…consumers.spec-studio.lensesOutgoing decidedByspec:decisions.binding-not-livenessBindings state existence,not liveness…decisions.binding-not-livenessSubjectspec:consumers.spec-studio.lenses.evidenceThe evidence lens nameseach source of runtimeevidence and reads it asnot tracked…consumers.spec-studio.lenses.evidence
The diagram as text
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence
  • spec:consumers.spec-studio.lenses.evidence: The evidence lens names each source of runtime evidence and reads it as not tracked
  • spec:decisions.binding-not-liveness: Bindings state existence, not liveness
  • spec:consumers.spec-studio.lenses.evidence decidedBy spec:decisions.binding-not-liveness · declared
  • spec:consumers.spec-studio.lenses.evidence refines spec:consumers.spec-studio.lenses · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingspec:decisions.binding-not-liveness
spec:decisions.binding-not-liveness · resolves
declaredNoneNone
refines · outgoingFive lenses read the graph as Packs, capabilities, architecture, tests and evidence
spec:consumers.spec-studio.lenses · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.studio-evidence-lens · names the four evidence sources and what would bring each into the Studio · src/projections/studio/pages/evidence-page.ts:3 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-lenses · anchored · test/studio-s1.test.ts:273 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

26. A Pack page shows the Pack's design as one card per member

spec:consumers.spec-studio.pack-page

A Pack page shows the Pack's design as one card per member

spec:consumers.spec-studio.pack-pageUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.pack-page.sdp.md

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

The Markdown Pack page renders the Pack design as one wide member table, and the first adopter's reviewers read carrier files instead. This page renders the same assembly as a summary, then a card per member that a reviewer opens where they need the detail.

Intent
outcome
Show where a Pack's design stands, member by member in reading order, on one page a reviewer scans quickly and opens where they need detail.
Behavior
rule.header line 25 · specs/consumers/spec-studio.pack-page.sdp.md:25
The page opens with the Pack's title, its id and its carrier file as text with a copy action, and a link to the Pack's slice page, then the summary; the framing follows as prose under the heading Framing, with the vocabulary references, linked.

no example exercises it

rule.summary line 26 · specs/consumers/spec-studio.pack-page.sdp.md:26
The summary states each Pack total in one sentence that opens with its count, never as a table: the members and the unresolved ones, the members held below their stated next rung and those waiting only for their author, the design entries and pinned declarations, the open and blocking questions, the members with an implementation binding and with a design reference, and the boundary in each direction. The member sentence says in priority order when the Pack states order: priority, otherwise in authored reading order.

no example exercises it

rule.holds line 27 · specs/consumers/spec-studio.pack-page.sdp.md:27
The summary's held sentence links each held member to its card with its count of unmet clauses, and its waiting sentence names the members whose stated next rung waits only for their author's statement unless every member does; the page never presents a rung as approved.

no example exercises it

rule.memberCards line 28 · specs/consumers/spec-studio.pack-page.sdp.md:28
The members follow in authored order, one closed card each. A card's summary line shows the member's position, title and kind, its stated rung beside the floor reached, its stated next rung with nothing blocks or how many of its clauses are unmet, its open and blocking questions, and its implementation and verifier bindings as present or none.

no example exercises it

rule.cardBody line 29 · specs/consumers/spec-studio.pack-page.sdp.md:29
An open card shows the member's id, linked to its Spec page, then the parts the next five rules state, in their order.

no example exercises it

rule.cardHolds line 30 · specs/consumers/spec-studio.pack-page.sdp.md:30
A card lists each clause unmet for the member's stated next rung, with the targets the clause names and their stated rungs.

no example exercises it

rule.cardDesign line 31 · specs/consumers/spec-studio.pack-page.sdp.md:31
A card counts the member's design entries and pinned declarations, and links the decisions it names, each with its stated rung.

no example exercises it

rule.cardQuestions line 32 · specs/consumers/spec-studio.pack-page.sdp.md:32
A card lists each open question with its blocking flag in words, its address when it is keyed, linked to the question on the Spec page, its recorded line, its text, and its decider, links, provisional reading and trigger when present.

no example exercises it

rule.cardCode line 33 · specs/consumers/spec-studio.pack-page.sdp.md:33
A card lists each unit that implements the member and each that references it, by id, label, and recorded file and line as text with a copy action, with its role and its component's id, layer and context.

no example exercises it

rule.cardVerifiers line 34 · specs/consumers/spec-studio.pack-page.sdp.md:34
A card states the member's verifier binding as present or none and, when it has any, counts its verifiers and verifying examples, each beside how many are enabled.

no example exercises it

rule line 35 · specs/consumers/spec-studio.pack-page.sdp.md:35
An unresolved member's card says only that the manifest names an id the graph does not hold.
rule.boundary line 36 · specs/consumers/spec-studio.pack-page.sdp.md:36
The boundary follows in four closed sections, Rests on, Rested on by, Verified by and Superseded by, each headed with its count. Each row shows the outside Spec, linked, its stated rung, its implementation binding as present or none, and the members it joins under each relation type; an empty section reads None.

no example exercises it

rule.unboundVerifiers line 37 · specs/consumers/spec-studio.pack-page.sdp.md:37
Then come the members with no verifier binding, those stated ready first, under one sentence saying the graph records bindings and never runs; then the findings that name the Pack.

no example exercises it

rule.openAll line 38 · specs/consumers/spec-studio.pack-page.sdp.md:38
Open all and Close all open or close every card and section at once, and opening the page at a card's fragment opens that card.

no example exercises it

1 unkeyed rule.

UI
headerBlock line 41 · specs/consumers/spec-studio.pack-page.sdp.md:41
the title as the page heading; below it the id and the carrier file, each with a copy action, and the link Read this Pack as one design to its slice page; then the summary; then the framing under a Framing heading, and the vocabulary references.
summaryList line 42 · specs/consumers/spec-studio.pack-page.sdp.md:42
the totals as a short list of sentences under a Where the design stands heading, each opening with its count, a zero written as No.
memberCard line 43 · specs/consumers/spec-studio.pack-page.sdp.md:43
a disclosure whose element id is the member's Spec id; its summary line reads <position>. <title>, then the kind, the rung badge, the floor in words, the next rung in words unless the member states ready, the question counts and the two binding values, all but the badge as plain text, wrapping onto further lines on a narrow screen.
cardBody line 44 · specs/consumers/spec-studio.pack-page.sdp.md:44
in order, the id link, the unmet clauses, the design counts and decisions, the open questions, the code, and the verifier binding.
questionItem line 45 · specs/consumers/spec-studio.pack-page.sdp.md:45
the blocking flag in words; for a keyed question, question.<key> as a link to its address with a copy action for the full address; line <n> when recorded; the text; then each present field on its own labelled line.
unitItem line 46 · specs/consumers/spec-studio.pack-page.sdp.md:46
the unit id as code, its label, <file>:<line> with a copy action, its role, and its component with layer and context.
boundaryTable line 47 · specs/consumers/spec-studio.pack-page.sdp.md:47
four columns, Spec, stated rung, implementation binding and joined members, the last listing each relation type with its members.
Verification

Verifier bindings

  • test:protocol.roadmap-priority · checks Pack priority extraction, comparison and Studio change notes · anchored · test anchor binding present · test/roadmap-priority.test.ts:44
  • test:protocol.studio-pages · anchored · test anchor binding present · test/studio-pages.test.ts:18
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.pack-page
Requirement drawing for spec:consumers.spec-studio.pack-pagesatisfies · anchoredsatisfies · anchoredrefines · declaredrefines · declaredverifies · anchoredverifies · anchoredverifies · anchoredverifies · anchoredIntended Specsspec:consumers.spec-studio.pack-pageA Pack page shows thePack's design as one cardper member…consumers.spec-studio.pack-pagedeclared Specspec:consumers.spec-studio.pack-page.maturity-mapA Pack page's maturity mapplaces every member by itsstated rung and its floor…consumers.spec-studio.pack-page.maturity-mapdeclared SpecSatisfying or referencingunitsimpl:protocol.studio-maturity-mapplaces resolved Packmembers by their statedrung and floor in authoredorder…protocol.studio-maturity-mapanchored codeimpl:protocol.studio-pack-pagerenders Pack members,maturity and boundary joins…protocol.studio-pack-pageanchored codeTest or oracle bindingstest:protocol.roadmap-prioritychecks Pack priorityextraction, comparison andStudio change notes…protocol.roadmap-priorityanchored test binding ·binding presenttest:protocol.studio-architecture-maturity-requirementtest:protocol.studio-architecture-maturity-requirement…protocol.studio-architecture-maturity-requirementanchored test binding ·binding presenttest:protocol.studio-pagestest:protocol.studio-pages…protocol.studio-pagesanchored test binding ·binding presenttest:protocol.studio-panelstest:protocol.studio-panels…protocol.studio-panelsanchored test binding ·binding presentOutside the selected setspec:consumers.spec-studioThe Spec Studio is a staticHTML workbench over the onegraph…consumers.spec-studiodeclared Spec
The diagram as text
  • spec:consumers.spec-studio.pack-page: A Pack page shows the Pack's design as one card per member · declared Spec
  • spec:consumers.spec-studio.pack-page.maturity-map: A Pack page's maturity map places every member by its stated rung and its floor · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.studio-maturity-map: places resolved Pack members by their stated rung and floor in authored order · anchored code · src/projections/studio/pages/maturity-map.ts:7
  • impl:protocol.studio-pack-page: renders Pack members, maturity and boundary joins · anchored code · src/projections/studio/pages/pack-page.ts:68
  • test:protocol.roadmap-priority: checks Pack priority extraction, comparison and Studio change notes · anchored test binding · binding present · test/roadmap-priority.test.ts:44
  • test:protocol.studio-architecture-maturity-requirement: test:protocol.studio-architecture-maturity-requirement · anchored test binding · binding present · test/studio-panels.test.ts:35
  • test:protocol.studio-pages: test:protocol.studio-pages · anchored test binding · binding present · test/studio-pages.test.ts:18
  • test:protocol.studio-panels: test:protocol.studio-panels · anchored test binding · binding present · test/studio-s2.test.ts:256
  • spec:consumers.spec-studio.pack-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.pack-page.maturity-map refines spec:consumers.spec-studio.pack-page · declared
  • impl:protocol.studio-maturity-map satisfies spec:consumers.spec-studio.pack-page.maturity-map · anchored
  • impl:protocol.studio-pack-page satisfies spec:consumers.spec-studio.pack-page · anchored
  • test:protocol.roadmap-priority verifies spec:consumers.spec-studio.pack-page · anchored
  • test:protocol.studio-architecture-maturity-requirement verifies spec:consumers.spec-studio.pack-page.maturity-map · anchored
  • test:protocol.studio-pages verifies spec:consumers.spec-studio.pack-page · anchored
  • test:protocol.studio-panels verifies spec:consumers.spec-studio.pack-page.maturity-map · 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

No decision record named.

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.studio-pack-page · renders Pack members, maturity and boundary joins · src/projections/studio/pages/pack-page.ts:68

    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.spec-studio.pack-page
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.pack-design: The Pack context carries the Pack's design
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • spec:consumers.spec-studio.export: A Pack exports as one file, and every page prints as a document
  • spec:consumers.spec-studio.pack-page: A Pack page shows the Pack's design as one card per member
  • spec:consumers.spec-studio.pack-page.maturity-map: A Pack page's maturity map places every member by its stated rung and its floor
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:consumers.spec-studio.slice-page: A slice page shows a Pack's design as one whole
  • spec:model.open-question-fields: An open question may name who decides it, its links, a provisional reading and a re-entry trigger
  • spec:consumers.spec-studio.pack-page dependsOn spec:consumers.binding-language-views · declared
  • spec:consumers.spec-studio.pack-page dependsOn spec:consumers.derived-readiness-banner · declared
  • spec:consumers.spec-studio.pack-page dependsOn spec:consumers.pack-design · declared — the page renders the Pack design the Pack context carries
  • spec:consumers.spec-studio.pack-page dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.pack-page dependsOn spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.pack-page dependsOn spec:model.open-question-fields · declared
  • spec:consumers.spec-studio.pack-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.export dependsOn spec:consumers.spec-studio.pack-page · declared — an export opens with its Pack page's content
  • spec:consumers.spec-studio.slice-page dependsOn spec:consumers.spec-studio.pack-page · declared — each member links to its card on the Pack page, whose element id is the member's id
  • spec:consumers.spec-studio.pack-page.maturity-map refines spec:consumers.spec-studio.pack-page · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

  • refines · spec:consumers.spec-studio · stated ready, floor ready
  • dependsOn · spec:consumers.binding-language-views · stated ready, floor ready
  • dependsOn · spec:consumers.derived-readiness-banner · stated ready, floor ready
  • dependsOn · spec:consumers.pack-design · stated ready, floor ready
  • dependsOn · spec:consumers.spec-studio.data · stated ready, floor ready
  • dependsOn · spec:consumers.spec-studio.shell · stated ready, floor ready
  • dependsOn · spec:model.open-question-fields · stated ready, floor ready

Rested on by

Distance 1

  • spec:consumers.spec-studio.export

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

Distance 2

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:consumers.binding-language-views
spec:consumers.binding-language-views · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.derived-readiness-banner
spec:consumers.derived-readiness-banner · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.pack-design
spec:consumers.pack-design · resolves
declaredthe page renders the Pack design the Pack context carriesNone
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
dependsOn · outgoingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredNoneNone
dependsOn · outgoingspec:model.open-question-fields
spec:model.open-question-fields · resolves
declaredNoneNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
dependsOn · incomingA Pack exports as one file, and every page prints as a document
spec:consumers.spec-studio.export · resolves
declaredan export opens with its Pack page's contentNone
dependsOn · incomingspec:consumers.spec-studio.slice-page
spec:consumers.spec-studio.slice-page · resolves
declaredeach member links to its card on the Pack page, whose element id is the member's idNone
refines · incomingA Pack page's maturity map places every member by its stated rung and its floor
spec:consumers.spec-studio.pack-page.maturity-map · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.studio-pack-page · renders Pack members, maturity and boundary joins · src/projections/studio/pages/pack-page.ts:68 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.roadmap-priority · checks Pack priority extraction, comparison and Studio change notes · anchored · test/roadmap-priority.test.ts:44 · test anchor
  • test:protocol.studio-pages · anchored · test/studio-pages.test.ts:18 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

27. A Pack page's maturity map places every member by its stated rung and its floor

spec:consumers.spec-studio.pack-page.maturity-map

A Pack page's maturity map places every member by its stated rung and its floor

spec:consumers.spec-studio.pack-page.maturity-mapUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

Design: 1 design entry · no pinned declarations · no decisions

Findings: no errors, no warnings

specs/consumers/spec-studio.pack-page.maturity-map.sdp.md

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

A Pack's maturity map shows its distribution before its member lists. Equal-sized cells place each resolved member by stated readiness and floor reached. Populated cells show exact counts and member marks; faint empty cells show no number. The count table and ordered lists retain the reading in text.

Intent
outcome
Let a reviewer see at a glance where every member of a Pack stands, by the rung it states and the floor it reaches.
Behavior
rule.maturityMap line 22 · specs/consumers/spec-studio.pack-page.maturity-map.sdp.md:22
After the summary, show the categorical grid and full member lists defined by spec:consumers.spec-studio.diagram-kinds.maturity-picture. Every resolved member belongs to one stated-rung and floor cell; unresolved members are named apart. Populated cells link to their built lists, whose members stay in authored order.

no example exercises it

0 unkeyed rules.

UI
maturityMap line 25 · specs/consumers/spec-studio.pack-page.maturity-map.sdp.md:25
An sdp-maturity-map holds the static SVG grid, caption and accessible count table, followed by populated cells' full member lists in disclosures that print open. Equal-sized cells have explicit axes; the legend names matches, floor above statement and statement above floor once. The diagonal has an outline, empty cells are faint, and populated cells carry exact counts and member marks, up to 100 marks and solid fill above that. Every member links to its card.
Verification

Verifier bindings

  • test:protocol.studio-architecture-maturity-requirement · anchored · test anchor binding present · test/studio-panels.test.ts:35
  • test:protocol.studio-panels · anchored · test anchor binding present · test/studio-s2.test.ts:256
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.pack-page.maturity-map
The diagram as text
  • spec:consumers.spec-studio.pack-page.maturity-map: A Pack page's maturity map places every member by its stated rung and its floor · declared Spec
  • spec:consumers.spec-studio.pack-page: A Pack page shows the Pack's design as one card per member · declared Spec
  • impl:protocol.studio-maturity-map: places resolved Pack members by their stated rung and floor in authored order · anchored code · src/projections/studio/pages/maturity-map.ts:7
  • test:protocol.studio-architecture-maturity-requirement: test:protocol.studio-architecture-maturity-requirement · anchored test binding · binding present · test/studio-panels.test.ts:35
  • test:protocol.studio-panels: test:protocol.studio-panels · anchored test binding · binding present · test/studio-s2.test.ts:256
  • spec:consumers.spec-studio.pack-page.maturity-map refines spec:consumers.spec-studio.pack-page · declared
  • impl:protocol.studio-maturity-map satisfies spec:consumers.spec-studio.pack-page.maturity-map · anchored
  • test:protocol.studio-architecture-maturity-requirement verifies spec:consumers.spec-studio.pack-page.maturity-map · anchored
  • test:protocol.studio-panels verifies spec:consumers.spec-studio.pack-page.maturity-map · 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

No decision record named.

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.studio-maturity-map · places resolved Pack members by their stated rung and floor in authored order · src/projections/studio/pages/maturity-map.ts:7

    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.spec-studio.pack-page.maturity-map
Relations of spec:consumers.spec-studio.pack-page.maturity-mapdependsOn · declareddependsOn · declaredrefines · declaredOutgoing refinesspec:consumers.spec-studio.pack-pageA Pack page shows thePack's design as one cardper member…spec-studio.pack-pageOutgoing dependsOnspec:consumers.derived-readiness-bannerDerived readiness rendersbeside the stated rung andwarns in one direction…derived-readiness-bannerspec:consumers.spec-studio.diagram-kinds.maturity-pictureThe maturity map is drawnas a grid of counts…spec-studio.diagram-kinds.maturity-pictureSubjectspec:consumers.spec-studio.pack-page.maturity-mapA Pack page's maturity mapplaces every member by itsstated rung and its floor…spec-studio.pack-page.maturity-map
The diagram as text
  • spec:consumers.derived-readiness-banner: Derived readiness renders beside the stated rung and warns in one direction
  • spec:consumers.spec-studio.diagram-kinds.maturity-picture: The maturity map is drawn as a grid of counts
  • spec:consumers.spec-studio.pack-page: A Pack page shows the Pack's design as one card per member
  • spec:consumers.spec-studio.pack-page.maturity-map: A Pack page's maturity map places every member by its stated rung and its floor
  • spec:consumers.spec-studio.pack-page.maturity-map dependsOn spec:consumers.derived-readiness-banner · declared — the map sets each stated rung beside the floor reached, as the banner reads them
  • spec:consumers.spec-studio.pack-page.maturity-map dependsOn spec:consumers.spec-studio.diagram-kinds.maturity-picture · declared — the map is drawn as the picture defines
  • spec:consumers.spec-studio.pack-page.maturity-map refines spec:consumers.spec-studio.pack-page · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

  • refines · spec:consumers.spec-studio.pack-page · stated ready, floor ready
  • dependsOn · spec:consumers.derived-readiness-banner · stated ready, floor ready
  • dependsOn · spec:consumers.spec-studio.diagram-kinds.maturity-picture · stated ready, floor ready

Rested on by

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:consumers.derived-readiness-banner
spec:consumers.derived-readiness-banner · resolves
declaredthe map sets each stated rung beside the floor reached, as the banner reads themNone
dependsOn · outgoingspec:consumers.spec-studio.diagram-kinds.maturity-picture
spec:consumers.spec-studio.diagram-kinds.maturity-picture · resolves
declaredthe map is drawn as the picture definesNone
refines · outgoingA Pack page shows the Pack's design as one card per member
spec:consumers.spec-studio.pack-page · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.studio-maturity-map · places resolved Pack members by their stated rung and floor in authored order · src/projections/studio/pages/maturity-map.ts:7 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-architecture-maturity-requirement · anchored · test/studio-panels.test.ts:35 · test anchor
  • test:protocol.studio-panels · anchored · test/studio-s2.test.ts:256 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

28. A Spec page shows one Spec in collapsible panels, in a fixed order

spec:consumers.spec-studio.spec-page

A Spec page shows one Spec in collapsible panels, in a fixed order

spec:consumers.spec-studio.spec-pageUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

Design: 10 design entries · no pinned declarations · 1 decision

Findings: no errors, no warnings

specs/consumers/spec-studio.spec-page.sdp.md

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

The original runtime panel linked Fastify routes to Effect programs, showed what Effect layers provided and required, and recorded Awilix registrations and their lifetimes, beside ports and external systems. That representation is lineage evidence in docs/lineage/v0-design/07-spec-studio-and-projections.md, section 2.3, Section F. The structural anchors record identity, component membership, uses, role, and a component's architectural layer and context, so the runtime panel shows that structural neighborhood and no more until a reader asks for more of the runtime composition.

The page shows only what the graph and the build's named inputs hold. The original header's owner, tags and last-verified time, its schema bindings and its UI / Stories section have no graph value behind them, so the page shows none of them.

Intent
outcome
Show everything the graph holds about one Spec on one page, in panels a person opens and closes one at a time.
Behavior
rule line 42 · specs/consumers/spec-studio.spec-page.sdp.md:42
Each panel collapses and expands on its own.
rule line 43 · specs/consumers/spec-studio.spec-page.sdp.md:43
The page's core, its header, sections, relations, bindings and findings, is the one spec:consumers.spec-studio.spec-page.core states, and the panels below add to it.
rule.sourceText line 44 · specs/consumers/spec-studio.spec-page.sdp.md:44
Every Spec and Pack a panel names links to its page. A code unit, component or anchor shows its id and its recorded repository-relative file and line as text, with an action that copies file:line; the page set holds no code-unit page and writes no editor URI, absolute path or assumed source URL; a recorded file and line become a link only when a stamp beside the page set names a source template, as spec:consumers.spec-studio.sharing states; a component's attributes, members and uses show in the architecture lens, which its id links to.

no example exercises it

rule.panelOrder line 45 · specs/consumers/spec-studio.spec-page.sdp.md:45
After the core's sections the page adds five panels, in this order, each open by default: Verification, Design view, Runtime, Evidence and Impact; a panel with nothing to show says so in one sentence and stays in its place; the core's relations, bindings and findings follow them.

no example exercises it

rule.sectionAdditions line 46 · specs/consumers/spec-studio.spec-page.sdp.md:46
Inside the core's sections the page adds a composing action beside each keyed entry that proposes new text for it, the composing actions beside each open question, the rule coverage beside each keyed rule or flow and the example cards after the rules, each constraint's target, the citations beside each cited entry, and an element id on each keyed term, as the rules below state.

no example exercises it

rule.termIds line 47 · specs/consumers/spec-studio.spec-page.sdp.md:47
Each keyed Model term in the core's Model section carries the element id term.<key>, its address after the #, and shows its key and its recorded line, as the core's entry ids do.

no example exercises it

rule.citations line 48 · specs/consumers/spec-studio.spec-page.sdp.md:48
Beside each keyed entry an anchored source file cites, its section lists every citing file and line recipe 51 records, as text with a copy action; a pinned declaration no file cites reads no citation recorded.

spec:consumers.spec-studio.spec-page.cited-declaration · enabled

rule.designView line 49 · specs/consumers/spec-studio.spec-page.sdp.md:49
The Design view panel draws the requirement drawing defined by spec:consumers.spec-studio.diagram-kinds.requirement-trace in place of realization, then lists the decision records the Spec names through decidedBy with linked titles and decision text inline. The Runtime panel retains the implementation anchors' components and uses.

no example exercises it

rule.runtime line 50 · specs/consumers/spec-studio.spec-page.sdp.md:50
The Runtime panel shows the structural neighborhood of the Spec's implementation anchors: each anchor's component with its layer and context, and the units it uses, each with its file and line; runtime observation reads not tracked.

no example exercises it

rule.impact line 51 · specs/consumers/spec-studio.spec-page.sdp.md:51
The Impact panel draws the Spec's trace graph, one hop each way, and then lists what it rests on with each target's stated and derived rung, from recipe 21, and every Spec that rests on it to any depth, by distance, with the units, enabled verifiers and Packs each brings, from recipe 30.

no example exercises it

rule.diffChangeNote line 52 · specs/consumers/spec-studio.spec-page.sdp.md:52
Given a base graph, a line under the header names the base and lists the Spec's changed parts, as spec:consumers.spec-studio.diff-page states.

no example exercises it

2 unkeyed rules.

Verifying examples

A pinned declaration shows the test line that cites it · spec:consumers.spec-studio.spec-page.cited-declaration · ready floor ready

Executable Spec

Given a Spec with two pinned declarations, the first of which an anchored test file {file: "test/orders.test.ts"} cites at line {line: 12}
When the build renders the Spec's page
Then beside the first declaration the page lists {cited: "test/orders.test.ts:12"}
Then beside the second declaration the page reads {uncited: "no citation recorded"}

Open example

Example space

Given a Spec with two pinned declarations, the first of which an anchored test file {file:string} cites at line {line:number}
When the build renders the Spec's page
Then beside the first declaration the page lists {cited:string}
Then beside the second declaration the page reads {uncited:string}
UI

The panels the core does not hold, in page order.

entryAction line 56 · specs/consumers/spec-studio.spec-page.sdp.md:56
beside each keyed entry, an action that composes intent proposing new text for it, with the entry's address as the change's scope and as the address it replaces.
intentActions line 57 · specs/consumers/spec-studio.spec-page.sdp.md:57
beside each open question, actions that compose intent to resolve it or to promote it to a decision record.
behaviorAdditions line 58 · specs/consumers/spec-studio.spec-page.sdp.md:58
beside each keyed rule or flow, its exercising examples as spec:consumers.spec-studio.verification-panels lays them out, then the example cards and unwritten example cards.
constraintsAdditions line 59 · specs/consumers/spec-studio.spec-page.sdp.md:59
each constraint with its target, laid out as spec:consumers.spec-studio.verification-panels states.
citationList line 60 · specs/consumers/spec-studio.spec-page.sdp.md:60
under a cited entry, Cited at and each citing file and line with a copy action, the citing anchor's id as code when the citation names one.
verificationPanel line 61 · specs/consumers/spec-studio.spec-page.sdp.md:61
the verifier list, with run evidence given run records, then the coverage grid when the Spec owns an example space, laid out as spec:consumers.spec-studio.verification-panels states; the panel's element id is panel.verification.
designViewPanel line 62 · specs/consumers/spec-studio.spec-page.sdp.md:62
The requirement drawing, with the text equivalent naming each binding's id, source file and line under the source-text rule, then the decision records and their decision text; its element id remains panel.design-view.
runtimePanel line 63 · specs/consumers/spec-studio.spec-page.sdp.md:63
the structural neighborhood of the Spec's implementation anchors, each anchor's component and the code units it uses, with file and line, then Runtime observation: not tracked; the panel's element id is panel.runtime.
evidencePanel line 64 · specs/consumers/spec-studio.spec-page.sdp.md:64
the evidence fields and absence labels spec:consumers.spec-studio.verification-panels states, with no invented build, deployment, measurement or bill-of-materials data; the panel's element id is panel.evidence.
impactPanel line 65 · specs/consumers/spec-studio.spec-page.sdp.md:65
the trace graph, then Rests on and Rested on by lists, the second grouped by distance, each row with its units, enabled verifiers and Packs; the panel's element id is panel.impact.
Verification

Verifier bindings

  • spec:consumers.spec-studio.spec-page.cited-declaration · A pinned declaration shows the test line that cites it · declared · example enabled · specs/consumers/spec-studio.spec-page.cited-declaration.sdp.md
  • test:protocol.studio-architecture-maturity-requirement · anchored · test anchor binding present · test/studio-panels.test.ts:35
  • test:protocol.studio-panels · anchored · test anchor binding present · test/studio-s2.test.ts:256

Example space

  • file · string · declared by a Spec with two pinned declarations, the first of which an anchored test file {file} cites at line {line}
  • line · number · declared by a Spec with two pinned declarations, the first of which an anchored test file {file} cites at line {line}

Bound points

Examplefileline
spec:consumers.spec-studio.spec-page.cited-declaration"test/orders.test.ts"12

Oracle binding: present · oracle:protocol.studio-citations · test/studio-s2.test.ts:130

Coverage

file: "test/orders.test.ts" · spec:consumers.spec-studio.spec-page.cited-declaration · not enumerable

line: 12 · spec:consumers.spec-studio.spec-page.cited-declaration · not enumerable

Unbound

  • file: None
  • line: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.spec-page
The diagram as text
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order · declared Spec
  • spec:consumers.spec-studio.spec-page.cited-declaration: A pinned declaration shows the test line that cites it · declared Spec
  • spec:consumers.spec-studio.spec-page.core: A Spec page's core shows the whole Spec, with an anchor for every entry · declared Spec
  • spec:consumers.spec-studio.verification-panels: The panels for examples, targets, verifiers and evidence · declared Spec
  • spec:consumers.spec-studio.verification-panels.rule-coverage: Each keyed rule shows the examples that exercise it, or that none does · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.studio-requirement-view: selects Spec refiners, verifying examples and their recorded bindings · anchored code · src/projections/studio/pages/requirement-view.ts:8
  • impl:protocol.studio-run-rows: renders recipe 45 file rows shared by the runs page and verification panel · anchored code · src/projections/studio/pages/run-rows.ts:69
  • impl:protocol.studio-spec-page: renders Spec intent, relations and realization bindings · anchored code · src/projections/studio/pages/spec-page.ts:201
  • impl:protocol.studio-spec-structure: renders requirement and trace diagrams and the recorded structural neighborhood · anchored code · src/projections/studio/pages/spec-structure.ts:44
  • impl:protocol.studio-verification-panels: renders rule coverage, example cards, constraint targets, verifiers and example-space coverage · anchored code · src/projections/studio/pages/spec-verification.ts:74
  • oracle:protocol.studio-citations: oracle:protocol.studio-citations · anchored oracle binding · test/studio-s2.test.ts:130
  • oracle:protocol.studio-rule-coverage: oracle:protocol.studio-rule-coverage · anchored oracle binding · test/studio-s2.test.ts:193
  • test:protocol.studio-architecture-maturity-requirement: test:protocol.studio-architecture-maturity-requirement · anchored test binding · binding present · test/studio-panels.test.ts:35
  • test:protocol.studio-cited-declaration: test:protocol.studio-cited-declaration · anchored test binding · binding present · test/studio-s2.test.ts:139
  • test:protocol.studio-pages: test:protocol.studio-pages · anchored test binding · binding present · test/studio-pages.test.ts:18
  • test:protocol.studio-panels: test:protocol.studio-panels · anchored test binding · binding present · test/studio-s2.test.ts:256
  • test:protocol.studio-rule-coverage: test:protocol.studio-rule-coverage · anchored test binding · binding present · test/studio-s2.test.ts:220
  • spec:consumers.spec-studio.spec-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.spec-page.cited-declaration refines spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.spec-page.cited-declaration verifies spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.spec-page.core refines spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.verification-panels refines spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.verification-panels.rule-coverage refines spec:consumers.spec-studio.verification-panels · declared
  • spec:consumers.spec-studio.verification-panels.rule-coverage verifies spec:consumers.spec-studio.verification-panels · declared
  • impl:protocol.studio-requirement-view satisfies spec:consumers.spec-studio.spec-page · anchored
  • impl:protocol.studio-run-rows satisfies spec:consumers.spec-studio.verification-panels · anchored
  • impl:protocol.studio-spec-page satisfies spec:consumers.spec-studio.spec-page.core · anchored
  • impl:protocol.studio-spec-page satisfies spec:consumers.spec-studio.spec-page · anchored
  • impl:protocol.studio-spec-structure satisfies spec:consumers.spec-studio.spec-page · anchored
  • impl:protocol.studio-verification-panels satisfies spec:consumers.spec-studio.verification-panels · anchored
  • oracle:protocol.studio-citations models spec:consumers.spec-studio.spec-page · anchored
  • oracle:protocol.studio-rule-coverage models spec:consumers.spec-studio.verification-panels · anchored
  • test:protocol.studio-architecture-maturity-requirement verifies spec:consumers.spec-studio.spec-page · anchored
  • test:protocol.studio-cited-declaration verifies spec:consumers.spec-studio.spec-page.cited-declaration · anchored
  • test:protocol.studio-pages verifies spec:consumers.spec-studio.spec-page.core · anchored
  • test:protocol.studio-panels verifies spec:consumers.spec-studio.spec-page · anchored
  • test:protocol.studio-panels verifies spec:consumers.spec-studio.verification-panels · anchored
  • test:protocol.studio-rule-coverage verifies spec:consumers.spec-studio.verification-panels.rule-coverage · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.

Decisions

  • spec:decisions.authored-entry-order

    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.

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.studio-requirement-view · selects Spec refiners, verifying examples and their recorded bindings · src/projections/studio/pages/requirement-view.ts:8

    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.studio-spec-page · renders Spec intent, relations and realization bindings · src/projections/studio/pages/spec-page.ts:201

    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.studio-spec-structure · renders requirement and trace diagrams and the recorded structural neighborhood · src/projections/studio/pages/spec-structure.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.

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.spec-studio.spec-page
  • E6: verifies · declared
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.pack-design: The Pack context carries the Pack's design
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • spec:consumers.spec-studio.diagram-kinds.requirement-trace: A requirement drawing separates intent from realization and verification
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent
  • spec:consumers.spec-studio.diff-page: The diff page shows what changed in the design since a base graph
  • spec:consumers.spec-studio.export: A Pack exports as one file, and every page prints as a document
  • spec:consumers.spec-studio.sharing: A Studio build is stamped and shared from a static host
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order
  • spec:consumers.spec-studio.spec-page.cited-declaration: A pinned declaration shows the test line that cites it
  • spec:consumers.spec-studio.spec-page.core: A Spec page's core shows the whole Spec, with an anchor for every entry
  • spec:consumers.spec-studio.verification-panels: The panels for examples, targets, verifiers and evidence
  • spec:decisions.authored-entry-order: The Design Review renders open-section entries as a list
  • spec:extraction.entry-citations: The graph records where anchored source cites an entry address
  • spec:extraction.entry-locations: The graph records where each addressable entry is written
  • spec:model.open-question-fields: An open question may name who decides it, its links, a provisional reading and a re-entry trigger
  • spec:model.open-question-keys: An open question may carry a key that addresses it
  • spec:model.relation-reasons: An authored relation may carry its reason
  • spec:model.rule-keys: A rule or flow entry may carry a key that addresses it
  • spec:model.term-addresses: A Model term may carry a key that addresses it
  • spec:consumers.spec-studio.spec-page decidedBy spec:decisions.authored-entry-order · declared
  • spec:consumers.spec-studio.spec-page dependsOn spec:consumers.binding-language-views · declared
  • spec:consumers.spec-studio.spec-page dependsOn spec:consumers.derived-readiness-banner · declared
  • spec:consumers.spec-studio.spec-page dependsOn spec:consumers.pack-design · declared
  • spec:consumers.spec-studio.spec-page dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.spec-page dependsOn spec:consumers.spec-studio.diagram-kinds.requirement-trace · declared — the Design view reads the selected set and claims the requirement drawing defines
  • spec:consumers.spec-studio.spec-page dependsOn spec:consumers.spec-studio.diagrams · declared — the design view and impact panel draw requirement traceability and the one-hop trace graph
  • spec:consumers.spec-studio.spec-page dependsOn spec:consumers.spec-studio.diff-page · declared — given a base graph, the header's change note links the Spec's row on the diff page
  • spec:consumers.spec-studio.spec-page dependsOn spec:consumers.spec-studio.sharing · declared — a recorded file and line become a link only from a stamp's source template
  • spec:consumers.spec-studio.spec-page dependsOn spec:extraction.entry-citations · declared — the design section shows the source lines that cite each entry
  • spec:consumers.spec-studio.spec-page dependsOn spec:extraction.entry-locations · declared
  • spec:consumers.spec-studio.spec-page dependsOn spec:model.open-question-fields · declared
  • spec:consumers.spec-studio.spec-page dependsOn spec:model.open-question-keys · declared
  • spec:consumers.spec-studio.spec-page dependsOn spec:model.relation-reasons · declared
  • spec:consumers.spec-studio.spec-page dependsOn spec:model.rule-keys · declared
  • spec:consumers.spec-studio.spec-page dependsOn spec:model.term-addresses · declared — a keyed term's address names the element a glossary row links to
  • spec:consumers.spec-studio.spec-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.export dependsOn spec:consumers.spec-studio.spec-page · declared — an export holds each member's Spec page content
  • spec:consumers.spec-studio.spec-page.cited-declaration refines spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.spec-page.core refines spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.verification-panels refines spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.spec-page.cited-declaration verifies spec:consumers.spec-studio.spec-page · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

  • refines · spec:consumers.spec-studio · stated ready, floor ready
  • dependsOn · spec:consumers.binding-language-views · stated ready, floor ready
  • dependsOn · spec:consumers.derived-readiness-banner · stated ready, floor ready
  • dependsOn · spec:consumers.pack-design · stated ready, floor ready
  • dependsOn · spec:consumers.spec-studio.data · stated ready, floor ready
  • dependsOn · spec:consumers.spec-studio.diagram-kinds.requirement-trace · stated ready, floor ready
  • dependsOn · spec:consumers.spec-studio.diagrams · stated ready, floor ready
  • dependsOn · spec:consumers.spec-studio.diff-page · stated ready, floor ready
  • dependsOn · spec:consumers.spec-studio.sharing · stated ready, floor ready
  • dependsOn · spec:extraction.entry-citations · stated ready, floor ready
  • dependsOn · spec:extraction.entry-locations · stated ready, floor ready
  • dependsOn · spec:model.open-question-fields · stated ready, floor ready
  • dependsOn · spec:model.open-question-keys · stated ready, floor ready
  • dependsOn · spec:model.relation-reasons · stated ready, floor ready
  • dependsOn · spec:model.rule-keys · stated ready, floor ready
  • dependsOn · spec:model.term-addresses · stated ready, floor ready
  • decidedBy · spec:decisions.authored-entry-order · stated ready, floor ready

Rested on by

Distance 1

Distance 2

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingspec:decisions.authored-entry-order
spec:decisions.authored-entry-order · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.binding-language-views
spec:consumers.binding-language-views · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.derived-readiness-banner
spec:consumers.derived-readiness-banner · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.pack-design
spec:consumers.pack-design · resolves
declaredNoneNone
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.spec-studio.diagram-kinds.requirement-trace
spec:consumers.spec-studio.diagram-kinds.requirement-trace · resolves
declaredthe Design view reads the selected set and claims the requirement drawing definesNone
dependsOn · outgoingA diagram is laid out from graph values into SVG with a text equivalent
spec:consumers.spec-studio.diagrams · resolves
declaredthe design view and impact panel draw requirement traceability and the one-hop trace graphNone
dependsOn · outgoingThe diff page shows what changed in the design since a base graph
spec:consumers.spec-studio.diff-page · resolves
declaredgiven a base graph, the header's change note links the Spec's row on the diff pageNone
dependsOn · outgoingA Studio build is stamped and shared from a static host
spec:consumers.spec-studio.sharing · resolves
declareda recorded file and line become a link only from a stamp's source templateNone
dependsOn · outgoingspec:extraction.entry-citations
spec:extraction.entry-citations · resolves
declaredthe design section shows the source lines that cite each entryNone
dependsOn · outgoingspec:extraction.entry-locations
spec:extraction.entry-locations · resolves
declaredNoneNone
dependsOn · outgoingspec:model.open-question-fields
spec:model.open-question-fields · resolves
declaredNoneNone
dependsOn · outgoingspec:model.open-question-keys
spec:model.open-question-keys · resolves
declaredNoneNone
dependsOn · outgoingspec:model.relation-reasons
spec:model.relation-reasons · resolves
declaredNoneNone
dependsOn · outgoingspec:model.rule-keys
spec:model.rule-keys · resolves
declaredNoneNone
dependsOn · outgoingspec:model.term-addresses
spec:model.term-addresses · resolves
declareda keyed term's address names the element a glossary row links toNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
dependsOn · incomingA Pack exports as one file, and every page prints as a document
spec:consumers.spec-studio.export · resolves
declaredan export holds each member's Spec page contentNone
refines · incomingA pinned declaration shows the test line that cites it
spec:consumers.spec-studio.spec-page.cited-declaration · resolves
declaredNoneNone
refines · incomingA Spec page's core shows the whole Spec, with an anchor for every entry
spec:consumers.spec-studio.spec-page.core · resolves
declaredNoneNone
refines · incomingThe panels for examples, targets, verifiers and evidence
spec:consumers.spec-studio.verification-panels · resolves
declaredNoneNone
verifies · incomingA pinned declaration shows the test line that cites it
spec:consumers.spec-studio.spec-page.cited-declaration · resolves
declaredNonecitations

Bindings

Implementation binding: present

  • impl:protocol.studio-requirement-view · selects Spec refiners, verifying examples and their recorded bindings · src/projections/studio/pages/requirement-view.ts:8 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-spec-page · renders Spec intent, relations and realization bindings · src/projections/studio/pages/spec-page.ts:201 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-spec-structure · renders requirement and trace diagrams and the recorded structural neighborhood · src/projections/studio/pages/spec-structure.ts:44 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • spec:consumers.spec-studio.spec-page.cited-declaration · A pinned declaration shows the test line that cites it · declared · specs/consumers/spec-studio.spec-page.cited-declaration.sdp.md · example enabled
  • test:protocol.studio-architecture-maturity-requirement · anchored · test/studio-panels.test.ts:35 · test anchor
  • test:protocol.studio-panels · anchored · test/studio-s2.test.ts:256 · test anchor

Expected-outcome oracle: present

  • oracle:protocol.studio-citations · test/studio-s2.test.ts:130

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

29. A pinned declaration shows the test line that cites it

spec:consumers.spec-studio.spec-page.cited-declaration

A pinned declaration shows the test line that cites it

spec:consumers.spec-studio.spec-page.cited-declarationExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.spec-page.cited-declaration.sdp.md

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

Intent
outcome
Execute the citations beside pinned declarations: a cited declaration lists its citing file and line, and an uncited one says so.
assumptions
  • The world writes a root with one Spec whose Design section holds two keyed entries, each opening with a code span, and a test file that holds a specTest anchor and writes the first entry's address on its twelfth line, in the form the extractor records as a citation; it builds the page set and reads the Spec page under each declaration.
Behavior

Examples

Given a Spec with two pinned declarations, the first of which an anchored test file {file: "test/orders.test.ts"} cites at line {line: 12}
When the build renders the Spec's page
Then beside the first declaration the page lists {cited: "test/orders.test.ts:12"}
Then beside the second declaration the page reads {uncited: "no citation recorded"}
Verification

Verifier bindings

  • test:protocol.studio-cited-declaration · anchored · test anchor binding present · test/studio-s2.test.ts:139
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.spec-page.cited-declaration
The diagram as text
  • spec:consumers.spec-studio.spec-page.cited-declaration: A pinned declaration shows the test line that cites it · declared Spec
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order · declared Spec
  • test:protocol.studio-cited-declaration: test:protocol.studio-cited-declaration · anchored test binding · binding present · test/studio-s2.test.ts:139
  • spec:consumers.spec-studio.spec-page.cited-declaration refines spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.spec-page.cited-declaration verifies spec:consumers.spec-studio.spec-page · declared
  • test:protocol.studio-cited-declaration verifies spec:consumers.spec-studio.spec-page.cited-declaration · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.spec-page.cited-declaration
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order
  • spec:consumers.spec-studio.spec-page.cited-declaration: A pinned declaration shows the test line that cites it
  • spec:consumers.spec-studio.spec-page.cited-declaration refines spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.spec-page.cited-declaration verifies spec:consumers.spec-studio.spec-page · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingA Spec page shows one Spec in collapsible panels, in a fixed order
spec:consumers.spec-studio.spec-page · resolves
declaredNoneNone
verifies · outgoingA Spec page shows one Spec in collapsible panels, in a fixed order
spec:consumers.spec-studio.spec-page · resolves
declaredNonecitations

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-cited-declaration · anchored · test/studio-s2.test.ts:139 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

30. A Spec page's core shows the whole Spec, with an anchor for every entry

spec:consumers.spec-studio.spec-page.core

A Spec page's core shows the whole Spec, with an anchor for every entry

spec:consumers.spec-studio.spec-page.coreUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

Design: 8 design entries · no pinned declarations · 1 decision

Findings: no errors, no warnings

specs/consumers/spec-studio.spec-page.core.sdp.md

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

The full Spec page adds panels to this core: diagrams, a runtime neighborhood, verification and evidence panels, impact, and actions that compose intent. The core shows what the Spec context holds, as text, so a reviewer with only a link reads the whole Spec and can cite any entry by its address.

Intent
outcome
Show everything the graph holds about one Spec on one page that reads without script: its header, its sections in order with an anchor for every addressable entry, its relations both ways, its bindings and its findings.
Behavior
rule.header line 27 · specs/consumers/spec-studio.spec-page.core.sdp.md:27
The header shows the title; the id with a copy action; the kind's display label and the altitude; the stated rung beside the floor reached on one line, with the divergence banner only in the dishonest direction; the stated next rung with nothing blocks or each unmet clause and its targets; the Packs the Spec belongs to, linked; its design columns; its findings by severity; and its carrier file as text with a copy action. It shows no owner, capability, tag or last-verified time: the envelope holds none, the Packs stand for a capability, and a binding never records a run.

no example exercises it

rule.summary line 28 · specs/consumers/spec-studio.spec-page.core.sdp.md:28
A summary in words follows the header with what the header does not show: the open and blocking questions, and the implementation, verifier and oracle bindings as present or none. It repeats no rung the header shows.

no example exercises it

rule.sections line 29 · specs/consumers/spec-studio.spec-page.core.sdp.md:29
The narrative comes next, then each section the Spec carries as a panel open by default, in the order intent, behavior, constraints, model, design, decision, verification, ui, with its entries in authored order. A section the Spec lacks is absent, and the page adds no section the graph does not hold. The narrative carries the element id narrative and each section panel section.<name>, such as section.behavior.

no example exercises it

rule.entryIds line 30 · specs/consumers/spec-studio.spec-page.core.sdp.md:30
Every entry an entry address can name, a keyed Design or UI entry, a keyed rule or flow and a keyed open question, carries an element id equal to its address after the #, such as design.<key>, and shows its key and its recorded line.

no example exercises it

rule.questions line 31 · specs/consumers/spec-studio.spec-page.core.sdp.md:31
Each open question shows its blocking flag in words, its key as code with a copy action for the full entry address when it has one, its text, its decider, its links, linked, its provisional reading and its trigger when present, and its recorded line. It shows no date: git records when a line changed.

no example exercises it

rule line 32 · specs/consumers/spec-studio.spec-page.core.sdp.md:32
A gwt or gwt-vocabulary fence shows as preformatted step text, as authored.
rule.relations line 33 · specs/consumers/spec-studio.spec-page.core.sdp.md:33
Relations show both ways, each with its type, its direction, its claim, the other endpoint, linked when it is a Spec or a Pack, whether it resolves, and its reason and the rule keys it exercises when present.

no example exercises it

rule.bindings line 34 · specs/consumers/spec-studio.spec-page.core.sdp.md:34
Bindings speak binding language. The implementation binding, design reference, verifier binding and expected-outcome oracle each read present or none, and list each unit, test anchor, example or oracle by id, label, and recorded file and line as text with a copy action; a unit adds its role and component, and an example verifier says whether it is enabled. Runtime observation reads not tracked, and run results read not recorded in the graph.

no example exercises it

rule.findings line 35 · specs/consumers/spec-studio.spec-page.core.sdp.md:35
The findings that name the Spec close the page, each with its severity in words, its validator id and its message.

no example exercises it

1 unkeyed rule.

UI
headerBlock line 38 · specs/consumers/spec-studio.spec-page.core.sdp.md:38
the title as the page heading; below it a line with the id, kind, altitude, the rung badge with the floor in words, and the next rung; then the Packs, the design columns, the finding counts and the carrier file.
summaryLine line 39 · specs/consumers/spec-studio.spec-page.core.sdp.md:39
one sentence under the header.
sectionPanel line 40 · specs/consumers/spec-studio.spec-page.core.sdp.md:40
an open disclosure per section, headed with the section's name, and for Verification its mode.
entryRow line 41 · specs/consumers/spec-studio.spec-page.core.sdp.md:41
an entry's key as code, its value, and line <n> when recorded, in a definition list.
questionItem line 42 · specs/consumers/spec-studio.spec-page.core.sdp.md:42
the blocking flag in words, question.<key> as code when keyed, a copy action whose text and accessible name carry the full entry address, with no second code span of that address, the text, each present field on its own labelled line, and line <n> when recorded.
relationsTable line 43 · specs/consumers/spec-studio.spec-page.core.sdp.md:43
five columns, relation and direction, other end, claim, reason, and exercised keys, with an unresolved endpoint marked in words.
bindingsBlock line 44 · specs/consumers/spec-studio.spec-page.core.sdp.md:44
four labelled lines, each present or none with its items below it, then runtime observation and run results.
findingsList line 45 · specs/consumers/spec-studio.spec-page.core.sdp.md:45
one line per finding, the severity word first.
Verification

Verifier bindings

  • test:protocol.studio-pages · anchored · test anchor binding present · test/studio-pages.test.ts:18
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.spec-page.core
The diagram as text
  • spec:consumers.spec-studio.spec-page.core: A Spec page's core shows the whole Spec, with an anchor for every entry · declared Spec
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order · declared Spec
  • impl:protocol.studio-spec-page: renders Spec intent, relations and realization bindings · anchored code · src/projections/studio/pages/spec-page.ts:201
  • test:protocol.studio-pages: test:protocol.studio-pages · anchored test binding · binding present · test/studio-pages.test.ts:18
  • spec:consumers.spec-studio.spec-page.core refines spec:consumers.spec-studio.spec-page · declared
  • impl:protocol.studio-spec-page satisfies spec:consumers.spec-studio.spec-page.core · anchored
  • test:protocol.studio-pages verifies spec:consumers.spec-studio.spec-page.core · 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

  • spec:decisions.authored-entry-order

    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.

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.studio-spec-page · renders Spec intent, relations and realization bindings · src/projections/studio/pages/spec-page.ts:201

    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.spec-studio.spec-page.core
Relations of spec:consumers.spec-studio.spec-page.corerefines · declareddependsOn · declareddecidedBy · declaredOutgoing refinesspec:consumers.spec-studio.spec-pageA Spec page shows one Specin collapsible panels, in afixed order…consumers.spec-studio.spec-pageOutgoing dependsOnspec:consumers.spec-studio.spec-page.core.fold.Outgoing.dependsOn8 Outgoing dependsOn, folded…consumers.spec-studio.spec-page.core.fold.Outgoing.dependsOnOutgoing decidedByspec:decisions.authored-entry-orderThe Design Review rendersopen-section entries as alist…decisions.authored-entry-orderSubjectspec:consumers.spec-studio.spec-page.coreA Spec page's core showsthe whole Spec, with ananchor for every entry…consumers.spec-studio.spec-page.core
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.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order
  • spec:consumers.spec-studio.spec-page.core: A Spec page's core shows the whole Spec, with an anchor for every entry
  • spec:decisions.authored-entry-order: The Design Review renders open-section entries as a list
  • spec:extraction.entry-locations: The graph records where each addressable entry is written
  • spec:model.open-question-fields: An open question may name who decides it, its links, a provisional reading and a re-entry trigger
  • spec:model.relation-reasons: An authored relation may carry its reason
  • spec:model.rule-keys: A rule or flow entry may carry a key that addresses it
  • spec:consumers.spec-studio.spec-page.core decidedBy spec:decisions.authored-entry-order · declared
  • spec:consumers.spec-studio.spec-page.core dependsOn spec:consumers.binding-language-views · declared
  • spec:consumers.spec-studio.spec-page.core dependsOn spec:consumers.derived-readiness-banner · declared
  • spec:consumers.spec-studio.spec-page.core dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.spec-page.core dependsOn spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.spec-page.core dependsOn spec:extraction.entry-locations · declared
  • spec:consumers.spec-studio.spec-page.core dependsOn spec:model.open-question-fields · declared
  • spec:consumers.spec-studio.spec-page.core dependsOn spec:model.relation-reasons · declared
  • spec:consumers.spec-studio.spec-page.core dependsOn spec:model.rule-keys · declared
  • spec:consumers.spec-studio.spec-page.core refines spec:consumers.spec-studio.spec-page · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

  • refines · spec:consumers.spec-studio.spec-page · stated ready, floor ready
  • dependsOn · spec:consumers.binding-language-views · stated ready, floor ready
  • dependsOn · spec:consumers.derived-readiness-banner · stated ready, floor ready
  • dependsOn · spec:consumers.spec-studio.data · stated ready, floor ready
  • dependsOn · spec:consumers.spec-studio.shell · stated ready, floor ready
  • dependsOn · spec:extraction.entry-locations · stated ready, floor ready
  • dependsOn · spec:model.open-question-fields · stated ready, floor ready
  • dependsOn · spec:model.relation-reasons · stated ready, floor ready
  • dependsOn · spec:model.rule-keys · stated ready, floor ready
  • decidedBy · spec:decisions.authored-entry-order · stated ready, floor ready

Rested on by

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingspec:decisions.authored-entry-order
spec:decisions.authored-entry-order · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.binding-language-views
spec:consumers.binding-language-views · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.derived-readiness-banner
spec:consumers.derived-readiness-banner · resolves
declaredNoneNone
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
dependsOn · outgoingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredNoneNone
dependsOn · outgoingspec:extraction.entry-locations
spec:extraction.entry-locations · resolves
declaredNoneNone
dependsOn · outgoingspec:model.open-question-fields
spec:model.open-question-fields · resolves
declaredNoneNone
dependsOn · outgoingspec:model.relation-reasons
spec:model.relation-reasons · resolves
declaredNoneNone
dependsOn · outgoingspec:model.rule-keys
spec:model.rule-keys · resolves
declaredNoneNone
refines · outgoingA Spec page shows one Spec in collapsible panels, in a fixed order
spec:consumers.spec-studio.spec-page · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.studio-spec-page · renders Spec intent, relations and realization bindings · src/projections/studio/pages/spec-page.ts:201 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-pages · anchored · test/studio-pages.test.ts:18 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

31. The panels for examples, targets, verifiers and evidence

spec:consumers.spec-studio.verification-panels

The panels for examples, targets, verifiers and evidence

spec:consumers.spec-studio.verification-panelsUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.verification-panels.sdp.md

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

The graph records that a verifier binding exists and never a run, and a static page runs nothing, so the panels show bindings and offer no run of an example. A run result shows only when the build was given run records, and then as evidence from a test file. No Spec designs a source for build attestations, deployments or bills of materials, so each reads not tracked. Moving a constraint target on a slider and running a scenario harness wait for designs of their own, as the HTML surface decision records; a panel action composes intent instead.

Intent
outcome
Show on a Spec page how far each example, constraint target and verifier goes, and what runtime evidence exists, without stating more than the graph records.
Behavior
rule.executableSpec line 29 · specs/consumers/spec-studio.verification-panels.sdp.md:29
An example card shows the example's verifier as a binding that exists, and the example as an Executable Spec when a test anchor binds it, never as a test that passed.

no example exercises it

rule.bindingsOnly line 30 · specs/consumers/spec-studio.verification-panels.sdp.md:30
A panel shows verifier bindings and states no run result of its own; with the run records input, a verifier's row adds the results recipe 45 joins from its test file, labelled as external run evidence from that file, as spec:observation.run-evidence states, and never as the verifier's verdict.

no example exercises it

rule.evidenceNotTracked line 31 · specs/consumers/spec-studio.verification-panels.sdp.md:31
The evidence panel shows only runtime evidence the graph records, and reads not tracked while no delivery fact records an observation.

no example exercises it

rule.composeActions line 32 · specs/consumers/spec-studio.verification-panels.sdp.md:32
Each panel action gathers intent in the composing panel, scoped to the Spec, the example or the entry it sits beside, and changes nothing on the page.

no example exercises it

rule.ruleCoverage line 33 · specs/consumers/spec-studio.verification-panels.sdp.md:33
Beside each keyed rule or flow, the panel lists the examples recipe 34 reports exercising it, each linked with enabled or not enabled in words, and a keyed rule no example exercises reads no example exercises it; the unkeyed rules are counted after the list.

spec:consumers.spec-studio.verification-panels.rule-coverage · enabled

rule.coverageGrid line 34 · specs/consumers/spec-studio.verification-panels.sdp.md:34
A Spec that owns an example space shows recipe 44's coverage: each enumerable slot with each of its declared values and the examples that bind it, a value no example binds reading no example; each other slot with the values its examples bind and the words not enumerable; and the examples that leave a slot unbound.

no example exercises it

0 unkeyed rules.

Verifying examples

Each keyed rule shows the examples that exercise it, or that none does · spec:consumers.spec-studio.verification-panels.rule-coverage · ready floor ready

Executable Spec

Given a Spec whose keyed rule {exercisedKey: "paid"} an enabled example exercises and whose keyed rule {otherKey: "refunded"} no example exercises
When the build renders the Spec's page
Then beside the first rule the panel lists the example as {enabledWords: "enabled"}
Then beside the second rule the panel reads {unexercised: "no example exercises it"}

Open example

Example space

Given a Spec whose keyed rule {exercisedKey:string} an enabled example exercises and whose keyed rule {otherKey:string} no example exercises
When the build renders the Spec's page
Then beside the first rule the panel lists the example as {enabledWords:"enabled"|"not enabled"}
Then beside the second rule the panel reads {unexercised:string}
UI

The panels' parts in page order.

ruleList line 38 · specs/consumers/spec-studio.verification-panels.sdp.md:38
rules and flows in authored order, each keyed entry with its rule address, recorded carrier line and the examples that exercise it, followed by the example cards; an unrecorded line stays absent.
exampleCard line 39 · specs/consumers/spec-studio.verification-panels.sdp.md:39
one card per example that verifies the Spec: its title linked; its stated readiness and whether it is an Executable Spec; its given, when and then steps as preformatted text with their bound values; and actions to open the example's page and to compose intent to edit it.
unwrittenExampleCard line 40 · specs/consumers/spec-studio.verification-panels.sdp.md:40
an example with no given, when and then steps yet says so, and offers an action that composes intent proposing them.
constraintTarget line 41 · specs/consumers/spec-studio.verification-panels.sdp.md:41
each constraint with its flavor, its statement and its target as authored, and a measured value only when the graph records one, otherwise not tracked, with an action that composes intent to change the target.
unsetTarget line 42 · specs/consumers/spec-studio.verification-panels.sdp.md:42
a constraint with no target says so, and offers an action that composes intent proposing one.
verifierList line 43 · specs/consumers/spec-studio.verification-panels.sdp.md:43
each verifier with its id, its binding, and its recorded repository-relative file and line as text, as spec:consumers.spec-studio.spec-page#rule.sourceText states, no line invented for a verifier the graph does not locate; given run records, under each verifier the results joined from the test file that binds it, a test anchor's own file or, for an example, the file of the test anchor that verifies the example, each with its run, name, result in words and duration, headed External run evidence from <file>.
coverageGrid line 44 · specs/consumers/spec-studio.verification-panels.sdp.md:44
one table per enumerable slot, a row per declared value with the examples that bind it or no example; one line per other slot with the values bound and not enumerable; then Unbound with the examples that bind no value for a slot; and an action that composes intent proposing examples for the values no example binds.
evidencePanel line 45 · specs/consumers/spec-studio.verification-panels.sdp.md:45
runtime observation reads not tracked under the binding-language rule; build attestations, deployments and bills of materials show no payload and each reads not tracked until a Spec designs its source.
Verification

Verifier bindings

  • spec:consumers.spec-studio.verification-panels.rule-coverage · Each keyed rule shows the examples that exercise it, or that none does · declared · example enabled · specs/consumers/spec-studio.verification-panels.rule-coverage.sdp.md
  • test:protocol.studio-panels · anchored · test anchor binding present · test/studio-s2.test.ts:256

Example space

  • exercisedKey · string · declared by a Spec whose keyed rule {exercisedKey} an enabled example exercises and whose keyed rule {otherKey} no example exercises
  • otherKey · string · declared by a Spec whose keyed rule {exercisedKey} an enabled example exercises and whose keyed rule {otherKey} no example exercises

Bound points

ExampleexercisedKeyotherKey
spec:consumers.spec-studio.verification-panels.rule-coverage"paid""refunded"

Oracle binding: present · oracle:protocol.studio-rule-coverage · test/studio-s2.test.ts:193

Coverage

exercisedKey: "paid" · spec:consumers.spec-studio.verification-panels.rule-coverage · not enumerable

otherKey: "refunded" · spec:consumers.spec-studio.verification-panels.rule-coverage · not enumerable

Unbound

  • exercisedKey: None
  • otherKey: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.verification-panels
Requirement drawing for spec:consumers.spec-studio.verification-panelssatisfies · anchoredsatisfies · anchoredmodels · anchoredrefines · declaredrefines, verifies · declaredverifies · anchoredverifies · anchoredIntended Specsspec:consumers.spec-studio.verification-panelsThe panels for examples,targets, verifiers andevidence…consumers.spec-studio.verification-panelsdeclared SpecDeclared verifying examplesspec:consumers.spec-studio.verification-panels.rule-coverageEach keyed rule shows theexamples that exercise it,or that none does…consumers.spec-studio.verification-panels.rule-coveragedeclared SpecSatisfying or referencingunitsimpl:protocol.studio-run-rowsrenders recipe 45 file rowsshared by the runs page andverification panel…protocol.studio-run-rowsanchored codeimpl:protocol.studio-verification-panelsrenders rule coverage,example cards, constrainttargets, verifiers andexample-space coverage…protocol.studio-verification-panelsanchored codeTest or oracle bindingsoracle:protocol.studio-rule-coverageoracle:protocol.studio-rule-coverageoracle:protocol.studio-rule-coverageanchored oracle bindingtest:protocol.studio-panelstest:protocol.studio-panels…protocol.studio-panelsanchored test binding ·binding presenttest:protocol.studio-rule-coveragetest:protocol.studio-rule-coveragetest:protocol.studio-rule-coverageanchored test binding ·binding presentOutside the selected setspec:consumers.spec-studio.spec-pageA Spec page shows one Specin collapsible panels, in afixed order…consumers.spec-studio.spec-pagedeclared Spec
The diagram as text
  • spec:consumers.spec-studio.verification-panels: The panels for examples, targets, verifiers and evidence · declared Spec
  • spec:consumers.spec-studio.verification-panels.rule-coverage: Each keyed rule shows the examples that exercise it, or that none does · declared Spec
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order · declared Spec
  • impl:protocol.studio-run-rows: renders recipe 45 file rows shared by the runs page and verification panel · anchored code · src/projections/studio/pages/run-rows.ts:69
  • impl:protocol.studio-verification-panels: renders rule coverage, example cards, constraint targets, verifiers and example-space coverage · anchored code · src/projections/studio/pages/spec-verification.ts:74
  • oracle:protocol.studio-rule-coverage: oracle:protocol.studio-rule-coverage · anchored oracle binding · test/studio-s2.test.ts:193
  • test:protocol.studio-panels: test:protocol.studio-panels · anchored test binding · binding present · test/studio-s2.test.ts:256
  • test:protocol.studio-rule-coverage: test:protocol.studio-rule-coverage · anchored test binding · binding present · test/studio-s2.test.ts:220
  • spec:consumers.spec-studio.verification-panels refines spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.verification-panels.rule-coverage refines spec:consumers.spec-studio.verification-panels · declared
  • spec:consumers.spec-studio.verification-panels.rule-coverage verifies spec:consumers.spec-studio.verification-panels · declared
  • impl:protocol.studio-run-rows satisfies spec:consumers.spec-studio.verification-panels · anchored
  • impl:protocol.studio-verification-panels satisfies spec:consumers.spec-studio.verification-panels · anchored
  • oracle:protocol.studio-rule-coverage models spec:consumers.spec-studio.verification-panels · anchored
  • test:protocol.studio-panels verifies spec:consumers.spec-studio.verification-panels · anchored
  • test:protocol.studio-rule-coverage verifies spec:consumers.spec-studio.verification-panels.rule-coverage · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

  • spec:decisions.binding-not-liveness

    Delivery facts record bindings and enabled verifier existence; coverage gaps and human readiness practice remain explicit without becoming graph facts.

  • spec:decisions.verification-posture-not-realization

    verification.mode states the intended verification posture; enabled-verifier realization remains a derived fact and the two are never collapsed.

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.studio-run-rows · renders recipe 45 file rows shared by the runs page and verification panel · src/projections/studio/pages/run-rows.ts:69

    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.studio-verification-panels · renders rule coverage, example cards, constraint targets, verifiers and example-space coverage · src/projections/studio/pages/spec-verification.ts:74

    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.spec-studio.verification-panels
Relations of spec:consumers.spec-studio.verification-panelsrefines · declareddependsOn · declareddecidedBy · declareddecidedBy · declaredrefines · declaredverifies · declaredOutgoing refinesspec:consumers.spec-studio.spec-pageA Spec page shows one Specin collapsible panels, in afixed order…consumers.spec-studio.spec-pageOutgoing dependsOnspec:consumers.spec-studio.verification-panels.fold.Outgoing.dependsOn5 Outgoing dependsOn, folded…consumers.spec-studio.verification-panels.fold.Outgoing.dependsOnOutgoing decidedByspec:decisions.binding-not-livenessBindings state existence,not liveness…decisions.binding-not-livenessspec:decisions.verification-posture-not-realizationVerification mode statesposture, not realization…decisions.verification-posture-not-realizationSubjectspec:consumers.spec-studio.verification-panelsThe panels for examples,targets, verifiers andevidence…consumers.spec-studio.verification-panelsIncoming refinesspec:consumers.spec-studio.verification-panels.rule-coverageEach keyed rule shows theexamples that exercise it,or that none does…consumers.spec-studio.verification-panels.rule-coverage
The diagram as text
  • spec:consumers.agent-surface.example-space-coverage: Example spaces report which values their examples cover
  • spec:consumers.spec-studio.intent-panel: A composing panel on every page gathers scoped intent for an agent
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order
  • spec:consumers.spec-studio.verification-panels: The panels for examples, targets, verifiers and evidence
  • spec:consumers.spec-studio.verification-panels.rule-coverage: Each keyed rule shows the examples that exercise it, or that none does
  • spec:decisions.binding-not-liveness: Bindings state existence, not liveness
  • spec:decisions.verification-posture-not-realization: Verification mode states posture, not realization
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples
  • spec:model.rule-keys: A rule or flow entry may carry a key that addresses it
  • spec:observation.run-evidence: CI run records are joined to verifiers in a view
  • spec:consumers.spec-studio.verification-panels decidedBy spec:decisions.binding-not-liveness · declared
  • spec:consumers.spec-studio.verification-panels decidedBy spec:decisions.verification-posture-not-realization · declared
  • spec:consumers.spec-studio.verification-panels dependsOn spec:consumers.agent-surface.example-space-coverage · declared — the grid renders recipe 44's per-slot coverage
  • spec:consumers.spec-studio.verification-panels dependsOn spec:consumers.spec-studio.intent-panel · declared — each panel action gathers intent in the composing panel
  • spec:consumers.spec-studio.verification-panels dependsOn spec:extraction.executable-contracts · declared
  • spec:consumers.spec-studio.verification-panels dependsOn spec:model.rule-keys · declared
  • spec:consumers.spec-studio.verification-panels dependsOn spec:observation.run-evidence · declared — with run records, a verifier's row adds the results recipe 45 joins from its test file
  • spec:consumers.spec-studio.verification-panels refines spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.verification-panels.rule-coverage refines spec:consumers.spec-studio.verification-panels · declared
  • spec:consumers.spec-studio.verification-panels.rule-coverage verifies spec:consumers.spec-studio.verification-panels · 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

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingspec:decisions.binding-not-liveness
spec:decisions.binding-not-liveness · resolves
declaredNoneNone
decidedBy · outgoingspec:decisions.verification-posture-not-realization
spec:decisions.verification-posture-not-realization · resolves
declaredNoneNone
dependsOn · outgoingExample spaces report which values their examples cover
spec:consumers.agent-surface.example-space-coverage · resolves
declaredthe grid renders recipe 44's per-slot coverageNone
dependsOn · outgoingA composing panel on every page gathers scoped intent for an agent
spec:consumers.spec-studio.intent-panel · resolves
declaredeach panel action gathers intent in the composing panelNone
dependsOn · outgoingspec:extraction.executable-contracts
spec:extraction.executable-contracts · resolves
declaredNoneNone
dependsOn · outgoingspec:model.rule-keys
spec:model.rule-keys · resolves
declaredNoneNone
dependsOn · outgoingCI run records are joined to verifiers in a view
spec:observation.run-evidence · resolves
declaredwith run records, a verifier's row adds the results recipe 45 joins from its test fileNone
refines · outgoingA Spec page shows one Spec in collapsible panels, in a fixed order
spec:consumers.spec-studio.spec-page · resolves
declaredNoneNone
refines · incomingEach keyed rule shows the examples that exercise it, or that none does
spec:consumers.spec-studio.verification-panels.rule-coverage · resolves
declaredNoneNone
verifies · incomingEach keyed rule shows the examples that exercise it, or that none does
spec:consumers.spec-studio.verification-panels.rule-coverage · resolves
declaredNoneruleCoverage

Bindings

Implementation binding: present

  • impl:protocol.studio-run-rows · renders recipe 45 file rows shared by the runs page and verification panel · src/projections/studio/pages/run-rows.ts:69 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-verification-panels · renders rule coverage, example cards, constraint targets, verifiers and example-space coverage · src/projections/studio/pages/spec-verification.ts:74 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • spec:consumers.spec-studio.verification-panels.rule-coverage · Each keyed rule shows the examples that exercise it, or that none does · declared · specs/consumers/spec-studio.verification-panels.rule-coverage.sdp.md · example enabled
  • test:protocol.studio-panels · anchored · test/studio-s2.test.ts:256 · test anchor

Expected-outcome oracle: present

  • oracle:protocol.studio-rule-coverage · test/studio-s2.test.ts:193

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

32. Each keyed rule shows the examples that exercise it, or that none does

spec:consumers.spec-studio.verification-panels.rule-coverage

Each keyed rule shows the examples that exercise it, or that none does

spec:consumers.spec-studio.verification-panels.rule-coverageExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.verification-panels.rule-coverage.sdp.md

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

Intent
outcome
Execute rule coverage on a Spec page: an exercised rule lists its example in words, and an unexercised rule says so.
assumptions
  • The world writes a root with one behavior Spec holding the rules keyed paid and refunded and one example child that verifies it, exercising paid, bound by a specTest anchor; it builds the page set and reads the Spec page beside each keyed rule.
Behavior

Examples

Given a Spec whose keyed rule {exercisedKey: "paid"} an enabled example exercises and whose keyed rule {otherKey: "refunded"} no example exercises
When the build renders the Spec's page
Then beside the first rule the panel lists the example as {enabledWords: "enabled"}
Then beside the second rule the panel reads {unexercised: "no example exercises it"}
Verification

Verifier bindings

  • test:protocol.studio-rule-coverage · anchored · test anchor binding present · test/studio-s2.test.ts:220
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.verification-panels.rule-coverage
The diagram as text
  • spec:consumers.spec-studio.verification-panels.rule-coverage: Each keyed rule shows the examples that exercise it, or that none does · declared Spec
  • spec:consumers.spec-studio.verification-panels: The panels for examples, targets, verifiers and evidence · declared Spec
  • test:protocol.studio-rule-coverage: test:protocol.studio-rule-coverage · anchored test binding · binding present · test/studio-s2.test.ts:220
  • spec:consumers.spec-studio.verification-panels.rule-coverage refines spec:consumers.spec-studio.verification-panels · declared
  • spec:consumers.spec-studio.verification-panels.rule-coverage verifies spec:consumers.spec-studio.verification-panels · declared
  • test:protocol.studio-rule-coverage verifies spec:consumers.spec-studio.verification-panels.rule-coverage · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.verification-panels.rule-coverage
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.verification-panels: The panels for examples, targets, verifiers and evidence
  • spec:consumers.spec-studio.verification-panels.rule-coverage: Each keyed rule shows the examples that exercise it, or that none does
  • spec:consumers.spec-studio.verification-panels.rule-coverage refines spec:consumers.spec-studio.verification-panels · declared
  • spec:consumers.spec-studio.verification-panels.rule-coverage verifies spec:consumers.spec-studio.verification-panels · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingThe panels for examples, targets, verifiers and evidence
spec:consumers.spec-studio.verification-panels · resolves
declaredNoneNone
verifies · outgoingThe panels for examples, targets, verifiers and evidence
spec:consumers.spec-studio.verification-panels · resolves
declaredNoneruleCoverage

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-rule-coverage · anchored · test/studio-s2.test.ts:220 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

33. The corpus's registers are pages a reviewer opens from a link

spec:consumers.spec-studio.registers

The corpus's registers are pages a reviewer opens from a link

spec:consumers.spec-studio.registersUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.registers.sdp.md

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

A large design keeps registers, and each is a catalog recipe an agent runs. Four become pages, so a reviewer with only a link reads the same rows: the open questions and the decisions, which the owner works through; the pinned declarations, each with the source lines that cite it, which is where a reader finds the test that checks a declaration; and the design backlog, the Specs designed and not yet built, which a design ahead of its code is mostly made of. The key-family register stays a recipe: its rows depend on key prefixes a corpus chooses, the Studio takes no corpus configuration, and search already finds a coined key.

Intent
outcome
Let a person read every open question, decision, pinned declaration and designed-but-unbuilt Spec of the corpus on one page each, linked to the entries they name.
Behavior
rule.registerPages line 28 · specs/consumers/spec-studio.registers.sdp.md:28
The page set holds four register pages, each rendering one catalog recipe's answer over the whole corpus: questions.html the open-question register, recipe 20; decisions.html the decision register, recipe 31; declarations.html the pinned declarations, recipe 24, with the entry citations of recipe 51 beside them; and backlog.html the design backlog, recipe 33.

spec:consumers.spec-studio.registers.blocking-first · enabled

rule.noKeyFamilyPage line 29 · specs/consumers/spec-studio.registers.sdp.md:29
The key-family register, recipe 41, has no page.

no example exercises it

rule.questionsPage line 30 · specs/consumers/spec-studio.registers.sdp.md:30
The questions page lists the Specs with a blocking question first and then the rest, each in id order with its stated rung, and under each its questions in authored order: the blocking flag in words, the address linked to the question on the Spec page with a copy action when the question is keyed, the text, and its decider, links, provisional reading and trigger when present, a question with a trigger named a deferral.

spec:consumers.spec-studio.registers.blocking-first · enabled

rule.decisionsPage line 31 · specs/consumers/spec-studio.registers.sdp.md:31
The decisions page lists one row per decision in id order: its title linked, its id, its stated rung, the decisions it supersedes and that supersede it, the decisions it refines and that refine it with the reasons its relations state, the Specs it shapes with their count, and its keyed questions linked; a superseded decision reads superseded in words.

no example exercises it

rule.declarationsPage line 32 · specs/consumers/spec-studio.registers.sdp.md:32
The declarations page lists the pinned declarations grouped by Spec in id order, each with its key linked to the entry on the Spec page, the declaration as code, and every source line recipe 51 records citing the entry's address, as file and line with a copy action, or no citation recorded.

no example exercises it

rule.backlogPage line 33 · specs/consumers/spec-studio.registers.sdp.md:33
The backlog page lists recipe 33's rows in id order: the Spec linked, its kind and altitude, its floor reached, the clauses that hold it below its stated next rung, its design columns as counts, and the units that reference it; a sentence names how many examples and decisions the recipe leaves out.

no example exercises it

rule.registerFilters line 34 · specs/consumers/spec-studio.registers.sdp.md:34
The questions page filters by blocking flag, decider, deferral and Pack, and the declarations page by whether a citation is recorded; without script every row shows.

no example exercises it

rule.statesNothing line 35 · specs/consumers/spec-studio.registers.sdp.md:35
A register page lists and links in its recipe's order; it states no rung, verdict or priority of its own.

no example exercises it

rule.registerTotals line 36 · specs/consumers/spec-studio.registers.sdp.md:36
Each register page opens with its recipe's totals as sentences, each opening with its count.

no example exercises it

0 unkeyed rules.

Verifying examples

The questions page lists the Specs with a blocking question first · spec:consumers.spec-studio.registers.blocking-first · ready floor ready

Executable Spec

Given a Spec {blockingSpec: "spec:probe.zeta"} with a blocking open question and a Spec {otherSpec: "spec:probe.alpha"}, before it in id order, with only a non-blocking one
When the build renders the questions page
Then the page lists {first: "spec:probe.zeta"} first

Open example

Example space

Given a Spec {blockingSpec:string} with a blocking open question and a Spec {otherSpec:string}, before it in id order, with only a non-blocking one
When the build renders the questions page
Then the page lists {first:string} first
UI
questionRow line 39 · specs/consumers/spec-studio.registers.sdp.md:39
the blocking flag in words, question.<key> as a link with a copy action for the full address when keyed, the text, then each present field on its own labelled line, deferral written beside a question with a trigger.
decisionRow line 40 · specs/consumers/spec-studio.registers.sdp.md:40
the title linked, the id as code, the rung badge, then labelled lines for Supersedes, Superseded by, Refines, Refined by, Shapes and Questions, each listing ids as links and an empty line reading None, and the reasons under the relations they belong to.
declarationRow line 41 · specs/consumers/spec-studio.registers.sdp.md:41
the key as a link, the declaration in a code block, then Cited at and each citing file and line with a copy action, or no citation recorded.
backlogRow line 42 · specs/consumers/spec-studio.registers.sdp.md:42
the title linked, the id as code, then as plain text the kind, altitude, floor in words, the unmet clauses by id, <e> entries, <d> declarations, <q> open, <b> blocking, and the referencing units by id.
Verification

Verifier bindings

Example space

  • blockingSpec · string · declared by a Spec {blockingSpec} with a blocking open question and a Spec {otherSpec}, before it in id order, with only a non-blocking one
  • otherSpec · string · declared by a Spec {blockingSpec} with a blocking open question and a Spec {otherSpec}, before it in id order, with only a non-blocking one

Bound points

ExampleblockingSpecotherSpec
spec:consumers.spec-studio.registers.blocking-first"spec:probe.zeta""spec:probe.alpha"

Oracle binding: present · oracle:protocol.studio-registers · test/studio-s3.test.ts:79

Coverage

blockingSpec: "spec:probe.zeta" · spec:consumers.spec-studio.registers.blocking-first · not enumerable

otherSpec: "spec:probe.alpha" · spec:consumers.spec-studio.registers.blocking-first · not enumerable

Unbound

  • blockingSpec: None
  • otherSpec: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.registers
  • E4: refines, verifies · declared
The diagram as text
  • spec:consumers.spec-studio.registers: The corpus's registers are pages a reviewer opens from a link · declared Spec
  • spec:consumers.spec-studio.registers.blocking-first: The questions page lists the Specs with a blocking question first · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.studio-registers: renders question, decision, declaration and backlog registers · anchored code · src/projections/studio/pages/registers-page.ts:47
  • oracle:protocol.studio-registers: oracle:protocol.studio-registers · anchored oracle binding · test/studio-s3.test.ts:79
  • test:protocol.studio-registers-blocking-first: test:protocol.studio-registers-blocking-first · anchored test binding · binding present · test/studio-s3.test.ts:89
  • spec:consumers.spec-studio.registers refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.registers.blocking-first refines spec:consumers.spec-studio.registers · declared
  • spec:consumers.spec-studio.registers.blocking-first verifies spec:consumers.spec-studio.registers · declared
  • impl:protocol.studio-registers satisfies spec:consumers.spec-studio.registers · anchored
  • oracle:protocol.studio-registers models spec:consumers.spec-studio.registers · anchored
  • test:protocol.studio-registers-blocking-first verifies spec:consumers.spec-studio.registers.blocking-first · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

No decision record named.

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.studio-registers · renders question, decision, declaration and backlog registers · src/projections/studio/pages/registers-page.ts:47

    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.spec-studio.registers
  • E5: verifies · declared
Relations of spec:consumers.spec-studio.registersdependsOn · declaredrefines · declareddependsOn · declaredrefines · declaredE5Outgoing refinesspec:consumers.spec-studioThe Spec Studio is a staticHTML workbench over the onegraph…spec-studioOutgoing dependsOnspec:consumers.spec-studio.registers.fold.Outgoing.dependsOn6 Outgoing dependsOn, folded…spec-studio.registers.fold.Outgoing.dependsOnSubjectspec:consumers.spec-studio.registersThe corpus's registers arepages a reviewer opens froma link…spec-studio.registersIncoming refinesspec:consumers.spec-studio.registers.blocking-firstThe questions page liststhe Specs with a blockingquestion first…spec-studio.registers.blocking-firstIncoming dependsOnspec:consumers.spec-studio.cited-line-textA pinned declaration showsthe words of each test linethat cites it…spec-studio.cited-line-text
The diagram as text
  • spec:consumers.agent-surface.design-recipes: Design work reads its answers from catalog recipes
  • spec:consumers.agent-surface.register-recipes: Register questions stay executable graph recipes
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.cited-line-text: A pinned declaration shows the words of each test line that cites it
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • spec:consumers.spec-studio.registers: The corpus's registers are pages a reviewer opens from a link
  • spec:consumers.spec-studio.registers.blocking-first: The questions page lists the Specs with a blocking question first
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:extraction.contract-declarations: Pinned declarations give an adopter a derived module to typecheck
  • spec:extraction.entry-citations: The graph records where anchored source cites an entry address
  • spec:consumers.spec-studio.registers dependsOn spec:consumers.agent-surface.design-recipes · declared — the decisions page renders the decision register
  • spec:consumers.spec-studio.registers dependsOn spec:consumers.agent-surface.register-recipes · declared — the questions page renders the open-question register
  • spec:consumers.spec-studio.registers dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.registers dependsOn spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.registers dependsOn spec:extraction.contract-declarations · declared — the declarations page lists the pinned declarations recipe 24 reads
  • spec:consumers.spec-studio.registers dependsOn spec:extraction.entry-citations · declared — each declaration shows the source lines that cite its address
  • spec:consumers.spec-studio.registers refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.cited-line-text dependsOn spec:consumers.spec-studio.registers · declared — the declarations page lists each citing line beside its declaration
  • spec:consumers.spec-studio.registers.blocking-first refines spec:consumers.spec-studio.registers · declared
  • spec:consumers.spec-studio.registers.blocking-first verifies spec:consumers.spec-studio.registers · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

  • refines · spec:consumers.spec-studio · stated ready, floor ready
  • dependsOn · spec:consumers.agent-surface.design-recipes · stated ready, floor ready
  • dependsOn · spec:consumers.agent-surface.register-recipes · stated ready, floor ready
  • dependsOn · spec:consumers.spec-studio.data · stated ready, floor ready
  • dependsOn · spec:consumers.spec-studio.shell · stated ready, floor ready
  • dependsOn · spec:extraction.contract-declarations · stated ready, floor ready
  • dependsOn · spec:extraction.entry-citations · stated ready, floor ready

Rested on by

Distance 1

  • spec:consumers.spec-studio.cited-line-text

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:roadmap, pack:self-hosting-v1

  • spec:consumers.spec-studio.registers.blocking-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-registers-blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:consumers.agent-surface.design-recipes
spec:consumers.agent-surface.design-recipes · resolves
declaredthe decisions page renders the decision registerNone
dependsOn · outgoingspec:consumers.agent-surface.register-recipes
spec:consumers.agent-surface.register-recipes · resolves
declaredthe questions page renders the open-question registerNone
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
dependsOn · outgoingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredNoneNone
dependsOn · outgoingspec:extraction.contract-declarations
spec:extraction.contract-declarations · resolves
declaredthe declarations page lists the pinned declarations recipe 24 readsNone
dependsOn · outgoingspec:extraction.entry-citations
spec:extraction.entry-citations · resolves
declaredeach declaration shows the source lines that cite its addressNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.spec-studio.cited-line-text
spec:consumers.spec-studio.cited-line-text · resolves
declaredthe declarations page lists each citing line beside its declarationNone
refines · incomingThe questions page lists the Specs with a blocking question first
spec:consumers.spec-studio.registers.blocking-first · resolves
declaredNoneNone
verifies · incomingThe questions page lists the Specs with a blocking question first
spec:consumers.spec-studio.registers.blocking-first · resolves
declaredNoneregisterPages, questionsPage

Bindings

Implementation binding: present

  • impl:protocol.studio-registers · renders question, decision, declaration and backlog registers · src/projections/studio/pages/registers-page.ts:47 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.studio-registers · test/studio-s3.test.ts:79

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

34. The questions page lists the Specs with a blocking question first

spec:consumers.spec-studio.registers.blocking-first

The questions page lists the Specs with a blocking question first

spec:consumers.spec-studio.registers.blocking-firstExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.registers.blocking-first.sdp.md

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

Intent
outcome
Execute the questions page's order: a Spec with a blocking question comes before one with only non-blocking questions, whatever their id order.
assumptions
  • The world writes a root with the two Specs, the first holding one blocking open question and the second one non-blocking open question, builds the page set, and reads the order of the Specs on the questions page.
Behavior

Examples

Given a Spec {blockingSpec: "spec:probe.zeta"} with a blocking open question and a Spec {otherSpec: "spec:probe.alpha"}, before it in id order, with only a non-blocking one
When the build renders the questions page
Then the page lists {first: "spec:probe.zeta"} first
Verification

Verifier bindings

  • test:protocol.studio-registers-blocking-first · anchored · test anchor binding present · test/studio-s3.test.ts:89
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.registers.blocking-first
The diagram as text
  • spec:consumers.spec-studio.registers.blocking-first: The questions page lists the Specs with a blocking question first · declared Spec
  • spec:consumers.spec-studio.registers: The corpus's registers are pages a reviewer opens from a link · declared Spec
  • test:protocol.studio-registers-blocking-first: test:protocol.studio-registers-blocking-first · anchored test binding · binding present · test/studio-s3.test.ts:89
  • spec:consumers.spec-studio.registers.blocking-first refines spec:consumers.spec-studio.registers · declared
  • spec:consumers.spec-studio.registers.blocking-first verifies spec:consumers.spec-studio.registers · declared
  • test:protocol.studio-registers-blocking-first verifies spec:consumers.spec-studio.registers.blocking-first · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.registers.blocking-first
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.registers: The corpus's registers are pages a reviewer opens from a link
  • spec:consumers.spec-studio.registers.blocking-first: The questions page lists the Specs with a blocking question first
  • spec:consumers.spec-studio.registers.blocking-first refines spec:consumers.spec-studio.registers · declared
  • spec:consumers.spec-studio.registers.blocking-first verifies spec:consumers.spec-studio.registers · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingThe corpus's registers are pages a reviewer opens from a link
spec:consumers.spec-studio.registers · resolves
declaredNoneNone
verifies · outgoingThe corpus's registers are pages a reviewer opens from a link
spec:consumers.spec-studio.registers · resolves
declaredNoneregisterPages, questionsPage

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-registers-blocking-first · anchored · test/studio-s3.test.ts:89 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

35. The owner queue page orders the statements and questions only a person can settle

spec:consumers.spec-studio.owner-queue

The owner queue page orders the statements and questions only a person can settle

spec:consumers.spec-studio.owner-queueUse Case / Behavior · storyready floor ready

Packs: 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.owner-queue.sdp.md

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

A large design waits on one person: the statements its floor already allows and the questions only its owner decides. The readiness planner orders those statements, the ones they rest on first. This page shows that order to a reviewer with only a link, so the owner sees which statements can be made first and which questions hold the most. A rung stays a person's statement, so the page orders and links and states nothing.

Intent
outcome
Let the owner see, in one place, every statement the floor allows in the order that holds, and every open question only the owner settles, blocking ones first.
Behavior
rule.queuePage line 22 · specs/consumers/spec-studio.owner-queue.sdp.md:22
The page set holds queue.html, which renders recipe 46, the statement queue, over the whole corpus.

no example exercises it

rule.waitingStatements line 23 · specs/consumers/spec-studio.owner-queue.sdp.md:23
The first list holds every waiting statement in the queue's order, numbered by position: the Spec linked, its kind, its stated rung, the rung its floor allows, the waiting Specs it rests on, each linked to its own row, and its Packs; a statement that rests on no waiting Spec reads can be made now.

spec:consumers.spec-studio.owner-queue.dependency-first · enabled

rule.ownerQuestions line 24 · specs/consumers/spec-studio.owner-queue.sdp.md:24
The second list holds the open questions whose decider is owner, blocking ones first, each with its address linked to the question on its Spec page, its text, its provisional reading when present, and the Specs it holds below a rung, linked. The page reads the provisional reading from the reader by the question's Spec and key, or by its position when it has no key.

no example exercises it

rule.queueSummary line 25 · specs/consumers/spec-studio.owner-queue.sdp.md:25
The page opens with sentences the build counts from the queue's answer: the statements waiting, how many rest on no waiting Spec and can be made now, the owner's questions blocking and not blocking, and any dependency cycle the queue names.

no example exercises it

rule.queueFilters line 26 · specs/consumers/spec-studio.owner-queue.sdp.md:26
Filters narrow both lists by Pack, and the statements by the rung their floor allows; without script every row shows.

no example exercises it

rule.statesNothing line 27 · specs/consumers/spec-studio.owner-queue.sdp.md:27
The page orders and links: it states no rung, records no statement, and never presents a waiting statement as approved or a position as a priority the owner set.

no example exercises it

0 unkeyed rules.

Verifying examples

The owner queue lists a waiting statement after the one it rests on · spec:consumers.spec-studio.owner-queue.dependency-first · ready floor ready

Executable Spec

Given a Spec {dependent: "spec:probe.alpha"} that waits for a statement its floor allows and rests on a Spec {dependency: "spec:probe.zeta"} that waits for one too
When the build renders the owner queue page
Then the queue lists {first: "spec:probe.zeta"} first
Then the row of the Spec that rests on the other links it: {linked: true}

Open example

Example space

Given a Spec {dependent:string} that waits for a statement its floor allows and rests on a Spec {dependency:string} that waits for one too
When the build renders the owner queue page
Then the queue lists {first:string} first
Then the row of the Spec that rests on the other links it: {linked:boolean}
UI
statementRow line 30 · specs/consumers/spec-studio.owner-queue.sdp.md:30
<position>., the title linked, the id as code, then as plain text the kind, stated <rung>, floor allows <rung>, rests on and the waiting Specs as links to their rows or can be made now, and the Packs; the row's element id is the Spec's id.
ownerQuestionRow line 31 · specs/consumers/spec-studio.owner-queue.sdp.md:31
blocking or non-blocking in words, the address as a link with a copy action, the text, the provisional reading on its own labelled line, then holds and the held Specs as links.
Verification

Verifier bindings

Example space

  • dependent · string · declared by a Spec {dependent} that waits for a statement its floor allows and rests on a Spec {dependency} that waits for one too
  • dependency · string · declared by a Spec {dependent} that waits for a statement its floor allows and rests on a Spec {dependency} that waits for one too

Bound points

Exampledependentdependency
spec:consumers.spec-studio.owner-queue.dependency-first"spec:probe.alpha""spec:probe.zeta"

Oracle binding: present · oracle:protocol.studio-owner-queue · test/studio-s3.test.ts:132

Coverage

dependent: "spec:probe.alpha" · spec:consumers.spec-studio.owner-queue.dependency-first · not enumerable

dependency: "spec:probe.zeta" · spec:consumers.spec-studio.owner-queue.dependency-first · not enumerable

Unbound

  • dependent: None
  • dependency: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.owner-queue
The diagram as text
  • spec:consumers.spec-studio.owner-queue: The owner queue page orders the statements and questions only a person can settle · declared Spec
  • spec:consumers.spec-studio.owner-queue.dependency-first: The owner queue lists a waiting statement after the one it rests on · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.studio-owner-queue: renders waiting readiness statements and decider questions · anchored code · src/projections/studio/pages/queue-page.ts:9
  • oracle:protocol.studio-owner-queue: oracle:protocol.studio-owner-queue · anchored oracle binding · test/studio-s3.test.ts:132
  • test:protocol.studio-queue-dependency-first: test:protocol.studio-queue-dependency-first · anchored test binding · binding present · test/studio-s3.test.ts:142
  • spec:consumers.spec-studio.owner-queue refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.owner-queue.dependency-first refines spec:consumers.spec-studio.owner-queue · declared
  • spec:consumers.spec-studio.owner-queue.dependency-first verifies spec:consumers.spec-studio.owner-queue · declared
  • impl:protocol.studio-owner-queue satisfies spec:consumers.spec-studio.owner-queue · anchored
  • oracle:protocol.studio-owner-queue models spec:consumers.spec-studio.owner-queue · anchored
  • test:protocol.studio-queue-dependency-first verifies spec:consumers.spec-studio.owner-queue.dependency-first · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

No decision record named.

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.studio-owner-queue · renders waiting readiness statements and decider questions · src/projections/studio/pages/queue-page.ts:9

    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.spec-studio.owner-queue
The diagram as text
  • spec:consumers.readiness-planner: The readiness planner orders the statements a person can make
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • spec:consumers.spec-studio.owner-queue: The owner queue page orders the statements and questions only a person can settle
  • spec:consumers.spec-studio.owner-queue.dependency-first: The owner queue lists a waiting statement after the one it rests on
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:consumers.spec-studio.owner-queue dependsOn spec:consumers.readiness-planner · declared — the page renders the statement queue the planner orders
  • spec:consumers.spec-studio.owner-queue dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.owner-queue dependsOn spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.owner-queue refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.owner-queue.dependency-first refines spec:consumers.spec-studio.owner-queue · declared
  • spec:consumers.spec-studio.owner-queue.dependency-first verifies spec:consumers.spec-studio.owner-queue · 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

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:consumers.readiness-planner
spec:consumers.readiness-planner · resolves
declaredthe page renders the statement queue the planner ordersNone
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
dependsOn · outgoingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredNoneNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
refines · incomingThe owner queue lists a waiting statement after the one it rests on
spec:consumers.spec-studio.owner-queue.dependency-first · resolves
declaredNoneNone
verifies · incomingThe owner queue lists a waiting statement after the one it rests on
spec:consumers.spec-studio.owner-queue.dependency-first · resolves
declaredNonewaitingStatements

Bindings

Implementation binding: present

  • impl:protocol.studio-owner-queue · renders waiting readiness statements and decider questions · src/projections/studio/pages/queue-page.ts:9 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.studio-owner-queue · test/studio-s3.test.ts:132

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

36. The owner queue lists a waiting statement after the one it rests on

spec:consumers.spec-studio.owner-queue.dependency-first

The owner queue lists a waiting statement after the one it rests on

spec:consumers.spec-studio.owner-queue.dependency-firstExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.owner-queue.dependency-first.sdp.md

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

Intent
outcome
Execute the queue's order: a waiting statement that rests on another waiting statement comes after it, whatever their id order, and links it.
assumptions
  • The world writes a root where both Specs state scoped while their floors allow a higher rung, and the first declares dependsOn on the second; it builds the page set and reads the queue's statement rows in order.
Behavior

Examples

Given a Spec {dependent: "spec:probe.alpha"} that waits for a statement its floor allows and rests on a Spec {dependency: "spec:probe.zeta"} that waits for one too
When the build renders the owner queue page
Then the queue lists {first: "spec:probe.zeta"} first
Then the row of the Spec that rests on the other links it: {linked: true}
Verification

Verifier bindings

  • test:protocol.studio-queue-dependency-first · anchored · test anchor binding present · test/studio-s3.test.ts:142
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.owner-queue.dependency-first
The diagram as text
  • spec:consumers.spec-studio.owner-queue.dependency-first: The owner queue lists a waiting statement after the one it rests on · declared Spec
  • spec:consumers.spec-studio.owner-queue: The owner queue page orders the statements and questions only a person can settle · declared Spec
  • test:protocol.studio-queue-dependency-first: test:protocol.studio-queue-dependency-first · anchored test binding · binding present · test/studio-s3.test.ts:142
  • spec:consumers.spec-studio.owner-queue.dependency-first refines spec:consumers.spec-studio.owner-queue · declared
  • spec:consumers.spec-studio.owner-queue.dependency-first verifies spec:consumers.spec-studio.owner-queue · declared
  • test:protocol.studio-queue-dependency-first verifies spec:consumers.spec-studio.owner-queue.dependency-first · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.owner-queue.dependency-first
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.owner-queue: The owner queue page orders the statements and questions only a person can settle
  • spec:consumers.spec-studio.owner-queue.dependency-first: The owner queue lists a waiting statement after the one it rests on
  • spec:consumers.spec-studio.owner-queue.dependency-first refines spec:consumers.spec-studio.owner-queue · declared
  • spec:consumers.spec-studio.owner-queue.dependency-first verifies spec:consumers.spec-studio.owner-queue · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingThe owner queue page orders the statements and questions only a person can settle
spec:consumers.spec-studio.owner-queue · resolves
declaredNoneNone
verifies · outgoingThe owner queue page orders the statements and questions only a person can settle
spec:consumers.spec-studio.owner-queue · resolves
declaredNonewaitingStatements

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-queue-dependency-first · anchored · test/studio-s3.test.ts:142 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

37. The diff page shows what changed in the design since a base graph

spec:consumers.spec-studio.diff-page

The diff page shows what changed in the design since a base graph

spec:consumers.spec-studio.diff-pageUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.diff-page.sdp.md

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

Iterating on a design asks what changed since the last pass, or what a change proposal would change. Given the graph of an earlier commit, the build renders the design diff between it and the graph it built, so a reviewer reads the changed Specs, entries, relations and bindings, and each changed Spec's page says it changed.

Intent
outcome
Let a person read, from a link, what changed in the design between a base graph the build was given and the graph it built, down to each entry.
Behavior
rule.onlyWithBase line 22 · specs/consumers/spec-studio.diff-page.sdp.md:22
The page set holds diff.html only when the build was given a base graph; without one, no page, link or change note names a diff.

no example exercises it

rule.namesTheBase line 23 · specs/consumers/spec-studio.diff-page.sdp.md:23
The page opens by naming its input: the base graph, its label when the build was given one, its schema version and its Spec count beside the built graph's, and a sentence that the comparison reads the two graphs only.

no example exercises it

rule.diffSections line 24 · specs/consumers/spec-studio.diff-page.sdp.md:24
The page renders recipe 35's answer with detail: true over the whole corpus, in sections in this order: the totals as sentences; the Specs added, linked; the Specs removed, as their ids in text, since no page holds them; the Specs changed, each linked, with each changed part, its change in words, and for a changed value the base value and the built value as readable text blocks or lists, one above the other, never a raw JSON array; keyed changes list in the head's rule and flow order, each as one line with the entry's text rendered as on its Spec page beside its old and new address or none; the Packs whose membership, order or order meaning changed, an added Pack whose order is priority read as added as a roadmap, its added members in manifest order, a removed Pack whose order was priority read as removed as a roadmap, and a known change to priority read as now a roadmap or from priority as no longer a roadmap, stating the before and after order values for other changes of meaning; the bindings changed, kept apart and headed as derived from anchors; and the diagnostics.

spec:consumers.spec-studio.diff-page.changed-entry · enabled

rule.specChangeNotes line 25 · specs/consumers/spec-studio.diff-page.sdp.md:25
Given a base graph, each changed Spec's page adds a line under its header that names the base input, counts keyed parts apart as <n> rules keyed, wording unchanged beside any other changed parts it lists, and links to its row on the diff page; each added Spec's page says it is new since the base.

spec:consumers.spec-studio.diff-page.changed-entry · enabled

rule.packChangeNotes line 26 · specs/consumers/spec-studio.diff-page.sdp.md:26
Given a base graph, each Pack page adds a Changed since the base section after its maturity map, from recipe 35's answer for that Pack, listing its changed and added members, linked, and its own membership change, with the same roadmap and order-meaning wording as the diff page; a member whose only changes are keying is marked keyed only.

no example exercises it

rule.confersNothing line 27 · specs/consumers/spec-studio.diff-page.sdp.md:27
The page and the change notes state differences between two graphs and confer nothing: no approval, staleness or readiness, and no record that a design pass happened.

no example exercises it

0 unkeyed rules.

Verifying examples

The diff page shows a changed entry's base and built values · spec:consumers.spec-studio.diff-page.changed-entry · ready floor ready

Executable Spec

Given a base graph in which the Design entry {key: "limit"} of a Spec reads {before: "ten items"}
Given the built graph in which that entry reads {after: "twenty items"}
When the build renders the diff page
Then the Spec's row shows the base value {baseShown: "ten items"} and the built value {nowShown: "twenty items"}
Then the Spec's page carries the changed-since-base line: {changeNote: true}

Open example

Example space

Given a base graph in which the Design entry {key:string} of a Spec reads {before:string}
Given the built graph in which that entry reads {after:string}
When the build renders the diff page
Then the Spec's row shows the base value {baseShown:string} and the built value {nowShown:string}
Then the Spec's page carries the changed-since-base line: {changeNote:boolean}
UI
baseLine line 30 · specs/consumers/spec-studio.diff-page.sdp.md:30
Compared with the base graph <label>, schema <version>, <n> Specs; the built graph has schema <version>, <m> Specs., the label left out when none was given.
changedSpec line 31 · specs/consumers/spec-studio.diff-page.sdp.md:31
the title linked, the id as code, then one row per part: the part as code, its change in words, keyed changes in the head's rule and flow order, each as one line with the entry's text rendered as on its Spec page beside Base and Now addresses or none, and for a changed value two labelled blocks, Base and Now, holding readable text or lists without a raw JSON array; the block's element id is the Spec's id, which the Spec page's change note links to.
bindingRow line 32 · specs/consumers/spec-studio.diff-page.sdp.md:32
the Spec linked, then for implementing units, referencing units, enabled verifiers and delivery facts the ids added and removed, under the heading Bindings, derived from anchors.
changeNote line 33 · specs/consumers/spec-studio.diff-page.sdp.md:33
Changed since the base graph <label>: followed by <n> rules keyed, wording unchanged when any parts are keyed, using rule for one, beside the other changed parts as code, linked to the Spec's row on the diff page.
Verification

Verifier bindings

  • spec:consumers.spec-studio.diff-page.changed-entry · The diff page shows a changed entry's base and built values · declared · example enabled · specs/consumers/spec-studio.diff-page.changed-entry.sdp.md
  • test:protocol.roadmap-priority · checks Pack priority extraction, comparison and Studio change notes · anchored · test anchor binding present · test/roadmap-priority.test.ts:44

Example space

  • key · string · declared by a base graph in which the Design entry {key} of a Spec reads {before}
  • before · string · declared by a base graph in which the Design entry {key} of a Spec reads {before}
  • after · string · declared by the built graph in which that entry reads {after}

Bound points

Examplekeybeforeafter
spec:consumers.spec-studio.diff-page.changed-entry"limit""ten items""twenty items"

Oracle binding: present · oracle:protocol.studio-diff-page · test/studio-s3.test.ts:196

Coverage

key: "limit" · spec:consumers.spec-studio.diff-page.changed-entry · not enumerable

before: "ten items" · spec:consumers.spec-studio.diff-page.changed-entry · not enumerable

after: "twenty items" · spec:consumers.spec-studio.diff-page.changed-entry · not enumerable

Unbound

  • key: None
  • before: None
  • after: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.diff-page
The diagram as text
  • spec:consumers.spec-studio.diff-page: The diff page shows what changed in the design since a base graph · declared Spec
  • spec:consumers.spec-studio.diff-page.changed-entry: The diff page shows a changed entry's base and built values · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.studio-diff: renders declared design changes and binding changes separately · anchored code · src/projections/studio/pages/diff-page.ts:91
  • oracle:protocol.studio-diff-page: oracle:protocol.studio-diff-page · anchored oracle binding · test/studio-s3.test.ts:196
  • test:protocol.roadmap-priority: checks Pack priority extraction, comparison and Studio change notes · anchored test binding · binding present · test/roadmap-priority.test.ts:44
  • test:protocol.studio-diff-changed-entry: test:protocol.studio-diff-changed-entry · anchored test binding · binding present · test/studio-s3.test.ts:210
  • spec:consumers.spec-studio.diff-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.diff-page.changed-entry refines spec:consumers.spec-studio.diff-page · declared
  • spec:consumers.spec-studio.diff-page.changed-entry verifies spec:consumers.spec-studio.diff-page · declared
  • impl:protocol.studio-diff satisfies spec:consumers.spec-studio.diff-page · anchored
  • oracle:protocol.studio-diff-page models spec:consumers.spec-studio.diff-page · anchored
  • test:protocol.roadmap-priority verifies spec:consumers.spec-studio.diff-page · anchored
  • test:protocol.studio-diff-changed-entry verifies spec:consumers.spec-studio.diff-page.changed-entry · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

No decision record named.

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.studio-diff · renders declared design changes and binding changes separately · src/projections/studio/pages/diff-page.ts:91

    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.spec-studio.diff-page
The diagram as text
  • spec:consumers.design-diff: Designs are compared between a base commit and the working tree at entry grain
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • 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:consumers.spec-studio.diff-page.changed-entry: The diff page shows a changed entry's base and built values
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order
  • 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
  • spec:consumers.spec-studio.diff-page dependsOn spec:consumers.spec-studio.data.inputs · declared — the base graph reaches the page as the build's named base input
  • spec:consumers.spec-studio.diff-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.spec-page dependsOn spec:consumers.spec-studio.diff-page · declared — given a base graph, the header's change note links the Spec's row on the diff page
  • spec:consumers.spec-studio.diff-page.changed-entry refines spec:consumers.spec-studio.diff-page · declared
  • spec:consumers.spec-studio.diff-page.changed-entry verifies spec:consumers.spec-studio.diff-page · 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

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:consumers.design-diff
spec:consumers.design-diff · resolves
declaredthe page renders the design diff between the base graph and the graph builtNone
dependsOn · outgoingThe Studio reads two named inputs beside the graph, a base graph and run records
spec:consumers.spec-studio.data.inputs · resolves
declaredthe base graph reaches the page as the build's named base inputNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
dependsOn · incomingA Spec page shows one Spec in collapsible panels, in a fixed order
spec:consumers.spec-studio.spec-page · resolves
declaredgiven a base graph, the header's change note links the Spec's row on the diff pageNone
refines · incomingThe diff page shows a changed entry's base and built values
spec:consumers.spec-studio.diff-page.changed-entry · resolves
declaredNoneNone
verifies · incomingThe diff page shows a changed entry's base and built values
spec:consumers.spec-studio.diff-page.changed-entry · resolves
declaredNonediffSections, specChangeNotes

Bindings

Implementation binding: present

  • impl:protocol.studio-diff · renders declared design changes and binding changes separately · src/projections/studio/pages/diff-page.ts:91 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • spec:consumers.spec-studio.diff-page.changed-entry · The diff page shows a changed entry's base and built values · declared · specs/consumers/spec-studio.diff-page.changed-entry.sdp.md · example enabled
  • 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: present

  • oracle:protocol.studio-diff-page · test/studio-s3.test.ts:196

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

38. The diff page shows a changed entry's base and built values

spec:consumers.spec-studio.diff-page.changed-entry

The diff page shows a changed entry's base and built values

spec:consumers.spec-studio.diff-page.changed-entryExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.diff-page.changed-entry.sdp.md

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

Intent
outcome
Execute the diff page on one changed Design entry: both values side by side, and the change note on the Spec's page.
assumptions
  • The world writes a root with one Spec whose Design entry limit reads ten items, writes its graph with sdp build and keeps it outside the root as the base, changes the entry to twenty items, builds the page set with the base, and reads the Spec's row on the diff page and the line under the Spec page's header.
Behavior

Examples

Given a base graph in which the Design entry {key: "limit"} of a Spec reads {before: "ten items"}
Given the built graph in which that entry reads {after: "twenty items"}
When the build renders the diff page
Then the Spec's row shows the base value {baseShown: "ten items"} and the built value {nowShown: "twenty items"}
Then the Spec's page carries the changed-since-base line: {changeNote: true}
Verification

Verifier bindings

  • test:protocol.studio-diff-changed-entry · anchored · test anchor binding present · test/studio-s3.test.ts:210
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.diff-page.changed-entry
The diagram as text
  • spec:consumers.spec-studio.diff-page.changed-entry: The diff page shows a changed entry's base and built values · declared Spec
  • spec:consumers.spec-studio.diff-page: The diff page shows what changed in the design since a base graph · declared Spec
  • test:protocol.studio-diff-changed-entry: test:protocol.studio-diff-changed-entry · anchored test binding · binding present · test/studio-s3.test.ts:210
  • spec:consumers.spec-studio.diff-page.changed-entry refines spec:consumers.spec-studio.diff-page · declared
  • spec:consumers.spec-studio.diff-page.changed-entry verifies spec:consumers.spec-studio.diff-page · declared
  • test:protocol.studio-diff-changed-entry verifies spec:consumers.spec-studio.diff-page.changed-entry · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.diff-page.changed-entry
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.diff-page: The diff page shows what changed in the design since a base graph
  • spec:consumers.spec-studio.diff-page.changed-entry: The diff page shows a changed entry's base and built values
  • spec:consumers.spec-studio.diff-page.changed-entry refines spec:consumers.spec-studio.diff-page · declared
  • spec:consumers.spec-studio.diff-page.changed-entry verifies spec:consumers.spec-studio.diff-page · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingThe diff page shows what changed in the design since a base graph
spec:consumers.spec-studio.diff-page · resolves
declaredNoneNone
verifies · outgoingThe diff page shows what changed in the design since a base graph
spec:consumers.spec-studio.diff-page · resolves
declaredNonediffSections, specChangeNotes

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-diff-changed-entry · anchored · test/studio-s3.test.ts:210 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

39. The runs page shows the run records the build was given, joined to test files

spec:consumers.spec-studio.runs-page

The runs page shows the run records the build was given, joined to test files

spec:consumers.spec-studio.runs-pageUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

Design: 3 design entries · no pinned declarations · 1 decision

Findings: no errors, no warnings

specs/consumers/spec-studio.runs-page.sdp.md

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

CI keeps the results of its test runs; the graph records only that a verifier is bound. Given run records in the Common Test Report Format, the build shows each run and the test files it joins, so a reviewer reads what ran where the verifiers are anchored. A result is evidence from a file, never the verdict of one verifier, and never a delivery fact.

Intent
outcome
Let a person read, from a link, the test runs the build was given, which anchored test files each joins, and which records join none, each labelled as external evidence.
Behavior
rule.onlyWithRuns line 23 · specs/consumers/spec-studio.runs-page.sdp.md:23
The page set holds runs.html only when the build was given run records; without them, no page, link or row names a run.

no example exercises it

rule.namesEachRun line 24 · specs/consumers/spec-studio.runs-page.sdp.md:24
The page names each run by its position among the inputs and its own fields: its tool and version, its build name and number, its branch, its commit, and its start and stop times as recorded, a field the record lacks reading not recorded.

spec:consumers.spec-studio.runs-page.external-evidence · enabled

rule.externalEvidence line 25 · specs/consumers/spec-studio.runs-page.sdp.md:25
Every place a run shows, on this page, in the tests lens and on a Spec page, says in words that it is external run evidence from a test file, and none says that a Spec or a verifier passed.

spec:consumers.spec-studio.runs-page.external-evidence · enabled

rule.runSections line 26 · specs/consumers/spec-studio.runs-page.sdp.md:26
For each run the page shows how many of its tests passed, failed, were skipped, pending or other, in words, then each test file it joins, with the test anchors in that file, the Specs they verify, linked, and each test's name, suite, result in words and duration, then the records that join no test anchor, each with its reason, no file path or no test anchor in that file.

spec:consumers.spec-studio.runs-page.external-evidence · enabled

rule.commitShown line 27 · specs/consumers/spec-studio.runs-page.sdp.md:27
Each run shows its commit, and the page never says a run is fresh or stale; a stamp present beside the page set names the corpus commit the publishing step recorded, so a reader compares the two.

no example exercises it

Cited at

  • test/skills.test.ts:1841
rule.diagnosticsShown line 28 · specs/consumers/spec-studio.runs-page.sdp.md:28
An input recipe 45 cannot read as a run record shows with its problem, and the other inputs still show.

no example exercises it

rule.packPageSentence line 29 · specs/consumers/spec-studio.runs-page.sdp.md:29
Given run records, the sentence over a Pack page's members with no verifier binding also says that the runs page, the tests lens and the Spec pages of the Specs their files verify show the run records as external evidence from test files; it never says that no page shows a run result.

no example exercises it

0 unkeyed rules.

Verifying examples

The runs page shows a run as external evidence from a test file · spec:consumers.spec-studio.runs-page.external-evidence · ready floor ready

Executable Spec

Given one CTRF report whose tool is {tool: "vitest"} at version {version: "3.2.4"}, and whose tests in an anchored test file {passed: 2} passed and {failed: 1} failed
When the build renders the runs page
Then the run's heading reads {heading: "Run 1: external run evidence from vitest 3.2.4"}
Then the page lists {rows: 3} results under that test file
Then a page says that a Spec or a verifier passed: {verdict: false}

Open example

Example space

Given one CTRF report whose tool is {tool:string} at version {version:string}, and whose tests in an anchored test file {passed:number} passed and {failed:number} failed
When the build renders the runs page
Then the run's heading reads {heading:string}
Then the page lists {rows:number} results under that test file
Then a page says that a Spec or a verifier passed: {verdict:boolean}
UI
runHeader line 32 · specs/consumers/spec-studio.runs-page.sdp.md:32
Run <n>: external run evidence from <tool> <version>, <n> the input's position counting from 1 and the version left out when the record names none, then a line with the build, branch, commit and times, each labelled, a time written as an ISO 8601 UTC time from the milliseconds the record holds.
fileRow line 33 · specs/consumers/spec-studio.runs-page.sdp.md:33
the file as text with a copy action, the anchors in it as code, the Specs they verify as links, then a table of results with columns name, suite, result and duration. A duration shows milliseconds with at most two decimals, rounded and without trailing zeroes, as 2.84 ms, 0.46 ms or 12 ms; short headers and one-word cells never break inside a word.
unjoinedRow line 34 · specs/consumers/spec-studio.runs-page.sdp.md:34
the test's name, its file path or no file path, its result in words, and the reason.
Verification

Verifier bindings

Example space

  • tool · string · declared by one CTRF report whose tool is {tool} at version {version}, and whose tests in an anchored test file {passed} passed and {failed} failed
  • version · string · declared by one CTRF report whose tool is {tool} at version {version}, and whose tests in an anchored test file {passed} passed and {failed} failed
  • passed · number · declared by one CTRF report whose tool is {tool} at version {version}, and whose tests in an anchored test file {passed} passed and {failed} failed
  • failed · number · declared by one CTRF report whose tool is {tool} at version {version}, and whose tests in an anchored test file {passed} passed and {failed} failed

Bound points

Exampletoolversionpassedfailed
spec:consumers.spec-studio.runs-page.external-evidence"vitest""3.2.4"21

Oracle binding: present · oracle:protocol.runs-page · test/studio-s4.test.ts:360

Coverage

tool: "vitest" · spec:consumers.spec-studio.runs-page.external-evidence · not enumerable

version: "3.2.4" · spec:consumers.spec-studio.runs-page.external-evidence · not enumerable

passed: 2 · spec:consumers.spec-studio.runs-page.external-evidence · not enumerable

failed: 1 · spec:consumers.spec-studio.runs-page.external-evidence · not enumerable

Unbound

  • tool: None
  • version: None
  • passed: None
  • failed: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.runs-page
The diagram as text
  • spec:consumers.spec-studio.runs-page: The runs page shows the run records the build was given, joined to test files · declared Spec
  • spec:consumers.spec-studio.runs-page.external-evidence: The runs page shows a run as external evidence from a test file · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.studio-run-rows: renders recipe 45 file rows shared by the runs page and verification panel · anchored code · src/projections/studio/pages/run-rows.ts:69
  • impl:protocol.studio-runs-page: renders readable CTRF inputs, file results, unjoined records and diagnostics · anchored code · src/projections/studio/pages/runs-page.ts:6
  • oracle:protocol.runs-page: oracle:protocol.runs-page · anchored oracle binding · test/studio-s4.test.ts:360
  • test:protocol.run-external: test:protocol.run-external · anchored test binding · binding present · test/studio-s4.test.ts:378
  • spec:consumers.spec-studio.runs-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.runs-page.external-evidence refines spec:consumers.spec-studio.runs-page · declared
  • spec:consumers.spec-studio.runs-page.external-evidence verifies spec:consumers.spec-studio.runs-page · declared
  • impl:protocol.studio-run-rows satisfies spec:consumers.spec-studio.runs-page · anchored
  • impl:protocol.studio-runs-page satisfies spec:consumers.spec-studio.runs-page · anchored
  • oracle:protocol.runs-page models spec:consumers.spec-studio.runs-page · anchored
  • test:protocol.run-external verifies spec:consumers.spec-studio.runs-page.external-evidence · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

  • spec:decisions.binding-not-liveness

    Delivery facts record bindings and enabled verifier existence; coverage gaps and human readiness practice remain explicit without becoming graph facts.

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.studio-run-rows · renders recipe 45 file rows shared by the runs page and verification panel · src/projections/studio/pages/run-rows.ts:69

    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.studio-runs-page · renders readable CTRF inputs, file results, unjoined records and diagnostics · src/projections/studio/pages/runs-page.ts:6

    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.spec-studio.runs-page
The diagram as text
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • 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.runs-page: The runs page shows the run records the build was given, joined to test files
  • spec:consumers.spec-studio.runs-page.external-evidence: The runs page shows a run as external evidence from a test file
  • spec:decisions.binding-not-liveness: Bindings state existence, not liveness
  • spec:observation.run-evidence: CI run records are joined to verifiers in a view
  • spec:consumers.spec-studio.runs-page decidedBy spec:decisions.binding-not-liveness · declared
  • spec:consumers.spec-studio.runs-page dependsOn spec:consumers.spec-studio.data.inputs · declared — the run records reach the page as the build's named runs input
  • spec:consumers.spec-studio.runs-page dependsOn spec:observation.run-evidence · declared — the page renders the run evidence recipe 45 joins from the run records
  • spec:consumers.spec-studio.runs-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.runs-page.external-evidence refines spec:consumers.spec-studio.runs-page · declared
  • spec:consumers.spec-studio.runs-page.external-evidence verifies spec:consumers.spec-studio.runs-page · 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

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingspec:decisions.binding-not-liveness
spec:decisions.binding-not-liveness · resolves
declaredNoneNone
dependsOn · outgoingThe Studio reads two named inputs beside the graph, a base graph and run records
spec:consumers.spec-studio.data.inputs · resolves
declaredthe run records reach the page as the build's named runs inputNone
dependsOn · outgoingCI run records are joined to verifiers in a view
spec:observation.run-evidence · resolves
declaredthe page renders the run evidence recipe 45 joins from the run recordsNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
refines · incomingThe runs page shows a run as external evidence from a test file
spec:consumers.spec-studio.runs-page.external-evidence · resolves
declaredNoneNone
verifies · incomingThe runs page shows a run as external evidence from a test file
spec:consumers.spec-studio.runs-page.external-evidence · resolves
declaredNonenamesEachRun, externalEvidence, runSections

Bindings

Implementation binding: present

  • impl:protocol.studio-run-rows · renders recipe 45 file rows shared by the runs page and verification panel · src/projections/studio/pages/run-rows.ts:69 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-runs-page · renders readable CTRF inputs, file results, unjoined records and diagnostics · src/projections/studio/pages/runs-page.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.runs-page · test/studio-s4.test.ts:360

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

40. The runs page shows a run as external evidence from a test file

spec:consumers.spec-studio.runs-page.external-evidence

The runs page shows a run as external evidence from a test file

spec:consumers.spec-studio.runs-page.external-evidenceExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.runs-page.external-evidence.sdp.md

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

Intent
outcome
Execute the runs page on one report: the run named by its tool, its results under the test file they join, and no page saying a Spec or a verifier passed.
assumptions
  • The world writes a root with one Spec and one test file holding a specTest anchor that verifies it, writes one CTRF report whose three tests name that file, two passed and one failed, builds the page set with the report as run records, and reads the runs page, then the tests lens and the Spec page for any sentence saying that the Spec or the verifier passed.
Behavior

Examples

Given one CTRF report whose tool is {tool: "vitest"} at version {version: "3.2.4"}, and whose tests in an anchored test file {passed: 2} passed and {failed: 1} failed
When the build renders the runs page
Then the run's heading reads {heading: "Run 1: external run evidence from vitest 3.2.4"}
Then the page lists {rows: 3} results under that test file
Then a page says that a Spec or a verifier passed: {verdict: false}
Verification

Verifier bindings

  • test:protocol.run-external · anchored · test anchor binding present · test/studio-s4.test.ts:378
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.runs-page.external-evidence
The diagram as text
  • spec:consumers.spec-studio.runs-page.external-evidence: The runs page shows a run as external evidence from a test file · declared Spec
  • spec:consumers.spec-studio.runs-page: The runs page shows the run records the build was given, joined to test files · declared Spec
  • test:protocol.run-external: test:protocol.run-external · anchored test binding · binding present · test/studio-s4.test.ts:378
  • spec:consumers.spec-studio.runs-page.external-evidence refines spec:consumers.spec-studio.runs-page · declared
  • spec:consumers.spec-studio.runs-page.external-evidence verifies spec:consumers.spec-studio.runs-page · declared
  • test:protocol.run-external verifies spec:consumers.spec-studio.runs-page.external-evidence · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.runs-page.external-evidence
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.runs-page: The runs page shows the run records the build was given, joined to test files
  • spec:consumers.spec-studio.runs-page.external-evidence: The runs page shows a run as external evidence from a test file
  • spec:consumers.spec-studio.runs-page.external-evidence refines spec:consumers.spec-studio.runs-page · declared
  • spec:consumers.spec-studio.runs-page.external-evidence verifies spec:consumers.spec-studio.runs-page · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingThe runs page shows the run records the build was given, joined to test files
spec:consumers.spec-studio.runs-page · resolves
declaredNoneNone
verifies · outgoingThe runs page shows the run records the build was given, joined to test files
spec:consumers.spec-studio.runs-page · resolves
declaredNonenamesEachRun, externalEvidence, runSections

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.run-external · anchored · test/studio-s4.test.ts:378 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

41. CI run records are joined to verifiers in a view

spec:observation.run-evidence

CI run records are joined to verifiers in a view

spec:observation.run-evidenceUse Case / Behavior · featureready floor ready

Packs: pack:design-management-v1, pack:self-hosting-v1, pack:spec-studio-v1

Design: 7 design entries · 5 pinned declarations · 1 decision

Findings: no errors, no warnings

specs/observation/run-evidence.sdp.md

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

The original design put test reports in the graph and used passing runs to mark verification. The Protocol keeps run verdicts in CI. A resolving verifier binding confers has-verifier; showing a recorded run beside that binding confers no delivery fact. Runtime observation against a measurable target is a separate concern carried by the runtime overlay.

An adopter that keeps CI run reports needs to read them beside verifier bindings as a separately named input. Recipe 45 reads them, and the Studio admits them as one of its two named inputs. The view identifies each run by its own fields and its commit, and distinguishes evidence from a test file from a verdict for one anchored verifier. Test reporters write a test's file as an absolute path or a path from the directory they ran in, so the join reads a path's end as well as the whole path. The freshness question records what remains unsettled about comparing a run with the source being read.

Intent
problem
A reader who wants to know whether a bound verifier passed has to leave the Protocol's views for CI, and an adopter that keeps run records has no view that shows them beside the binding without mistaking them for a delivery fact.
outcome
Show a verifier's recorded runs beside its binding in a view, labelled as external input with its commit, while the graph keeps recording only that the binding exists.

Open questions

  • non-blocking · question.freshness line 28 · specs/observation/run-evidence.sdp.md:28 · How does a view say a run is stale: by its commit against the commit being read, or by whether the bound files changed between the two?Decider: ownerProvisional: Display the run and source commit identifiers when they differ, as the differing-commit rule requires; whether freshness also follows changes to bound files remains open.
Behavior
rule.graphUntouched line 33 · specs/observation/run-evidence.sdp.md:33
Run records are an input a view reads beside the graph, named by the caller; the graph never holds them, and no node, edge or delivery fact derives from them.

spec:observation.run-evidence.absolute-path-joins · enabled, spec:observation.run-evidence.unanchored-file-unjoined · enabled

rule.fileGrain line 34 · specs/observation/run-evidence.sdp.md:34
A run record joins every verifier whose test anchor sits in the test file the record names, because the file is the binding grain of both anchor forms; each test name in the record shows as a row under that verifier. The join is at file grain: a result is evidence from the verifier's file, never the result of that verifier, because a file may hold several suites and a filtered run may exercise only one.

spec:observation.run-evidence.absolute-path-joins · enabled

rule.ctrfInput line 35 · specs/observation/run-evidence.sdp.md:35
The Protocol reads run records in the Common Test Report Format, CTRF, an open JSON schema with reporters for the common test runners, passed to a view as a recipe parameter. A record joins only when its reporter fills CTRF's optional filePath field, and an adopter with records of another shape maps them into CTRF itself.

spec:observation.run-evidence.absolute-path-joins · enabled

rule.pathNormalization line 36 · specs/observation/run-evidence.sdp.md:36
A record's file path joins a test anchor's file when, with each backslash written as a slash and a leading ./ removed, it equals that file or ends with a slash followed by that file; when several anchored files match, the longest joins.

spec:observation.run-evidence.absolute-path-joins · enabled

rule.unjoinedReported line 37 · specs/observation/run-evidence.sdp.md:37
A record that names no file path, or a file that holds no test anchor, is reported as unjoined with its reason, never dropped, and an input that is not a CTRF report is reported with its problem while the other inputs still join.

spec:observation.run-evidence.unanchored-file-unjoined · enabled

rule.commitField line 38 · specs/observation/run-evidence.sdp.md:38
A run's commit is CTRF's results.environment.commit, and a run without one reads not recorded; given the commit being read, the recipe says for each run whether its commit is that commit, and never says the run is fresh or stale.

no example exercises it

rule line 39 · specs/observation/run-evidence.sdp.md:39
A view shows each run beside the verifiers anchored in its file, with its result, its commit and the input it came from, labelled as external run evidence from that file and never as has-verifier, implemented or a pass verdict for one verifier.
rule line 40 · specs/observation/run-evidence.sdp.md:40
A run whose commit differs from the commit being read shows both commits, so a reader sees how old it is.
rule.studioInput line 41 · specs/observation/run-evidence.sdp.md:41
The Design Review stays a function of the graph alone and shows no run; run evidence appears only in a view that explicitly admits records as external input: recipe 45, and the Studio built with run records, which shows them on its runs page, in its tests lens and on the Spec pages of the Specs their files verify.

no example exercises it

2 unkeyed rules.

Verifying examples

A test whose reporter wrote an absolute path joins its anchored file · spec:observation.run-evidence.absolute-path-joins · ready floor ready

Executable Spec

Given a CTRF report whose test {testName: "renders the page"} names the file {filePath: "/home/runner/work/repo/repo/test/page.test.ts"} and reports the result {status: "passed"}
Given the graph holds a test anchor in the file {anchorFile: "test/page.test.ts"} that verifies {specId: "spec:probe.page"}
When recipe 45 reads the report
Then the test joins the file {joinedFile: "test/page.test.ts"}
Then the test is unjoined for the reason {reason: "none"}
Then the delivery facts of the verified Spec are unchanged: {factsUnchanged: true}

Open example

A test in a file with no test anchor is reported as unjoined · spec:observation.run-evidence.unanchored-file-unjoined · ready floor ready

Executable Spec

Given a CTRF report whose test {testName: "counts the rows"} names the file {filePath: "test/other.test.ts"} and reports the result {status: "failed"}
Given the graph holds a test anchor in the file {anchorFile: "test/page.test.ts"} that verifies {specId: "spec:probe.page"}
When recipe 45 reads the report
Then the test joins the file {joinedFile: ""}
Then the test is unjoined for the reason {reason: "noTestAnchor"}
Then the delivery facts of the verified Spec are unchanged: {factsUnchanged: true}

Open example

Example space

Given a CTRF report whose test {testName:string} names the file {filePath:string} and reports the result {status:"passed"|"failed"|"skipped"}
Given the graph holds a test anchor in the file {anchorFile:string} that verifies {specId:string}
When recipe 45 reads the report
Then the test joins the file {joinedFile:string}
Then the test is unjoined for the reason {reason:"none"|"noFilePath"|"noTestAnchor"}
Then the delivery facts of the verified Spec are unchanged: {factsUnchanged:boolean}
Design
runsRecipe line 44 · specs/observation/run-evidence.sdp.md:44
recipe 45, run evidence, takes params.runs, one CTRF report or a list of them in input order, required; params.commit, the commit being read, optional; and params.spec, a Spec id, optional, which keeps only the files whose test anchors verify that Spec directly or through an enabled example. It returns { inputs, diagnostics, totals, files, unjoined }, and { diagnostics } alone when params.runs is missing or holds no report it can read.
ctrfFields line 45 · specs/observation/run-evidence.sdp.md:45
the recipe reads reportFormat and specVersion; results.tool.name and version; results.summary with tests, passed, failed, skipped, pending, other, start and stop; results.environment with commit, branchName, buildName and buildNumber; and per test name, status, duration, filePath and suite; it reads no other field. A readable CTRF report has reportFormat: "CTRF" and a specVersion, as the CTRF schema requires; a report missing either produces a run diagnostic and contributes no run rows.
runInput line 46 · specs/observation/run-evidence.sdp.md:46
{ index: number; tool: string | null; toolVersion: string | null; specVersion: string; commit: string | null; branch: string | null; build: string | null; start: number | null; stop: number | null; summary: { tests: number; passed: number; failed: number; skipped: number; pending: number; other: number }; sameCommit: boolean | null }, one per readable report, index its position from 0, build the build name and number joined by a space, and sameCommit null without params.commit or without a run commit.

no citation recorded

runFile line 47 · specs/observation/run-evidence.sdp.md:47
{ file: string; anchors: { id: string; verifies: string[] }[]; specs: string[]; results: { input: number; name: string; suite: string | null; status: string; duration: number | null }[] }, one per anchored test file a record joins, sorted by file, specs the Specs its anchors verify directly or through an enabled example, sorted, and results in input order and then record order, suite the record's suite path joined by > , and duration the recorded milliseconds without rounding; a view formats that number for display.

no citation recorded

unjoinedRow line 48 · specs/observation/run-evidence.sdp.md:48
{ input: number; name: string; filePath: string | null; status: string; reason: "noFilePath" | "noTestAnchor" }, in input order and then record order.

no citation recorded

runDiagnostic line 49 · specs/observation/run-evidence.sdp.md:49
{ input: number | null; problem: string }, for a missing params.runs, with input null, or for an input that is not an object, has no results.tests list, lacks reportFormat or specVersion, or names a reportFormat other than CTRF.

no citation recorded

runTotals line 50 · specs/observation/run-evidence.sdp.md:50
{ inputs: number; tests: number; joined: number; unjoined: number; files: number; specs: number }, counting the readable reports, every test they hold, the tests joined and unjoined, the files joined, and the distinct Specs those files verify.

no citation recorded

Verification

Verifier bindings

Example space

  • testName · string · declared by a CTRF report whose test {testName} names the file {filePath} and reports the result {status}
  • filePath · string · declared by a CTRF report whose test {testName} names the file {filePath} and reports the result {status}
  • status · "passed" | "failed" | "skipped" · declared by a CTRF report whose test {testName} names the file {filePath} and reports the result {status}
  • anchorFile · string · declared by the graph holds a test anchor in the file {anchorFile} that verifies {specId}
  • specId · string · declared by the graph holds a test anchor in the file {anchorFile} that verifies {specId}

Bound points

ExampletestNamefilePathstatusanchorFilespecId
spec:observation.run-evidence.absolute-path-joins"renders the page""/home/runner/work/repo/repo/test/page.test.ts""passed""test/page.test.ts""spec:probe.page"
spec:observation.run-evidence.unanchored-file-unjoined"counts the rows""test/other.test.ts""failed""test/page.test.ts""spec:probe.page"

Oracle binding: present · oracle:protocol.run-evidence · test/studio-s4.test.ts:284

Coverage

testName: "renders the page" · spec:observation.run-evidence.absolute-path-joins; "counts the rows" · spec:observation.run-evidence.unanchored-file-unjoined · not enumerable

filePath: "/home/runner/work/repo/repo/test/page.test.ts" · spec:observation.run-evidence.absolute-path-joins; "test/other.test.ts" · spec:observation.run-evidence.unanchored-file-unjoined · not enumerable

anchorFile: "test/page.test.ts" · spec:observation.run-evidence.absolute-path-joins, spec:observation.run-evidence.unanchored-file-unjoined · not enumerable

specId: "spec:probe.page" · spec:observation.run-evidence.absolute-path-joins, spec:observation.run-evidence.unanchored-file-unjoined · not enumerable

Unbound

  • testName: None
  • filePath: None
  • status: None
  • anchorFile: None
  • specId: None
Design view

Requirement drawing

Requirement drawing for spec:observation.run-evidence
Requirement drawing for spec:observation.run-evidencesatisfies · anchoredsatisfies · anchoredmodels · anchoredrefines · declaredrefines, verifies · declaredrefines, verifies · declaredverifies · anchoredverifies · anchoredIntended Specsspec:observation.run-evidenceCI run records are joinedto verifiers in a view…observation.run-evidencedeclared SpecDeclared verifying examplesspec:observation.run-evidence.absolute-path-joinsA test whose reporter wrotean absolute path joins itsanchored file…observation.run-evidence.absolute-path-joinsdeclared Specspec:observation.run-evidence.unanchored-file-unjoinedA test in a file with notest anchor is reported asunjoined…observation.run-evidence.unanchored-file-unjoineddeclared SpecSatisfying or referencingunitsimpl:protocol.run-evidence-recipeasserts realization of Runevidence indocs/agent-surface/recipes.md…protocol.run-evidence-recipeanchored codeimpl:protocol.studio-runs-pagerenders readable CTRFinputs, file results,unjoined records anddiagnostics…protocol.studio-runs-pageanchored codeTest or oracle bindingsoracle:protocol.run-evidenceoracle:protocol.run-evidence…protocol.run-evidenceanchored oracle bindingtest:protocol.run-absolutetest:protocol.run-absolute…protocol.run-absoluteanchored test binding ·binding presenttest:protocol.run-unjoinedtest:protocol.run-unjoined…protocol.run-unjoinedanchored test binding ·binding presentOutside the selected setspec:consumers.projections-modelProjections fan out fromone graph without becomingtruth stores…consumers.projections-modeldeclared Spec
The diagram as text
  • spec:observation.run-evidence: CI run records are joined to verifiers in a view · declared Spec
  • spec:observation.run-evidence.absolute-path-joins: A test whose reporter wrote an absolute path joins its anchored file · declared Spec
  • spec:observation.run-evidence.unanchored-file-unjoined: A test in a file with no test anchor is reported as unjoined · declared Spec
  • spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores · declared Spec
  • impl:protocol.run-evidence-recipe: asserts realization of Run evidence in docs/agent-surface/recipes.md · anchored code · test/recipes.test.ts:7277
  • impl:protocol.studio-runs-page: renders readable CTRF inputs, file results, unjoined records and diagnostics · anchored code · src/projections/studio/pages/runs-page.ts:6
  • oracle:protocol.run-evidence: oracle:protocol.run-evidence · anchored oracle binding · test/studio-s4.test.ts:284
  • test:protocol.run-absolute: test:protocol.run-absolute · anchored test binding · binding present · test/studio-s4.test.ts:346
  • test:protocol.run-unjoined: test:protocol.run-unjoined · anchored test binding · binding present · test/studio-s4.test.ts:353
  • spec:observation.run-evidence refines spec:consumers.projections-model · declared — run records inform a view without becoming graph facts
  • spec:observation.run-evidence.absolute-path-joins refines spec:observation.run-evidence · declared
  • spec:observation.run-evidence.absolute-path-joins verifies spec:observation.run-evidence · declared
  • spec:observation.run-evidence.unanchored-file-unjoined refines spec:observation.run-evidence · declared
  • spec:observation.run-evidence.unanchored-file-unjoined verifies spec:observation.run-evidence · declared
  • impl:protocol.run-evidence-recipe satisfies spec:observation.run-evidence · anchored
  • impl:protocol.studio-runs-page satisfies spec:observation.run-evidence · anchored
  • oracle:protocol.run-evidence models spec:observation.run-evidence · anchored
  • test:protocol.run-absolute verifies spec:observation.run-evidence.absolute-path-joins · anchored
  • test:protocol.run-unjoined verifies spec:observation.run-evidence.unanchored-file-unjoined · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

  • spec:decisions.binding-not-liveness

    Delivery facts record bindings and enabled verifier existence; coverage gaps and human readiness practice remain explicit without becoming graph facts.

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.run-evidence-recipe · asserts realization of Run evidence in docs/agent-surface/recipes.md · test/recipes.test.ts:7277

    Uses

    None.

  • impl:protocol.studio-runs-page · renders readable CTRF inputs, file results, unjoined records and diagnostics · src/projections/studio/pages/runs-page.ts:6

    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:observation.run-evidence
Relations of spec:observation.run-evidencerefines · declareddecidedBy · declareddependsOn · declaredrefines · declaredverifies · declareddependsOn · declaredrefines · declaredverifies · declaredOutgoing refinesspec:consumers.projections-modelProjections fan out fromone graph without becomingtruth stores…consumers.projections-modelOutgoing dependsOnspec:observation.run-evidence.fold.Outgoing.dependsOn2 Outgoing dependsOn, folded…observation.run-evidence.fold.Outgoing.dependsOnOutgoing decidedByspec:decisions.binding-not-livenessBindings state existence,not liveness…decisions.binding-not-livenessSubjectspec:observation.run-evidenceCI run records are joinedto verifiers in a view…observation.run-evidenceIncoming refinesspec:observation.run-evidence.absolute-path-joinsA test whose reporter wrotean absolute path joins itsanchored file…observation.run-evidence.absolute-path-joinsspec:observation.run-evidence.unanchored-file-unjoinedA test in a file with notest anchor is reported asunjoined…observation.run-evidence.unanchored-file-unjoinedIncoming dependsOnspec:observation.run-evidence.fold.Incoming.dependsOn5 Incoming dependsOn, folded…observation.run-evidence.fold.Incoming.dependsOn
The diagram as text
  • spec:consumers.agent-surface.recipe-parameters: Recipes take parameters as data and ship as runnable files
  • 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.lenses.tests: The tests lens shows how far each Spec's verification reaches
  • spec:consumers.spec-studio.runs-page: The runs page shows the run records the build was given, joined to test files
  • spec:consumers.spec-studio.verification-panels: The panels for examples, targets, verifiers and evidence
  • spec:decisions.binding-not-liveness: Bindings state existence, not liveness
  • spec:extraction.delivery-facts: Resolving bindings confer direct delivery facts
  • spec:observation.run-evidence: CI run records are joined to verifiers in a view
  • spec:observation.run-evidence.absolute-path-joins: A test whose reporter wrote an absolute path joins its anchored file
  • spec:observation.run-evidence.unanchored-file-unjoined: A test in a file with no test anchor is reported as unjoined
  • spec:protocol.roadmap-replaces-plans: The Protocol reads its next work from its roadmap and keeps its delivery record in git and its pull requests
  • spec:observation.run-evidence decidedBy spec:decisions.binding-not-liveness · declared
  • spec:observation.run-evidence dependsOn spec:consumers.agent-surface.recipe-parameters · declared — the caller passes run records to the recipe as data
  • spec:observation.run-evidence dependsOn spec:extraction.delivery-facts · declared — the view reads verifier bindings while leaving their delivery facts unchanged
  • spec:observation.run-evidence refines spec:consumers.projections-model · declared — run records inform a view without becoming graph facts
  • spec:consumers.spec-studio.data.inputs dependsOn spec:observation.run-evidence · declared — the run records input is read only as run evidence
  • spec:consumers.spec-studio.lenses.tests dependsOn spec:observation.run-evidence · declared — with run records, a row adds the results recipe 45 joins from its verifiers' files
  • spec:consumers.spec-studio.runs-page dependsOn spec:observation.run-evidence · declared — the page renders the run evidence recipe 45 joins from the run records
  • spec:consumers.spec-studio.verification-panels dependsOn spec:observation.run-evidence · declared — with run records, a verifier's row adds the results recipe 45 joins from its test file
  • spec:protocol.roadmap-replaces-plans dependsOn spec:observation.run-evidence · declared — an arc's acceptance reads run records as evidence from test files at their recorded commit
  • spec:observation.run-evidence.absolute-path-joins refines spec:observation.run-evidence · declared
  • spec:observation.run-evidence.unanchored-file-unjoined refines spec:observation.run-evidence · declared
  • spec:observation.run-evidence.absolute-path-joins verifies spec:observation.run-evidence · declared
  • spec:observation.run-evidence.unanchored-file-unjoined verifies spec:observation.run-evidence · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

  • refines · spec:consumers.projections-model · stated ready, floor ready
  • dependsOn · spec:consumers.agent-surface.recipe-parameters · stated ready, floor ready
  • dependsOn · spec:extraction.delivery-facts · stated ready, floor ready
  • decidedBy · spec:decisions.binding-not-liveness · stated ready, floor ready

Rested on by

Distance 1

Distance 2

Distance 3

Distance 4

Distance 5

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingspec:decisions.binding-not-liveness
spec:decisions.binding-not-liveness · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.agent-surface.recipe-parameters
spec:consumers.agent-surface.recipe-parameters · resolves
declaredthe caller passes run records to the recipe as dataNone
dependsOn · outgoingspec:extraction.delivery-facts
spec:extraction.delivery-facts · resolves
declaredthe view reads verifier bindings while leaving their delivery facts unchangedNone
refines · outgoingspec:consumers.projections-model
spec:consumers.projections-model · resolves
declaredrun records inform a view without becoming graph factsNone
dependsOn · incomingThe Studio reads two named inputs beside the graph, a base graph and run records
spec:consumers.spec-studio.data.inputs · resolves
declaredthe run records input is read only as run evidenceNone
dependsOn · incomingThe tests lens shows how far each Spec's verification reaches
spec:consumers.spec-studio.lenses.tests · resolves
declaredwith run records, a row adds the results recipe 45 joins from its verifiers' filesNone
dependsOn · incomingThe runs page shows the run records the build was given, joined to test files
spec:consumers.spec-studio.runs-page · resolves
declaredthe page renders the run evidence recipe 45 joins from the run recordsNone
dependsOn · incomingThe panels for examples, targets, verifiers and evidence
spec:consumers.spec-studio.verification-panels · resolves
declaredwith run records, a verifier's row adds the results recipe 45 joins from its test fileNone
dependsOn · incomingspec:protocol.roadmap-replaces-plans
spec:protocol.roadmap-replaces-plans · resolves
declaredan arc's acceptance reads run records as evidence from test files at their recorded commitNone
refines · incomingA test whose reporter wrote an absolute path joins its anchored file
spec:observation.run-evidence.absolute-path-joins · resolves
declaredNoneNone
refines · incomingA test in a file with no test anchor is reported as unjoined
spec:observation.run-evidence.unanchored-file-unjoined · resolves
declaredNoneNone
verifies · incomingA test whose reporter wrote an absolute path joins its anchored file
spec:observation.run-evidence.absolute-path-joins · resolves
declaredNonegraphUntouched, fileGrain, ctrfInput, pathNormalization
verifies · incomingA test in a file with no test anchor is reported as unjoined
spec:observation.run-evidence.unanchored-file-unjoined · resolves
declaredNonegraphUntouched, unjoinedReported

Bindings

Implementation binding: present

  • impl:protocol.run-evidence-recipe · asserts realization of Run evidence in docs/agent-surface/recipes.md · test/recipes.test.ts:7277
  • impl:protocol.studio-runs-page · renders readable CTRF inputs, file results, unjoined records and diagnostics · src/projections/studio/pages/runs-page.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.run-evidence · test/studio-s4.test.ts:284

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

42. A test whose reporter wrote an absolute path joins its anchored file

spec:observation.run-evidence.absolute-path-joins

A test whose reporter wrote an absolute path joins its anchored file

spec:observation.run-evidence.absolute-path-joinsExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/observation/run-evidence.absolute-path-joins.sdp.md

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

Intent
outcome
Execute the file-grain join through path normalization, and hold the graph untouched by it.
assumptions
  • The world writes a root with one Spec and one test file holding a specTest anchor that verifies it, derives the graph, keeps the Spec's delivery facts, runs recipe 45's shipped body with one CTRF report holding the one test, and compares the Spec's delivery facts in a graph derived again afterwards.
Behavior

Examples

Given a CTRF report whose test {testName: "renders the page"} names the file {filePath: "/home/runner/work/repo/repo/test/page.test.ts"} and reports the result {status: "passed"}
Given the graph holds a test anchor in the file {anchorFile: "test/page.test.ts"} that verifies {specId: "spec:probe.page"}
When recipe 45 reads the report
Then the test joins the file {joinedFile: "test/page.test.ts"}
Then the test is unjoined for the reason {reason: "none"}
Then the delivery facts of the verified Spec are unchanged: {factsUnchanged: true}
Verification

Verifier bindings

  • test:protocol.run-absolute · anchored · test anchor binding present · test/studio-s4.test.ts:346
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:observation.run-evidence.absolute-path-joins
The diagram as text
  • spec:observation.run-evidence.absolute-path-joins: A test whose reporter wrote an absolute path joins its anchored file · declared Spec
  • spec:observation.run-evidence: CI run records are joined to verifiers in a view · declared Spec
  • test:protocol.run-absolute: test:protocol.run-absolute · anchored test binding · binding present · test/studio-s4.test.ts:346
  • spec:observation.run-evidence.absolute-path-joins refines spec:observation.run-evidence · declared
  • spec:observation.run-evidence.absolute-path-joins verifies spec:observation.run-evidence · declared
  • test:protocol.run-absolute verifies spec:observation.run-evidence.absolute-path-joins · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:observation.run-evidence.absolute-path-joins
  • E2: verifies · declared
The diagram as text
  • spec:observation.run-evidence: CI run records are joined to verifiers in a view
  • spec:observation.run-evidence.absolute-path-joins: A test whose reporter wrote an absolute path joins its anchored file
  • spec:observation.run-evidence.absolute-path-joins refines spec:observation.run-evidence · declared
  • spec:observation.run-evidence.absolute-path-joins verifies spec:observation.run-evidence · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingCI run records are joined to verifiers in a view
spec:observation.run-evidence · resolves
declaredNoneNone
verifies · outgoingCI run records are joined to verifiers in a view
spec:observation.run-evidence · resolves
declaredNonegraphUntouched, fileGrain, ctrfInput, pathNormalization

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.run-absolute · anchored · test/studio-s4.test.ts:346 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

43. A test in a file with no test anchor is reported as unjoined

spec:observation.run-evidence.unanchored-file-unjoined

A test in a file with no test anchor is reported as unjoined

spec:observation.run-evidence.unanchored-file-unjoinedExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/observation/run-evidence.unanchored-file-unjoined.sdp.md

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

Intent
outcome
Execute the unjoined report for a record whose file holds no test anchor.
assumptions
  • The world writes a root with one Spec and one test file holding a specTest anchor that verifies it, and a CTRF report whose one test names another file; it runs recipe 45's shipped body and reads the joined files and the unjoined rows, and compares the Spec's delivery facts before and after.
Behavior

Examples

Given a CTRF report whose test {testName: "counts the rows"} names the file {filePath: "test/other.test.ts"} and reports the result {status: "failed"}
Given the graph holds a test anchor in the file {anchorFile: "test/page.test.ts"} that verifies {specId: "spec:probe.page"}
When recipe 45 reads the report
Then the test joins the file {joinedFile: ""}
Then the test is unjoined for the reason {reason: "noTestAnchor"}
Then the delivery facts of the verified Spec are unchanged: {factsUnchanged: true}
Verification

Verifier bindings

  • test:protocol.run-unjoined · anchored · test anchor binding present · test/studio-s4.test.ts:353
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:observation.run-evidence.unanchored-file-unjoined
The diagram as text
  • spec:observation.run-evidence.unanchored-file-unjoined: A test in a file with no test anchor is reported as unjoined · declared Spec
  • spec:observation.run-evidence: CI run records are joined to verifiers in a view · declared Spec
  • test:protocol.run-unjoined: test:protocol.run-unjoined · anchored test binding · binding present · test/studio-s4.test.ts:353
  • spec:observation.run-evidence.unanchored-file-unjoined refines spec:observation.run-evidence · declared
  • spec:observation.run-evidence.unanchored-file-unjoined verifies spec:observation.run-evidence · declared
  • test:protocol.run-unjoined verifies spec:observation.run-evidence.unanchored-file-unjoined · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:observation.run-evidence.unanchored-file-unjoined
  • E2: verifies · declared
The diagram as text
  • spec:observation.run-evidence: CI run records are joined to verifiers in a view
  • spec:observation.run-evidence.unanchored-file-unjoined: A test in a file with no test anchor is reported as unjoined
  • spec:observation.run-evidence.unanchored-file-unjoined refines spec:observation.run-evidence · declared
  • spec:observation.run-evidence.unanchored-file-unjoined verifies spec:observation.run-evidence · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingCI run records are joined to verifiers in a view
spec:observation.run-evidence · resolves
declaredNoneNone
verifies · outgoingCI run records are joined to verifiers in a view
spec:observation.run-evidence · resolves
declaredNonegraphUntouched, unjoinedReported

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.run-unjoined · anchored · test/studio-s4.test.ts:353 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

44. The glossary page lists every term the corpus's Specs define

spec:consumers.spec-studio.glossary-page

The glossary page lists every term the corpus's Specs define

spec:consumers.spec-studio.glossary-pageUse Case / Behavior · storyready floor ready

Packs: 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.glossary-page.sdp.md

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

A Spec's Model section defines terms, and a term may carry a key that gives it an address. The glossary page gathers every defined term on one page so a reviewer finds a word and the Spec that defines it. A corpus's ratified glossary stays the document it is; the page lists what the Specs define, so two definitions of one word read side by side.

Intent
outcome
Let a person find any term a Spec defines, read its definition, and open the Spec and the entry that define it.
Behavior
rule.terms line 23 · specs/consumers/spec-studio.glossary-page.sdp.md:23
The page set holds glossary.html, which lists every term a Spec's Model section defines, sorted by the term's lowercase form in code-unit order and then by Spec id, each with its definition as text, its Spec linked, and, when the term carries a key, its address spec:<id>#term.<key> with a copy action, linked to the term on the Spec page; the term and its definition split as spec:carrier.markdown-body-grammar states.

spec:consumers.spec-studio.glossary-page.same-word-twice · enabled

rule.sameWordTwice line 24 · specs/consumers/spec-studio.glossary-page.sdp.md:24
A word two Specs define appears once per Spec, so the definitions read side by side and the page chooses none.

spec:consumers.spec-studio.glossary-page.same-word-twice · enabled

rule.noGlossaryDocument line 25 · specs/consumers/spec-studio.glossary-page.sdp.md:25
The page renders no glossary document: it lists the terms the graph holds and nothing else.

no example exercises it

rule.letterIndex line 26 · specs/consumers/spec-studio.glossary-page.sdp.md:26
The page opens with the count of terms and of defining Specs in one sentence and the letters its terms start with, each linked to the heading over its terms.

no example exercises it

0 unkeyed rules.

Verifying examples

A word two Specs define appears once per Spec on the glossary page · spec:consumers.spec-studio.glossary-page.same-word-twice · ready floor ready

Executable Spec

Given two Specs whose Model sections define the term {term: "order"}, the first with the key {key: "order"}
When the build renders the glossary page
Then the page lists the term {rows: 2} times
Then the keyed row shows the address {address: "spec:probe.alpha#term.order"}

Open example

Example space

Given two Specs whose Model sections define the term {term:string}, the first with the key {key:string}
When the build renders the glossary page
Then the page lists the term {rows:number} times
Then the keyed row shows the address {address:string}
UI
letterHeading line 29 · specs/consumers/spec-studio.glossary-page.sdp.md:29
one heading per first letter, lowercased, with the element id letter.<letter>, over the terms that start with it; a term that starts with no letter sits under the heading # with the element id letter.other.
termRow line 30 · specs/consumers/spec-studio.glossary-page.sdp.md:30
the term in bold, its definition as text with inline code spans as code, then the Spec's title linked and, when keyed, term.<key> as a link with a copy action for the full address.
Verification

Verifier bindings

Example space

  • term · string · declared by two Specs whose Model sections define the term {term}, the first with the key {key}
  • key · string · declared by two Specs whose Model sections define the term {term}, the first with the key {key}

Bound points

Oracle binding: present · oracle:protocol.studio-glossary-page · test/studio-s3.test.ts:268

Coverage

term: "order" · spec:consumers.spec-studio.glossary-page.same-word-twice · not enumerable

key: "order" · spec:consumers.spec-studio.glossary-page.same-word-twice · not enumerable

Unbound

  • term: None
  • key: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.glossary-page
The diagram as text
  • spec:consumers.spec-studio.glossary-page: The glossary page lists every term the corpus's Specs define · declared Spec
  • spec:consumers.spec-studio.glossary-page.same-word-twice: A word two Specs define appears once per Spec on the glossary page · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.studio-glossary: renders Model terms with their entry-address links · anchored code · src/projections/studio/pages/glossary-page.ts:7
  • oracle:protocol.studio-glossary-page: oracle:protocol.studio-glossary-page · anchored oracle binding · test/studio-s3.test.ts:268
  • test:protocol.studio-glossary-same-word-twice: test:protocol.studio-glossary-same-word-twice · anchored test binding · binding present · test/studio-s3.test.ts:278
  • spec:consumers.spec-studio.glossary-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.glossary-page.same-word-twice refines spec:consumers.spec-studio.glossary-page · declared
  • spec:consumers.spec-studio.glossary-page.same-word-twice verifies spec:consumers.spec-studio.glossary-page · declared
  • impl:protocol.studio-glossary satisfies spec:consumers.spec-studio.glossary-page · anchored
  • oracle:protocol.studio-glossary-page models spec:consumers.spec-studio.glossary-page · anchored
  • test:protocol.studio-glossary-same-word-twice verifies spec:consumers.spec-studio.glossary-page.same-word-twice · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

No decision record named.

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.studio-glossary · renders Model terms with their entry-address links · src/projections/studio/pages/glossary-page.ts:7

    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.spec-studio.glossary-page
Relations of spec:consumers.spec-studio.glossary-pagedependsOn · declaredrefines · declareddependsOn · declareddependsOn · declaredrefines · declaredverifies · declaredOutgoing refinesspec:consumers.spec-studioThe Spec Studio is a staticHTML workbench over the onegraph…consumers.spec-studioOutgoing dependsOnspec:carrier.markdown-body-grammarThe Markdown body acceptsone closed form per section…carrier.markdown-body-grammarspec:consumers.spec-studio.dataThe Studio renders from thereader's values and embedsonly what its script reads…consumers.spec-studio.dataspec:model.term-addressesA Model term may carry akey that addresses it…model.term-addressesSubjectspec:consumers.spec-studio.glossary-pageThe glossary page listsevery term the corpus'sSpecs define…consumers.spec-studio.glossary-pageIncoming refinesspec:consumers.spec-studio.glossary-page.same-word-twiceA word two Specs defineappears once per Spec onthe glossary page…consumers.spec-studio.glossary-page.same-word-twice
The diagram as text
  • spec:carrier.markdown-body-grammar: The Markdown body accepts one closed form per section
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • spec:consumers.spec-studio.glossary-page: The glossary page lists every term the corpus's Specs define
  • spec:consumers.spec-studio.glossary-page.same-word-twice: A word two Specs define appears once per Spec on the glossary page
  • spec:model.term-addresses: A Model term may carry a key that addresses it
  • spec:consumers.spec-studio.glossary-page dependsOn spec:carrier.markdown-body-grammar · declared — the page splits a Model entry into its term and definition as the body grammar reads it
  • spec:consumers.spec-studio.glossary-page dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.glossary-page dependsOn spec:model.term-addresses · declared — a keyed term's address links it to its definition
  • spec:consumers.spec-studio.glossary-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.glossary-page.same-word-twice refines spec:consumers.spec-studio.glossary-page · declared
  • spec:consumers.spec-studio.glossary-page.same-word-twice verifies spec:consumers.spec-studio.glossary-page · 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

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:carrier.markdown-body-grammar
spec:carrier.markdown-body-grammar · resolves
declaredthe page splits a Model entry into its term and definition as the body grammar reads itNone
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
dependsOn · outgoingspec:model.term-addresses
spec:model.term-addresses · resolves
declareda keyed term's address links it to its definitionNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
refines · incomingA word two Specs define appears once per Spec on the glossary page
spec:consumers.spec-studio.glossary-page.same-word-twice · resolves
declaredNoneNone
verifies · incomingA word two Specs define appears once per Spec on the glossary page
spec:consumers.spec-studio.glossary-page.same-word-twice · resolves
declaredNoneterms, sameWordTwice

Bindings

Implementation binding: present

  • impl:protocol.studio-glossary · renders Model terms with their entry-address links · src/projections/studio/pages/glossary-page.ts:7 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.studio-glossary-page · test/studio-s3.test.ts:268

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

45. A word two Specs define appears once per Spec on the glossary page

spec:consumers.spec-studio.glossary-page.same-word-twice

A word two Specs define appears once per Spec on the glossary page

spec:consumers.spec-studio.glossary-page.same-word-twiceExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.glossary-page.same-word-twice.sdp.md

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

Intent
outcome
Execute the glossary on one word two Specs define: both definitions listed, and the keyed one with its address.
assumptions
  • The world writes a root with two Specs under the probe namespace, alpha and beta, each defining order in its Model section, the first with an authored key; it builds the page set and reads the glossary page's rows for the term.
Behavior

Examples

Given two Specs whose Model sections define the term {term: "order"}, the first with the key {key: "order"}
When the build renders the glossary page
Then the page lists the term {rows: 2} times
Then the keyed row shows the address {address: "spec:probe.alpha#term.order"}
Verification

Verifier bindings

  • test:protocol.studio-glossary-same-word-twice · anchored · test anchor binding present · test/studio-s3.test.ts:278
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.glossary-page.same-word-twice
The diagram as text
  • spec:consumers.spec-studio.glossary-page.same-word-twice: A word two Specs define appears once per Spec on the glossary page · declared Spec
  • spec:consumers.spec-studio.glossary-page: The glossary page lists every term the corpus's Specs define · declared Spec
  • test:protocol.studio-glossary-same-word-twice: test:protocol.studio-glossary-same-word-twice · anchored test binding · binding present · test/studio-s3.test.ts:278
  • spec:consumers.spec-studio.glossary-page.same-word-twice refines spec:consumers.spec-studio.glossary-page · declared
  • spec:consumers.spec-studio.glossary-page.same-word-twice verifies spec:consumers.spec-studio.glossary-page · declared
  • test:protocol.studio-glossary-same-word-twice verifies spec:consumers.spec-studio.glossary-page.same-word-twice · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.glossary-page.same-word-twice
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.glossary-page: The glossary page lists every term the corpus's Specs define
  • spec:consumers.spec-studio.glossary-page.same-word-twice: A word two Specs define appears once per Spec on the glossary page
  • spec:consumers.spec-studio.glossary-page.same-word-twice refines spec:consumers.spec-studio.glossary-page · declared
  • spec:consumers.spec-studio.glossary-page.same-word-twice verifies spec:consumers.spec-studio.glossary-page · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingThe glossary page lists every term the corpus's Specs define
spec:consumers.spec-studio.glossary-page · resolves
declaredNoneNone
verifies · outgoingThe glossary page lists every term the corpus's Specs define
spec:consumers.spec-studio.glossary-page · resolves
declaredNoneterms, sameWordTwice

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-glossary-same-word-twice · anchored · test/studio-s3.test.ts:278 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

46. A composing panel on every page gathers scoped intent for an agent

spec:consumers.spec-studio.intent-panel

A composing panel on every page gathers scoped intent for an agent

spec:consumers.spec-studio.intent-panelUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.intent-panel.sdp.md

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

The change-proposal contract requires the commit whose graph the person read, and a generated page set carries no commit, so a proposal's base comes from the build stamp when one is present and from the person otherwise. The panel hands off the same Markdown memo an agent gets from recipe 49 for the same proposal, so a person, a reviewer and an agent read one text. A static page holds no credentials, so the panel opens no pull request and writes nothing but its own gathered intents in the browser.

Intent
outcome
Let a person gather the changes they want while they read, each bounded by a Spec, its neighbors, a Pack or one open question, and hand them to an agent that edits source.
Behavior
rule.everyPage line 24 · specs/consumers/spec-studio.intent-panel.sdp.md:24
The composing panel is on every page, after the canvas, closed by default with its heading and the count of gathered intents; without script it says that composing needs the script.

no example exercises it

rule line 25 · specs/consumers/spec-studio.intent-panel.sdp.md:25
The panel writes no source; its hand-off follows spec:consumers.intent-composition.
rule line 26 · specs/consumers/spec-studio.intent-panel.sdp.md:26
A person gathers intents across pages before handing them off.
rule.persist line 27 · specs/consumers/spec-studio.intent-panel.sdp.md:27
Gathered intents persist in the browser's local storage under the page set's own key, so refreshing a tab on a phone loses none, and two page sets served from one host never share intents.

spec:consumers.spec-studio.intent-panel.refresh-keeps-intents · enabled

rule line 28 · specs/consumers/spec-studio.intent-panel.sdp.md:28
A composed intent names its scope by id or entry address, so the agent that receives it reads the same Spec, Pack, entry or question through the graph.
rule.handOff line 29 · specs/consumers/spec-studio.intent-panel.sdp.md:29
The panel hands its gathered intents off as one change proposal, on the change-proposal contract, and as the memo recipe 49 renders for it: the person copies the memo or the proposal as text, or saves either as a file. The page opens no pull request, because a static page holds no credentials; any pull request comes from the agent's ordinary source edit.

no example exercises it

rule.sameMemo line 30 · specs/consumers/spec-studio.intent-panel.sdp.md:30
The memo the panel writes for a proposal is byte for byte the memo recipe 49 returns for the same proposal.

no example exercises it

rule.proposalBase line 31 · specs/consumers/spec-studio.intent-panel.sdp.md:31
A proposal's base is the commit a present build stamp names, otherwise one the person supplies, and the person gives one reason for the whole proposal; without a base and a reason the panel exports its intents as scoped-intent text, and the agent that receives them writes the proposal against a commit it knows.

no example exercises it

rule.packScope line 32 · specs/consumers/spec-studio.intent-panel.sdp.md:32
A request scoped to a Pack records the members this page set renders for that Pack, and expands to them at hand-off only when the proposal's base is the commit the page set's stamp names; otherwise it stays scoped-intent text for an agent to resolve against the base. A request that changes a Pack's membership or framing, names an empty Pack or names a Pack with an unresolved member, stays scoped-intent text too, so the change-proposal contract keeps its Spec and entry scopes.

no example exercises it

rule.textApart line 33 · specs/consumers/spec-studio.intent-panel.sdp.md:33
The proposal holds only the intents its contract can carry; every intent that stays scoped-intent text is listed apart under Not in the proposal, and Copy scoped intent copies those intents, so the panel drops none. The copied text names each intent's action and recorded scope: the member Spec ids for a member change, with the Pack id as context, or the Pack id for a membership or framing change.

no example exercises it

Cited at

  • Test line · test/studio-s5.test.ts:1038 · test:protocol.studio-intent-handoff · test:protocol.studio-intents-refresh
rule.noRequest line 34 · specs/consumers/spec-studio.intent-panel.sdp.md:34
The panel requests nothing over the network and sends its intents nowhere.

no example exercises it

3 unkeyed rules.

Verifying examples

Refreshing a tab keeps every gathered intent · spec:consumers.spec-studio.intent-panel.refresh-keeps-intents · ready floor ready

Executable Spec

Given the composing panel holds {gathered: 3} gathered intents
When the person refreshes the tab
Then the composing panel holds {kept: 3} gathered intents

Open example

Example space

Given the composing panel holds {gathered:number} gathered intents
When the person refreshes the tab
Then the composing panel holds {kept:number} gathered intents
Design
storageKey line 44 · specs/consumers/spec-studio.intent-panel.sdp.md:44
sdp-studio:intents:<root path>, where the root path is the URL path of the page set's root as the page's page-root attribute resolves it, so a page set at /preview/12/ and one at /preview/13/ keep apart.

no citation recorded

intentRecord line 45 · specs/consumers/spec-studio.intent-panel.sdp.md:45
{ scope: string[]; request: string; text?: string; replaces?: string; follows?: string; pack?: string; packMembersComplete?: boolean; action: string } per gathered intent, in gathering order, where action names the composing action that gathered it, such as edit-example, and pack keeps the Pack a Pack-scoped request named, with scope holding the resolved members this page set renders for it and packMembersComplete recording whether every manifest member resolved when the request was gathered.

no citation recorded

savedFiles line 46 · specs/consumers/spec-studio.intent-panel.sdp.md:46
proposal.json holding the proposal document and proposal.md holding its memo, each saved through a link the panel writes with the download attribute.

no citation recorded

baseSource line 47 · specs/consumers/spec-studio.intent-panel.sdp.md:47
the panel reads the base from the data-corpus-commit attribute the page's sdp-stamp sets once its stamp loads, and requests no stamp of its own.
UI
gatheredIntents line 37 · specs/consumers/spec-studio.intent-panel.sdp.md:37
the intents gathered so far, headed Composing with their count, each on one line naming its scope and the change it asks for, such as adding an example or changing a constraint's target, with a button that discards it.
baseAndReason line 38 · specs/consumers/spec-studio.intent-panel.sdp.md:38
the base as code when a stamp names it, otherwise a labelled text field for a commit, then a labelled text field for the proposal's reason.
panelActions line 39 · specs/consumers/spec-studio.intent-panel.sdp.md:39
Copy memo, Copy proposal, Save memo, Save proposal and Discard all, the copy and save actions shown only when a base and a reason are present; and Copy scoped intent whenever an intent stays scoped-intent text, every intent without a base and a reason, and otherwise those the proposal cannot hold.
composingActions line 40 · specs/consumers/spec-studio.intent-panel.sdp.md:40
the actions on other panels that compose intent: propose new text for a keyed entry, resolve an open question or promote it to a decision record, propose or edit an example, propose or change a constraint target, and propose examples for values no example binds.
composeDialog line 41 · specs/consumers/spec-studio.intent-panel.sdp.md:41
a native dialog with a labelled text area for the request, a second for the exact entry text when the action proposes one, and Gather and Cancel buttons.
Verification

Verifier bindings

  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents · Refreshing a tab keeps every gathered intent · declared · example enabled · specs/consumers/spec-studio.intent-panel.refresh-keeps-intents.sdp.md
  • test:protocol.studio-intent-handoff · anchored · test anchor binding present · test/studio-s5.test.ts:407

Example space

  • gathered · number · declared by the composing panel holds {gathered} gathered intents

Bound points

Oracle binding: present · oracle:protocol.studio-intents · test/studio-s5.test.ts:239

Coverage

gathered: 3 · spec:consumers.spec-studio.intent-panel.refresh-keeps-intents · not enumerable

Unbound

  • gathered: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.intent-panel
The diagram as text
  • spec:consumers.spec-studio.intent-panel: A composing panel on every page gathers scoped intent for an agent · declared Spec
  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents: Refreshing a tab keeps every gathered intent · declared Spec
  • spec:consumers.intent-composition: Composed intent hands off on one proposal shape · declared Spec
  • impl:protocol.studio-compose: opens a native request dialog beside build-rendered scopes without changing their content · anchored code · src/studio-elements/compose.ts:13
  • impl:protocol.studio-frame: renders Studio navigation, page rails and composing controls · anchored code · src/projections/studio/pages/frame.ts:6
  • impl:protocol.studio-intent-panel: gathers ordered intents under the page-root storage key and partitions their hand-off · anchored code · src/studio-elements/intent-panel.ts:51
  • impl:protocol.studio-intent-panel-element: displays gathered requests and writes copy selections or local download links · anchored code · src/studio-elements/intent-panel-element.ts:14
  • impl:protocol.studio-scenario-editor: gathers the edited Given, When and Then as exact text scoped to its subject · anchored code · src/studio-elements/scenario-editor.ts:17
  • oracle:protocol.studio-intents: oracle:protocol.studio-intents · anchored oracle binding · test/studio-s5.test.ts:239
  • test:protocol.studio-intent-handoff: test:protocol.studio-intent-handoff · anchored test binding · binding present · test/studio-s5.test.ts:407
  • test:protocol.studio-intents-refresh: test:protocol.studio-intents-refresh · anchored test binding · binding present · test/studio-s5.test.ts:249
  • spec:consumers.spec-studio.intent-panel refines spec:consumers.intent-composition · declared
  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents refines spec:consumers.spec-studio.intent-panel · declared
  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents verifies spec:consumers.spec-studio.intent-panel · declared
  • impl:protocol.studio-compose satisfies spec:consumers.spec-studio.intent-panel · anchored
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio.intent-panel · anchored
  • impl:protocol.studio-intent-panel satisfies spec:consumers.spec-studio.intent-panel · anchored
  • impl:protocol.studio-intent-panel-element satisfies spec:consumers.spec-studio.intent-panel · anchored
  • impl:protocol.studio-scenario-editor satisfies spec:consumers.spec-studio.intent-panel · anchored
  • oracle:protocol.studio-intents models spec:consumers.spec-studio.intent-panel · anchored
  • test:protocol.studio-intent-handoff verifies spec:consumers.spec-studio.intent-panel · anchored
  • test:protocol.studio-intents-refresh verifies spec:consumers.spec-studio.intent-panel.refresh-keeps-intents · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.

Decisions

No decision record named.

Runtime
  • component:protocol.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
  • component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
  • impl:protocol.studio-compose · opens a native request dialog beside build-rendered scopes without changing their content · src/studio-elements/compose.ts:13

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6

    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.studio-intent-panel · gathers ordered intents under the page-root storage key and partitions their hand-off · src/studio-elements/intent-panel.ts:51

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-intent-panel-element · displays gathered requests and writes copy selections or local download links · src/studio-elements/intent-panel-element.ts:14

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-scenario-editor · gathers the edited Given, When and Then as exact text scoped to its subject · src/studio-elements/scenario-editor.ts:17

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.intent-panel
The diagram as text
  • spec:consumers.edit-model: Views compose scoped intent instead of patching canonical source
  • spec:consumers.intent-composition: Composed intent hands off on one proposal shape
  • spec:consumers.intent-composition.proposal: A change proposal is addressed, based and checked before it lands
  • spec:consumers.intent-composition.proposal.memo: Recipe 49 renders a change proposal as the Markdown memo a person reviews
  • spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders
  • spec:consumers.spec-studio.intent-panel: A composing panel on every page gathers scoped intent for an agent
  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents: Refreshing a tab keeps every gathered intent
  • spec:consumers.spec-studio.verification-panels: The panels for examples, targets, verifiers and evidence
  • spec:consumers.studio-on-ramp: The Studio skill teaches agents to publish, share and read the Spec Studio
  • spec:model.open-question-keys: An open question may carry a key that addresses it
  • spec:consumers.spec-studio.intent-panel dependsOn spec:consumers.edit-model · declared
  • spec:consumers.spec-studio.intent-panel dependsOn spec:consumers.intent-composition.proposal · declared — the panel hands off a change proposal
  • spec:consumers.spec-studio.intent-panel dependsOn spec:consumers.intent-composition.proposal.memo · declared — the panel writes the memo recipe 49 renders, byte for byte
  • spec:consumers.spec-studio.intent-panel dependsOn spec:model.open-question-keys · declared
  • spec:consumers.spec-studio.intent-panel refines spec:consumers.intent-composition · declared
  • spec:consumers.spec-studio.components dependsOn spec:consumers.spec-studio.intent-panel · declared — the panel element renders the gathered intents that Spec designs
  • spec:consumers.spec-studio.verification-panels dependsOn spec:consumers.spec-studio.intent-panel · declared — each panel action gathers intent in the composing panel
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.spec-studio.intent-panel · declared — the skill teaches what the composing panel hands off and what stays scoped-intent text
  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents refines spec:consumers.spec-studio.intent-panel · declared
  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents verifies spec:consumers.spec-studio.intent-panel · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

  • refines · spec:consumers.intent-composition · stated ready, floor ready
  • dependsOn · spec:consumers.edit-model · stated ready, floor ready
  • dependsOn · spec:consumers.intent-composition.proposal · stated ready, floor ready
  • dependsOn · spec:consumers.intent-composition.proposal.memo · stated ready, floor ready
  • dependsOn · spec:model.open-question-keys · stated ready, floor ready

Rested on by

Distance 1

  • spec:consumers.spec-studio.components

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-compose · src/studio-elements/compose.ts:13
    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68
    • impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44
    • impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-intent-handoff

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-intents-refresh

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.verification-panels

    Implementing units

    • impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 2

Distance 3

  • spec:consumers.spec-studio.diagram-kinds

    Implementing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219
    • impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-catalog

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.edge-routing

    Implementing units

    • impl:protocol.studio-diagram-routing · src/projections/studio/diagrams/routing.ts:38
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.legibility

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagrams.folds-by-context

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-context

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.folds-by-layer

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-layer

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.within-bound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-within-bound

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.spec-page

    Implementing units

    • impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8
    • impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 4

  • spec:consumers.spec-studio.capability-map-page

    Implementing units

    • impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.capability-tree

    Implementing units

    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.requirement-trace

    Implementing units

    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl: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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.export

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.planned-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-planned-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.unit-register

    Implementing units

    • impl:protocol.studio-unit-register · src/projections/studio/pages/architecture-register.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-maturity-requirement

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.spec-page.cited-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-cited-declaration

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.structural-mermaid

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:design-management-v1, pack:self-hosting-v1

Distance 5

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:consumers.edit-model
spec:consumers.edit-model · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.intent-composition.proposal
spec:consumers.intent-composition.proposal · resolves
declaredthe panel hands off a change proposalNone
dependsOn · outgoingRecipe 49 renders a change proposal as the Markdown memo a person reviews
spec:consumers.intent-composition.proposal.memo · resolves
declaredthe panel writes the memo recipe 49 renders, byte for byteNone
dependsOn · outgoingspec:model.open-question-keys
spec:model.open-question-keys · resolves
declaredNoneNone
refines · outgoingspec:consumers.intent-composition
spec:consumers.intent-composition · resolves
declaredNoneNone
dependsOn · incomingThe Studio's custom elements each hold one view the build renders
spec:consumers.spec-studio.components · resolves
declaredthe panel element renders the gathered intents that Spec designsNone
dependsOn · incomingThe panels for examples, targets, verifiers and evidence
spec:consumers.spec-studio.verification-panels · resolves
declaredeach panel action gathers intent in the composing panelNone
dependsOn · incomingThe Studio skill teaches agents to publish, share and read the Spec Studio
spec:consumers.studio-on-ramp · resolves
declaredthe skill teaches what the composing panel hands off and what stays scoped-intent textNone
refines · incomingRefreshing a tab keeps every gathered intent
spec:consumers.spec-studio.intent-panel.refresh-keeps-intents · resolves
declaredNoneNone
verifies · incomingRefreshing a tab keeps every gathered intent
spec:consumers.spec-studio.intent-panel.refresh-keeps-intents · resolves
declaredNonepersist

Bindings

Implementation binding: present

  • impl:protocol.studio-compose · opens a native request dialog beside build-rendered scopes without changing their content · src/studio-elements/compose.ts:13 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-intent-panel · gathers ordered intents under the page-root storage key and partitions their hand-off · src/studio-elements/intent-panel.ts:51 · role service · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-intent-panel-element · displays gathered requests and writes copy selections or local download links · src/studio-elements/intent-panel-element.ts:14 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-scenario-editor · gathers the edited Given, When and Then as exact text scoped to its subject · src/studio-elements/scenario-editor.ts:17 · role interaction · component component:protocol.studio-elements · layer edge · context protocol

Design reference: none

Verifier binding: present

  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents · Refreshing a tab keeps every gathered intent · declared · specs/consumers/spec-studio.intent-panel.refresh-keeps-intents.sdp.md · example enabled
  • test:protocol.studio-intent-handoff · anchored · test/studio-s5.test.ts:407 · test anchor

Expected-outcome oracle: present

  • oracle:protocol.studio-intents · test/studio-s5.test.ts:239

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

47. Refreshing a tab keeps every gathered intent

spec:consumers.spec-studio.intent-panel.refresh-keeps-intents

Refreshing a tab keeps every gathered intent

spec:consumers.spec-studio.intent-panel.refresh-keeps-intentsExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.intent-panel.refresh-keeps-intents.sdp.md

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

Intent
outcome
Execute the panel's persistence across a refresh of the tab.
assumptions
  • The world runs the composing panel's element module under Node with a storage object standing in for the browser's local storage, gathers the intents through the panel's own gather call, then creates a fresh panel over the same storage and page root, as a refreshed tab would, and counts the intents it shows.
Behavior

Examples

Given the composing panel holds {gathered: 3} gathered intents
When the person refreshes the tab
Then the composing panel holds {kept: 3} gathered intents
Verification

Verifier bindings

  • test:protocol.studio-intents-refresh · anchored · test anchor binding present · test/studio-s5.test.ts:249
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.intent-panel.refresh-keeps-intents
The diagram as text
  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents: Refreshing a tab keeps every gathered intent · declared Spec
  • spec:consumers.spec-studio.intent-panel: A composing panel on every page gathers scoped intent for an agent · declared Spec
  • test:protocol.studio-intents-refresh: test:protocol.studio-intents-refresh · anchored test binding · binding present · test/studio-s5.test.ts:249
  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents refines spec:consumers.spec-studio.intent-panel · declared
  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents verifies spec:consumers.spec-studio.intent-panel · declared
  • test:protocol.studio-intents-refresh verifies spec:consumers.spec-studio.intent-panel.refresh-keeps-intents · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.intent-panel.refresh-keeps-intents
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.intent-panel: A composing panel on every page gathers scoped intent for an agent
  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents: Refreshing a tab keeps every gathered intent
  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents refines spec:consumers.spec-studio.intent-panel · declared
  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents verifies spec:consumers.spec-studio.intent-panel · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingA composing panel on every page gathers scoped intent for an agent
spec:consumers.spec-studio.intent-panel · resolves
declaredNoneNone
verifies · outgoingA composing panel on every page gathers scoped intent for an agent
spec:consumers.spec-studio.intent-panel · resolves
declaredNonepersist

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-intents-refresh · anchored · test/studio-s5.test.ts:249 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

48. Recipe 49 renders a change proposal as the Markdown memo a person reviews

spec:consumers.intent-composition.proposal.memo

Recipe 49 renders a change proposal as the Markdown memo a person reviews

spec:consumers.intent-composition.proposal.memoContract · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/intent-composition.proposal.memo.sdp.md

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

A person reviews a proposed change as text, not as JSON beside the proposal check's rows. The memo is a rendering of the proposal document and never a second source of it: it ends with the document itself, so one paste hands an agent everything the person reviewed. Recipe 49 renders it, and the Studio's composing panel writes the same bytes, so a person, a reviewer and an agent read one text.

Intent
outcome
Render a change proposal as one Markdown memo, the same bytes from the recipe and from the Studio's composing panel, that a person reviews and hands to an agent whole.
Contract
rule.memo line 17 · specs/consumers/intent-composition.proposal.memo.sdp.md:17
Recipe 49 renders a proposal as the Markdown memo a person reviews and hands off, ending with the document itself, and the Studio's composing panel, spec:consumers.spec-studio.intent-panel, writes the same bytes for the same document, so a person, a reviewer and an agent read one text.

spec:consumers.intent-composition.proposal.memo.shared · enabled

0 unkeyed rules.

Verifying examples

Recipe 49 and the composing panel write one memo for one proposal · spec:consumers.intent-composition.proposal.memo.shared · ready floor ready

Executable Spec

Given a change proposal with {changes: 2} changes, one whose exact text holds a run of {ticks: 3} backticks
When recipe 49 renders its memo and the composing panel renders its memo
Then the two memos are byte-identical: {identical: true}
Then the memo ends with the proposal as JSON in a fenced block: {carriesDocument: true}
Then the fence around that exact text is {fence: 4} backticks long

Open example

Example space

Given a change proposal with {changes:number} changes, one whose exact text holds a run of {ticks:number} backticks
When recipe 49 renders its memo and the composing panel renders its memo
Then the two memos are byte-identical: {identical:boolean}
Then the memo ends with the proposal as JSON in a fenced block: {carriesDocument:boolean}
Then the fence around that exact text is {fence:number} backticks long
Design
memoRecipe line 20 · specs/consumers/intent-composition.proposal.memo.sdp.md:20
recipe 49, the proposal memo, takes params.proposal and returns { schemaProblems: [{ path, problem }], memo }: the schema problems recipe 38 reports for the same document and, when there are none, the memo as one string, otherwise memo: null; it reads no graph value, so one document renders one memo in any corpus.
memoHead line 21 · specs/consumers/intent-composition.proposal.memo.sdp.md:21
the memo opens with the line # Change proposal, a blank line, the line Base: followed by the base as a code span, the line Reason: followed by the reason as a code span, and a blank line.

Cited at

  • Test line · test/studio-s5.test.ts:1137 · test:protocol.studio-memo-shared
memoChange line 22 · specs/consumers/intent-composition.proposal.memo.sdp.md:22
each change follows in document order as the line ## Change <n>, counting from 1, and a blank line, then each on its own line: Scope: followed by the scope items as code spans joined by , ; Request: followed by a blank line and the request in a fenced block whose info string is text; when present, Replaces: or Follows: followed by the address as a code span; Relation: followed by the action, the source as a code span, the relation type and the target as a code span, separated by single spaces; and Reason: followed by the change's reason as a code span; then, when the change carries exact text, a blank line and the text in a fenced block with no info string; then a blank line.

Cited at

  • Test line · test/studio-s5.test.ts:1138 · test:protocol.studio-memo-shared
memoDocument line 23 · specs/consumers/intent-composition.proposal.memo.sdp.md:23
the memo ends with the line ## The proposal, a blank line, and the document in a fenced block whose info string is json, written as JSON.stringify writes it with two-space indentation and the keys in the order the document holds them.

Cited at

  • Test line · test/studio-s5.test.ts:1139 · test:protocol.studio-memo-shared
memoMarkup line 24 · specs/consumers/intent-composition.proposal.memo.sdp.md:24
a code span uses a backtick run one longer than the longest run its content holds, padded with a space on each side when the content starts or ends with a backtick; a fence is a backtick run one longer than the longest run its content holds and at least three long; each request and each change's exact text is enclosed in a fence longer than any backtick run it holds, each reason is enclosed in a code span whose backtick run is longer than any run it holds, so no field of the memo can open HTML, add a heading or close its enclosing span or fence; every value is written verbatim; every line ends with a line feed and the memo with one.
Verification

Verifier bindings

Example space

  • changes · number · declared by a change proposal with {changes} changes, one whose exact text holds a run of {ticks} backticks
  • ticks · number · declared by a change proposal with {changes} changes, one whose exact text holds a run of {ticks} backticks

Bound points

Oracle binding: present · oracle:protocol.studio-memo · test/studio-s5.test.ts:262

Coverage

changes: 2 · spec:consumers.intent-composition.proposal.memo.shared · not enumerable

ticks: 3 · spec:consumers.intent-composition.proposal.memo.shared · not enumerable

Unbound

  • changes: None
  • ticks: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.intent-composition.proposal.memo
The diagram as text
  • spec:consumers.intent-composition.proposal.memo: Recipe 49 renders a change proposal as the Markdown memo a person reviews · declared Spec
  • spec:consumers.intent-composition.proposal.memo.shared: Recipe 49 and the composing panel write one memo for one proposal · declared Spec
  • spec:consumers.intent-composition.proposal: A change proposal is addressed, based and checked before it lands · declared Spec
  • impl:protocol.proposal-memo-recipe: realizes the catalog proposal memo through its verbatim body check · anchored code · test/recipes.test.ts:7298
  • impl:protocol.studio-proposal-memo: renders proposal fields verbatim with fences that outgrow their content · anchored code · src/studio-elements/memo.ts:13
  • oracle:protocol.studio-memo: oracle:protocol.studio-memo · anchored oracle binding · test/studio-s5.test.ts:262
  • test:protocol.studio-memo-shared: test:protocol.studio-memo-shared · anchored test binding · binding present · test/studio-s5.test.ts:272
  • spec:consumers.intent-composition.proposal.memo refines spec:consumers.intent-composition.proposal · declared
  • spec:consumers.intent-composition.proposal.memo.shared refines spec:consumers.intent-composition.proposal.memo · declared
  • spec:consumers.intent-composition.proposal.memo.shared verifies spec:consumers.intent-composition.proposal.memo · declared
  • impl:protocol.proposal-memo-recipe satisfies spec:consumers.intent-composition.proposal.memo · anchored
  • impl:protocol.studio-proposal-memo satisfies spec:consumers.intent-composition.proposal.memo · anchored
  • oracle:protocol.studio-memo models spec:consumers.intent-composition.proposal.memo · anchored
  • test:protocol.studio-memo-shared verifies spec:consumers.intent-composition.proposal.memo.shared · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

No decision record named.

Runtime
  • component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
  • impl:protocol.proposal-memo-recipe · realizes the catalog proposal memo through its verbatim body check · test/recipes.test.ts:7298

    Uses

    None.

  • impl:protocol.studio-proposal-memo · renders proposal fields verbatim with fences that outgrow their content · src/studio-elements/memo.ts:13

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.intent-composition.proposal.memo
Relations of spec:consumers.intent-composition.proposal.memorefines · declaredrefines · declaredverifies · declareddependsOn · declareddependsOn · declareddependsOn · declaredOutgoing refinesspec:consumers.intent-composition.proposalA change proposal isaddressed, based andchecked before it lands…consumers.intent-composition.proposalSubjectspec:consumers.intent-composition.proposal.memoRecipe 49 renders a changeproposal as the Markdownmemo a person reviews…consumers.intent-composition.proposal.memoIncoming refinesspec:consumers.intent-composition.proposal.memo.sharedRecipe 49 and the composingpanel write one memo forone proposal…consumers.intent-composition.proposal.memo.sharedIncoming dependsOnspec:consumers.roadmap.memoA roadmap renders as theforward section of a pullrequest description…consumers.roadmap.memospec:consumers.spec-studio.intent-panelA composing panel on everypage gathers scoped intentfor an agent…consumers.spec-studio.intent-panelspec:protocol.roadmap-replaces-plansThe Protocol reads its nextwork from its roadmap andkeeps its delivery recordin git and its pull requests…protocol.roadmap-replaces-plans
The diagram as text
  • spec:consumers.intent-composition.proposal: A change proposal is addressed, based and checked before it lands
  • spec:consumers.intent-composition.proposal.memo: Recipe 49 renders a change proposal as the Markdown memo a person reviews
  • spec:consumers.intent-composition.proposal.memo.shared: Recipe 49 and the composing panel write one memo for one proposal
  • spec:consumers.roadmap.memo: A roadmap renders as the forward section of a pull request description
  • spec:consumers.spec-studio.intent-panel: A composing panel on every page gathers scoped intent for an agent
  • spec:protocol.roadmap-replaces-plans: The Protocol reads its next work from its roadmap and keeps its delivery record in git and its pull requests
  • spec:consumers.intent-composition.proposal.memo refines spec:consumers.intent-composition.proposal · declared
  • spec:consumers.roadmap.memo dependsOn spec:consumers.intent-composition.proposal.memo · declared — the memo writes its code spans by the proposal memo's markup rules
  • spec:consumers.spec-studio.intent-panel dependsOn spec:consumers.intent-composition.proposal.memo · declared — the panel writes the memo recipe 49 renders, byte for byte
  • spec:protocol.roadmap-replaces-plans dependsOn spec:consumers.intent-composition.proposal.memo · declared — the pull request carries a review's proposal as its memo
  • spec:consumers.intent-composition.proposal.memo.shared refines spec:consumers.intent-composition.proposal.memo · declared
  • spec:consumers.intent-composition.proposal.memo.shared verifies spec:consumers.intent-composition.proposal.memo · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

  • refines · spec:consumers.intent-composition.proposal · stated ready, floor ready

Rested on by

Distance 1

  • spec:consumers.intent-composition.proposal.memo.shared

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-memo-shared

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.roadmap.memo

    Implementing units

    • impl:protocol.roadmap-memo-recipe · test/roadmap.test.ts:27
    • impl: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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.intent-panel

    Implementing units

    • impl:protocol.studio-compose · src/studio-elements/compose.ts:13
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-intent-panel · src/studio-elements/intent-panel.ts:51
    • impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

Distance 2

  • spec:consumers.spec-studio.components

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-compose · src/studio-elements/compose.ts:13
    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68
    • impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44
    • impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-intent-handoff

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.intent-panel.refresh-keeps-intents

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-intents-refresh

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.verification-panels

    Implementing units

    • impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:protocol.delivery-record-cleanup

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:roadmap, pack:self-hosting-v1

Distance 3

Distance 4

  • spec:consumers.spec-studio.diagram-kinds

    Implementing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219
    • impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-catalog

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.edge-routing

    Implementing units

    • impl:protocol.studio-diagram-routing · src/projections/studio/diagrams/routing.ts:38
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.legibility

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagrams.folds-by-context

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-context

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.folds-by-layer

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-layer

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.within-bound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-within-bound

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.spec-page

    Implementing units

    • impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8
    • impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 5

  • spec:consumers.spec-studio.capability-map-page

    Implementing units

    • impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.capability-tree

    Implementing units

    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.requirement-trace

    Implementing units

    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl: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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.export

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.planned-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-planned-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.unit-register

    Implementing units

    • impl:protocol.studio-unit-register · src/projections/studio/pages/architecture-register.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-maturity-requirement

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.spec-page.cited-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-cited-declaration

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.structural-mermaid

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:design-management-v1, pack:self-hosting-v1

Distance 6

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingspec:consumers.intent-composition.proposal
spec:consumers.intent-composition.proposal · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.roadmap.memo
spec:consumers.roadmap.memo · resolves
declaredthe memo writes its code spans by the proposal memo's markup rulesNone
dependsOn · incomingA composing panel on every page gathers scoped intent for an agent
spec:consumers.spec-studio.intent-panel · resolves
declaredthe panel writes the memo recipe 49 renders, byte for byteNone
dependsOn · incomingspec:protocol.roadmap-replaces-plans
spec:protocol.roadmap-replaces-plans · resolves
declaredthe pull request carries a review's proposal as its memoNone
refines · incomingRecipe 49 and the composing panel write one memo for one proposal
spec:consumers.intent-composition.proposal.memo.shared · resolves
declaredNoneNone
verifies · incomingRecipe 49 and the composing panel write one memo for one proposal
spec:consumers.intent-composition.proposal.memo.shared · resolves
declaredNonememo

Bindings

Implementation binding: present

  • impl:protocol.proposal-memo-recipe · realizes the catalog proposal memo through its verbatim body check · test/recipes.test.ts:7298
  • impl:protocol.studio-proposal-memo · renders proposal fields verbatim with fences that outgrow their content · src/studio-elements/memo.ts:13 · role projection · component component:protocol.studio-elements · layer edge · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.studio-memo · test/studio-s5.test.ts:262

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

49. Recipe 49 and the composing panel write one memo for one proposal

spec:consumers.intent-composition.proposal.memo.shared

Recipe 49 and the composing panel write one memo for one proposal

spec:consumers.intent-composition.proposal.memo.sharedExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/intent-composition.proposal.memo.shared.sdp.md

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

Intent
outcome
Execute the shared memo: the recipe and the panel render the same bytes, the memo carries the document, and a fence outgrows the backticks it holds.
assumptions
  • The world writes a proposal document with a base, a reason and the stated number of changes, the first scoped to one entry address with exact text that holds the stated run of backticks, and the second declaring a relation; it runs recipe 49's shipped body with the document as proposal, calls the composing panel's memo function on the same document, compares the two strings, parses the last fenced block's content as JSON and compares it with the document, and measures the fence around the first change's text.
Behavior

Examples

Given a change proposal with {changes: 2} changes, one whose exact text holds a run of {ticks: 3} backticks
When recipe 49 renders its memo and the composing panel renders its memo
Then the two memos are byte-identical: {identical: true}
Then the memo ends with the proposal as JSON in a fenced block: {carriesDocument: true}
Then the fence around that exact text is {fence: 4} backticks long
Verification

Verifier bindings

  • test:protocol.studio-memo-shared · anchored · test anchor binding present · test/studio-s5.test.ts:272
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.intent-composition.proposal.memo.shared
The diagram as text
  • spec:consumers.intent-composition.proposal.memo.shared: Recipe 49 and the composing panel write one memo for one proposal · declared Spec
  • spec:consumers.intent-composition.proposal.memo: Recipe 49 renders a change proposal as the Markdown memo a person reviews · declared Spec
  • test:protocol.studio-memo-shared: test:protocol.studio-memo-shared · anchored test binding · binding present · test/studio-s5.test.ts:272
  • spec:consumers.intent-composition.proposal.memo.shared refines spec:consumers.intent-composition.proposal.memo · declared
  • spec:consumers.intent-composition.proposal.memo.shared verifies spec:consumers.intent-composition.proposal.memo · declared
  • test:protocol.studio-memo-shared verifies spec:consumers.intent-composition.proposal.memo.shared · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.intent-composition.proposal.memo.shared
  • E2: verifies · declared
The diagram as text
  • spec:consumers.intent-composition.proposal.memo: Recipe 49 renders a change proposal as the Markdown memo a person reviews
  • spec:consumers.intent-composition.proposal.memo.shared: Recipe 49 and the composing panel write one memo for one proposal
  • spec:consumers.intent-composition.proposal.memo.shared refines spec:consumers.intent-composition.proposal.memo · declared
  • spec:consumers.intent-composition.proposal.memo.shared verifies spec:consumers.intent-composition.proposal.memo · declared
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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingRecipe 49 renders a change proposal as the Markdown memo a person reviews
spec:consumers.intent-composition.proposal.memo · resolves
declaredNoneNone
verifies · outgoingRecipe 49 renders a change proposal as the Markdown memo a person reviews
spec:consumers.intent-composition.proposal.memo · resolves
declaredNonememo

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-memo-shared · anchored · test/studio-s5.test.ts:272 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

50. The Studio's custom elements each hold one view the build renders

spec:consumers.spec-studio.components

The Studio's custom elements each hold one view the build renders

spec:consumers.spec-studio.componentsContract · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

Design: 10 design entries · 10 pinned declarations · 3 decisions

Findings: no errors, no warnings

specs/consumers/spec-studio.components.sdp.md

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

The original's harness element has no subject in the graph, which holds example spaces, bound points and oracle bindings but no harness node, so its successor takes the Spec that owns an example space. The build renders every view into the page's markup and an element adds only the interaction its view needs, as spec:decisions.studio-build-renders rules, so a trace graph draws one hop, a maturity map places members by stated rung and floor, a card always shows its rung, and the attributes the original used to choose another setting are gone.

Intent
outcome
Give the Studio a small set of custom elements that each hold one view of the graph, rendered by the build, in a Studio page or in any HTML page that holds that markup and loads the element script.
Contract
rule.selfContained line 25 · specs/consumers/spec-studio.components.sdp.md:25
Each element is self-contained and light on dependencies, and works in any HTML page that holds the markup the build wrote for it and loads the Studio's script.

no example exercises it

rule.buildRenders line 26 · specs/consumers/spec-studio.components.sdp.md:26
The build renders every element's view into its markup, from reader values and the recipe answers the page names, so the view reads without script; the element adds only interaction, and an element whose view needs none is defined with no behavior.

no example exercises it

rule.subjectAttribute line 27 · specs/consumers/spec-studio.components.sdp.md:27
An element with a graph subject takes that subject's graph id in the attribute its Design entry names; an element over gathered intents has no single graph subject.

no example exercises it

rule line 28 · specs/consumers/spec-studio.components.sdp.md:28
Every element's name starts with sdp-.
rule.diagramRenderer line 29 · specs/consumers/spec-studio.components.sdp.md:29
A diagram is laid out by the engine when the page set is built and written as inline SVG, and its element adds only pan, zoom and pinch, as spec:decisions.studio-diagram-renderer rules; one diagram draws within the bound spec:consumers.spec-studio.diagrams#design.bound names.

no example exercises it

rule.oneScript line 30 · specs/consumers/spec-studio.components.sdp.md:30
Every element ships in the one classic script the page elements ship in, and none loads anything at run time.

no example exercises it

1 unkeyed rule.

Design

The elements in the original's order, with their attributes.

specCard line 34 · specs/consumers/spec-studio.components.sdp.md:34
sdp-spec-card with spec-id and variant: one Spec as a card; full is a Pack page's member card, short one line with the title linked, the id, the rung badge and the floor in words; no behavior.

no citation recorded

traceGraph line 35 · specs/consumers/spec-studio.components.sdp.md:35
sdp-trace-graph with spec-id: the Spec's relations one hop each way, drawn in relation bands inside an sdp-diagram, then its text equivalent; no behavior of its own.

no citation recorded

maturityMap line 36 · specs/consumers/spec-studio.components.sdp.md:36
sdp-maturity-map with pack-id: the Pack's members placed by stated rung and floor reached, drawn as a static SVG grid of counts, then its count table and each populated cell's member list; no behavior.

no citation recorded

exampleSpace line 37 · specs/consumers/spec-studio.components.sdp.md:37
sdp-example-space with spec-id, naming the Spec that owns the example space: the space's slots with their types and the step that declares each, its children's bound points as a table with one row per example and one column per slot, an unbound slot written unbound, its expected-outcome oracle binding as present or none, and recipe 44's coverage; its coverage is a report, never a verifier run or a delivery fact; no behavior beyond the composing actions inside it.

no citation recorded

diagramView line 38 · specs/consumers/spec-studio.components.sdp.md:38
sdp-diagram with subject, the element spec:consumers.spec-studio.diagrams#design.diagramElement states.

no citation recorded

scenarioEditor line 39 · specs/consumers/spec-studio.components.sdp.md:39
sdp-scenario-editor with spec-id and mode: in edit mode a form holding the example's given, when and then steps, in propose mode the parent's step vocabulary as a starting point; submitting gathers an intent scoped to the example or to the parent, with the steps as its exact text; without script it shows the steps as text and says that composing needs the script.

no citation recorded

impactView line 40 · specs/consumers/spec-studio.components.sdp.md:40
sdp-impact-view with spec-id: a Spec's impact panel on its own, its trace graph, what it rests on and what rests on it; no behavior.

no citation recorded

intentPanel line 41 · specs/consumers/spec-studio.components.sdp.md:41
sdp-intent-panel with page-root and no graph-subject attribute, rendering the gathered intents across their scopes as spec:consumers.spec-studio.intent-panel states.

no citation recorded

composeAction line 42 · specs/consumers/spec-studio.components.sdp.md:42
sdp-compose with scope and action: a button labelled with what it composes that opens the compose dialog and gathers the intent in the composing panel; scope is a Spec id, entry address or Pack id, with a Pack's space-separated resolved member ids in members, members-complete set to true only when every manifest member resolves, and a Change applies to choice between member Specs and Pack membership or framing; action is one of resolve-question, promote-question, edit-example, propose-example, change-target, propose-target, propose-values and change-entry; hidden without script.

no citation recorded

validationFindings line 43 · specs/consumers/spec-studio.components.sdp.md:43
sdp-validation-findings with filter: the validation report's findings for the Spec or Pack id the filter names; no behavior.

no citation recorded

Verification

Verifier bindings

  • test:protocol.studio-intent-handoff · anchored · test anchor binding present · test/studio-s5.test.ts:407
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.components
The diagram as text
  • spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders · declared Spec
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent · declared Spec
  • spec:consumers.spec-studio.page-elements: A few custom elements filter, search, open and copy on a rendered page · declared Spec
  • spec:consumers.spec-studio.diagrams.folds-by-context: An architecture over the bound folds by context · declared Spec
  • spec:consumers.spec-studio.diagrams.folds-by-layer: One context over the bound folds by layer · declared Spec
  • spec:consumers.spec-studio.diagrams.within-bound: An architecture within the bound draws in one diagram, the same bytes twice · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • spec:consumers.spec-studio.diagram-kinds: The Studio chooses diagram kinds from graph values · declared Spec
  • spec:consumers.spec-studio.diagram-kinds.edge-routing: Edges route around boxes with deterministic orthogonal paths · declared Spec
  • spec:consumers.spec-studio.diagram-kinds.legibility: A diagram preserves readable labels before zoom · declared Spec
  • component:protocol.studio-elements: optional browser behavior and proposal handoff · anchored code · src/studio-elements/index.ts:13
  • impl:protocol.studio-architecture-diagrams: architecture grids and bounded context and layer folds · anchored code · src/projections/studio/diagrams/architecture.ts:4
  • impl:protocol.studio-compose: opens a native request dialog beside build-rendered scopes without changing their content · anchored code · src/studio-elements/compose.ts:13
  • impl:protocol.studio-copy: copies text with selection fallback and failure feedback · anchored code · src/studio-elements/copy.ts:22
  • impl:protocol.studio-diagram-element: adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · anchored code · src/studio-elements/diagram.ts:23
  • impl:protocol.studio-diagram-model: shared diagram boxes, edges and drawing bounds · anchored code · src/projections/studio/diagrams/model.ts:1
  • impl:protocol.studio-diagrams: deterministic grid and band layouts with bounded folds and full text equivalents · anchored code · src/projections/studio/diagrams/svg.ts:73
  • impl:protocol.studio-expander: opens fragment ancestors and expands disclosures for print · anchored code · src/studio-elements/expander.ts:16
  • impl:protocol.studio-filter: filters build-rendered rows through their recorded attributes · anchored code · src/studio-elements/filter.ts:25
  • impl:protocol.studio-intent-panel-element: displays gathered requests and writes copy selections or local download links · anchored code · src/studio-elements/intent-panel-element.ts:14
  • impl:protocol.studio-maturity-map: places resolved Pack members by their stated rung and floor in authored order · anchored code · src/projections/studio/pages/maturity-map.ts:7
  • impl:protocol.studio-pack-page: renders Pack members, maturity and boundary joins · anchored code · src/projections/studio/pages/pack-page.ts:68
  • impl:protocol.studio-relation-diagrams: relation and member bands and bounded relation folds · anchored code · src/projections/studio/diagrams/bands.ts:10
  • impl:protocol.studio-scenario-editor: gathers the edited Given, When and Then as exact text scoped to its subject · anchored code · src/studio-elements/scenario-editor.ts:17
  • impl:protocol.studio-search-form: routes search forms through page-root URLs and fragments · anchored code · src/studio-elements/search.ts:18
  • impl:protocol.studio-search-results: ranks and renders concept, entry and file search hits · anchored code · src/studio-elements/search-results.ts:95
  • impl:protocol.studio-spec-structure: renders requirement and trace diagrams and the recorded structural neighborhood · anchored code · src/projections/studio/pages/spec-structure.ts:44
  • impl:protocol.studio-stamp: resolves published stamps and source links in the browser · anchored code · src/studio-elements/stamp.ts:30
  • impl:protocol.studio-verification-panels: renders rule coverage, example cards, constraint targets, verifiers and example-space coverage · anchored code · src/projections/studio/pages/spec-verification.ts:74
  • oracle:protocol.studio-diagrams: oracle:protocol.studio-diagrams · anchored oracle binding · test/studio-s1.test.ts:564
  • test:protocol.studio-copy-source: test:protocol.studio-copy-source · anchored test binding · binding present · test/studio-diagram-core.test.ts:191
  • test:protocol.studio-diagram-core: test:protocol.studio-diagram-core · anchored test binding · binding present · test/studio-diagram-core.test.ts:37
  • test:protocol.studio-diagram-folds-context: test:protocol.studio-diagram-folds-context · anchored test binding · binding present · test/studio-s1.test.ts:675
  • test:protocol.studio-diagram-folds-layer: test:protocol.studio-diagram-folds-layer · anchored test binding · binding present · test/studio-s1.test.ts:681
  • test:protocol.studio-diagram-within-bound: test:protocol.studio-diagram-within-bound · anchored test binding · binding present · test/studio-s1.test.ts:669
  • test:protocol.studio-intent-handoff: test:protocol.studio-intent-handoff · anchored test binding · binding present · test/studio-s5.test.ts:407
  • test:protocol.studio-page-elements: test:protocol.studio-page-elements · anchored test binding · binding present · test/studio-elements.test.ts:26
  • spec:consumers.spec-studio.components refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.diagram-kinds refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagram-kinds.edge-routing refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagram-kinds.legibility refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams refines spec:consumers.spec-studio.components · declared
  • spec:consumers.spec-studio.diagrams.folds-by-context refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-context verifies spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-layer refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-layer verifies spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.within-bound refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.within-bound verifies spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.page-elements refines spec:consumers.spec-studio.components · declared
  • component:protocol.studio-elements satisfies spec:consumers.spec-studio.page-elements · anchored
  • component:protocol.studio-elements satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-architecture-diagrams satisfies spec:consumers.spec-studio.diagrams · anchored
  • impl:protocol.studio-compose satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-copy satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-diagram-element satisfies spec:consumers.spec-studio.diagrams · anchored
  • impl:protocol.studio-diagram-element satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-diagram-model satisfies spec:consumers.spec-studio.diagrams · anchored
  • impl:protocol.studio-diagrams satisfies spec:consumers.spec-studio.diagrams · anchored
  • impl:protocol.studio-expander satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-filter satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-filter satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-intent-panel-element satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-maturity-map satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-pack-page satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-relation-diagrams satisfies spec:consumers.spec-studio.diagrams · anchored
  • impl:protocol.studio-scenario-editor satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-search-form satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-search-results satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-search-results satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-spec-structure satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-stamp satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-verification-panels satisfies spec:consumers.spec-studio.components · anchored
  • oracle:protocol.studio-diagrams models spec:consumers.spec-studio.diagrams · anchored
  • test:protocol.studio-copy-source verifies spec:consumers.spec-studio.page-elements · anchored
  • test:protocol.studio-diagram-core verifies spec:consumers.spec-studio.diagrams · anchored
  • test:protocol.studio-diagram-folds-context verifies spec:consumers.spec-studio.diagrams.folds-by-context · anchored
  • test:protocol.studio-diagram-folds-layer verifies spec:consumers.spec-studio.diagrams.folds-by-layer · anchored
  • test:protocol.studio-diagram-within-bound verifies spec:consumers.spec-studio.diagrams.within-bound · anchored
  • test:protocol.studio-intent-handoff verifies spec:consumers.spec-studio.components · anchored
  • test:protocol.studio-page-elements verifies spec:consumers.spec-studio.page-elements · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.

Decisions

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
  • component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
  • impl:protocol.studio-compose · opens a native request dialog beside build-rendered scopes without changing their content · src/studio-elements/compose.ts:13

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-filter · filters build-rendered rows through their recorded attributes · src/studio-elements/filter.ts:25

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-intent-panel-element · displays gathered requests and writes copy selections or local download links · src/studio-elements/intent-panel-element.ts:14

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-maturity-map · places resolved Pack members by their stated rung and floor in authored order · src/projections/studio/pages/maturity-map.ts:7

    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.studio-pack-page · renders Pack members, maturity and boundary joins · src/projections/studio/pages/pack-page.ts:68

    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.studio-scenario-editor · gathers the edited Given, When and Then as exact text scoped to its subject · src/studio-elements/scenario-editor.ts:17

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-search-results · ranks and renders concept, entry and file search hits · src/studio-elements/search-results.ts:95

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-spec-structure · renders requirement and trace diagrams and the recorded structural neighborhood · src/projections/studio/pages/spec-structure.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.studio-verification-panels · renders rule coverage, example cards, constraint targets, verifiers and example-space coverage · src/projections/studio/pages/spec-verification.ts:74

    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.spec-studio.components
Relations of spec:consumers.spec-studio.componentsrefines · declareddependsOn · declareddependsOn · declareddecidedBy · declareddecidedBy · declareddecidedBy · declaredrefines · declaredrefines · declaredOutgoing refinesspec:consumers.spec-studioThe Spec Studio is a staticHTML workbench over the onegraph…consumers.spec-studioOutgoing dependsOnspec:consumers.spec-studio.dataThe Studio renders from thereader's values and embedsonly what its script reads…consumers.spec-studio.dataspec:consumers.spec-studio.intent-panelA composing panel on everypage gathers scoped intentfor an agent…consumers.spec-studio.intent-panelOutgoing decidedByspec:decisions.studio-build-rendersThe build renders everyStudio view, and an elementonly enhances it…decisions.studio-build-rendersspec:decisions.studio-diagram-rendererThe engine lays out everyStudio diagram as staticSVG when the page set isbuilt…decisions.studio-diagram-rendererspec:decisions.studio-web-componentsThe Studio is built fromcustom elements, not aframework…decisions.studio-web-componentsSubjectspec:consumers.spec-studio.componentsThe Studio's customelements each hold one viewthe build renders…consumers.spec-studio.componentsIncoming refinesspec:consumers.spec-studio.diagramsA diagram is laid out fromgraph values into SVG witha text equivalent…consumers.spec-studio.diagramsspec:consumers.spec-studio.page-elementsA few custom elementsfilter, search, open andcopy on a rendered page…consumers.spec-studio.page-elements
The diagram as text
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent
  • spec:consumers.spec-studio.intent-panel: A composing panel on every page gathers scoped intent for an agent
  • spec:consumers.spec-studio.page-elements: A few custom elements filter, search, open and copy on a rendered page
  • spec:decisions.studio-build-renders: The build renders every Studio view, and an element only enhances it
  • spec:decisions.studio-diagram-renderer: The engine lays out every Studio diagram as static SVG when the page set is built
  • spec:decisions.studio-web-components: The Studio is built from custom elements, not a framework
  • spec:consumers.spec-studio.components decidedBy spec:decisions.studio-build-renders · declared
  • spec:consumers.spec-studio.components decidedBy spec:decisions.studio-diagram-renderer · declared
  • spec:consumers.spec-studio.components decidedBy spec:decisions.studio-web-components · declared
  • spec:consumers.spec-studio.components dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.components dependsOn spec:consumers.spec-studio.intent-panel · declared — the panel element renders the gathered intents that Spec designs
  • spec:consumers.spec-studio.components refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.diagrams refines spec:consumers.spec-studio.components · declared
  • spec:consumers.spec-studio.page-elements refines spec:consumers.spec-studio.components · 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

  • spec:consumers.spec-studio.diagrams

    Implementing units

    • impl:protocol.studio-architecture-diagrams · src/projections/studio/diagrams/architecture.ts:4
    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagram-model · src/projections/studio/diagrams/model.ts:1
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.page-elements

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-copy · src/studio-elements/copy.ts:22
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-search-form · src/studio-elements/search.ts:18
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-copy-source, test:protocol.studio-page-elements

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 2

  • spec:consumers.spec-studio.diagram-kinds

    Implementing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219
    • impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-catalog

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.edge-routing

    Implementing units

    • impl:protocol.studio-diagram-routing · src/projections/studio/diagrams/routing.ts:38
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.legibility

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagrams.folds-by-context

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-context

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.folds-by-layer

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-layer

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.within-bound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-within-bound

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.spec-page

    Implementing units

    • impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8
    • impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 3

  • spec:consumers.spec-studio.capability-map-page

    Implementing units

    • impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.capability-tree

    Implementing units

    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.requirement-trace

    Implementing units

    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl: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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.export

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.planned-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-planned-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.unit-register

    Implementing units

    • impl:protocol.studio-unit-register · src/projections/studio/pages/architecture-register.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-maturity-requirement

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.spec-page.cited-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-cited-declaration

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.verification-panels

    Implementing units

    • impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.structural-mermaid

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:design-management-v1, pack:self-hosting-v1

Distance 4

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingThe build renders every Studio view, and an element only enhances it
spec:decisions.studio-build-renders · resolves
declaredNoneNone
decidedBy · outgoingThe engine lays out every Studio diagram as static SVG when the page set is built
spec:decisions.studio-diagram-renderer · resolves
declaredNoneNone
decidedBy · outgoingThe Studio is built from custom elements, not a framework
spec:decisions.studio-web-components · resolves
declaredNoneNone
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
dependsOn · outgoingA composing panel on every page gathers scoped intent for an agent
spec:consumers.spec-studio.intent-panel · resolves
declaredthe panel element renders the gathered intents that Spec designsNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
refines · incomingA diagram is laid out from graph values into SVG with a text equivalent
spec:consumers.spec-studio.diagrams · resolves
declaredNoneNone
refines · incomingA few custom elements filter, search, open and copy on a rendered page
spec:consumers.spec-studio.page-elements · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · role interaction · layer edge · context protocol
  • impl:protocol.studio-compose · opens a native request dialog beside build-rendered scopes without changing their content · src/studio-elements/compose.ts:13 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-filter · filters build-rendered rows through their recorded attributes · src/studio-elements/filter.ts:25 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-intent-panel-element · displays gathered requests and writes copy selections or local download links · src/studio-elements/intent-panel-element.ts:14 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-maturity-map · places resolved Pack members by their stated rung and floor in authored order · src/projections/studio/pages/maturity-map.ts:7 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-pack-page · renders Pack members, maturity and boundary joins · src/projections/studio/pages/pack-page.ts:68 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-scenario-editor · gathers the edited Given, When and Then as exact text scoped to its subject · src/studio-elements/scenario-editor.ts:17 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-search-results · ranks and renders concept, entry and file search hits · src/studio-elements/search-results.ts:95 · role projection · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-spec-structure · renders requirement and trace diagrams and the recorded structural neighborhood · src/projections/studio/pages/spec-structure.ts:44 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-verification-panels · renders rule coverage, example cards, constraint targets, verifiers and example-space coverage · src/projections/studio/pages/spec-verification.ts:74 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-intent-handoff · anchored · test/studio-s5.test.ts:407 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

51. The Studio is built from custom elements, not a framework

spec:decisions.studio-web-components

The Studio is built from custom elements, not a framework

spec:decisions.studio-web-componentsDecision Record · featureready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/decisions/studio-web-components.sdp.md

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

Intent
outcome
Let each Studio view work in an HTML page that can load its element script and supply graph data without imposing a framework on that page.
Decision
context
The Studio's views must work inside the Studio and in HTML pages that can load the element script and supply its graph data, such as an exported report, and its assets should stay small and cache well.
decision
The Studio is built from Web Components, custom elements written without React, Vue, Svelte or another framework.
rationale
  • Custom elements avoid a matching framework runtime in every embedding page; the host loads the Studio's element script and supplies the graph data.
  • Element names and attributes are a public embedding contract that is costly to replace; in exchange for framework-independent embedding, the Studio supplies rendering and state handling within its elements.
alternatives
  • Components of React, Vue or Svelte would impose that framework on every page that embeds one of them.
consequences
  • The few elements that need richer state, the harness and the scenario editor, may use a small reactive primitive inside themselves, such as @lit/reactive-element or a signals-style atom, without imposing a framework on the page that embeds them.
  • A host that strips scripts, such as a pull request description, shows a static link to a Studio page, never an element.
Verification

Verifier bindings

No verifier binding recorded.

Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
  • Test or oracle bindings: no recorded binding.
Requirement drawing for spec:decisions.studio-web-components

Scroll horizontally to read the whole drawing.

Requirement drawing for spec:decisions.studio-web-componentsreferences · anchoredreferences · anchoredreferences · anchoredreferences · anchoredreferences · anchoredreferences · anchoredreferences · anchoredreferences · anchoredrefines · declaredrefines · declaredrefines · declaredIntended Specsspec:decisions.studio-build-rendersThe build renders everyStudio view, and an elementonly enhances it…decisions.studio-build-rendersdeclared Specspec:decisions.studio-diagram-rendererThe engine lays out everyStudio diagram as staticSVG when the page set isbuilt…decisions.studio-diagram-rendererdeclared Specspec:decisions.studio-web-componentsThe Studio is built fromcustom elements, not aframework…decisions.studio-web-componentsdeclared SpecSatisfying or referencingunitsimpl:protocol.studio-architecture-lensrenders recipe componentrows and planned designs asarchitecture and memberdiagrams…protocol.studio-architecture-lensanchored codeimpl:protocol.studio-diagram-elementadds view-box pan, zoom andpinch to build-rendered SVGwithout changing its layout…protocol.studio-diagram-elementanchored codeimpl:protocol.studio-diagramsdeterministic grid and bandlayouts with bounded foldsand full text equivalents…protocol.studio-diagramsanchored codeimpl:protocol.studio-evidence-lensnames the four evidencesources and what wouldbring each into the Studio…protocol.studio-evidence-lensanchored codeimpl:protocol.studio-recipesevaluates shipped recipebodies once and sharesanswers between Studio pages…protocol.studio-recipesanchored codeimpl:protocol.studio-tests-lensrenders shared rule andexample-space coverage withfilters and verifierbindings…protocol.studio-tests-lensanchored codeOutside the selected setspec:consumers.spec-studioThe Spec Studio is a staticHTML workbench over the onegraph…consumers.spec-studiodeclared Spec
The diagram as text
  • spec:decisions.studio-web-components: The Studio is built from custom elements, not a framework · declared Spec
  • spec:decisions.studio-build-renders: The build renders every Studio view, and an element only enhances it · declared Spec
  • spec:decisions.studio-diagram-renderer: The engine lays out every Studio diagram as static SVG when the page set is built · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.studio-architecture-lens: renders recipe component rows and planned designs as architecture and member diagrams · anchored code · src/projections/studio/pages/architecture-page.ts:50
  • impl:protocol.studio-diagram-element: adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · anchored code · src/studio-elements/diagram.ts:23
  • impl:protocol.studio-diagrams: deterministic grid and band layouts with bounded folds and full text equivalents · anchored code · src/projections/studio/diagrams/svg.ts:73
  • impl:protocol.studio-evidence-lens: names the four evidence sources and what would bring each into the Studio · anchored code · src/projections/studio/pages/evidence-page.ts:3
  • impl:protocol.studio-recipes: evaluates shipped recipe bodies once and shares answers between Studio pages · anchored code · src/projections/studio/recipes.ts:34
  • impl:protocol.studio-tests-lens: renders shared rule and example-space coverage with filters and verifier bindings · anchored code · src/projections/studio/pages/tests-page.ts:34
  • spec:decisions.studio-build-renders refines spec:decisions.studio-web-components · declared — narrows where a view's values come from; the build writes them into the markup, so a host carries that markup and supplies no graph data
  • spec:decisions.studio-diagram-renderer refines spec:decisions.studio-web-components · declared — narrows how an element that shows a diagram renders it; the element only enhances an SVG the build drew
  • spec:decisions.studio-web-components refines spec:consumers.spec-studio · declared
  • impl:protocol.studio-architecture-lens references spec:decisions.studio-build-renders · anchored
  • impl:protocol.studio-diagram-element references spec:decisions.studio-diagram-renderer · anchored
  • impl:protocol.studio-diagram-element references spec:decisions.studio-build-renders · anchored
  • impl:protocol.studio-diagrams references spec:decisions.studio-diagram-renderer · anchored
  • impl:protocol.studio-diagrams references spec:decisions.studio-build-renders · anchored
  • impl:protocol.studio-evidence-lens references spec:decisions.studio-build-renders · anchored
  • impl:protocol.studio-recipes references spec:decisions.studio-build-renders · anchored
  • impl:protocol.studio-tests-lens references spec:decisions.studio-build-renders · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:decisions.studio-web-components
The diagram as text
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders
  • spec:consumers.spec-studio.page-elements: A few custom elements filter, search, open and copy on a rendered page
  • spec:decisions.studio-build-renders: The build renders every Studio view, and an element only enhances it
  • spec:decisions.studio-diagram-renderer: The engine lays out every Studio diagram as static SVG when the page set is built
  • spec:decisions.studio-web-components: The Studio is built from custom elements, not a framework
  • spec:decisions.studio-web-components refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio decidedBy spec:decisions.studio-web-components · declared
  • spec:consumers.spec-studio.components decidedBy spec:decisions.studio-web-components · declared
  • spec:consumers.spec-studio.page-elements decidedBy spec:decisions.studio-web-components · declared
  • spec:decisions.studio-build-renders refines spec:decisions.studio-web-components · declared — narrows where a view's values come from; the build writes them into the markup, so a host carries that markup and supplies no graph data
  • spec:decisions.studio-diagram-renderer refines spec:decisions.studio-web-components · declared — narrows how an element that shows a diagram renders it; the element only enhances an SVG the build drew
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

  • spec:consumers.spec-studio

    Implementing units

    • impl:protocol.studio-command · src/cli/studio-command.ts:106
    • impl:protocol.studio-data · src/projections/studio/data.ts:279
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-publisher

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.components

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-compose · src/studio-elements/compose.ts:13
    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68
    • impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44
    • impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-intent-handoff

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.page-elements

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-copy · src/studio-elements/copy.ts:22
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-search-form · src/studio-elements/search.ts:18
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-copy-source, test:protocol.studio-page-elements

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:decisions.studio-build-renders

    Implementing units

    None.

    Referencing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3
    • impl:protocol.studio-recipes · src/projections/studio/recipes.ts:34
    • impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34

    Enabled verifiers: None

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:decisions.studio-diagram-renderer

    Implementing units

    None.

    Referencing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Enabled verifiers: None

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 2

  • spec:consumers.spec-studio.cited-line-text

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:roadmap, pack:self-hosting-v1

  • spec:consumers.spec-studio.data

    Implementing units

    • impl:protocol.studio-data · src/projections/studio/data.ts:279

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-data

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagram-kinds

    Implementing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219
    • impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-catalog

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagrams

    Implementing units

    • impl:protocol.studio-architecture-diagrams · src/projections/studio/diagrams/architecture.ts:4
    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagram-model · src/projections/studio/diagrams/model.ts:1
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.export

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.glossary-page

    Implementing units

    • impl:protocol.studio-glossary · src/projections/studio/pages/glossary-page.ts:7

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.glossary-page.same-word-twice

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses

    Implementing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.navigation

    Implementing units

    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-navigation, test:protocol.studio-roadmap-page

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.pack-page

    Implementing units

    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap-priority, test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.publisher

    Implementing units

    • impl:protocol.build-pipeline-emit · src/cli/build-command.ts:251
    • impl:protocol.studio-command · src/cli/studio-command.ts:106
    • impl:protocol.studio-page-catalog · src/projections/studio/pages/index.ts:21
    • impl:protocol.studio-paths · src/projections/studio/paths.ts:2
    • impl:protocol.studio-publish · src/projections/studio/publish.ts:24

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-data, test:protocol.studio-publisher

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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.registers

    Implementing units

    • impl:protocol.studio-registers · src/projections/studio/pages/registers-page.ts:47

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.registers.blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.responsive

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-intent-handoff

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.runs-page

    Implementing units

    • impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.sharing

    Implementing units

    • impl:protocol.stamp-command · src/cli/stamp-command.ts:8
    • impl:protocol.studio-preview-workflow · test/studio-s4.test.ts:742
    • impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.sharing.stamp-written-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.shell

    Implementing units

    • impl:protocol.studio-code-spans · src/projections/studio/pages/code-spans.ts:9
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-html · src/projections/studio/pages/html.ts:8
    • impl:protocol.studio-text · src/projections/studio/pages/text.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.spec-page

    Implementing units

    • impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8
    • impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:decisions.studio-html-surface

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 3

  • spec:consumers.command-line

    Implementing units

    • impl:protocol.adopter-help · src/cli/help.ts:167
    • impl:protocol.agent-surface-cli · src/cli/sdp.ts:94
    • impl:protocol.build-args · src/cli/build-args.ts:11
    • impl:protocol.generate-command · src/cli/generate-command.ts:34

    Referencing units

    None.

    Enabled verifiers: spec:consumers.command-line.generate-check-failure, spec:consumers.command-line.generate-writes-every-root, spec:consumers.command-line.verb-help-touches-nothing

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.capability-map-page

    Implementing units

    • impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.data.inputs

    Implementing units

    • impl:protocol.studio-base-input · src/cli/studio-inputs.ts:9
    • impl:protocol.studio-command · src/cli/studio-command.ts:106
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.data.recipe-answers

    Implementing units

    • impl:protocol.studio-recipes · src/projections/studio/recipes.ts:34

    Referencing units

    • impl:protocol.studio-register-contracts · src/projections/studio/pages/register-answers.ts:4

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagram-kinds.capability-tree

    Implementing units

    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.edge-routing

    Implementing units

    • impl:protocol.studio-diagram-routing · src/projections/studio/diagrams/routing.ts:38
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.legibility

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.requirement-trace

    Implementing units

    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl: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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagrams.folds-by-context

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-context

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.folds-by-layer

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-layer

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.within-bound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-within-bound

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diff-page.changed-entry

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diff-changed-entry

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.export.self-contained

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-export-contained

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.glossary-page.same-word-twice

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-glossary-same-word-twice

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.index-page

    Implementing units

    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.evidence

    Implementing units

    • impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.packs

    Implementing units

    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.tests

    Implementing units

    • impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.lenses.tests.coverage-row

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.owner-queue.dependency-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-queue-dependency-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.publisher.watch

    Implementing units

    • impl:protocol.studio-watch · src/cli/studio-command.ts:122

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.publisher.watch.matches-plain-run

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.registers.blocking-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-registers-blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.runs-page.external-evidence

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.run-external

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.search

    Implementing units

    • impl:protocol.studio-concept-match · src/reader/concept-match.ts:43
    • impl:protocol.studio-search-page · src/projections/studio/pages/search-page.ts:5
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-concept-match, test:protocol.studio-page-elements, test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.sharing.stamp-written-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-stamp-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.spec-page.cited-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-cited-declaration

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.verification-panels

    Implementing units

    • impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 4

  • spec:consumers.command-line.generate-check-failure

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.generate-check-failure

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.command-line.generate-writes-every-root

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.generate-writes-every-root

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.command-line.verb-help-touches-nothing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.verb-help-touches-nothing

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.engine-provenance

    Implementing units

    • impl:protocol.build-artifacts · src/cli/build-artifacts.ts:182
    • impl:protocol.engine-provenance-cli · src/cli/sdp.ts:102

    Referencing units

    None.

    Enabled verifiers: test:protocol.engine-provenance

    Packs: pack:design-management-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.data.inputs.both-given

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-inputs-both-given

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.data.inputs.graph-only

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-graph-only

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.planned-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-planned-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.unit-register

    Implementing units

    • impl:protocol.studio-unit-register · src/projections/studio/pages/architecture-register.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-maturity-requirement

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.tests.coverage-row

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-tests-coverage-row

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.publisher.watch.matches-plain-run

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-watch-plain

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.verification-panels.rule-coverage

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-rule-coverage

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.structural-mermaid

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:design-management-v1, pack:self-hosting-v1

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
decidedBy · incomingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
decidedBy · incomingThe Studio's custom elements each hold one view the build renders
spec:consumers.spec-studio.components · resolves
declaredNoneNone
decidedBy · incomingA few custom elements filter, search, open and copy on a rendered page
spec:consumers.spec-studio.page-elements · resolves
declaredNoneNone
refines · incomingThe build renders every Studio view, and an element only enhances it
spec:decisions.studio-build-renders · resolves
declarednarrows where a view's values come from; the build writes them into the markup, so a host carries that markup and supplies no graph dataNone
refines · incomingThe engine lays out every Studio diagram as static SVG when the page set is built
spec:decisions.studio-diagram-renderer · resolves
declarednarrows how an element that shows a diagram renders it; the element only enhances an SVG the build drewNone

Bindings

Implementation binding: none

Design reference: none

Verifier binding: none

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

52. The build renders every Studio view, and an element only enhances it

spec:decisions.studio-build-renders

The build renders every Studio view, and an element only enhances it

spec:decisions.studio-build-rendersDecision Record · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/decisions/studio-build-renders.sdp.md

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

Intent
outcome
Let every Studio view read in full without script, print, and travel inside a Pack export, while its custom element adds only the interaction the view needs.
Decision
context
The custom-elements decision frames an element as a view that renders from graph data its host page supplies. The Studio's pages read in full without script and open from file://, a Pack export carries no script, two builds of one graph write the same bytes, and the page computes no join, claim, fact or floor; the page elements the Studio ships already add behavior to markup the build wrote.
decision
The build renders every Studio view into the page's markup from reader values and the recipe answers its page names, and a custom element adds only the interaction its view needs; a host page that embeds a view carries the markup the build wrote and loads the element script, and supplies no graph data.
rationale
  • A view rendered at build time reads without script, prints, survives the Pack export, and keeps one graph to one set of bytes.
  • An element that holds no graph data cannot compute a join, claim, fact or floor in the browser, which the Studio refuses.
alternatives
  • Elements that render their views from graph data a host supplies, as the custom-elements decision first framed them, show nothing without script and put a second rendering path in the browser.
consequences
  • An element's attributes name its subject and its interaction, never a setting the build did not render, so the original's readiness-pill, depth, highlight and group-by attributes are gone.
  • The custom-elements decision still rules how the elements are written: as custom elements without a framework.
Verification

Verifier bindings

No verifier binding recorded.

Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
  • Test or oracle bindings: no recorded binding.
Requirement drawing for spec:decisions.studio-build-renders

Scroll horizontally to read the whole drawing.

The diagram as text
  • spec:decisions.studio-build-renders: The build renders every Studio view, and an element only enhances it · declared Spec
  • spec:decisions.studio-web-components: The Studio is built from custom elements, not a framework · declared Spec
  • impl:protocol.studio-architecture-lens: renders recipe component rows and planned designs as architecture and member diagrams · anchored code · src/projections/studio/pages/architecture-page.ts:50
  • impl:protocol.studio-diagram-element: adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · anchored code · src/studio-elements/diagram.ts:23
  • impl:protocol.studio-diagrams: deterministic grid and band layouts with bounded folds and full text equivalents · anchored code · src/projections/studio/diagrams/svg.ts:73
  • impl:protocol.studio-evidence-lens: names the four evidence sources and what would bring each into the Studio · anchored code · src/projections/studio/pages/evidence-page.ts:3
  • impl:protocol.studio-recipes: evaluates shipped recipe bodies once and shares answers between Studio pages · anchored code · src/projections/studio/recipes.ts:34
  • impl:protocol.studio-tests-lens: renders shared rule and example-space coverage with filters and verifier bindings · anchored code · src/projections/studio/pages/tests-page.ts:34
  • spec:decisions.studio-build-renders refines spec:decisions.studio-web-components · declared — narrows where a view's values come from; the build writes them into the markup, so a host carries that markup and supplies no graph data
  • impl:protocol.studio-architecture-lens references spec:decisions.studio-build-renders · anchored
  • impl:protocol.studio-diagram-element references spec:decisions.studio-build-renders · anchored
  • impl:protocol.studio-diagrams references spec:decisions.studio-build-renders · anchored
  • impl:protocol.studio-evidence-lens references spec:decisions.studio-build-renders · anchored
  • impl:protocol.studio-recipes references spec:decisions.studio-build-renders · anchored
  • impl:protocol.studio-tests-lens references spec:decisions.studio-build-renders · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:decisions.studio-build-renders
The diagram as text
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders
  • spec:decisions.studio-build-renders: The build renders every Studio view, and an element only enhances it
  • spec:decisions.studio-web-components: The Studio is built from custom elements, not a framework
  • spec:decisions.studio-build-renders refines spec:decisions.studio-web-components · declared — narrows where a view's values come from; the build writes them into the markup, so a host carries that markup and supplies no graph data
  • spec:consumers.spec-studio decidedBy spec:decisions.studio-build-renders · declared
  • spec:consumers.spec-studio.components decidedBy spec:decisions.studio-build-renders · 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

  • spec:consumers.spec-studio

    Implementing units

    • impl:protocol.studio-command · src/cli/studio-command.ts:106
    • impl:protocol.studio-data · src/projections/studio/data.ts:279
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-publisher

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.components

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-compose · src/studio-elements/compose.ts:13
    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68
    • impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44
    • impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-intent-handoff

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 2

  • spec:consumers.spec-studio.cited-line-text

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:roadmap, pack:self-hosting-v1

  • spec:consumers.spec-studio.data

    Implementing units

    • impl:protocol.studio-data · src/projections/studio/data.ts:279

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-data

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams

    Implementing units

    • impl:protocol.studio-architecture-diagrams · src/projections/studio/diagrams/architecture.ts:4
    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagram-model · src/projections/studio/diagrams/model.ts:1
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.export

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.glossary-page

    Implementing units

    • impl:protocol.studio-glossary · src/projections/studio/pages/glossary-page.ts:7

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.glossary-page.same-word-twice

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses

    Implementing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.navigation

    Implementing units

    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-navigation, test:protocol.studio-roadmap-page

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.pack-page

    Implementing units

    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap-priority, test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.page-elements

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-copy · src/studio-elements/copy.ts:22
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-search-form · src/studio-elements/search.ts:18
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-copy-source, test:protocol.studio-page-elements

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.publisher

    Implementing units

    • impl:protocol.build-pipeline-emit · src/cli/build-command.ts:251
    • impl:protocol.studio-command · src/cli/studio-command.ts:106
    • impl:protocol.studio-page-catalog · src/projections/studio/pages/index.ts:21
    • impl:protocol.studio-paths · src/projections/studio/paths.ts:2
    • impl:protocol.studio-publish · src/projections/studio/publish.ts:24

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-data, test:protocol.studio-publisher

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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.registers

    Implementing units

    • impl:protocol.studio-registers · src/projections/studio/pages/registers-page.ts:47

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.registers.blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.responsive

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-intent-handoff

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.runs-page

    Implementing units

    • impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.sharing

    Implementing units

    • impl:protocol.stamp-command · src/cli/stamp-command.ts:8
    • impl:protocol.studio-preview-workflow · test/studio-s4.test.ts:742
    • impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.sharing.stamp-written-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.shell

    Implementing units

    • impl:protocol.studio-code-spans · src/projections/studio/pages/code-spans.ts:9
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-html · src/projections/studio/pages/html.ts:8
    • impl:protocol.studio-text · src/projections/studio/pages/text.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.spec-page

    Implementing units

    • impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8
    • impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:decisions.studio-html-surface

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:decisions.studio-web-components

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 3

  • spec:consumers.command-line

    Implementing units

    • impl:protocol.adopter-help · src/cli/help.ts:167
    • impl:protocol.agent-surface-cli · src/cli/sdp.ts:94
    • impl:protocol.build-args · src/cli/build-args.ts:11
    • impl:protocol.generate-command · src/cli/generate-command.ts:34

    Referencing units

    None.

    Enabled verifiers: spec:consumers.command-line.generate-check-failure, spec:consumers.command-line.generate-writes-every-root, spec:consumers.command-line.verb-help-touches-nothing

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.capability-map-page

    Implementing units

    • impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.data.inputs

    Implementing units

    • impl:protocol.studio-base-input · src/cli/studio-inputs.ts:9
    • impl:protocol.studio-command · src/cli/studio-command.ts:106
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.data.recipe-answers

    Implementing units

    • impl:protocol.studio-recipes · src/projections/studio/recipes.ts:34

    Referencing units

    • impl:protocol.studio-register-contracts · src/projections/studio/pages/register-answers.ts:4

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagram-kinds

    Implementing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219
    • impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-catalog

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.edge-routing

    Implementing units

    • impl:protocol.studio-diagram-routing · src/projections/studio/diagrams/routing.ts:38
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.legibility

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.requirement-trace

    Implementing units

    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl: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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagrams.folds-by-context

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-context

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.folds-by-layer

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-layer

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.within-bound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-within-bound

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diff-page.changed-entry

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diff-changed-entry

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.export.self-contained

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-export-contained

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.glossary-page.same-word-twice

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-glossary-same-word-twice

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.index-page

    Implementing units

    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.evidence

    Implementing units

    • impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.packs

    Implementing units

    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-lenses

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.tests

    Implementing units

    • impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.lenses.tests.coverage-row

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.owner-queue.dependency-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-queue-dependency-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.publisher.watch

    Implementing units

    • impl:protocol.studio-watch · src/cli/studio-command.ts:122

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.publisher.watch.matches-plain-run

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.registers.blocking-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-registers-blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.runs-page.external-evidence

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.run-external

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.search

    Implementing units

    • impl:protocol.studio-concept-match · src/reader/concept-match.ts:43
    • impl:protocol.studio-search-page · src/projections/studio/pages/search-page.ts:5
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-concept-match, test:protocol.studio-page-elements, test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.sharing.stamp-written-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-stamp-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.spec-page.cited-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-cited-declaration

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.verification-panels

    Implementing units

    • impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:decisions.studio-diagram-renderer

    Implementing units

    None.

    Referencing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Enabled verifiers: None

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 4

  • spec:consumers.command-line.generate-check-failure

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.generate-check-failure

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.command-line.generate-writes-every-root

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.generate-writes-every-root

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.command-line.verb-help-touches-nothing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.command-line.verb-help-touches-nothing

    Packs: pack:adopter-speed-v1, pack:self-hosting-v1

  • spec:consumers.engine-provenance

    Implementing units

    • impl:protocol.build-artifacts · src/cli/build-artifacts.ts:182
    • impl:protocol.engine-provenance-cli · src/cli/sdp.ts:102

    Referencing units

    None.

    Enabled verifiers: test:protocol.engine-provenance

    Packs: pack:design-management-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.data.inputs.both-given

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-inputs-both-given

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.data.inputs.graph-only

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-graph-only

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagram-kinds.capability-tree

    Implementing units

    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.lenses.architecture.planned-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-planned-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.unit-register

    Implementing units

    • impl:protocol.studio-unit-register · src/projections/studio/pages/architecture-register.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-maturity-requirement

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.tests.coverage-row

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-tests-coverage-row

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.publisher.watch.matches-plain-run

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-watch-plain

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.verification-panels.rule-coverage

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-rule-coverage

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.structural-mermaid

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:design-management-v1, pack:self-hosting-v1

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingThe Studio is built from custom elements, not a framework
spec:decisions.studio-web-components · resolves
declarednarrows where a view's values come from; the build writes them into the markup, so a host carries that markup and supplies no graph dataNone
decidedBy · incomingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
decidedBy · incomingThe Studio's custom elements each hold one view the build renders
spec:consumers.spec-studio.components · resolves
declaredNoneNone

Bindings

Implementation binding: none

Design reference: present

  • impl:protocol.studio-architecture-lens · renders recipe component rows and planned designs as architecture and member diagrams · src/projections/studio/pages/architecture-page.ts:50 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-diagrams · deterministic grid and band layouts with bounded folds and full text equivalents · src/projections/studio/diagrams/svg.ts:73 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-evidence-lens · names the four evidence sources and what would bring each into the Studio · src/projections/studio/pages/evidence-page.ts:3 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-recipes · evaluates shipped recipe bodies once and shares answers between Studio pages · src/projections/studio/recipes.ts:34 · role service · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-tests-lens · renders shared rule and example-space coverage with filters and verifier bindings · src/projections/studio/pages/tests-page.ts:34 · role projection · component component:protocol.projections · layer edge · context protocol

Verifier binding: none

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

53. The engine lays out every Studio diagram as static SVG when the page set is built

spec:decisions.studio-diagram-renderer

The engine lays out every Studio diagram as static SVG when the page set is built

spec:decisions.studio-diagram-rendererDecision Record · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/decisions/studio-diagram-renderer.sdp.md

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

Intent
outcome
Give the Studio diagrams that a reader with only a link reads without script, that two builds of one graph draw byte for byte, and that need no layout code in the page.
Decision
context
The Studio's pages read in full without script and open from file://, two builds of one graph write the same bytes, and the custom-elements decision admits a framework runtime only through a decision that refines it. The architecture lens, a component's members, a Spec's relations and the code that realizes a Spec all need a drawing. A prototype over the Protocol's own components and the first adopter's, read through sdp q, measured how large those drawings are (reviews/assets/plan46-prototypes/studio-diagrams/).
decision
The engine lays out every Studio diagram at build time with its own deterministic layered layout and writes it into the page as inline SVG followed by a text equivalent. The custom element that holds a diagram adds only pan, zoom and pinch, by changing the SVG's view box. One diagram draws at most the bound spec:consumers.spec-studio.diagrams#design.bound names, and above it the diagram folds, by context and then by layer, as that Spec states.
rationale
  • Inline SVG reads without script, prints, survives the Pack export and opens from file://, so the page carries no layout code and the element stays small.
  • A layout computed from graph values, with no font, clock or random value, draws the same bytes from the same graph, which the Studio's reproducibility rule and --check-clean need.
  • The bound sits between what the two corpora need and what a page reads well: in the prototype the largest real drawing is the Protocol's thirty-five-box member diagram, and a synthetic sixty-two-component drawing spanned about two and a half screen widths unfolded; nothing between forty and sixty-two boxes was measured, and the edge bound is headroom over the thirty-nine edges the largest real diagram draws.
alternatives
  • Mermaid rendered in the page needs its script and a runtime of several hundred kilobytes, lays out differently per browser, and shows nothing without script; the shipped Mermaid projection stays frozen for its own readers.
  • A layout library such as ELK or Dagre run at build time adds a dependency whose version moves the bytes, while the Studio's diagrams need only labelled bands and a grid.
  • Drawing on a canvas from embedded data puts the diagram out of reach of a screen reader, of print and of a reader without script.
consequences
  • The engine owns a small layout module and its tests; the layout's look is judged in review, and its determinism and fold by test.
  • The text equivalent states every box and edge, so a diagram is never the only way to read what it shows.
  • A change to the layout moves the Studio's bytes like any other rendering change, and --check-clean catches one nobody intended.
Verification

Verifier bindings

No verifier binding recorded.

Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
  • Test or oracle bindings: no recorded binding.
Requirement drawing for spec:decisions.studio-diagram-renderer
The diagram as text
  • spec:decisions.studio-diagram-renderer: The engine lays out every Studio diagram as static SVG when the page set is built · declared Spec
  • spec:decisions.studio-web-components: The Studio is built from custom elements, not a framework · declared Spec
  • impl:protocol.studio-diagram-element: adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · anchored code · src/studio-elements/diagram.ts:23
  • impl:protocol.studio-diagrams: deterministic grid and band layouts with bounded folds and full text equivalents · anchored code · src/projections/studio/diagrams/svg.ts:73
  • spec:decisions.studio-diagram-renderer refines spec:decisions.studio-web-components · declared — narrows how an element that shows a diagram renders it; the element only enhances an SVG the build drew
  • impl:protocol.studio-diagram-element references spec:decisions.studio-diagram-renderer · anchored
  • impl:protocol.studio-diagrams references spec:decisions.studio-diagram-renderer · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:decisions.studio-diagram-renderer
Relations of spec:decisions.studio-diagram-rendererdecidedBy · declareddecidedBy · declareddecidedBy · declareddecidedBy · declaredrefines · declareddependsOn · declaredOutgoing refinesspec:decisions.studio-web-componentsThe Studio is built fromcustom elements, not aframework…decisions.studio-web-componentsOutgoing dependsOnspec:extraction.determinismCommitted source derivesbyte-identical output…extraction.determinismSubjectspec:decisions.studio-diagram-rendererThe engine lays out everyStudio diagram as staticSVG when the page set isbuilt…decisions.studio-diagram-rendererIncoming decidedByspec:consumers.spec-studio.componentsThe Studio's customelements each hold one viewthe build renders…consumers.spec-studio.componentsspec:consumers.spec-studio.diagram-kindsThe Studio chooses diagramkinds from graph values…consumers.spec-studio.diagram-kindsspec:consumers.spec-studio.diagram-kinds.mermaid-sourceA diagram offers Mermaidsource as copyable text…consumers.spec-studio.diagram-kinds.mermaid-sourcespec:consumers.spec-studio.diagramsA diagram is laid out fromgraph values into SVG witha text equivalent…consumers.spec-studio.diagrams
The diagram as text
  • spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders
  • spec:consumers.spec-studio.diagram-kinds: The Studio chooses diagram kinds from graph values
  • spec:consumers.spec-studio.diagram-kinds.mermaid-source: A diagram offers Mermaid source as copyable text
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent
  • spec:decisions.studio-diagram-renderer: The engine lays out every Studio diagram as static SVG when the page set is built
  • spec:decisions.studio-web-components: The Studio is built from custom elements, not a framework
  • spec:extraction.determinism: Committed source derives byte-identical output
  • spec:decisions.studio-diagram-renderer dependsOn spec:extraction.determinism · declared — a diagram laid out from graph values alone keeps one graph to one set of bytes
  • spec:decisions.studio-diagram-renderer refines spec:decisions.studio-web-components · declared — narrows how an element that shows a diagram renders it; the element only enhances an SVG the build drew
  • spec:consumers.spec-studio.components decidedBy spec:decisions.studio-diagram-renderer · declared
  • spec:consumers.spec-studio.diagram-kinds decidedBy spec:decisions.studio-diagram-renderer · declared — every new kind is laid out by the engine at build time as the renderer decision rules
  • spec:consumers.spec-studio.diagram-kinds.mermaid-source decidedBy spec:decisions.studio-diagram-renderer · declared
  • spec:consumers.spec-studio.diagrams decidedBy spec:decisions.studio-diagram-renderer · 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

  • spec:consumers.spec-studio.components

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-compose · src/studio-elements/compose.ts:13
    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68
    • impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44
    • impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-intent-handoff

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagram-kinds

    Implementing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219
    • impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-catalog

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagrams

    Implementing units

    • impl:protocol.studio-architecture-diagrams · src/projections/studio/diagrams/architecture.ts:4
    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagram-model · src/projections/studio/diagrams/model.ts:1
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 2

  • spec:consumers.spec-studio.capability-map-page

    Implementing units

    • impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.capability-tree

    Implementing units

    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.edge-routing

    Implementing units

    • impl:protocol.studio-diagram-routing · src/projections/studio/diagrams/routing.ts:38
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.legibility

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.requirement-trace

    Implementing units

    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl: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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagrams.folds-by-context

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-context

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.folds-by-layer

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-layer

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.within-bound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-within-bound

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.page-elements

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-copy · src/studio-elements/copy.ts:22
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-search-form · src/studio-elements/search.ts:18
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-copy-source, test:protocol.studio-page-elements

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.spec-page

    Implementing units

    • impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8
    • impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 3

Distance 4

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:extraction.determinism
spec:extraction.determinism · resolves
declareda diagram laid out from graph values alone keeps one graph to one set of bytesNone
refines · outgoingThe Studio is built from custom elements, not a framework
spec:decisions.studio-web-components · resolves
declarednarrows how an element that shows a diagram renders it; the element only enhances an SVG the build drewNone
decidedBy · incomingThe Studio's custom elements each hold one view the build renders
spec:consumers.spec-studio.components · resolves
declaredNoneNone
decidedBy · incomingspec:consumers.spec-studio.diagram-kinds
spec:consumers.spec-studio.diagram-kinds · resolves
declaredevery new kind is laid out by the engine at build time as the renderer decision rulesNone
decidedBy · incomingspec:consumers.spec-studio.diagram-kinds.mermaid-source
spec:consumers.spec-studio.diagram-kinds.mermaid-source · resolves
declaredNoneNone
decidedBy · incomingA diagram is laid out from graph values into SVG with a text equivalent
spec:consumers.spec-studio.diagrams · resolves
declaredNoneNone

Bindings

Implementation binding: none

Design reference: present

  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-diagrams · deterministic grid and band layouts with bounded folds and full text equivalents · src/projections/studio/diagrams/svg.ts:73 · role projection · component component:protocol.projections · layer edge · context protocol

Verifier binding: none

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

54. A diagram is laid out from graph values into SVG with a text equivalent

spec:consumers.spec-studio.diagrams

A diagram is laid out from graph values into SVG with a text equivalent

spec:consumers.spec-studio.diagramsContract · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

Design: 14 design entries · 4 pinned declarations · 1 decision

Findings: no errors, no warnings

specs/consumers/spec-studio.diagrams.sdp.md

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

Every Studio diagram is laid out in the engine when the page set is built, so a page draws it with no script and the same inputs draw the same bytes. The architecture grid, component members and one-hop trace retain their readings; the Spec page's requirement drawing replaces realization, and other pages name their supplied drawing answers. Words carry every reading the picture shows, and its text equivalent states every box and edge.

Intent
outcome
Draw the Studio's diagrams as inline SVG that reads without script, prints, and stays the same bytes for the same graph, with every box and edge also stated in words.
Contract
rule.buildTime line 24 · specs/consumers/spec-studio.diagrams.sdp.md:24
The build lays out each diagram and writes it into its page as inline SVG; no diagram is laid out in the browser, and a page draws every diagram with no script.

spec:consumers.spec-studio.diagrams.within-bound · enabled

rule.layoutInputs line 25 · specs/consumers/spec-studio.diagrams.sdp.md:25
A layout reads only the boxes, each with its id, words and supplied grouping, and edges, each with its two ends, exact kind and claim, optional reason and aggregation count, taken from the reader values and recipe answers its page names; it reads no font, file, clock or random value, measures text by character count and writes whole-pixel coordinates. Depth, reach and component resolution belong to those answers, never layout.

spec:consumers.spec-studio.diagrams.within-bound · enabled

rule.sameBytes line 26 · specs/consumers/spec-studio.diagrams.sdp.md:26
One graph and the same inputs draw byte-identical SVG on every build and every machine.

spec:consumers.spec-studio.diagrams.folds-by-context · enabled, spec:consumers.spec-studio.diagrams.within-bound · enabled

rule.architectureGrid line 27 · specs/consumers/spec-studio.diagrams.sdp.md:27
The architecture diagram places each component in the column of its recorded context, contexts in code-unit order and then a column for components that state none, and in the band of its layer, in the order edge, application, domain, adapter, infrastructure, then a band for components that state none; a cell holds its components in id order.

spec:consumers.spec-studio.diagrams.within-bound · enabled

rule.aggregatedUses line 28 · specs/consumers/spec-studio.diagrams.sdp.md:28
An architecture edge joins two components and carries the count of unit uses edges between them, as the component rows of spec:consumers.spec-studio.lenses.architecture#design.componentRows count them: each end of a unit uses edge resolves to its component, directly or through memberOf, and a use within one component draws nothing.

no example exercises it

rule.relationBands line 29 · specs/consumers/spec-studio.diagrams.sdp.md:29
A trace graph draws the Spec in a band of its own, the Specs its declared relations name above it in one band per relation type, in the order refines, dependsOn, constrainedBy, decidedBy, verifies, supersedes, and the Specs whose declared relations name it below in bands of the same order; a Spec related more than one way sits in the band of its first relation, and each relation is its own edge.

no example exercises it

rule.memberBands line 30 · specs/consumers/spec-studio.diagrams.sdp.md:30
A member diagram draws a component's members in bands by how deep uses among members reaches, a member that uses another sitting above it, and the units and components outside the component that members use in a last band of their own.

no example exercises it

rule.bound line 31 · specs/consumers/spec-studio.diagrams.sdp.md:31
A diagram draws at most the boxes and edges the bound names.

spec:consumers.spec-studio.diagrams.folds-by-context · enabled, spec:consumers.spec-studio.diagrams.folds-by-layer · enabled

rule.foldByContext line 32 · specs/consumers/spec-studio.diagrams.sdp.md:32
An architecture diagram over the bound with more than one context draws one box per context, with the uses between contexts aggregated and counted, and then each context's own diagram in a section of its own, where every other context it uses or is used by is one folded box in a band of its own.

spec:consumers.spec-studio.diagrams.folds-by-context · enabled

rule.foldByLayer line 33 · specs/consumers/spec-studio.diagrams.sdp.md:33
A diagram of one context still over the bound draws one box per layer of that context, and then each layer's components in a section of their own.

spec:consumers.spec-studio.diagrams.folds-by-layer · enabled

rule.boundFallback line 34 · specs/consumers/spec-studio.diagrams.sdp.md:34
A drawing still over the bound after these folds, the context overview, one context's diagram or one layer's, writes no SVG; its text equivalent lists every box and edge the drawing would hold and then says the drawing was omitted because it exceeds the bound.

no example exercises it

rule.foldGroups line 35 · specs/consumers/spec-studio.diagrams.sdp.md:35
A trace graph over the bound folds its largest relation group first, ties broken by direction and then by relation type, into one box that names the count and the relation and links to the Spec page's relations, until the drawing fits.

no example exercises it

rule.noFoldBelowComponent line 36 · specs/consumers/spec-studio.diagrams.sdp.md:36
A member diagram over the bound writes no SVG; its text equivalent lists every member and every use edge, and then says the drawing was omitted because it exceeds the bound.

no example exercises it

rule.wordsBesideStyle line 37 · specs/consumers/spec-studio.diagrams.sdp.md:37
Every reading a fill, outline or line style marks is also in words: bands and columns carry labels, a planned component reads planned, a folded box reads folded, and an aggregated edge's count is in its text equivalent. A drawing whose edges all have one relation names it once in its legend and draws no edge label; solid uses and dashed plans to use share the use relation, with the planned wording also in the legend. A drawing with several relations keeps its labelled bands and edge labels.

no example exercises it

rule.textEquivalent line 38 · specs/consumers/spec-studio.diagrams.sdp.md:38
Each diagram is followed by its text equivalent, which states every box with its words and every edge as a sentence naming its two ends and its kind, and the SVG names it as its description.

spec:consumers.spec-studio.diagrams.within-bound · enabled

Cited at

  • test/skills.test.ts:1935
rule.panZoomOnly line 39 · specs/consumers/spec-studio.diagrams.sdp.md:39
The diagram element adds only pan, zoom and pinch by changing the SVG's view box; it never moves a box or edge. At viewport widths of at least 720 CSS pixels the SVG starts at natural size inside a keyboard-accessible scroll region, with overflow inside the figure. Below that width the responsive contract fits the same drawing to the screen. Reset restores the initial view and scroll position. Without script the drawing, scrolling, links and text equivalent remain usable. Print fits the drawing to paper and exposes its text equivalent.

no example exercises it

0 unkeyed rules.

Verifying examples

An architecture over the bound folds by context · spec:consumers.spec-studio.diagrams.folds-by-context · ready floor ready

Executable Spec

Given an architecture of {components: 45} components spread over {contexts: 3} contexts and {layers: 5} layers, with {edges: 0} uses edges between components
When the build lays the architecture diagram out twice
Then the two drawings are byte-identical: {identical: true}
Then the diagram folds by {fold: "context"}
Then the first drawing holds {drawn: 3} boxes
Then its text equivalent names {named: 3} boxes and edges

Open example

One context over the bound folds by layer · spec:consumers.spec-studio.diagrams.folds-by-layer · ready floor ready

Executable Spec

Given an architecture of {components: 50} components spread over {contexts: 1} contexts and {layers: 5} layers, with {edges: 0} uses edges between components
When the build lays the architecture diagram out twice
Then the two drawings are byte-identical: {identical: true}
Then the diagram folds by {fold: "layer"}
Then the first drawing holds {drawn: 5} boxes
Then its text equivalent names {named: 5} boxes and edges

Open example

An architecture within the bound draws in one diagram, the same bytes twice · spec:consumers.spec-studio.diagrams.within-bound · ready floor ready

Executable Spec

Given an architecture of {components: 12} components spread over {contexts: 3} contexts and {layers: 4} layers, with {edges: 20} uses edges between components
When the build lays the architecture diagram out twice
Then the two drawings are byte-identical: {identical: true}
Then the diagram folds by {fold: "nothing"}
Then the first drawing holds {drawn: 12} boxes
Then its text equivalent names {named: 32} boxes and edges

Open example

Example space

Given an architecture of {components:number} components spread over {contexts:number} contexts and {layers:number} layers, with {edges:number} uses edges between components
When the build lays the architecture diagram out twice
Then the two drawings are byte-identical: {identical:boolean}
Then the diagram folds by {fold:"nothing"|"context"|"layer"}
Then the first drawing holds {drawn:number} boxes
Then its text equivalent names {named:number} boxes and edges
Design
bound line 42 · specs/consumers/spec-studio.diagrams.sdp.md:42
40 boxes and 100 edges per diagram, counting every box a drawing holds, folded and planned boxes included, and every edge it draws.

no citation recorded

density line 43 · specs/consumers/spec-studio.diagrams.sdp.md:43
For requirement, trace, capability and dependency drawings, trigger the existing folds before the hard bound when deterministic layout height exceeds 2000 logical pixels. Measure height from the box and lane layout before routing, using the same label metrics and width budget as the drawing. A fold triggered by these limits must strictly lower that height and hold at least two boxes, keeping the same scope, claims and complete text equivalent. If no lawful fold fits the height budget, omit the SVG and open the text equivalent.
labelMetrics line 44 · specs/consumers/spec-studio.diagrams.sdp.md:44
A title or recorded label leads at fourteen pixels, followed by the displayed id at twelve pixels and remaining words such as a component's member count. Title lines hold at most 28 characters and id lines 30, with an eight-pixel character advance. Wrap at spaces or id punctuation, then by code point, and calculate box height from every line.
cellWrap line 45 · specs/consumers/spec-studio.diagrams.sdp.md:45
Wrap a cell's boxes within the fixed logical width budget instead of a fixed box count; retain context columns with local scrolling when they exceed it. Layout reads no browser or font measurement.
widthBudget line 46 · specs/consumers/spec-studio.diagrams.sdp.md:46
880 logical pixels for a band or grid, band labels included above their band; 264 per context cell when several contexts share a grid, the full band budget when only one context is shown, and 24 between boxes. Routing gutters may widen the SVG to preserve distinct lanes. A drawing wider than 880 scrolls inside its figure and receives the build-written instruction Scroll horizontally to read the whole drawing.

no citation recorded

shortId line 47 · specs/consumers/spec-studio.diagrams.sdp.md:47
Drop the namespace and leading dotted segments every id in the figure shares, marking elision with …; keep more segments on collisions. A displayed id carries a namespace only when shown in full. Full ids remain in link titles, the text equivalent and source.
edgeRouting line 48 · specs/consumers/spec-studio.diagrams.sdp.md:48
Reserve boxes and labels as obstacles, route orthogonally with distinct ports and lanes eight pixels apart, and never share a collinear segment or overlap labels. Crossings are permitted only at free points. Keep exact relations and claims through the words-beside-style rule. A deterministic finite routing failure omits the SVG, opens its text equivalent and explains the failure; the build owns search mechanics.
edgeKinds line 49 · specs/consumers/spec-studio.diagrams.sdp.md:49
uses for a realized use, drawn solid; plans to use for a use a component design states, drawn dashed; on a trace graph the relation's type; an arrow points from the unit or Spec that uses or declares to the one it names.

no citation recorded

svgMarkup line 50 · specs/consumers/spec-studio.diagrams.sdp.md:50
the svg carries role="img", a title, aria-describedby naming its text equivalent and a viewBox of its own size; a box is a g with class node and data-id, plus data-planned="true" or data-folded="true" when it is planned or folded, holding a link to the box's target; an edge is a g with class edge, data-from, data-to and data-kind; a band is a g with class band and data-label, a column a g with class lane and data-label, each also drawing its label as text. An edge also carries data-claim and a stable data-edge-key when its label uses a legend key; route and label coordinates are presentation values and mint no graph edge.
boxTargets line 51 · specs/consumers/spec-studio.diagrams.sdp.md:51
a component's box links to its detail on the architecture lens, a planned component's to its component design's Spec page, a context's or layer's folded box to its section on the same page, a Spec's to its page, and a folded relation group's to the Spec page's relations.
textEquivalent line 52 · specs/consumers/spec-studio.diagrams.sdp.md:52
a details element closed by default, summary The diagram as text, holding one li per box, <id>: <words>, followed by · folded members: <ids> when folded identities are present, and then one li per edge, <from> <kind> <to>, followed by · <claim> when present, (<n> unit edges) when the edge aggregates more than one, and — <reason> when present.
diagramElement line 53 · specs/consumers/spec-studio.diagrams.sdp.md:53
sdp-diagram with subject, the rooted Spec, Pack, component or context id, or architecture, wraps one figure containing its caption and legend, any build-written scroll instruction, a keyboard-focusable named .diagram-scroll region containing the SVG, its text equivalent and, when offered, its closed Mermaid-source disclosure with labelled read-only textarea and sdp-copy. Caption, legend and source stay outside the scroll region. On upgrade it adds Zoom in, Zoom out and Reset buttons and handles drag, a wheel with Control or Command held, and pinch; it adds no layout or copy behavior.

no citation recorded

elementIds line 54 · specs/consumers/spec-studio.diagrams.sdp.md:54
a diagram's text equivalent has the id diagram.<subject>.text and its arrow has the id diagram.<subject>.arrow. A page that draws a second view of one subject inserts that view's name before text or arrow, so the Spec page's realization drawing uses diagram.<subject>.realization.text and diagram.<subject>.realization.arrow; its trace graph keeps the unqualified ids. Every id is unique on its page.
omittedDrawing line 55 · specs/consumers/spec-studio.diagrams.sdp.md:55
A drawing over the bound keeps its figure and caption, writes Shown as text: this drawing exceeds the bound of <b> boxes and <e> edges., and opens its text equivalent. A routing failure instead writes Shown as text: a distinct route or label could not be placed within the routing budget. and opens the same complete box-and-edge reading. A drawing still above the height budget after lawful folds instead writes Shown as text: this drawing exceeds the height budget of <h> pixels after folding. and opens its text equivalent. No omission offers partial Mermaid source.
Verification

Verifier bindings

Example space

  • components · number · declared by an architecture of {components} components spread over {contexts} contexts and {layers} layers, with {edges} uses edges between components
  • contexts · number · declared by an architecture of {components} components spread over {contexts} contexts and {layers} layers, with {edges} uses edges between components
  • layers · number · declared by an architecture of {components} components spread over {contexts} contexts and {layers} layers, with {edges} uses edges between components
  • edges · number · declared by an architecture of {components} components spread over {contexts} contexts and {layers} layers, with {edges} uses edges between components

Bound points

Oracle binding: present · oracle:protocol.studio-diagrams · test/studio-s1.test.ts:564

Coverage

components: 45 · spec:consumers.spec-studio.diagrams.folds-by-context; 50 · spec:consumers.spec-studio.diagrams.folds-by-layer; 12 · spec:consumers.spec-studio.diagrams.within-bound · not enumerable

contexts: 3 · spec:consumers.spec-studio.diagrams.folds-by-context, spec:consumers.spec-studio.diagrams.within-bound; 1 · spec:consumers.spec-studio.diagrams.folds-by-layer · not enumerable

layers: 5 · spec:consumers.spec-studio.diagrams.folds-by-context, spec:consumers.spec-studio.diagrams.folds-by-layer; 4 · spec:consumers.spec-studio.diagrams.within-bound · not enumerable

edges: 0 · spec:consumers.spec-studio.diagrams.folds-by-context, spec:consumers.spec-studio.diagrams.folds-by-layer; 20 · spec:consumers.spec-studio.diagrams.within-bound · not enumerable

Unbound

  • components: None
  • contexts: None
  • layers: None
  • edges: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.diagrams
  • E8: refines, verifies · declared (3 per relation)
The diagram as text
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent · declared Spec
  • spec:consumers.spec-studio.diagram-kinds: The Studio chooses diagram kinds from graph values · declared Spec
  • spec:consumers.spec-studio.diagram-kinds.edge-routing: Edges route around boxes with deterministic orthogonal paths · declared Spec
  • spec:consumers.spec-studio.diagram-kinds.legibility: A diagram preserves readable labels before zoom · declared Spec
  • spec:consumers.spec-studio.diagrams.folds-by-context: An architecture over the bound folds by context · declared Spec
  • spec:consumers.spec-studio.diagrams.folds-by-layer: One context over the bound folds by layer · declared Spec
  • spec:consumers.spec-studio.diagrams.within-bound: An architecture within the bound draws in one diagram, the same bytes twice · declared Spec
  • spec:consumers.spec-studio.diagram-kinds.capability-tree: A refinement drawing follows the capability map · declared Spec
  • spec:consumers.spec-studio.diagram-kinds.dependency: A dependency drawing shows the declared footing of a Spec set · declared Spec
  • spec:consumers.spec-studio.diagram-kinds.maturity-picture: The maturity map is drawn as a grid of counts · declared Spec
  • spec:consumers.spec-studio.diagram-kinds.mermaid-source: A diagram offers Mermaid source as copyable text · declared Spec
  • spec:consumers.spec-studio.diagram-kinds.requirement-trace: A requirement drawing separates intent from realization and verification · declared Spec
  • spec:consumers.spec-studio.diagram-kinds.scoped-architecture: A Spec set draws the architecture it touches · declared Spec
  • spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders · declared Spec
  • impl:protocol.studio-architecture-diagrams: architecture grids and bounded context and layer folds · anchored code · src/projections/studio/diagrams/architecture.ts:4
  • impl:protocol.studio-architecture-lens: renders recipe component rows and planned designs as architecture and member diagrams · anchored code · src/projections/studio/pages/architecture-page.ts:50
  • impl:protocol.studio-capability-diagrams: places refinement occurrences and bounded branches from the capability map · anchored code · src/projections/studio/diagrams/capability.ts:101
  • impl:protocol.studio-diagram-element: adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · anchored code · src/studio-elements/diagram.ts:23
  • impl:protocol.studio-diagram-layout: title-first box placement, wrapping and band sizing for desktop and phone · anchored code · src/projections/studio/diagrams/layout.ts:140
  • impl:protocol.studio-diagram-model: shared diagram boxes, edges and drawing bounds · anchored code · src/projections/studio/diagrams/model.ts:1
  • impl:protocol.studio-diagram-routing: port, channel and overflow-rail edge routes around boxes and labels · anchored code · src/projections/studio/diagrams/routing.ts:38
  • impl:protocol.studio-diagram-source: escaped Mermaid flowchart and mindmap source in placed box order · anchored code · src/projections/studio/diagrams/mermaid.ts:13
  • impl:protocol.studio-diagrams: deterministic grid and band layouts with bounded folds and full text equivalents · anchored code · src/projections/studio/diagrams/svg.ts:73
  • impl:protocol.studio-maturity-map: places resolved Pack members by their stated rung and floor in authored order · anchored code · src/projections/studio/pages/maturity-map.ts:7
  • impl:protocol.studio-relation-diagrams: relation and member bands and bounded relation folds · anchored code · src/projections/studio/diagrams/bands.ts:10
  • impl:protocol.studio-requirement-diagram: folds requirement bindings by relation direction and claim and serializes exact relations · anchored code · src/projections/studio/diagrams/requirement.ts:12
  • impl:protocol.studio-slice-architecture: selected component grid with distinct planned identities and complete unit edges · anchored code · src/projections/studio/diagrams/slice.ts:219
  • impl:protocol.studio-slice-dependencies: supplied depth bands with protected boundary boxes and lossless text · anchored code · src/projections/studio/diagrams/slice.ts:10
  • oracle:protocol.studio-diagrams: oracle:protocol.studio-diagrams · anchored oracle binding · test/studio-s1.test.ts:564
  • test:protocol.studio-diagram-catalog: test:protocol.studio-diagram-catalog · anchored test binding · binding present · test/studio-diagram-catalog.test.ts:12
  • test:protocol.studio-diagram-core: test:protocol.studio-diagram-core · anchored test binding · binding present · test/studio-diagram-core.test.ts:37
  • test:protocol.studio-diagram-folds-context: test:protocol.studio-diagram-folds-context · anchored test binding · binding present · test/studio-s1.test.ts:675
  • test:protocol.studio-diagram-folds-layer: test:protocol.studio-diagram-folds-layer · anchored test binding · binding present · test/studio-s1.test.ts:681
  • test:protocol.studio-diagram-within-bound: test:protocol.studio-diagram-within-bound · anchored test binding · binding present · test/studio-s1.test.ts:669
  • spec:consumers.spec-studio.diagram-kinds refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagram-kinds.capability-tree refines spec:consumers.spec-studio.diagram-kinds · declared
  • spec:consumers.spec-studio.diagram-kinds.dependency refines spec:consumers.spec-studio.diagram-kinds · declared
  • spec:consumers.spec-studio.diagram-kinds.edge-routing refines spec:consumers.spec-studio.diagram-kinds · declared — arrows that cover no label serve the readable drawings the diagram kinds state
  • spec:consumers.spec-studio.diagram-kinds.edge-routing refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagram-kinds.legibility refines spec:consumers.spec-studio.diagram-kinds · declared — readable labels are part of the outcome the diagram kinds state
  • spec:consumers.spec-studio.diagram-kinds.legibility refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagram-kinds.maturity-picture refines spec:consumers.spec-studio.diagram-kinds · declared
  • spec:consumers.spec-studio.diagram-kinds.mermaid-source refines spec:consumers.spec-studio.diagram-kinds · declared
  • spec:consumers.spec-studio.diagram-kinds.requirement-trace refines spec:consumers.spec-studio.diagram-kinds · declared
  • spec:consumers.spec-studio.diagram-kinds.scoped-architecture refines spec:consumers.spec-studio.diagram-kinds · declared
  • spec:consumers.spec-studio.diagrams refines spec:consumers.spec-studio.components · declared
  • spec:consumers.spec-studio.diagrams.folds-by-context refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-context verifies spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-layer refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-layer verifies spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.within-bound refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.within-bound verifies spec:consumers.spec-studio.diagrams · declared
  • impl:protocol.studio-architecture-diagrams satisfies spec:consumers.spec-studio.diagrams · anchored
  • impl:protocol.studio-architecture-lens satisfies spec:consumers.spec-studio.diagram-kinds · anchored
  • impl:protocol.studio-capability-diagrams satisfies spec:consumers.spec-studio.diagram-kinds · anchored
  • impl:protocol.studio-diagram-element satisfies spec:consumers.spec-studio.diagrams · anchored
  • impl:protocol.studio-diagram-element satisfies spec:consumers.spec-studio.diagram-kinds.legibility · anchored
  • impl:protocol.studio-diagram-layout satisfies spec:consumers.spec-studio.diagram-kinds.legibility · anchored
  • impl:protocol.studio-diagram-layout satisfies spec:consumers.spec-studio.diagram-kinds · anchored
  • impl:protocol.studio-diagram-model satisfies spec:consumers.spec-studio.diagrams · anchored
  • impl:protocol.studio-diagram-routing satisfies spec:consumers.spec-studio.diagram-kinds.edge-routing · anchored
  • impl:protocol.studio-diagram-source satisfies spec:consumers.spec-studio.diagram-kinds · anchored
  • impl:protocol.studio-diagrams satisfies spec:consumers.spec-studio.diagrams · anchored
  • impl:protocol.studio-diagrams satisfies spec:consumers.spec-studio.diagram-kinds.edge-routing · anchored
  • impl:protocol.studio-diagrams satisfies spec:consumers.spec-studio.diagram-kinds.legibility · anchored
  • impl:protocol.studio-diagrams satisfies spec:consumers.spec-studio.diagram-kinds · anchored
  • impl:protocol.studio-maturity-map satisfies spec:consumers.spec-studio.diagram-kinds · anchored
  • impl:protocol.studio-relation-diagrams satisfies spec:consumers.spec-studio.diagrams · anchored
  • impl:protocol.studio-requirement-diagram satisfies spec:consumers.spec-studio.diagram-kinds · anchored
  • impl:protocol.studio-slice-architecture satisfies spec:consumers.spec-studio.diagram-kinds · anchored
  • impl:protocol.studio-slice-dependencies satisfies spec:consumers.spec-studio.diagram-kinds · anchored
  • oracle:protocol.studio-diagrams models spec:consumers.spec-studio.diagrams · anchored
  • test:protocol.studio-diagram-catalog verifies spec:consumers.spec-studio.diagram-kinds · anchored
  • test:protocol.studio-diagram-core verifies spec:consumers.spec-studio.diagram-kinds.legibility · anchored
  • test:protocol.studio-diagram-core verifies spec:consumers.spec-studio.diagram-kinds.edge-routing · anchored
  • test:protocol.studio-diagram-core verifies spec:consumers.spec-studio.diagrams · anchored
  • test:protocol.studio-diagram-folds-context verifies spec:consumers.spec-studio.diagrams.folds-by-context · anchored
  • test:protocol.studio-diagram-folds-layer verifies spec:consumers.spec-studio.diagrams.folds-by-layer · anchored
  • test:protocol.studio-diagram-within-bound verifies spec:consumers.spec-studio.diagrams.within-bound · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.

Decisions

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
  • component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
  • impl:protocol.studio-architecture-diagrams · architecture grids and bounded context and layer folds · src/projections/studio/diagrams/architecture.ts:4

    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.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-diagram-model · shared diagram boxes, edges and drawing bounds · src/projections/studio/diagrams/model.ts:1

    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.studio-diagrams · deterministic grid and band layouts with bounded folds and full text equivalents · src/projections/studio/diagrams/svg.ts:73

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

    Uses

    • impl:protocol.studio-diagram-model · shared diagram boxes, edges and drawing bounds · src/projections/studio/diagrams/model.ts:1
  • impl:protocol.studio-relation-diagrams · relation and member bands and bounded relation folds · src/projections/studio/diagrams/bands.ts:10

    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.spec-studio.diagrams

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

The diagram as text
  • spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • spec:consumers.spec-studio.diagram-kinds: The Studio chooses diagram kinds from graph values
  • spec:consumers.spec-studio.diagram-kinds.edge-routing: Edges route around boxes with deterministic orthogonal paths
  • spec:consumers.spec-studio.diagram-kinds.legibility: A diagram preserves readable labels before zoom
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent
  • spec:consumers.spec-studio.diagrams.folds-by-context: An architecture over the bound folds by context
  • spec:consumers.spec-studio.diagrams.folds-by-layer: One context over the bound folds by layer
  • spec:consumers.spec-studio.diagrams.within-bound: An architecture within the bound draws in one diagram, the same bytes twice
  • spec:consumers.spec-studio.lenses.architecture: The architecture lens draws components by context and layer, the planned beside the built
  • spec:consumers.spec-studio.slice-page: A slice page shows a Pack's design as one whole
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order
  • spec:decisions.architectural-annotation: Architectural significance is annotated where it is realized
  • spec:decisions.studio-diagram-renderer: The engine lays out every Studio diagram as static SVG when the page set is built
  • spec:extraction.determinism: Committed source derives byte-identical output
  • spec:consumers.spec-studio.diagrams constrainedBy spec:extraction.determinism · declared
  • spec:consumers.spec-studio.diagrams decidedBy spec:decisions.studio-diagram-renderer · declared
  • spec:consumers.spec-studio.diagrams dependsOn spec:consumers.spec-studio.data · declared — a diagram is laid out from the values and recipe answers its page renders
  • spec:consumers.spec-studio.diagrams dependsOn spec:decisions.architectural-annotation · declared — the architecture grid reads the layer and context a component anchor states
  • spec:consumers.spec-studio.diagrams refines spec:consumers.spec-studio.components · declared
  • spec:consumers.spec-studio.lenses.architecture dependsOn spec:consumers.spec-studio.diagrams · declared — the lens's drawings are the architecture grid and the member diagrams
  • spec:consumers.spec-studio.slice-page dependsOn spec:consumers.spec-studio.diagrams · declared — both drawings keep the diagram contract, bound and text equivalent included
  • spec:consumers.spec-studio.spec-page dependsOn spec:consumers.spec-studio.diagrams · declared — the design view and impact panel draw requirement traceability and the one-hop trace graph
  • spec:consumers.spec-studio.diagram-kinds refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagram-kinds.edge-routing refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagram-kinds.legibility refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-context refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-layer refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.within-bound refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-context verifies spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-layer verifies spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.within-bound verifies spec:consumers.spec-studio.diagrams · declared

Rests on

Rested on by

Distance 1

  • spec:consumers.spec-studio.diagram-kinds

    Implementing units

    • impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50
    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73
    • impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7
    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219
    • impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-catalog

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.edge-routing

    Implementing units

    • impl:protocol.studio-diagram-routing · src/projections/studio/diagrams/routing.ts:38
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.legibility

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagrams.folds-by-context

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-context

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.folds-by-layer

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-folds-layer

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.diagrams.within-bound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-within-bound

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.spec-page

    Implementing units

    • impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8
    • impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 2

  • spec:consumers.spec-studio.capability-map-page

    Implementing units

    • impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.capability-tree

    Implementing units

    • impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101
    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.requirement-trace

    Implementing units

    • impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12
    • impl: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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.export

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.planned-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-planned-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.lenses.architecture.unit-register

    Implementing units

    • impl:protocol.studio-unit-register · src/projections/studio/pages/architecture-register.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-architecture-maturity-requirement

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.spec-page.cited-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-cited-declaration

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.verification-panels

    Implementing units

    • impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.structural-mermaid

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:design-management-v1, pack:self-hosting-v1

Distance 3

Relations

Relation and directionOther endClaimReasonExercised keys
constrainedBy · outgoingspec:extraction.determinism
spec:extraction.determinism · resolves
declaredNoneNone
decidedBy · outgoingThe engine lays out every Studio diagram as static SVG when the page set is built
spec:decisions.studio-diagram-renderer · resolves
declaredNoneNone
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declareda diagram is laid out from the values and recipe answers its page rendersNone
dependsOn · outgoingspec:decisions.architectural-annotation
spec:decisions.architectural-annotation · resolves
declaredthe architecture grid reads the layer and context a component anchor statesNone
refines · outgoingThe Studio's custom elements each hold one view the build renders
spec:consumers.spec-studio.components · resolves
declaredNoneNone
dependsOn · incomingThe architecture lens draws components by context and layer, the planned beside the built
spec:consumers.spec-studio.lenses.architecture · resolves
declaredthe lens's drawings are the architecture grid and the member diagramsNone
dependsOn · incomingspec:consumers.spec-studio.slice-page
spec:consumers.spec-studio.slice-page · resolves
declaredboth drawings keep the diagram contract, bound and text equivalent includedNone
dependsOn · incomingA Spec page shows one Spec in collapsible panels, in a fixed order
spec:consumers.spec-studio.spec-page · resolves
declaredthe design view and impact panel draw requirement traceability and the one-hop trace graphNone
refines · incomingspec:consumers.spec-studio.diagram-kinds
spec:consumers.spec-studio.diagram-kinds · resolves
declaredNoneNone
refines · incomingspec:consumers.spec-studio.diagram-kinds.edge-routing
spec:consumers.spec-studio.diagram-kinds.edge-routing · resolves
declaredNoneNone
refines · incomingspec:consumers.spec-studio.diagram-kinds.legibility
spec:consumers.spec-studio.diagram-kinds.legibility · resolves
declaredNoneNone
refines · incomingAn architecture over the bound folds by context
spec:consumers.spec-studio.diagrams.folds-by-context · resolves
declaredNoneNone
refines · incomingOne context over the bound folds by layer
spec:consumers.spec-studio.diagrams.folds-by-layer · resolves
declaredNoneNone
refines · incomingAn architecture within the bound draws in one diagram, the same bytes twice
spec:consumers.spec-studio.diagrams.within-bound · resolves
declaredNoneNone
verifies · incomingAn architecture over the bound folds by context
spec:consumers.spec-studio.diagrams.folds-by-context · resolves
declaredNonebound, foldByContext, sameBytes
verifies · incomingOne context over the bound folds by layer
spec:consumers.spec-studio.diagrams.folds-by-layer · resolves
declaredNonebound, foldByLayer
verifies · incomingAn architecture within the bound draws in one diagram, the same bytes twice
spec:consumers.spec-studio.diagrams.within-bound · resolves
declaredNonebuildTime, layoutInputs, sameBytes, architectureGrid, textEquivalent

Bindings

Implementation binding: present

  • impl:protocol.studio-architecture-diagrams · architecture grids and bounded context and layer folds · src/projections/studio/diagrams/architecture.ts:4 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-diagram-model · shared diagram boxes, edges and drawing bounds · src/projections/studio/diagrams/model.ts:1 · role contract · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-diagrams · deterministic grid and band layouts with bounded folds and full text equivalents · src/projections/studio/diagrams/svg.ts:73 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-relation-diagrams · relation and member bands and bounded relation folds · src/projections/studio/diagrams/bands.ts:10 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.studio-diagrams · test/studio-s1.test.ts:564

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

55. An architecture within the bound draws in one diagram, the same bytes twice

spec:consumers.spec-studio.diagrams.within-bound

An architecture within the bound draws in one diagram, the same bytes twice

spec:consumers.spec-studio.diagrams.within-boundExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.diagrams.within-bound.sdp.md

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

Intent
outcome
Execute the grid, the text equivalent and determinism on an architecture that fits one drawing.
assumptions
  • The world builds the layout's input directly: the components are named component:probe.c01 and on, assigned in turn to the first contexts in code-unit order and the first layers in the closed order, and the uses edges join distinct component pairs taken in id order until the count is reached. It lays the input out twice through the engine's layout and compares the two SVG strings.
Behavior

Examples

Given an architecture of {components: 12} components spread over {contexts: 3} contexts and {layers: 4} layers, with {edges: 20} uses edges between components
When the build lays the architecture diagram out twice
Then the two drawings are byte-identical: {identical: true}
Then the diagram folds by {fold: "nothing"}
Then the first drawing holds {drawn: 12} boxes
Then its text equivalent names {named: 32} boxes and edges
Verification

Verifier bindings

  • test:protocol.studio-diagram-within-bound · anchored · test anchor binding present · test/studio-s1.test.ts:669
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.diagrams.within-bound
The diagram as text
  • spec:consumers.spec-studio.diagrams.within-bound: An architecture within the bound draws in one diagram, the same bytes twice · declared Spec
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent · declared Spec
  • test:protocol.studio-diagram-within-bound: test:protocol.studio-diagram-within-bound · anchored test binding · binding present · test/studio-s1.test.ts:669
  • spec:consumers.spec-studio.diagrams.within-bound refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.within-bound verifies spec:consumers.spec-studio.diagrams · declared
  • test:protocol.studio-diagram-within-bound verifies spec:consumers.spec-studio.diagrams.within-bound · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.diagrams.within-bound
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent
  • spec:consumers.spec-studio.diagrams.within-bound: An architecture within the bound draws in one diagram, the same bytes twice
  • spec:consumers.spec-studio.diagrams.within-bound refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.within-bound verifies spec:consumers.spec-studio.diagrams · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingA diagram is laid out from graph values into SVG with a text equivalent
spec:consumers.spec-studio.diagrams · resolves
declaredNoneNone
verifies · outgoingA diagram is laid out from graph values into SVG with a text equivalent
spec:consumers.spec-studio.diagrams · resolves
declaredNonebuildTime, layoutInputs, sameBytes, architectureGrid, textEquivalent

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-diagram-within-bound · anchored · test/studio-s1.test.ts:669 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

56. An architecture over the bound folds by context

spec:consumers.spec-studio.diagrams.folds-by-context

An architecture over the bound folds by context

spec:consumers.spec-studio.diagrams.folds-by-contextExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.diagrams.folds-by-context.sdp.md

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

Intent
outcome
Execute the fold by context on an architecture too large for one drawing whose contexts each fit.
assumptions
  • The world builds the layout's input as the within-bound example does, with no uses edge, so each of the three contexts holds fifteen components and draws in a section of its own within the bound.
Behavior

Examples

Given an architecture of {components: 45} components spread over {contexts: 3} contexts and {layers: 5} layers, with {edges: 0} uses edges between components
When the build lays the architecture diagram out twice
Then the two drawings are byte-identical: {identical: true}
Then the diagram folds by {fold: "context"}
Then the first drawing holds {drawn: 3} boxes
Then its text equivalent names {named: 3} boxes and edges
Verification

Verifier bindings

  • test:protocol.studio-diagram-folds-context · anchored · test anchor binding present · test/studio-s1.test.ts:675
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.diagrams.folds-by-context
The diagram as text
  • spec:consumers.spec-studio.diagrams.folds-by-context: An architecture over the bound folds by context · declared Spec
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent · declared Spec
  • test:protocol.studio-diagram-folds-context: test:protocol.studio-diagram-folds-context · anchored test binding · binding present · test/studio-s1.test.ts:675
  • spec:consumers.spec-studio.diagrams.folds-by-context refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-context verifies spec:consumers.spec-studio.diagrams · declared
  • test:protocol.studio-diagram-folds-context verifies spec:consumers.spec-studio.diagrams.folds-by-context · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.diagrams.folds-by-context
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent
  • spec:consumers.spec-studio.diagrams.folds-by-context: An architecture over the bound folds by context
  • spec:consumers.spec-studio.diagrams.folds-by-context refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-context verifies spec:consumers.spec-studio.diagrams · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingA diagram is laid out from graph values into SVG with a text equivalent
spec:consumers.spec-studio.diagrams · resolves
declaredNoneNone
verifies · outgoingA diagram is laid out from graph values into SVG with a text equivalent
spec:consumers.spec-studio.diagrams · resolves
declaredNonebound, foldByContext, sameBytes

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-diagram-folds-context · anchored · test/studio-s1.test.ts:675 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

57. One context over the bound folds by layer

spec:consumers.spec-studio.diagrams.folds-by-layer

One context over the bound folds by layer

spec:consumers.spec-studio.diagrams.folds-by-layerExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.diagrams.folds-by-layer.sdp.md

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

Intent
outcome
Execute the fold by layer on an architecture whose one context is too large for one drawing.
assumptions
  • The world builds the layout's input as the within-bound example does, with every component in one context and no uses edge, so each of the five layers holds ten components and draws in a section of its own within the bound.
Behavior

Examples

Given an architecture of {components: 50} components spread over {contexts: 1} contexts and {layers: 5} layers, with {edges: 0} uses edges between components
When the build lays the architecture diagram out twice
Then the two drawings are byte-identical: {identical: true}
Then the diagram folds by {fold: "layer"}
Then the first drawing holds {drawn: 5} boxes
Then its text equivalent names {named: 5} boxes and edges
Verification

Verifier bindings

  • test:protocol.studio-diagram-folds-layer · anchored · test anchor binding present · test/studio-s1.test.ts:681
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.diagrams.folds-by-layer
The diagram as text
  • spec:consumers.spec-studio.diagrams.folds-by-layer: One context over the bound folds by layer · declared Spec
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent · declared Spec
  • test:protocol.studio-diagram-folds-layer: test:protocol.studio-diagram-folds-layer · anchored test binding · binding present · test/studio-s1.test.ts:681
  • spec:consumers.spec-studio.diagrams.folds-by-layer refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-layer verifies spec:consumers.spec-studio.diagrams · declared
  • test:protocol.studio-diagram-folds-layer verifies spec:consumers.spec-studio.diagrams.folds-by-layer · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.diagrams.folds-by-layer
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent
  • spec:consumers.spec-studio.diagrams.folds-by-layer: One context over the bound folds by layer
  • spec:consumers.spec-studio.diagrams.folds-by-layer refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-layer verifies spec:consumers.spec-studio.diagrams · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingA diagram is laid out from graph values into SVG with a text equivalent
spec:consumers.spec-studio.diagrams · resolves
declaredNoneNone
verifies · outgoingA diagram is laid out from graph values into SVG with a text equivalent
spec:consumers.spec-studio.diagrams · resolves
declaredNonebound, foldByLayer

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-diagram-folds-layer · anchored · test/studio-s1.test.ts:681 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

58. A few custom elements filter, search, open and copy on a rendered page

spec:consumers.spec-studio.page-elements

A few custom elements filter, search, open and copy on a rendered page

spec:consumers.spec-studio.page-elementsContract · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

Design: 6 design entries · 6 pinned declarations · 1 decision

Findings: no errors, no warnings

specs/consumers/spec-studio.page-elements.sdp.md

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

The build renders every page whole, so these elements add behavior to markup that is already there rather than rendering views of their own. A browser refuses a module script on a page opened through file://, so they ship as one classic script.

Intent
outcome
Give the Studio's pages their few interactions through custom elements that enhance markup the build wrote, so a page with its script filters, searches and copies, and every page but the search page still reads in full without it.
Contract
rule.oneScript line 21 · specs/consumers/spec-studio.page-elements.sdp.md:21
The elements ship in one classic script, assets/studio.js, with no module syntax and nothing loaded at run time; the build bundles it from the package's source, with the concept matcher.

no example exercises it

rule.enhanceOnly line 22 · specs/consumers/spec-studio.page-elements.sdp.md:22
Each element enhances markup the build wrote and renders no graph value of its own, except that the search results element renders values from the search index its page embeds.

no example exercises it

rule.noRequest line 23 · specs/consumers/spec-studio.page-elements.sdp.md:23
No element requests anything on a page opened through file://; the stamp element requests stamp.json only over http or https.

no example exercises it

rule.nativeControls line 24 · specs/consumers/spec-studio.page-elements.sdp.md:24
Every control an element adds is a native button, link, select or input with a text label, reachable from the keyboard in reading order.

no example exercises it

rule.liveCounts line 25 · specs/consumers/spec-studio.page-elements.sdp.md:25
An element that changes what a page shows says so in words in a polite live region, such as how many rows a filter shows.

no example exercises it

0 unkeyed rules.

Design
search line 28 · specs/consumers/spec-studio.page-elements.sdp.md:28
sdp-search with page-root, the relative path from its page to the page-set root: wraps the search field's form and, on submit, opens <page-root>search.html#q=<term> with the term percent-encoded.

no citation recorded

searchResults line 29 · specs/consumers/spec-studio.page-elements.sdp.md:29
sdp-search-results: on the search page, reads the index from the sdp-data element, matches the fragment's term and each term the person types, writes the results spec:consumers.spec-studio.search designs, and keeps the term in the fragment.

no citation recorded

filter line 30 · specs/consumers/spec-studio.page-elements.sdp.md:30
sdp-filter: wraps a hidden form of labelled select elements, each with data-filter="<name>" and an any option, and the rows marked data-row. On upgrade it shows the form, hides each row whose data-<name> differs from a chosen value, and writes <shown> of <total> shown in its output element; a row whose attribute holds several space-separated values, such as its Packs, matches when one of them equals the choice. When a followed link or a fragment change targets an element inside a row it hides, it returns every control to any, adds to its output that the filter was cleared to show that target, and scrolls the target into view.

no citation recorded

expander line 31 · specs/consumers/spec-studio.page-elements.sdp.md:31
sdp-expander: adds Open all and Close all buttons for the details elements inside it, and on load and on each fragment change opens every details that holds the fragment's target and scrolls the target into view.

no citation recorded

copy line 32 · specs/consumers/spec-studio.page-elements.sdp.md:32
sdp-copy with text, or with for naming a text area on its page: a Copy button whose accessible name includes the text or the text area's label; it copies that text and says Copied, and where the clipboard is unavailable it selects the text so the person can copy it.

no citation recorded

stamp line 33 · specs/consumers/spec-studio.page-elements.sdp.md:33
sdp-stamp with page-root: served over http or https, it requests <page-root>stamp.json and, when it loads, shows its corpus commit, engine and build time as text; otherwise it shows nothing.

no citation recorded

Verification

Verifier bindings

  • test:protocol.studio-copy-source · anchored · test anchor binding present · test/studio-diagram-core.test.ts:191
  • test:protocol.studio-page-elements · anchored · test anchor binding present · test/studio-elements.test.ts:26
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.page-elements
The diagram as text
  • spec:consumers.spec-studio.page-elements: A few custom elements filter, search, open and copy on a rendered page · declared Spec
  • spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders · declared Spec
  • component:protocol.studio-elements: optional browser behavior and proposal handoff · anchored code · src/studio-elements/index.ts:13
  • impl:protocol.studio-copy: copies text with selection fallback and failure feedback · anchored code · src/studio-elements/copy.ts:22
  • impl:protocol.studio-expander: opens fragment ancestors and expands disclosures for print · anchored code · src/studio-elements/expander.ts:16
  • impl:protocol.studio-filter: filters build-rendered rows through their recorded attributes · anchored code · src/studio-elements/filter.ts:25
  • impl:protocol.studio-search-form: routes search forms through page-root URLs and fragments · anchored code · src/studio-elements/search.ts:18
  • impl:protocol.studio-search-results: ranks and renders concept, entry and file search hits · anchored code · src/studio-elements/search-results.ts:95
  • impl:protocol.studio-stamp: resolves published stamps and source links in the browser · anchored code · src/studio-elements/stamp.ts:30
  • test:protocol.studio-copy-source: test:protocol.studio-copy-source · anchored test binding · binding present · test/studio-diagram-core.test.ts:191
  • test:protocol.studio-page-elements: test:protocol.studio-page-elements · anchored test binding · binding present · test/studio-elements.test.ts:26
  • spec:consumers.spec-studio.page-elements refines spec:consumers.spec-studio.components · declared
  • component:protocol.studio-elements satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-copy satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-expander satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-filter satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-search-form satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-search-results satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-stamp satisfies spec:consumers.spec-studio.page-elements · anchored
  • test:protocol.studio-copy-source verifies spec:consumers.spec-studio.page-elements · anchored
  • test:protocol.studio-page-elements verifies spec:consumers.spec-studio.page-elements · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

Runtime
  • component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
  • impl:protocol.studio-copy · copies text with selection fallback and failure feedback · src/studio-elements/copy.ts:22

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-expander · opens fragment ancestors and expands disclosures for print · src/studio-elements/expander.ts:16

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-filter · filters build-rendered rows through their recorded attributes · src/studio-elements/filter.ts:25

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-search-form · routes search forms through page-root URLs and fragments · src/studio-elements/search.ts:18

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-search-results · ranks and renders concept, entry and file search hits · src/studio-elements/search-results.ts:95

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-stamp · resolves published stamps and source links in the browser · src/studio-elements/stamp.ts:30

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.page-elements
The diagram as text
  • spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders
  • spec:consumers.spec-studio.diagram-kinds.mermaid-source: A diagram offers Mermaid source as copyable text
  • spec:consumers.spec-studio.page-elements: A few custom elements filter, search, open and copy on a rendered page
  • spec:consumers.spec-studio.search: Search finds a Spec, a Pack, an entry or a bound file by a word
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:decisions.studio-web-components: The Studio is built from custom elements, not a framework
  • spec:consumers.spec-studio.page-elements decidedBy spec:decisions.studio-web-components · declared
  • spec:consumers.spec-studio.page-elements dependsOn spec:consumers.spec-studio.search · declared
  • spec:consumers.spec-studio.page-elements dependsOn spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.page-elements refines spec:consumers.spec-studio.components · declared
  • spec:consumers.spec-studio.diagram-kinds.mermaid-source dependsOn spec:consumers.spec-studio.page-elements · 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

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingThe Studio is built from custom elements, not a framework
spec:decisions.studio-web-components · resolves
declaredNoneNone
dependsOn · outgoingSearch finds a Spec, a Pack, an entry or a bound file by a word
spec:consumers.spec-studio.search · resolves
declaredNoneNone
dependsOn · outgoingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredNoneNone
refines · outgoingThe Studio's custom elements each hold one view the build renders
spec:consumers.spec-studio.components · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.spec-studio.diagram-kinds.mermaid-source
spec:consumers.spec-studio.diagram-kinds.mermaid-source · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · role interaction · layer edge · context protocol
  • impl:protocol.studio-copy · copies text with selection fallback and failure feedback · src/studio-elements/copy.ts:22 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-expander · opens fragment ancestors and expands disclosures for print · src/studio-elements/expander.ts:16 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-filter · filters build-rendered rows through their recorded attributes · src/studio-elements/filter.ts:25 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-search-form · routes search forms through page-root URLs and fragments · src/studio-elements/search.ts:18 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-search-results · ranks and renders concept, entry and file search hits · src/studio-elements/search-results.ts:95 · role projection · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-stamp · resolves published stamps and source links in the browser · src/studio-elements/stamp.ts:30 · role interaction · component component:protocol.studio-elements · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-copy-source · anchored · test/studio-diagram-core.test.ts:191 · test anchor
  • test:protocol.studio-page-elements · anchored · test/studio-elements.test.ts:26 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

59. The Studio reads on a phone as on a desktop

spec:consumers.spec-studio.responsive

The Studio reads on a phone as on a desktop

spec:consumers.spec-studio.responsiveUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.responsive.sdp.md

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

The curated graph's edges carry no confidence, and the impact graph's inferred imports stay outside it, so a diagram never drops an edge for a low score; a trace graph draws one hop at every width, and a narrow screen scales the drawing rather than cutting it.

Intent
actor
A person reviewing a design on a phone, including a pull request reviewer who holds only a link.
outcome
Let a design be reviewed on a phone through the same pages a desktop shows.
Behavior
rule line 19 · specs/consumers/spec-studio.responsive.sdp.md:19
Every page of the Studio is responsive, so the same pages serve a desktop and a phone.

1 unkeyed rule.

Example space

Given a Studio page whose layout holds {wideColumns:number} columns
When the page is shown {width:number} pixels wide
Then the layout holds {columns:number} columns
UI
singleColumn line 22 · specs/consumers/spec-studio.responsive.sdp.md:22
every layout collapses to one column below 720 CSS pixels of viewport width; at 390 CSS pixels no page exceeds the viewport. The top navigation and stamp line wrap, and a table wider than its column scrolls inside its own container, including maturity maps, run results and coverage tables; queue rows wrap within their column.
pinchZoom line 23 · specs/consumers/spec-studio.responsive.sdp.md:23
on a touch device, every diagram zooms with a pinch, which the diagram element adds.
narrowDiagram line 24 · specs/consumers/spec-studio.responsive.sdp.md:24
below the same width a diagram opens scaled to the screen's width, with its zoom controls above it and its text equivalent below it, and draws the same boxes and edges a desktop draws.
Verification

Verifier bindings

  • test:protocol.studio-intent-handoff · anchored · test anchor binding present · test/studio-s5.test.ts:407

Example space

  • wideColumns · number · declared by a Studio page whose layout holds {wideColumns} columns
  • width · number · declared by the page is shown {width} pixels wide

Bound points

No bound example points recorded.

Oracle binding: none

Coverage

wideColumns: No bound values · not enumerable

width: No bound values · not enumerable

Unbound

  • wideColumns: None
  • width: None
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.responsive
The diagram as text
  • spec:consumers.spec-studio.responsive: The Studio reads on a phone as on a desktop · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.studio-diagram-element: adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · anchored code · src/studio-elements/diagram.ts:23
  • impl:protocol.studio-frame: renders Studio navigation, page rails and composing controls · anchored code · src/projections/studio/pages/frame.ts:6
  • test:protocol.studio-intent-handoff: test:protocol.studio-intent-handoff · anchored test binding · binding present · test/studio-s5.test.ts:407
  • spec:consumers.spec-studio.responsive refines spec:consumers.spec-studio · declared
  • impl:protocol.studio-diagram-element satisfies spec:consumers.spec-studio.responsive · anchored
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio.responsive · anchored
  • test:protocol.studio-intent-handoff verifies spec:consumers.spec-studio.responsive · 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

No decision record named.

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
  • component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6

    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.spec-studio.responsive
Relations of spec:consumers.spec-studio.responsivedependsOn · declaredrefines · declareddependsOn · declareddependsOn · declaredOutgoing refinesspec:consumers.spec-studioThe Spec Studio is a staticHTML workbench over the onegraph…consumers.spec-studioOutgoing dependsOnspec:extraction.claim-taxonomyGraph claims retain theirepistemic source…extraction.claim-taxonomySubjectspec:consumers.spec-studio.responsiveThe Studio reads on a phoneas on a desktop…consumers.spec-studio.responsiveIncoming dependsOnspec:consumers.spec-studio.diagram-kinds.legibilityA diagram preservesreadable labels before zoom…consumers.spec-studio.diagram-kinds.legibilityspec:consumers.spec-studio.shellThe Studio's shell framesevery page with navigation,a rail and a canvas…consumers.spec-studio.shell
The diagram as text
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.diagram-kinds.legibility: A diagram preserves readable labels before zoom
  • spec:consumers.spec-studio.responsive: The Studio reads on a phone as on a desktop
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:extraction.claim-taxonomy: Graph claims retain their epistemic source
  • spec:consumers.spec-studio.responsive dependsOn spec:extraction.claim-taxonomy · declared
  • spec:consumers.spec-studio.responsive refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.diagram-kinds.legibility dependsOn spec:consumers.spec-studio.responsive · declared
  • spec:consumers.spec-studio.shell dependsOn spec:consumers.spec-studio.responsive · declared — the rail moves below the canvas under the phone breakpoint
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.spec-studio · stated ready, floor ready
  • dependsOn · spec:extraction.claim-taxonomy · stated ready, floor ready

Rested on by

Distance 1

  • spec:consumers.spec-studio.diagram-kinds.legibility

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.shell

    Implementing units

    • impl:protocol.studio-code-spans · src/projections/studio/pages/code-spans.ts:9
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-html · src/projections/studio/pages/html.ts:8
    • impl:protocol.studio-text · src/projections/studio/pages/text.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 2

  • spec:consumers.spec-studio.index-page

    Implementing units

    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.navigation

    Implementing units

    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-navigation, test:protocol.studio-roadmap-page

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.pack-page

    Implementing units

    • impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap-priority, test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.page-elements

    Implementing units

    • component:protocol.studio-elements · src/studio-elements/index.ts:13
    • impl:protocol.studio-copy · src/studio-elements/copy.ts:22
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-search-form · src/studio-elements/search.ts:18
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95
    • impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-copy-source, test:protocol.studio-page-elements

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.registers

    Implementing units

    • impl:protocol.studio-registers · src/projections/studio/pages/registers-page.ts:47

    Referencing units

    None.

    Enabled verifiers: spec:consumers.spec-studio.registers.blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.search

    Implementing units

    • impl:protocol.studio-concept-match · src/reader/concept-match.ts:43
    • impl:protocol.studio-search-page · src/projections/studio/pages/search-page.ts:5
    • impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-concept-match, test:protocol.studio-page-elements, test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 3

  • spec:consumers.spec-studio.capability-map-page

    Implementing units

    • impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.cited-line-text

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:roadmap, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.export

    Implementing units

    • impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23
    • impl:protocol.studio-expander · src/studio-elements/expander.ts:16
    • impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.owner-queue.dependency-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-queue-dependency-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.registers.blocking-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-registers-blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

Distance 4

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:extraction.claim-taxonomy
spec:extraction.claim-taxonomy · resolves
declaredNoneNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.spec-studio.diagram-kinds.legibility
spec:consumers.spec-studio.diagram-kinds.legibility · resolves
declaredNoneNone
dependsOn · incomingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredthe rail moves below the canvas under the phone breakpointNone

Bindings

Implementation binding: present

  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-intent-handoff · anchored · test/studio-s5.test.ts:407 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

60. A Pack exports as one file, and every page prints as a document

spec:consumers.spec-studio.export

A Pack exports as one file, and every page prints as a document

spec:consumers.spec-studio.exportUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

Design: 5 design entries · 1 pinned declaration · no decisions

Findings: no errors, no warnings

specs/consumers/spec-studio.export.sdp.md

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

A design is sent and archived as well as browsed: attached to a message, handed to someone outside the repository, printed for a review meeting. Every build writes each Pack as one self-contained HTML file inside the page set, so a reader with only a link downloads it from the Pack page, and the file opens anywhere with nothing beside it. Every page also prints as a document.

Intent
outcome
Let a person take a Pack's whole design away as one file that opens anywhere, and print any page as a readable document.
Behavior
rule.exportPerPack line 25 · specs/consumers/spec-studio.export.sdp.md:25
The page set holds one export file per Pack, exports/<name>.html, its name formed from the Pack's id as the Pack's page name is.

spec:consumers.spec-studio.export.self-contained · enabled

rule.selfContained line 26 · specs/consumers/spec-studio.export.sdp.md:26
An export is one HTML file that loads nothing: its style is inline, it carries no script, and every diagram in it is inline SVG, so it opens from any folder or as an attachment with no other file.

spec:consumers.spec-studio.export.self-contained · enabled

rule.exportContent line 27 · specs/consumers/spec-studio.export.sdp.md:27
An export holds the Pack page's content and then each member's Spec page content in authored order, every disclosure written open; it leaves out the navigation, the rail, the search field, the stamp line, the composing panel and every control that needs the script.

spec:consumers.spec-studio.export.self-contained · enabled

rule.exportLinks line 28 · specs/consumers/spec-studio.export.sdp.md:28
Inside an export, a link to the Pack or to a member points at its section in the file, a link to an element of the Pack page or of a member's page points at that element in the file, and a link to anything else becomes its id as text, so no link leaves the file.

spec:consumers.spec-studio.export.self-contained · enabled

rule.uniqueExportIds line 29 · specs/consumers/spec-studio.export.sdp.md:29
Within an export, every element id copied from the Pack page takes the prefix pack/ and every id copied from a member's page the prefix <Spec id>/, while each member's section keeps its Spec id as its own id; every fragment link and every attribute that names an element id, such as aria-describedby or a label's for, is rewritten to the prefixed id, so no two elements in the file share an id.

spec:consumers.spec-studio.export.self-contained · enabled

rule.exportFromPackPage line 30 · specs/consumers/spec-studio.export.sdp.md:30
Each Pack page links its export under the header, as Download this Pack as one file.

no example exercises it

rule.printAsDocument line 31 · specs/consumers/spec-studio.export.sdp.md:31
Every page prints as a document: the print style hides the navigation, the rail, the search field, the composing panel and every control, gives the canvas the page's width, prints a diagram whole at that width, and prints every disclosure open except Mermaid source, which prints only when the reader opened it, the expander opening each before printing and restoring it after.

no example exercises it

rule.exportBytes line 32 · specs/consumers/spec-studio.export.sdp.md:32
An export is a function of the graph like every page: the same graph writes the same bytes, and an export holds no time, commit or stamp.

no example exercises it

0 unkeyed rules.

Verifying examples

A Pack's export opens alone and keeps its links inside it · spec:consumers.spec-studio.export.self-contained · ready floor ready

Executable Spec

Given a Pack of {members: 3} member Specs, one of which names a Spec outside the Pack
When the build writes the Pack's export file
Then the export loads {loads: 0} other files
Then the export holds {scripts: 0} script elements
Then every link in the export points inside it or is text: {linksInside: true}
Then no two elements in the export share an id: {idsUnique: true}
Then the export holds {sections: 3} member sections

Open example

Example space

Given a Pack of {members:number} member Specs, one of which names a Spec outside the Pack
When the build writes the Pack's export file
Then the export loads {loads:number} other files
Then the export holds {scripts:number} script elements
Then every link in the export points inside it or is text: {linksInside:boolean}
Then no two elements in the export share an id: {idsUnique:boolean}
Then the export holds {sections:number} member sections
Design
exportIds line 40 · specs/consumers/spec-studio.export.sdp.md:40
a copied id is written pack/<id> for the Pack page and <Spec id>/<id> for a member's page, so a member's section.behavior becomes its Spec id, a slash and section.behavior; the slash appears in no graph id, so a prefixed id never equals a member's section id or another prefixed id.
expanderPrint line 41 · specs/consumers/spec-studio.export.sdp.md:41
sdp-expander, before the page prints, opens every details inside it except a drawing's or the maturity map's Mermaid source, which keeps the state the reader left, and after printing restores each one's state.

no citation recorded

UI
exportTitle line 35 · specs/consumers/spec-studio.export.sdp.md:35
the export opens with the Pack's title, its id, and the line Exported from the Spec Studio, with no date or commit.
exportLink line 36 · specs/consumers/spec-studio.export.sdp.md:36
under the Pack page's header, a link reading Download this Pack as one file, with the download attribute naming the file.
memberSection line 37 · specs/consumers/spec-studio.export.sdp.md:37
each member's section has its Spec id as its element id and opens with the member's position, title and id.
Verification

Verifier bindings

  • spec:consumers.spec-studio.export.self-contained · A Pack's export opens alone and keeps its links inside it · declared · example enabled · specs/consumers/spec-studio.export.self-contained.sdp.md
  • test:protocol.studio-intent-handoff · anchored · test anchor binding present · test/studio-s5.test.ts:407

Example space

  • members · number · declared by a Pack of {members} member Specs, one of which names a Spec outside the Pack

Bound points

Oracle binding: present · oracle:protocol.studio-export · test/studio-s5.test.ts:302

Coverage

members: 3 · spec:consumers.spec-studio.export.self-contained · not enumerable

Unbound

  • members: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.export
The diagram as text
  • spec:consumers.spec-studio.export: A Pack exports as one file, and every page prints as a document · declared Spec
  • spec:consumers.spec-studio.export.self-contained: A Pack's export opens alone and keeps its links inside it · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.studio-diagram-element: adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · anchored code · src/studio-elements/diagram.ts:23
  • impl:protocol.studio-expander: opens fragment ancestors and expands disclosures for print · anchored code · src/studio-elements/expander.ts:16
  • impl:protocol.studio-pack-export: copies rendered canvas content into one inline-styled document with prefixed element references · anchored code · src/projections/studio/pages/export-page.ts:35
  • impl:protocol.studio-pack-page: renders Pack members, maturity and boundary joins · anchored code · src/projections/studio/pages/pack-page.ts:68
  • oracle:protocol.studio-export: oracle:protocol.studio-export · anchored oracle binding · test/studio-s5.test.ts:302
  • test:protocol.studio-export-contained: test:protocol.studio-export-contained · anchored test binding · binding present · test/studio-s5.test.ts:312
  • test:protocol.studio-intent-handoff: test:protocol.studio-intent-handoff · anchored test binding · binding present · test/studio-s5.test.ts:407
  • spec:consumers.spec-studio.export refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.export.self-contained refines spec:consumers.spec-studio.export · declared
  • spec:consumers.spec-studio.export.self-contained verifies spec:consumers.spec-studio.export · declared
  • impl:protocol.studio-diagram-element satisfies spec:consumers.spec-studio.export · anchored
  • impl:protocol.studio-expander satisfies spec:consumers.spec-studio.export · anchored
  • impl:protocol.studio-pack-export satisfies spec:consumers.spec-studio.export · anchored
  • impl:protocol.studio-pack-page satisfies spec:consumers.spec-studio.export · anchored
  • oracle:protocol.studio-export models spec:consumers.spec-studio.export · anchored
  • test:protocol.studio-export-contained verifies spec:consumers.spec-studio.export.self-contained · anchored
  • test:protocol.studio-intent-handoff verifies spec:consumers.spec-studio.export · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.

Decisions

No decision record named.

Runtime
  • component:protocol.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
  • component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-expander · opens fragment ancestors and expands disclosures for print · src/studio-elements/expander.ts:16

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-pack-export · copies rendered canvas content into one inline-styled document with prefixed element references · src/projections/studio/pages/export-page.ts:35

    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.studio-pack-page · renders Pack members, maturity and boundary joins · src/projections/studio/pages/pack-page.ts:68

    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.spec-studio.export
The diagram as text
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.export: A Pack exports as one file, and every page prints as a document
  • spec:consumers.spec-studio.export.self-contained: A Pack's export opens alone and keeps its links inside it
  • spec:consumers.spec-studio.pack-page: A Pack page shows the Pack's design as one card per member
  • spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order
  • spec:consumers.studio-on-ramp: The Studio skill teaches agents to publish, share and read the Spec Studio
  • spec:extraction.determinism: Committed source derives byte-identical output
  • spec:consumers.spec-studio.export constrainedBy spec:extraction.determinism · declared
  • spec:consumers.spec-studio.export dependsOn spec:consumers.spec-studio.pack-page · declared — an export opens with its Pack page's content
  • spec:consumers.spec-studio.export dependsOn spec:consumers.spec-studio.publisher · declared — the export files are part of the page set the publisher writes
  • spec:consumers.spec-studio.export dependsOn spec:consumers.spec-studio.spec-page · declared — an export holds each member's Spec page content
  • spec:consumers.spec-studio.export refines spec:consumers.spec-studio · declared
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.spec-studio.export · declared — the skill teaches the Pack export and what it leaves out
  • spec:consumers.spec-studio.export.self-contained refines spec:consumers.spec-studio.export · declared
  • spec:consumers.spec-studio.export.self-contained verifies spec:consumers.spec-studio.export · 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

Relations

Relation and directionOther endClaimReasonExercised keys
constrainedBy · outgoingspec:extraction.determinism
spec:extraction.determinism · resolves
declaredNoneNone
dependsOn · outgoingA Pack page shows the Pack's design as one card per member
spec:consumers.spec-studio.pack-page · resolves
declaredan export opens with its Pack page's contentNone
dependsOn · outgoingsdp studio publishes the Studio as one page set
spec:consumers.spec-studio.publisher · resolves
declaredthe export files are part of the page set the publisher writesNone
dependsOn · outgoingA Spec page shows one Spec in collapsible panels, in a fixed order
spec:consumers.spec-studio.spec-page · resolves
declaredan export holds each member's Spec page contentNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
dependsOn · incomingThe Studio skill teaches agents to publish, share and read the Spec Studio
spec:consumers.studio-on-ramp · resolves
declaredthe skill teaches the Pack export and what it leaves outNone
refines · incomingA Pack's export opens alone and keeps its links inside it
spec:consumers.spec-studio.export.self-contained · resolves
declaredNoneNone
verifies · incomingA Pack's export opens alone and keeps its links inside it
spec:consumers.spec-studio.export.self-contained · resolves
declaredNoneexportPerPack, selfContained, exportContent, exportLinks, uniqueExportIds

Bindings

Implementation binding: present

  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-expander · opens fragment ancestors and expands disclosures for print · src/studio-elements/expander.ts:16 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-pack-export · copies rendered canvas content into one inline-styled document with prefixed element references · src/projections/studio/pages/export-page.ts:35 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-pack-page · renders Pack members, maturity and boundary joins · src/projections/studio/pages/pack-page.ts:68 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • spec:consumers.spec-studio.export.self-contained · A Pack's export opens alone and keeps its links inside it · declared · specs/consumers/spec-studio.export.self-contained.sdp.md · example enabled
  • test:protocol.studio-intent-handoff · anchored · test/studio-s5.test.ts:407 · test anchor

Expected-outcome oracle: present

  • oracle:protocol.studio-export · test/studio-s5.test.ts:302

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

61. A Pack's export opens alone and keeps its links inside it

spec:consumers.spec-studio.export.self-contained

A Pack's export opens alone and keeps its links inside it

spec:consumers.spec-studio.export.self-containedExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.export.self-contained.sdp.md

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

Intent
outcome
Execute the export's self-containment on a Pack whose member names a Spec outside it.
assumptions
  • The world writes a root with one Pack of three member Specs and one further Spec outside the Pack that the first member names through dependsOn, builds the page set, and reads the one export file: it counts the link, img, iframe and script elements with a src or href reaching another file, the script elements of any kind, and the member sections, checks that every a element's href is a fragment the file holds, and collects every element id in the file to check that none repeats.
Behavior

Examples

Given a Pack of {members: 3} member Specs, one of which names a Spec outside the Pack
When the build writes the Pack's export file
Then the export loads {loads: 0} other files
Then the export holds {scripts: 0} script elements
Then every link in the export points inside it or is text: {linksInside: true}
Then no two elements in the export share an id: {idsUnique: true}
Then the export holds {sections: 3} member sections
Verification

Verifier bindings

  • test:protocol.studio-export-contained · anchored · test anchor binding present · test/studio-s5.test.ts:312
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.export.self-contained
The diagram as text
  • spec:consumers.spec-studio.export.self-contained: A Pack's export opens alone and keeps its links inside it · declared Spec
  • spec:consumers.spec-studio.export: A Pack exports as one file, and every page prints as a document · declared Spec
  • test:protocol.studio-export-contained: test:protocol.studio-export-contained · anchored test binding · binding present · test/studio-s5.test.ts:312
  • spec:consumers.spec-studio.export.self-contained refines spec:consumers.spec-studio.export · declared
  • spec:consumers.spec-studio.export.self-contained verifies spec:consumers.spec-studio.export · declared
  • test:protocol.studio-export-contained verifies spec:consumers.spec-studio.export.self-contained · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.export.self-contained
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.export: A Pack exports as one file, and every page prints as a document
  • spec:consumers.spec-studio.export.self-contained: A Pack's export opens alone and keeps its links inside it
  • spec:consumers.spec-studio.export.self-contained refines spec:consumers.spec-studio.export · declared
  • spec:consumers.spec-studio.export.self-contained verifies spec:consumers.spec-studio.export · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingA Pack exports as one file, and every page prints as a document
spec:consumers.spec-studio.export · resolves
declaredNoneNone
verifies · outgoingA Pack exports as one file, and every page prints as a document
spec:consumers.spec-studio.export · resolves
declaredNoneexportPerPack, selfContained, exportContent, exportLinks, uniqueExportIds

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-export-contained · anchored · test/studio-s5.test.ts:312 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

62. A Studio build is stamped and shared from a static host

spec:consumers.spec-studio.sharing

A Studio build is stamped and shared from a static host

spec:consumers.spec-studio.sharingUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.sharing.sdp.md

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

A page set is a function of the graph and its named inputs, so it carries no commit or time. A reviewer opening a preview still needs to know which commit and which engine built it, so a publishing step that runs after the build writes one stamp file at the page set's root, and the shell shows it where the set is served over http or https. The same stamp may name where the repository's source is served, so a recorded file and line become a link in a preview and stay text everywhere else. A reusable workflow does the build, the stamp and the upload for every pull request, and deploys a preview only where the repository has chosen a host. Checks and previews use GitHub's default pull-request merge checkout, so the gate proves the merge result and the run evidence, page set and stamp name that same commit.

A stakeholder opens the link, navigates the Studio and composes intent, and the pull request's author hands that intent to an agent that edits the source.

Intent
outcome
Let a stakeholder open the Studio of a pull request from a link, and let its author know which graph and which build the stakeholder read.
Behavior
rule line 25 · specs/consumers/spec-studio.sharing.sdp.md:25
A build is shared by uploading its page set to a static host, such as S3, Vercel or GitHub Pages.
rule.buildWritesNoStamp line 26 · specs/consumers/spec-studio.sharing.sdp.md:26
The Studio's build writes no stamp, so every page and data file it writes stays a function of the graph and its named inputs; the stamp is written apart, after the build.

spec:consumers.spec-studio.sharing.stamp-written-apart · enabled

rule.stampVerb line 27 · specs/consumers/spec-studio.sharing.sdp.md:27
sdp stamp [root] [--commit SHA] [--source TEMPLATE] writes stamp.json into <root>/generated/spec-studio/ and touches no other file: it derives no graph, renders no page, and refuses with exit 1 when the root holds no page set; a stamp without --commit names the commit unknown.

spec:consumers.spec-studio.sharing.stamp-written-apart · enabled

rule.stampLifetime line 28 · specs/consumers/spec-studio.sharing.sdp.md:28
A later build removes the page set and its stamp together, so no stamp outlives the build it names.

spec:consumers.spec-studio.sharing.stamp-written-apart · enabled

Cited at

  • test/skills.test.ts:1797
rule.publishingStep line 29 · specs/consumers/spec-studio.sharing.sdp.md:29
Publishing a preview and writing its stamp are a step the adopter's CI runs, never the Studio's build; the shell reads the stamp as spec:consumers.spec-studio.shell#rule.stamp states.

no example exercises it

rule.previewWorkflow line 30 · specs/consumers/spec-studio.sharing.sdp.md:30
The package's repository ships a reusable GitHub Actions workflow that, on a pull request, installs the caller's dependencies, runs sdp studio with the caller's root, exclusions and inputs, runs sdp stamp with the checked-out merge commit and the repository's source template, and uploads the page set as a CI artifact; it opens no pull request, writes no comment and holds no credential beyond the run's own token.

no example exercises it

rule.previewDeploy line 31 · specs/consumers/spec-studio.sharing.sdp.md:31
The workflow deploys the stamped page set under /preview/<pr-number>/ only when the caller asks for it and the repository serves a host from the branch the workflow writes to; a pull request from a fork never deploys.

no example exercises it

rule.previewPublished line 32 · specs/consumers/spec-studio.sharing.sdp.md:32
A deploy that pushes a preview succeeds only once the host has built the commit it pushed; a host build that errors, or does not finish within the wait, fails the job, so a green deploy means the preview is live.

no example exercises it

rule.sourceLinks line 33 · specs/consumers/spec-studio.sharing.sdp.md:33
Every recorded file and line a page shows as text carries its file and line as data on its element, and when a loaded stamp names a source template the stamp element links each to the template with the file and line filled in; without such a stamp, or through file://, each stays text.

no example exercises it

1 unkeyed rule.

Verifying examples

The stamp is written beside the page set, and a later build removes it · spec:consumers.spec-studio.sharing.stamp-written-apart · ready floor ready

Executable Spec

Given a page set the studio command wrote at an extraction root
When the stamp command runs with the commit {commit: "0123abc"} and the source template {source: "https://example.test/blob/0123abc/{file}#L{line}"}
Then the stamp names the corpus commit {corpusCommit: "0123abc"}
Then every page file stays byte-identical: {pagesUntouched: true}
Then a later studio run keeps the stamp: {stampSurvives: false}

Open example

Example space

Given a page set the studio command wrote at an extraction root
When the stamp command runs with the commit {commit:string} and the source template {source:string}
Then the stamp names the corpus commit {corpusCommit:string}
Then every page file stays byte-identical: {pagesUntouched:boolean}
Then a later studio run keeps the stamp: {stampSurvives:boolean}
Design
buildStamp line 36 · specs/consumers/spec-studio.sharing.sdp.md:36
{ schemaVersion: string; corpusCommit: string; engine: string; builtAt: string; source?: string } in stamp.json at the page set's root, written by sdp stamp and never by the Studio's build: the graph schema version of the stamping engine, the commit --commit names or unknown, the engine sdp --version names, the time the step ran as an ISO 8601 UTC timestamp to the second, and the source template --source names, when given.

no citation recorded

sourceTemplate line 37 · specs/consumers/spec-studio.sharing.sdp.md:37
a URL holding {file} and optionally {line}, such as https://github.com/<owner>/<repo>/blob/<commit>/{file}#L{line}, into which the shell writes a recorded root-relative file and its line; sdp stamp refuses a template without {file}.
previewWorkflow line 38 · specs/consumers/spec-studio.sharing.sdp.md:38
.github/workflows/studio-preview.yml, triggered by workflow_call and called as uses: libar-dev/software-delivery-protocol/.github/workflows/studio-preview.yml@<ref>.

no citation recorded

workflowInputs line 39 · specs/consumers/spec-studio.sharing.sdp.md:39
root (default .), exclude (root-relative prefixes, one per line), node-version (default 20), install (the install command, default npm ci), sdp (the command that runs the installed sdp, default npx sdp), runs-artifact (the name of an artifact an earlier job uploaded holding CTRF reports, each passed as --runs), diff (a boolean: write the graph of the pull request's base commit in a separate worktree, with that commit's own install and engine, and pass it as --base labelled base <short commit>), and deploy (a boolean, default false).

no citation recorded

previewArtifact line 40 · specs/consumers/spec-studio.sharing.sdp.md:40
the artifact spec-studio-pr-<pr-number>, holding the stamped page set.
workflowSource line 41 · specs/consumers/spec-studio.sharing.sdp.md:41
the workflow stamps with the checked-out merge commit and the source template <server>/<repository>/blob/<merge commit>/<root>/{file}#L{line}, the root and its slash left out when the root is ..
previewPath line 42 · specs/consumers/spec-studio.sharing.sdp.md:42
a pull request's preview is served at <host>/preview/<pr-number>/, which the workflow writes as the folder preview/<pr-number>/ of the gh-pages branch, the branch GitHub Pages serves when a repository enables Pages from it.
stampElement line 43 · specs/consumers/spec-studio.sharing.sdp.md:43
the page element sdp-stamp, once its stamp loads, also sets data-corpus-commit on itself and, when the stamp names a source template, wraps each code element carrying data-source-file and data-source-line in a link to the template with {file} and {line} filled in, the file percent-encoded by path segment; without a template it links nothing.
UI
sourceMark line 46 · specs/consumers/spec-studio.sharing.sdp.md:46
a recorded file and line written as <file>:<line> in a code element carrying data-source-file and data-source-line, beside its copy action.
Verification

Verifier bindings

Example space

  • commit · string · declared by the stamp command runs with the commit {commit} and the source template {source}
  • source · string · declared by the stamp command runs with the commit {commit} and the source template {source}

Bound points

Examplecommitsource
spec:consumers.spec-studio.sharing.stamp-written-apart"0123abc""https://example.test/blob/0123abc/{file}#L{line}"

Oracle binding: present · oracle:protocol.studio-sharing · test/studio-s4.test.ts:538

Coverage

commit: "0123abc" · spec:consumers.spec-studio.sharing.stamp-written-apart · not enumerable

source: "https://example.test/blob/0123abc/{file}#L{line}" · spec:consumers.spec-studio.sharing.stamp-written-apart · not enumerable

Unbound

  • commit: None
  • source: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.sharing
The diagram as text
  • spec:consumers.spec-studio.sharing: A Studio build is stamped and shared from a static host · declared Spec
  • spec:consumers.spec-studio.sharing.stamp-written-apart: The stamp is written beside the page set, and a later build removes it · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.stamp-command: writes the publishing stamp without extraction or rendering · anchored code · src/cli/stamp-command.ts:8
  • impl:protocol.studio-preview-workflow: asserts the reusable Studio preview workflow and Protocol CI caller · anchored code · test/studio-s4.test.ts:742
  • impl:protocol.studio-stamp: resolves published stamps and source links in the browser · anchored code · src/studio-elements/stamp.ts:30
  • oracle:protocol.studio-sharing: oracle:protocol.studio-sharing · anchored oracle binding · test/studio-s4.test.ts:538
  • test:protocol.studio-stamp-apart: test:protocol.studio-stamp-apart · anchored test binding · binding present · test/studio-s4.test.ts:555
  • spec:consumers.spec-studio.sharing refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.sharing.stamp-written-apart refines spec:consumers.spec-studio.sharing · declared
  • spec:consumers.spec-studio.sharing.stamp-written-apart verifies spec:consumers.spec-studio.sharing · declared
  • impl:protocol.stamp-command satisfies spec:consumers.spec-studio.sharing · anchored
  • impl:protocol.studio-preview-workflow satisfies spec:consumers.spec-studio.sharing · anchored
  • impl:protocol.studio-stamp satisfies spec:consumers.spec-studio.sharing · anchored
  • oracle:protocol.studio-sharing models spec:consumers.spec-studio.sharing · anchored
  • test:protocol.studio-stamp-apart verifies spec:consumers.spec-studio.sharing.stamp-written-apart · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

No decision record named.

Runtime
  • component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocol

    Uses

    • component:protocol.adapters · external runtime and source adapters · src/adapters/vitest.ts:23 · layer adapter · context protocol
    • component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocol
    • 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.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocol
    • component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol
    • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
    • component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol
  • component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
  • impl:protocol.stamp-command · writes the publishing stamp without extraction or rendering · src/cli/stamp-command.ts:8

    Component: component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocol

    Uses

    • impl:protocol.schema-version · versioned graph nodes, claims, edges and located evidence · src/graph/schema.ts:9
  • impl:protocol.studio-preview-workflow · asserts the reusable Studio preview workflow and Protocol CI caller · test/studio-s4.test.ts:742

    Uses

    None.

  • impl:protocol.studio-stamp · resolves published stamps and source links in the browser · src/studio-elements/stamp.ts:30

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.sharing
The diagram as text
  • spec:consumers.engine-provenance: The CLI names the engine that produced a result
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
  • spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set
  • spec:consumers.spec-studio.sharing: A Studio build is stamped and shared from a static host
  • spec:consumers.spec-studio.sharing.stamp-written-apart: The stamp is written beside the page set, and a later build removes it
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order
  • spec:consumers.studio-on-ramp: The Studio skill teaches agents to publish, share and read the Spec Studio
  • spec:extraction.determinism: Committed source derives byte-identical output
  • spec:extraction.schema-versioning: The graph declares its schema version
  • spec:consumers.spec-studio.sharing constrainedBy spec:extraction.determinism · declared
  • spec:consumers.spec-studio.sharing dependsOn spec:consumers.engine-provenance · declared
  • spec:consumers.spec-studio.sharing dependsOn spec:consumers.spec-studio.publisher · declared — the stamp and the preview take the page set the publisher wrote
  • spec:consumers.spec-studio.sharing dependsOn spec:extraction.schema-versioning · declared
  • spec:consumers.spec-studio.sharing refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.shell dependsOn spec:consumers.spec-studio.sharing · declared — the shell shows the stamp a publishing step writes beside the page set
  • spec:consumers.spec-studio.spec-page dependsOn spec:consumers.spec-studio.sharing · declared — a recorded file and line become a link only from a stamp's source template
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.spec-studio.sharing · declared — the skill teaches the stamp, its lifetime and the pull-request preview workflow
  • spec:consumers.spec-studio.sharing.stamp-written-apart refines spec:consumers.spec-studio.sharing · declared
  • spec:consumers.spec-studio.sharing.stamp-written-apart verifies spec:consumers.spec-studio.sharing · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

  • refines · spec:consumers.spec-studio · stated ready, floor ready
  • dependsOn · spec:consumers.engine-provenance · stated ready, floor ready
  • dependsOn · spec:consumers.spec-studio.publisher · stated ready, floor ready
  • dependsOn · spec:extraction.schema-versioning · stated ready, floor ready
  • constrainedBy · spec:extraction.determinism · stated ready, floor ready

Rested on by

Distance 1

  • spec:consumers.spec-studio.sharing.stamp-written-apart

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-stamp-apart

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.shell

    Implementing units

    • impl:protocol.studio-code-spans · src/projections/studio/pages/code-spans.ts:9
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-html · src/projections/studio/pages/html.ts:8
    • impl:protocol.studio-text · src/projections/studio/pages/text.ts:7

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-pages

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.spec-page

    Implementing units

    • impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8
    • impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201
    • impl: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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Distance 2

Distance 3

  • spec:consumers.spec-studio.capability-map-page

    Implementing units

    • impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78
    • impl:protocol.studio-filter · src/studio-elements/filter.ts:25
    • impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6
    • impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-capabilities

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.cited-line-text

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:roadmap, pack:self-hosting-v1

  • spec:consumers.spec-studio.diagram-kinds.mermaid-source

    Implementing units

    • impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13
    • impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-diagram-core

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.export.self-contained

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-export-contained

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.owner-queue.dependency-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-queue-dependency-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • spec:consumers.spec-studio.registers.blocking-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-registers-blocking-first

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

  • 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

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

  • spec:consumers.spec-studio.verification-panels.rule-coverage

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-rule-coverage

    Packs: pack:self-hosting-v1, pack:spec-studio-v1

Relations

Relation and directionOther endClaimReasonExercised keys
constrainedBy · outgoingspec:extraction.determinism
spec:extraction.determinism · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.engine-provenance
spec:consumers.engine-provenance · resolves
declaredNoneNone
dependsOn · outgoingsdp studio publishes the Studio as one page set
spec:consumers.spec-studio.publisher · resolves
declaredthe stamp and the preview take the page set the publisher wroteNone
dependsOn · outgoingspec:extraction.schema-versioning
spec:extraction.schema-versioning · resolves
declaredNoneNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
dependsOn · incomingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredthe shell shows the stamp a publishing step writes beside the page setNone
dependsOn · incomingA Spec page shows one Spec in collapsible panels, in a fixed order
spec:consumers.spec-studio.spec-page · resolves
declareda recorded file and line become a link only from a stamp's source templateNone
dependsOn · incomingThe Studio skill teaches agents to publish, share and read the Spec Studio
spec:consumers.studio-on-ramp · resolves
declaredthe skill teaches the stamp, its lifetime and the pull-request preview workflowNone
refines · incomingThe stamp is written beside the page set, and a later build removes it
spec:consumers.spec-studio.sharing.stamp-written-apart · resolves
declaredNoneNone
verifies · incomingThe stamp is written beside the page set, and a later build removes it
spec:consumers.spec-studio.sharing.stamp-written-apart · resolves
declaredNonebuildWritesNoStamp, stampVerb, stampLifetime

Bindings

Implementation binding: present

  • impl:protocol.stamp-command · writes the publishing stamp without extraction or rendering · src/cli/stamp-command.ts:8 · role publisher · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.studio-preview-workflow · asserts the reusable Studio preview workflow and Protocol CI caller · test/studio-s4.test.ts:742
  • impl:protocol.studio-stamp · resolves published stamps and source links in the browser · src/studio-elements/stamp.ts:30 · role interaction · component component:protocol.studio-elements · layer edge · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.studio-sharing · test/studio-s4.test.ts:538

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

63. The stamp is written beside the page set, and a later build removes it

spec:consumers.spec-studio.sharing.stamp-written-apart

The stamp is written beside the page set, and a later build removes it

spec:consumers.spec-studio.sharing.stamp-written-apartExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/spec-studio.sharing.stamp-written-apart.sdp.md

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

Intent
outcome
Execute the stamp step apart from the build: it touches no page, and no stamp outlives its build.
assumptions
  • The world writes a root with one Pack of two member Specs, runs the studio command, keeps the bytes of every page file, runs the stamp command, reads stamp.json and compares the page files with the kept bytes, then runs the studio command again and checks whether stamp.json exists.
Behavior

Examples

Given a page set the studio command wrote at an extraction root
When the stamp command runs with the commit {commit: "0123abc"} and the source template {source: "https://example.test/blob/0123abc/{file}#L{line}"}
Then the stamp names the corpus commit {corpusCommit: "0123abc"}
Then every page file stays byte-identical: {pagesUntouched: true}
Then a later studio run keeps the stamp: {stampSurvives: false}
Verification

Verifier bindings

  • test:protocol.studio-stamp-apart · anchored · test anchor binding present · test/studio-s4.test.ts:555
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.spec-studio.sharing.stamp-written-apart
The diagram as text
  • spec:consumers.spec-studio.sharing.stamp-written-apart: The stamp is written beside the page set, and a later build removes it · declared Spec
  • spec:consumers.spec-studio.sharing: A Studio build is stamped and shared from a static host · declared Spec
  • test:protocol.studio-stamp-apart: test:protocol.studio-stamp-apart · anchored test binding · binding present · test/studio-s4.test.ts:555
  • spec:consumers.spec-studio.sharing.stamp-written-apart refines spec:consumers.spec-studio.sharing · declared
  • spec:consumers.spec-studio.sharing.stamp-written-apart verifies spec:consumers.spec-studio.sharing · declared
  • test:protocol.studio-stamp-apart verifies spec:consumers.spec-studio.sharing.stamp-written-apart · 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

No decision record named.

Runtime

No implementation neighborhood recorded.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.sharing.stamp-written-apart
  • E2: verifies · declared
The diagram as text
  • spec:consumers.spec-studio.sharing: A Studio build is stamped and shared from a static host
  • spec:consumers.spec-studio.sharing.stamp-written-apart: The stamp is written beside the page set, and a later build removes it
  • spec:consumers.spec-studio.sharing.stamp-written-apart refines spec:consumers.spec-studio.sharing · declared
  • spec:consumers.spec-studio.sharing.stamp-written-apart verifies spec:consumers.spec-studio.sharing · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingA Studio build is stamped and shared from a static host
spec:consumers.spec-studio.sharing · resolves
declaredNoneNone
verifies · outgoingA Studio build is stamped and shared from a static host
spec:consumers.spec-studio.sharing · resolves
declaredNonebuildWritesNoStamp, stampVerb, stampLifetime

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.studio-stamp-apart · anchored · test/studio-s4.test.ts:555 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

64. The Studio skill teaches agents to publish, share and read the Spec Studio

spec:consumers.studio-on-ramp

The Studio skill teaches agents to publish, share and read the Spec Studio

spec:consumers.studio-on-rampUse Case / Behavior · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

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

Findings: no errors, no warnings

specs/consumers/studio-on-ramp.sdp.md

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

The Studio's work reaches an agent in three forms: a person or an agent holding only a link, a coding agent that publishes pages or receives intent a person composed in them, and a developer who sets up previews in CI. Each needs steps that most graph questions never use, so the Studio has its own skill and the reading skill points to it.

Intent
outcome
Give an agent a shipped on-ramp that publishes and shares the Spec Studio, reads it by task from a repository or a link, and turns intent composed in it into checked carrier edits.
Behavior
rule.ownSkill line 32 · specs/consumers/studio-on-ramp.sdp.md:32
The Studio is taught in its own shipped skill, beside the reading, authoring and session skills, and the reading skill points to it.

no example exercises it

rule.startFromEvidence line 33 · specs/consumers/studio-on-ramp.sdp.md:33
The skill starts from what the agent holds: a repository to publish from, a page set or a link to read, composed intent to apply, or a CI workflow to set up; a reader holding only a link reads the pages without building a graph.

no example exercises it

rule.publishRun line 34 · specs/consumers/studio-on-ramp.sdp.md:34
The skill teaches sdp studio for a page set with a base graph or run records and sdp generate for every root without them; that every command entering the shared build removes the page set; that supplied inputs lie outside every path the build writes or removes; and that the watch rebuilds on carrier edits with no server.

no example exercises it

rule.stampAndShare line 35 · specs/consumers/studio-on-ramp.sdp.md:35
The skill teaches stamping after the final build with the commit the build read, that a later build removes the stamp, that source links need a stamp served over http or https, and the reusable preview workflow's inputs, permissions, artifact, deployment and fork behavior.

no example exercises it

rule.readByTask line 36 · specs/consumers/studio-on-ramp.sdp.md:36
The skill maps a reviewer's task to the page that answers it, and states what a page does not: it shows values the build computed, its order sets no priority, a run row is no verdict, and a Pack export carries no stamp or composing panel.

no example exercises it

rule.receiveIntent line 37 · specs/consumers/studio-on-ramp.sdp.md:37
The skill teaches receiving the composing panel's hand-off: the proposal and its memo, and the scoped-intent text the proposal cannot carry. The agent writes the graph at the proposal's base, runs the proposal check, sends a moved or uncheckable change to a person, applies the rest through the authoring skill, and writes scoped-intent text into a proposal against a known base before checking it.

no example exercises it

rule.citesLaw line 38 · specs/consumers/studio-on-ramp.sdp.md:38
The skill cites the Studio's Specs for law and each verb's --help for its flags, and restates neither.

no example exercises it

0 unkeyed rules.

Verification

Verifier bindings

  • test:protocol.studio-on-ramp · skill-asset checks verify the Studio on-ramp against the verbs, workflow and pages · anchored · test anchor binding present · test/skills.test.ts:1700
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.studio-on-ramp
Requirement drawing for spec:consumers.studio-on-rampsatisfies · anchoredrefines · declaredverifies · anchoredIntended Specsspec:consumers.studio-on-rampThe Studio skill teachesagents to publish, shareand read the Spec Studio…consumers.studio-on-rampdeclared SpecSatisfying or referencingunitsimpl:protocol.studio-on-rampasserts realization of theshipped Studio skilldocumentimpl:protocol.studio-on-rampanchored codeTest or oracle bindingstest:protocol.studio-on-rampskill-asset checks verifythe Studio on-ramp againstthe verbs, workflow andpagestest:protocol.studio-on-rampanchored test binding ·binding presentOutside the selected setspec:consumers.reading-on-rampThe reading skill teachesagents to query the graph…consumers.reading-on-rampdeclared Spec
The diagram as text
  • spec:consumers.studio-on-ramp: The Studio skill teaches agents to publish, share and read the Spec Studio · declared Spec
  • spec:consumers.reading-on-ramp: The reading skill teaches agents to query the graph · declared Spec
  • impl:protocol.studio-on-ramp: asserts realization of the shipped Studio skill document · anchored code · test/skills.test.ts:1693
  • test:protocol.studio-on-ramp: skill-asset checks verify the Studio on-ramp against the verbs, workflow and pages · anchored test binding · binding present · test/skills.test.ts:1700
  • spec:consumers.studio-on-ramp refines spec:consumers.reading-on-ramp · declared — a Studio page is a person's reading of the one graph, and the skill sends an agent from a page to the graph behind it
  • impl:protocol.studio-on-ramp satisfies spec:consumers.studio-on-ramp · anchored
  • test:protocol.studio-on-ramp verifies spec:consumers.studio-on-ramp · 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

No decision record named.

Runtime
  • impl:protocol.studio-on-ramp · asserts realization of the shipped Studio skill document · test/skills.test.ts:1693

    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.studio-on-ramp
The diagram as text
  • spec:consumers.intent-composition: Composed intent hands off on one proposal shape
  • spec:consumers.reading-on-ramp: The reading skill teaches agents to query the graph
  • 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.export: A Pack exports as one file, and every page prints as a document
  • spec:consumers.spec-studio.intent-panel: A composing panel on every page gathers scoped intent for an agent
  • spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set
  • spec:consumers.spec-studio.sharing: A Studio build is stamped and shared from a static host
  • spec:consumers.studio-on-ramp: The Studio skill teaches agents to publish, share and read the Spec Studio
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.intent-composition · declared — a received proposal is checked and applied as the hand-off law states
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.spec-studio.data.inputs · declared — the skill teaches the base graph and run records and where they may lie
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.spec-studio.export · declared — the skill teaches the Pack export and what it leaves out
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.spec-studio.intent-panel · declared — the skill teaches what the composing panel hands off and what stays scoped-intent text
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.spec-studio.publisher · declared — the skill teaches the verb, its watch and what each shared build removes
  • spec:consumers.studio-on-ramp dependsOn spec:consumers.spec-studio.sharing · declared — the skill teaches the stamp, its lifetime and the pull-request preview workflow
  • spec:consumers.studio-on-ramp refines spec:consumers.reading-on-ramp · declared — a Studio page is a person's reading of the one graph, and the skill sends an agent from a page to the graph behind it
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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:consumers.intent-composition
spec:consumers.intent-composition · resolves
declareda received proposal is checked and applied as the hand-off law statesNone
dependsOn · outgoingThe Studio reads two named inputs beside the graph, a base graph and run records
spec:consumers.spec-studio.data.inputs · resolves
declaredthe skill teaches the base graph and run records and where they may lieNone
dependsOn · outgoingA Pack exports as one file, and every page prints as a document
spec:consumers.spec-studio.export · resolves
declaredthe skill teaches the Pack export and what it leaves outNone
dependsOn · outgoingA composing panel on every page gathers scoped intent for an agent
spec:consumers.spec-studio.intent-panel · resolves
declaredthe skill teaches what the composing panel hands off and what stays scoped-intent textNone
dependsOn · outgoingsdp studio publishes the Studio as one page set
spec:consumers.spec-studio.publisher · resolves
declaredthe skill teaches the verb, its watch and what each shared build removesNone
dependsOn · outgoingA Studio build is stamped and shared from a static host
spec:consumers.spec-studio.sharing · resolves
declaredthe skill teaches the stamp, its lifetime and the pull-request preview workflowNone
refines · outgoingspec:consumers.reading-on-ramp
spec:consumers.reading-on-ramp · resolves
declareda Studio page is a person's reading of the one graph, and the skill sends an agent from a page to the graph behind itNone

Bindings

Implementation binding: present

  • impl:protocol.studio-on-ramp · asserts realization of the shipped Studio skill document · test/skills.test.ts:1693

Design reference: none

Verifier binding: present

  • test:protocol.studio-on-ramp · skill-asset checks verify the Studio on-ramp against the verbs, workflow and pages · anchored · test/skills.test.ts:1700 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.