An adopter at full speed

pack:adopter-speed-v1specs/adopter-speed.pack.sdp.md

Exported from the Spec Studio

pack:adopter-speed-v1

Where the design stands

  • 59 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.
  • 115 design entries and 75 pinned declarations.
  • No open questions and no blocking questions.
  • 16 members with an implementation binding.
  • No members with a design reference.
  • 48 outside Specs the Pack rests on; 36 outside Specs rest on the Pack; 7 outside Specs verify it; no outside Specs supersede it.

Maturity map

59 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 An adopter at full speedFloor reached →Stated readiness ↓noneideascopeddefinedreadyideascopeddefinedreadystated ready, floor ready: 59 members59
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————59
stated ready, floor ready · 59 members
Mermaid source

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

Framing

What a corpus needs to move onto the Protocol's capabilities at scale and keep designing fast. First the reach of a body and a rules file: shipped recipes called as functions, recipes that answer as rules files, rules and parameter files watched, outside registers checked by pattern, help on every verb and one verb that writes every projection root. Then keys that survive rewording, for example steps and for Model terms, and the test lines that cite a pinned declaration. Then reading material that fits a budget in parts. Last, the order a person makes the waiting statements in, and the kit that shows a corpus what it could adopt next. Each Spec is followed by the examples that verify it.

Members

1. The evaluation sink runs one body and prints its returnbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.agent-surface.evaluation-sink

Design

7 design entries · 3 pinned declarations

Decisions

  • spec:decisions.agent-front-door · stated ready

Open questions

None.

Implementation binding: present

  • api:protocol.evaluate-body · evaluates bodies and shipped recipes over one in-memory reader, graph and report · src/reader/evaluate-body.ts:120 · role service · component component:protocol.reader · layer application · context protocol
  • impl:protocol.build-pipeline-query · runQuery reads one body, derives the graph once for the reader, raw graph and report, and prints the return or refuses on stderr · src/cli/q-command.ts:212 · role service · component component:protocol.cli · layer edge · context protocol

Design reference: none

Verifier binding: present

5 verifiers, 5 enabled · 3 verifying examples, 3 enabled

2. A script holding a graph runs a shipped recipe through the exported evaluatorexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.agent-surface.evaluation-sink.exported-evaluator

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

3. A body calls a shipped recipe and returns its answer unchangedexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.agent-surface.evaluation-sink.recipe-call

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

4. A call to a recipe the catalog does not hold fails the bodyexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.agent-surface.evaluation-sink.unknown-recipe

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

5. Corpus-authored rules run on the one validation pathbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:validation.corpus-rules

Design

11 design entries · 7 pinned declarations

Decisions

  • spec:decisions.architectural-annotation · stated ready

Open questions

None.

Implementation binding: present

  • impl:protocol.corpus-rule-runner · runs selected corpus rules and separates their failures · src/cli/corpus-rules.ts:65 · role service · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.corpus-rules · runs copied rule bodies after Protocol validation and composes the separate corpus report, output and exit · src/cli/validate-view-command.ts:79 · role service · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.validate-watch · watches carrier directories and coalesces events into a pending validation rerun · src/cli/validate-watch.ts:591 · role service · component component:protocol.cli · layer edge · context protocol

Design reference: none

Verifier binding: present

9 verifiers, 9 enabled · 9 verifying examples, 9 enabled

6. Editing a parameter file starts a cycle that reads the new parametersexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:validation.corpus-rules.params-edit-starts-a-cycle

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. Rewriting a rules file under node_modules starts a cycle that runs the new bodyexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:validation.corpus-rules.rules-edit-starts-a-cycle

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. A parameter file that stops being JSON fails only its own rules file, and the watcher runs onexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:validation.corpus-rules.unreadable-params-fail-one-file

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

9. Validation re-runs while an author edits carriersbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.validate-watch

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.validate-watch · watches carrier directories and coalesces events into a pending validation rerun · src/cli/validate-watch.ts:591 · role service · component component:protocol.cli · layer edge · context protocol

Design reference: none

Verifier binding: present

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

10. Address resolution and dependency cycles stay executable graph recipesbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.agent-surface.address-and-cycle-recipes

Design

4 design entries · 3 pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.address-and-cycle-recipes · asserts realization of the shipped address resolution and dependency cycle recipes · test/recipes.test.ts:3568

Design reference: none

Verifier binding: present

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

11. A dependency chain with no cycle yields no findingexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing

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

12. The shipped dependency-cycles file fails a rules run on a cycleexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-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

13. The shipped address-resolution file fails a rules run on an address that names no entryexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-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

14. A corpus checks the register tokens its prose citesbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:validation.external-registers

Design

8 design entries · 7 pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.external-registers-recipe · asserts realization of the shipped external-registers recipe · test/external-registers.test.ts:9

Design reference: none

Verifier binding: present

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

15. A held token no Spec cites fails a rules run only when the caller asksexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:validation.external-registers.uncited-on-request

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

16. A cited token the register lacks or retires fails a rules runexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:validation.external-registers.unknown-and-retired

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

17. Every verb answers --help, and one verb writes every projection rootbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.command-line

Design

5 design entries · 2 pinned declarations

Decisions

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

Open questions

None.

Implementation binding: present

  • impl:protocol.adopter-help · SDP_HELP_TEXT indexes the shipped skills, recipe catalog, schema, walkthrough, glossary and specs/ by package-relative path · src/cli/help.ts:167 · role projection · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.agent-surface-cli · CLI verb dispatcher and agent-surface front of the package CLI · src/cli/sdp.ts:94 · role service · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.build-args · shared build arguments and corpus-rule inputs · src/cli/build-args.ts:11 · role codec · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.generate-command · prepares all prior roots before one shared build and publishes with each verb's checks · src/cli/generate-command.ts:34 · role publisher · component component:protocol.cli · layer edge · context protocol

Design reference: none

Verifier binding: present

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

18. A root that fails its check is removed while sdp generate writes the othersexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

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

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

19. One run of sdp generate leaves all five roots currentexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

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

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. A publisher's --help prints its help and touches no rootexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

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

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

21. An example step may carry a key that survives rewordingrule · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:carrier.step-keys

Design

9 design entries · 7 pinned declarations

Decisions

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

Open questions

None.

Implementation binding: present

  • impl:protocol.example-runner · plans and executes a bound example against the caller's world · src/runner/index.ts:108 · role service · component component:protocol.runner · layer application · context protocol
  • 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
  • impl:protocol.executable-contracts · derives step and example-space contracts from the graph · src/codegen/contracts.ts:647 · role projection · component component:protocol.codegen · layer application · context protocol
  • impl:protocol.key-markers · normalizes step and term markers across the three carriers · src/extract/key-markers.ts:136 · role codec · component component:protocol.extract · layer application · context protocol
  • impl:protocol.open-section-order · preserves authored open-section and model-term order and Pack field order · src/extract/serialize.ts:105 · role codec · component component:protocol.extract · layer application · context protocol
  • impl:protocol.sdp-import-markdown-emit · emits the Markdown document twin for an imported Spec · src/import/emit-markdown.ts:253 · role codec · component component:protocol.import · layer application · context protocol
  • impl:protocol.spec-sections · typed Spec section shapes · src/model/sections.ts:138 · role contract · component component:protocol.model · layer domain · context protocol

Design reference: none

Verifier binding: present

11 verifiers, 11 enabled · 10 verifying examples, 10 enabled

22. An example marker that disagrees with its vocabulary withholds the contractexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:carrier.step-keys.conflicting-example-key-withheld

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

23. A keyed Gherkin step keeps its binding across a rewordingexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:carrier.step-keys.gherkin-keyed-step-stays-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

24. A step key equal to another step's skeleton withholds the contractexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:carrier.step-keys.key-equal-to-a-skeleton-withheld

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. A step marker whose key is off the grammar refuses the carrierexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:carrier.step-keys.malformed-marker-refused

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

26. Renaming a step key breaks the bindingexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:carrier.step-keys.renamed-key-breaks

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

27. One key on two vocabulary steps refuses the carrierexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:carrier.step-keys.repeated-key-refused

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

28. A keyed step reworded in its vocabulary and its example keeps its bindingexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:carrier.step-keys.reworded-keyed-step-stays-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

29. The same rewording without a key breaks the bindingexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:carrier.step-keys.reworded-unkeyed-step-breaks

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. Two keys on one step refuse the carrierexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:carrier.step-keys.two-keys-on-one-step-refused

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

31. A keyed TypeScript step keeps its key through import to Markdownexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:carrier.step-keys.typescript-keyed-step-imports-keyed

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

32. The build derives step and space contracts from graph examplesbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:extraction.executable-contracts

Design

6 design entries · 5 pinned declarations

Decisions

  • spec:decisions.point-per-example · stated ready

Open questions

None.

Implementation binding: present

  • impl:protocol.example-space · resolves example-space vocabulary for contracts and floors · src/graph/example-space.ts:117 · role decider · component component:protocol.graph · layer domain · context protocol
  • impl:protocol.executable-contracts · derives step and example-space contracts from the graph · src/codegen/contracts.ts:647 · role projection · component component:protocol.codegen · layer application · context protocol

Design reference: none

Verifier binding: present

7 verifiers, 7 enabled · 7 verifying examples, 7 enabled

33. Derived runnable modules freeze the registrar interfacebehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:extraction.runnable-modules

Design

7 design entries · 5 pinned declarations

Decisions

  • spec:decisions.adopted-registrars-committed · stated ready
  • spec:decisions.anchor-comment-form · stated ready
  • spec:decisions.binding-not-liveness · stated ready
  • spec:decisions.point-per-example · stated ready

Open questions

None.

Implementation binding: present

  • component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · role projection · layer application · context protocol
  • component:protocol.testing · the generated registrar runtime · src/testing/index.ts:38 · role adapter · layer adapter · context protocol
  • impl:protocol.example-testing-helpers · adapter-lifecycle and oracle-comparison helpers for bound examples · src/testing/index.ts:50 · role adapter · component component:protocol.testing · layer adapter · context protocol
  • impl:protocol.runnable-modules · derives and publishes runnable registrar modules from the graph · src/codegen/contracts.ts:658 · role projection · component component:protocol.codegen · layer application · context protocol

Design reference: none

Verifier binding: present

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

34. A Model term may carry a key that addresses itrule · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:model.term-addresses

Design

10 design entries · 7 pinned declarations

Decisions

Open questions

None.

Implementation binding: present

  • impl:protocol.address-and-cycle-recipes · asserts realization of the shipped address resolution and dependency cycle recipes · test/recipes.test.ts:3568
  • impl:protocol.entry-locations · builds the carrier entry location table · src/extract/derive.ts:78 · role extractor · component component:protocol.extract · layer application · context protocol
  • impl:protocol.key-markers · normalizes step and term markers across the three carriers · src/extract/key-markers.ts:136 · role codec · component component:protocol.extract · layer application · context protocol
  • impl:protocol.open-section-order · preserves authored open-section and model-term order and Pack field order · src/extract/serialize.ts:105 · role codec · component component:protocol.extract · layer application · context protocol
  • impl:protocol.prose-mentions · checks that prose mentions resolve and warns once per unbacked Spec pair · src/validate/validators.ts:1370 · role validator · component component:protocol.validate · layer domain · context protocol
  • impl:protocol.register-recipes · asserts realization of the shipped register recipes · test/recipes.test.ts:2057
  • impl:protocol.sdp-import-markdown-emit · emits the Markdown document twin for an imported Spec · src/import/emit-markdown.ts:253 · role codec · component component:protocol.import · layer application · context protocol
  • impl:protocol.spec-sections · typed Spec section shapes · src/model/sections.ts:138 · role contract · component component:protocol.model · layer domain · context protocol
  • impl:protocol.stable-ids · stable ID grammar parser · src/ids.ts:173 · role codec · component component:protocol.model · layer domain · context protocol

Design reference: none

Verifier binding: present

6 verifiers, 6 enabled · 5 verifying examples, 5 enabled

35. A keyed term is reified and its address resolvesexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:model.term-addresses.keyed-term-resolves

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

36. A term marker whose key is off the grammar refuses its carrierexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:model.term-addresses.malformed-term-marker-refused

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. A term key repeated in one Spec refuses its carrierexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:model.term-addresses.repeated-term-key-refused

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

38. A keyed TypeScript term keeps its address through import to Markdownexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:model.term-addresses.typescript-term-imports-keyed

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. An address that names a term key no term carries is an errorexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:model.term-addresses.unknown-term-key-refused

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

40. A Spec id written in prose is a checked mentiondecision · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding none

spec:decisions.checked-mentions

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: none

Design reference: none

Verifier binding: none

41. The graph records where anchored source cites an entry addressbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:extraction.entry-citations

Design

8 design entries · 7 pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.entry-address-resolution · resolves entry addresses for prose validation and citation readers · src/graph/entry-address.ts:6 · role reader · component component:protocol.graph · layer domain · context protocol
  • impl:protocol.entry-citation-reader · resolves citations and joins file anchors with direct and example-based test verification · src/reader/entry-citations.ts:19 · role reader · component component:protocol.reader · layer application · context protocol
  • impl:protocol.entry-citation-recipe · asserts realization of Entry citations in docs/agent-surface/recipes.md · test/recipes.test.ts:7008
  • impl:protocol.entry-citation-scan · records prose-mention tokens with addresses in anchored source files · src/extract/entry-citations.ts:6 · role extractor · component component:protocol.extract · layer application · context protocol

Design reference: none

Verifier binding: present

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

42. A code file's comment cites a declaration without reading as a test lineexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:extraction.entry-citations.code-comment-cites-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

43. A test title in an anchored file cites a pinned declarationexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:extraction.entry-citations.test-title-cites-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

44. A file that carries no anchor is not read for citationsexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:extraction.entry-citations.unanchored-file-unread

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

45. A citation of an entry its Spec lacks reports through the recipe, never as a Protocol findingexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:extraction.entry-citations.unresolved-citation

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 context bundle is composed per invocation within a stated budgetbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.context-bundle

Design

17 design entries · 7 pinned declarations

Decisions

  • spec:decisions.agent-front-door · stated ready

Open questions

None.

Implementation binding: present

  • impl:protocol.context-bundle-recipe · realizes the context bundle in the shipped recipe catalog · test/iteration-recipes.test.ts:765 · role projection

Design reference: none

Verifier binding: present

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

47. A member larger than the budget is named, and no part is returnedexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.context-bundle.oversized-member-named

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. A Pack too large for one bundle reads whole in partsexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.context-bundle.parts-cover-the-pack

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

49. The readiness planner orders the statements a person can makebehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.readiness-planner

Design

6 design entries · 4 pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.statement-queue-recipe · realizes the statement queue in the shipped recipe catalog · test/self-hosting-readiness-planner.test.ts:74 · role projection

Design reference: none

Verifier binding: present

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

50. Waiting Specs that rest on each other share a round and report a cycleexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.readiness-planner.cycle-shares-a-round

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

51. A waiting decision comes before the Spec it shapesexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.readiness-planner.decision-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

52. The Spec another rests on comes first in the queueexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.readiness-planner.dependency-order

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

53. An owner's blocking question lists the Specs it holdsexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.readiness-planner.owner-question-holds

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

54. The upgrade kit shows a corpus what it could adoptbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.upgrade-kit

Design

2 design entries · 1 pinned declaration

Open questions

None.

Implementation binding: present

  • impl:protocol.upgrade-guide · realizes the shipped upgrade guide document · test/upgrade-kit.test.ts:87

Design reference: none

Verifier binding: present

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

55. Capability adoption counts where each capability is used and where it could applybehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.upgrade-kit.capability-adoption

Design

6 design entries · 4 pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.capability-adoption-recipe · realizes capability adoption in the shipped recipe catalog · test/upgrade-kit.test.ts:514 · role projection

Design reference: none

Verifier binding: present

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

56. Capability adoption counts keyed rules and reasoned relationsexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus

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. The rule-key proposal keys every unkeyed rule as a change proposalbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.upgrade-kit.rule-key-proposal

Design

9 design entries · 6 pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.rule-key-proposal-recipe · realizes the rule-key proposal in the shipped recipe catalog · test/upgrade-kit.test.ts:742 · role projection

Design reference: none

Verifier binding: present

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

58. Two rules that coin one key stay apart, and a rule with no ASCII word stays unkeyedexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable

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

59. A rule-key proposal passes the proposal check and validates once appliedexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present

spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean

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

Boundary

Rests on (48)
SpecStated rungImplementation bindingJoined members
spec:carrier.slot-notation
spec:carrier.slot-notation
readypresentrefines: spec:carrier.step-keys
spec:consumers.adopter-on-ramp
spec:consumers.adopter-on-ramp
readypresentdependsOn: spec:consumers.command-line
spec:consumers.agent-surface
spec:consumers.agent-surface
readypresentrefines: spec:consumers.agent-surface.evaluation-sink, spec:validation.corpus-rules, spec:consumers.context-bundle
dependsOn: spec:validation.corpus-rules
spec:consumers.agent-surface.design-recipes
spec:consumers.agent-surface.design-recipes
readypresentdependsOn: spec:consumers.context-bundle
spec:consumers.agent-surface.recipe-parameters
spec:consumers.agent-surface.recipe-parameters
readypresentdependsOn: spec:validation.corpus-rules, spec:consumers.agent-surface.address-and-cycle-recipes, spec:validation.external-registers
spec:consumers.agent-surface.register-recipes
spec:consumers.agent-surface.register-recipes
readypresentrefines: spec:consumers.agent-surface.address-and-cycle-recipes
dependsOn: spec:validation.external-registers
spec:consumers.authoring-on-ramp
spec:consumers.authoring-on-ramp
readypresentrefines: spec:consumers.validate-watch, spec:consumers.upgrade-kit
spec:consumers.capability-map
spec:consumers.capability-map
readypresentdependsOn: spec:consumers.upgrade-kit
spec:consumers.edit-model
spec:consumers.edit-model
readynonedependsOn: spec:consumers.upgrade-kit
spec:consumers.graph-first-planning
spec:consumers.graph-first-planning
readypresentrefines: spec:consumers.readiness-planner
spec:consumers.intent-composition
spec:consumers.intent-composition
readynonedependsOn: spec:consumers.upgrade-kit
spec:consumers.intent-composition.proposal
spec:consumers.intent-composition.proposal
readypresentdependsOn: spec:consumers.upgrade-kit.rule-key-proposal
spec:consumers.projections-model
spec:consumers.projections-model
readypresentrefines: spec:consumers.command-line
spec:consumers.review-perspectives
spec:consumers.review-perspectives
readypresentdependsOn: spec:consumers.upgrade-kit.capability-adoption
spec:consumers.roadmap
spec:consumers.roadmap
readypresentdependsOn: spec:consumers.upgrade-kit
spec:consumers.spec-studio.publisher
spec:consumers.spec-studio.publisher
readypresentdependsOn: spec:consumers.command-line
spec:consumers.wholesale-view-rewrite
spec:consumers.wholesale-view-rewrite
readypresentdependsOn: spec:consumers.command-line
spec:decisions.adopted-registrars-committed
spec:decisions.adopted-registrars-committed
readynonedecidedBy: spec:extraction.runnable-modules
spec:decisions.agent-front-door
spec:decisions.agent-front-door
readynonedecidedBy: spec:consumers.agent-surface.evaluation-sink, spec:consumers.context-bundle
spec:decisions.anchor-comment-form
spec:decisions.anchor-comment-form
readynonedecidedBy: spec:extraction.runnable-modules
spec:decisions.architectural-annotation
spec:decisions.architectural-annotation
readynonedecidedBy: spec:validation.corpus-rules
spec:decisions.binding-not-liveness
spec:decisions.binding-not-liveness
readynonedecidedBy: spec:extraction.runnable-modules
spec:decisions.content-only-sections
spec:decisions.content-only-sections
readynonedependsOn: spec:decisions.checked-mentions
spec:decisions.one-validation-path
spec:decisions.one-validation-path
readynonedependsOn: spec:consumers.validate-watch
spec:decisions.point-per-example
spec:decisions.point-per-example
readynonedecidedBy: spec:extraction.executable-contracts, spec:extraction.runnable-modules
spec:decisions.shipped-projections-frozen
spec:decisions.shipped-projections-frozen
readynonedecidedBy: spec:consumers.command-line, spec:carrier.step-keys, spec:model.term-addresses
spec:extraction.build-pipeline
spec:extraction.build-pipeline
readypresentrefines: spec:extraction.executable-contracts
dependsOn: spec:extraction.runnable-modules
spec:extraction.claim-taxonomy
spec:extraction.claim-taxonomy
readypresentdependsOn: spec:extraction.entry-citations
spec:extraction.contract-declarations
spec:extraction.contract-declarations
readypresentdependsOn: spec:consumers.upgrade-kit.capability-adoption
spec:extraction.derive-graph
spec:extraction.derive-graph
readypresentrefines: spec:extraction.entry-citations
spec:extraction.determinism
spec:extraction.determinism
readypresentconstrainedBy: spec:extraction.entry-citations
spec:extraction.entry-locations
spec:extraction.entry-locations
readypresentdependsOn: spec:model.term-addresses, spec:extraction.entry-citations, spec:consumers.upgrade-kit.rule-key-proposal
spec:extraction.example-runner
spec:extraction.example-runner
readypresentrefines: spec:extraction.runnable-modules
spec:extraction.excludes
spec:extraction.excludes
readypresentdependsOn: spec:consumers.validate-watch
spec:extraction.executable-examples
spec:extraction.executable-examples
readypresentrefines: spec:extraction.executable-contracts
spec:model.anchors
spec:model.anchors
readypresentdependsOn: spec:extraction.entry-citations
spec:model.open-question-fields
spec:model.open-question-fields
readypresentdependsOn: spec:consumers.readiness-planner, spec:consumers.upgrade-kit.capability-adoption
spec:model.open-question-keys
spec:model.open-question-keys
readypresentdependsOn: spec:consumers.upgrade-kit.capability-adoption
spec:model.planned-architecture
spec:model.planned-architecture
readypresentdependsOn: spec:consumers.upgrade-kit.capability-adoption
spec:model.relation-reasons
spec:model.relation-reasons
readypresentdependsOn: spec:consumers.upgrade-kit.capability-adoption
spec:model.rule-keys
spec:model.rule-keys
readypresentdependsOn: spec:consumers.agent-surface.address-and-cycle-recipes, spec:model.term-addresses, spec:consumers.upgrade-kit.capability-adoption, spec:consumers.upgrade-kit.rule-key-proposal
spec:model.spec-sections
spec:model.spec-sections
readypresentrefines: spec:model.term-addresses
spec:model.stable-ids
spec:model.stable-ids
readypresentrefines: spec:decisions.checked-mentions
dependsOn: spec:model.term-addresses
spec:validation.diagnostic-rendering
spec:validation.diagnostic-rendering
readypresentdependsOn: spec:validation.corpus-rules
spec:validation.next-rung-floor
spec:validation.next-rung-floor
readypresentdependsOn: spec:consumers.readiness-planner
spec:validation.prose-mentions
spec:validation.prose-mentions
readypresentdependsOn: spec:extraction.entry-citations
spec:validation.two-check-families
spec:validation.two-check-families
readypresentconstrainedBy: spec:validation.corpus-rules
spec:validation.typed-dependency-floor
spec:validation.typed-dependency-floor
readypresentdependsOn: spec:consumers.readiness-planner
Rested on by (36)
SpecStated rungImplementation bindingJoined members
spec:carrier.gherkin-authoring
spec:carrier.gherkin-authoring
readypresentdependsOn: spec:carrier.step-keys
spec:carrier.markdown-body-grammar
spec:carrier.markdown-body-grammar
readypresentdependsOn: spec:carrier.step-keys, spec:model.term-addresses
spec:consumers.agent-surface.answer-shapes
spec:consumers.agent-surface.answer-shapes
readypresentdependsOn: spec:consumers.agent-surface.evaluation-sink
spec:consumers.agent-surface.example-space-coverage
spec:consumers.agent-surface.example-space-coverage
readypresentdependsOn: spec:extraction.executable-contracts
spec:consumers.agent-surface.register-recipes
spec:consumers.agent-surface.register-recipes
readypresentdependsOn: spec:model.term-addresses
spec:consumers.delivery-session-on-ramp
spec:consumers.delivery-session-on-ramp
readypresentdependsOn: spec:consumers.context-bundle
spec:consumers.design-slice
spec:consumers.design-slice
readypresentdependsOn: spec:consumers.context-bundle, spec:consumers.readiness-planner
spec:consumers.engine-provenance
spec:consumers.engine-provenance
readypresentrefines: spec:consumers.command-line
spec:consumers.intent-composition.proposal
spec:consumers.intent-composition.proposal
readypresentdependsOn: spec:consumers.agent-surface.address-and-cycle-recipes
spec:consumers.obsidian-vault.iteration
spec:consumers.obsidian-vault.iteration
readypresentdependsOn: spec:consumers.validate-watch
spec:consumers.obsidian-vault.notes
spec:consumers.obsidian-vault.notes
readypresentdependsOn: spec:model.term-addresses
spec:consumers.roadmap
spec:consumers.roadmap
readypresentdependsOn: spec:consumers.readiness-planner
spec:consumers.spec-studio.cited-line-text
spec:consumers.spec-studio.cited-line-text
scopednonedependsOn: spec:extraction.entry-citations
spec:consumers.spec-studio.data.recipe-answers
spec:consumers.spec-studio.data.recipe-answers
readypresentdependsOn: spec:consumers.agent-surface.evaluation-sink
spec:consumers.spec-studio.glossary-page
spec:consumers.spec-studio.glossary-page
readypresentdependsOn: spec:model.term-addresses
spec:consumers.spec-studio.owner-queue
spec:consumers.spec-studio.owner-queue
readypresentdependsOn: spec:consumers.readiness-planner
spec:consumers.spec-studio.publisher.watch
spec:consumers.spec-studio.publisher.watch
readypresentdependsOn: spec:consumers.validate-watch
spec:consumers.spec-studio.register-input
spec:consumers.spec-studio.register-input
scopednonedependsOn: spec:validation.external-registers
spec:consumers.spec-studio.registers
spec:consumers.spec-studio.registers
readypresentdependsOn: spec:extraction.entry-citations
spec:consumers.spec-studio.spec-page
spec:consumers.spec-studio.spec-page
readypresentdependsOn: spec:model.term-addresses, spec:extraction.entry-citations
spec:consumers.spec-studio.verification-panels
spec:consumers.spec-studio.verification-panels
readypresentdependsOn: spec:extraction.executable-contracts
spec:decisions.adopted-registrars-committed
spec:decisions.adopted-registrars-committed
readynonerefines: spec:extraction.runnable-modules
spec:extraction.contract-declarations
spec:extraction.contract-declarations
readypresentrefines: spec:extraction.executable-contracts
spec:extraction.example-runner
spec:extraction.example-runner
readypresentdependsOn: spec:extraction.executable-contracts
spec:extraction.executable-contracts.case-colliding-path
spec:extraction.executable-contracts.case-colliding-path
readynonerefines: spec:extraction.executable-contracts
spec:extraction.executable-contracts.concreteness-refusal
spec:extraction.executable-contracts.concreteness-refusal
readynonerefines: spec:extraction.executable-contracts
spec:extraction.executable-contracts.multi-entry-example
spec:extraction.executable-contracts.multi-entry-example
readynonerefines: spec:extraction.executable-contracts
spec:model.open-question-keys
spec:model.open-question-keys
readypresentdecidedBy: spec:decisions.checked-mentions
spec:model.rule-keys
spec:model.rule-keys
readypresentdecidedBy: spec:decisions.checked-mentions
spec:model.stable-ids
spec:model.stable-ids
readypresentdecidedBy: spec:decisions.checked-mentions
spec:validation.architecture-constraints
spec:validation.architecture-constraints
readypresentrefines: spec:validation.corpus-rules
dependsOn: spec:validation.corpus-rules
spec:validation.corpus-rules.copies-contain-changes
spec:validation.corpus-rules.copies-contain-changes
readynonerefines: spec:validation.corpus-rules
spec:validation.corpus-rules.error-finding-fails
spec:validation.corpus-rules.error-finding-fails
readynonerefines: spec:validation.corpus-rules
spec:validation.corpus-rules.malformed-finding-fails
spec:validation.corpus-rules.malformed-finding-fails
readynonerefines: spec:validation.corpus-rules
spec:validation.corpus-rules.warning-finding-informs
spec:validation.corpus-rules.warning-finding-informs
readynonerefines: spec:validation.corpus-rules
spec:validation.prose-mentions
spec:validation.prose-mentions
readypresentdependsOn: spec:model.term-addresses
decidedBy: spec:decisions.checked-mentions
Verified by (7)
SpecStated rungImplementation bindingJoined members
spec:extraction.executable-contracts.case-colliding-path
spec:extraction.executable-contracts.case-colliding-path
readynoneverifies: spec:extraction.executable-contracts
spec:extraction.executable-contracts.concreteness-refusal
spec:extraction.executable-contracts.concreteness-refusal
readynoneverifies: spec:extraction.executable-contracts
spec:extraction.executable-contracts.multi-entry-example
spec:extraction.executable-contracts.multi-entry-example
readynoneverifies: spec:extraction.executable-contracts
spec:validation.corpus-rules.copies-contain-changes
spec:validation.corpus-rules.copies-contain-changes
readynoneverifies: spec:validation.corpus-rules
spec:validation.corpus-rules.error-finding-fails
spec:validation.corpus-rules.error-finding-fails
readynoneverifies: spec:validation.corpus-rules
spec:validation.corpus-rules.malformed-finding-fails
spec:validation.corpus-rules.malformed-finding-fails
readynoneverifies: spec:validation.corpus-rules
spec:validation.corpus-rules.warning-finding-informs
spec:validation.corpus-rules.warning-finding-informs
readynoneverifies: spec:validation.corpus-rules
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 evaluation sink runs one body and prints its return

spec:consumers.agent-surface.evaluation-sink

The evaluation sink runs one body and prints its return

spec:consumers.agent-surface.evaluation-sinkUse Case / Behavior · storyready floor ready

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

Design: 7 design entries · 3 pinned declarations · 1 decision

Findings: no errors, no warnings

specs/consumers/agent-surface.evaluation-sink.sdp.md

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

Without a way to call a shipped recipe, a body that needs its answer pastes the recipe's file into its own text, and a rules file keeps its own copy of the recipe's code. The recipes binding lets a body call a shipped recipe by its catalog number over the graph it already holds, so the answer is the recipe's own and nothing derives twice. A recipe call is a binding, never a reader verb: the catalog stays the one owner of the bodies, and the reader gains no query vocabulary. The package exports the same evaluator, so a script that holds a graph runs a body, or a shipped recipe through that body, without deriving the graph again.

Intent
problem
How sdp q takes a body, prints its answer and refuses is stated only in the CLI help and the reading skill, so a caller and a script that runs a recipe learn the contract by trial.
outcome
State how the evaluation sink takes a body, renders its return and refuses, so every caller relies on one contract.
Behavior
rule line 19 · specs/consumers/agent-surface.evaluation-sink.sdp.md:19
sdp q takes one positional JavaScript async-function body, which takes precedence over stdin; with no positional body it reads non-terminal stdin, and absent, unreadable or empty input refuses with exit 1 before evaluation.
rule line 20 · specs/consumers/agent-surface.evaluation-sink.sdp.md:20
The sink supplies g, graph, report and params, permits await and prints the returned value using bounded util.inspect by default or JSON.stringify with --json; it does not suppress console output, so machine-consumed bodies must avoid it.
rule line 21 · specs/consumers/agent-surface.evaluation-sink.sdp.md:21
A body that returns undefined prints no answer, reports on stderr that return is the output contract and exits 0; a --json result with no JSON form or one that cannot be serialized refuses with exit 1 and no rendered answer.
rule line 22 · specs/consumers/agent-surface.evaluation-sink.sdp.md:22
An extraction error prevents evaluation, renders the extraction findings and exits 1; validation findings are supplied as report and do not gate evaluation. A compilation, evaluation or rendering failure exits 1 and reports its error on stderr.
rule line 23 · specs/consumers/agent-surface.evaluation-sink.sdp.md:23
A body that fails to parse is reported with the line and column of the error in the body the caller wrote.
rule.fifthBinding line 24 · specs/consumers/agent-surface.evaluation-sink.sdp.md:24
The sink supplies a fifth binding, recipes, beside g, graph, report and params, and every body it, the rules runner or the exported evaluator runs receives it, a recipe called through it included.

spec:consumers.agent-surface.evaluation-sink.recipe-call · enabled

rule.recipeCall line 25 · specs/consumers/agent-surface.evaluation-sink.sdp.md:25
A body calls a shipped recipe as a function of its catalog number and one parameters object; the call runs the recipe's body over the caller's own g, graph and report, with no second derivation and no copy, and resolves to the recipe's answer unchanged, { unknownParams, accepts } and { diagnostics } included.

spec:consumers.agent-surface.evaluation-sink.exported-evaluator · enabled, spec:consumers.agent-surface.evaluation-sink.recipe-call · enabled

rule.callRefusals line 26 · specs/consumers/agent-surface.evaluation-sink.sdp.md:26
A call names a recipe the catalog holds and passes one plain object or nothing; any other number or parameters reject the call with a message naming the recipe, and a recipe that throws rejects the call with its error, so a mistaken call fails loudly instead of answering for a sample.

spec:consumers.agent-surface.evaluation-sink.unknown-recipe · enabled

rule.oneEvaluator line 27 · specs/consumers/agent-surface.evaluation-sink.sdp.md:27
sdp q, the rules runner and the exported evaluator compile and run a body one way: the same compilation, the same parse error with its line and column, worded by each surface in its own pinned text, and the same five bindings.

spec:consumers.agent-surface.evaluation-sink.exported-evaluator · enabled

rule.exportedEvaluator line 28 · specs/consumers/agent-surface.evaluation-sink.sdp.md:28
The package exports the body evaluator, so a script that holds a graph runs a body, or a shipped recipe through recipes, without deriving the graph again; the evaluator writes and prints nothing and claims no sandbox, as the sink claims none.

spec:consumers.agent-surface.evaluation-sink.exported-evaluator · enabled

5 unkeyed rules.

Verifying examples

A script holding a graph runs a shipped recipe through the exported evaluator · spec:consumers.agent-surface.evaluation-sink.exported-evaluator · ready floor ready

Executable Spec

Given a probe corpus in which two Specs depend on each other through dependsOn
Given a body that calls {call: "recipe 26 with the severity warning"}
When the body runs {entrance: "through the exported evaluator over a graph derived once"}
Then the call {outcome: "resolves"}
Then the answer equals the shipped recipe file's own answer over the same graph and parameters: {sameAnswer: true}

Open example

A body calls a shipped recipe and returns its answer unchanged · spec:consumers.agent-surface.evaluation-sink.recipe-call · ready floor ready

Executable Spec

Given a probe corpus in which two Specs depend on each other through dependsOn
Given a body that calls {call: "recipe 26 with no parameters"}
When the body runs {entrance: "through sdp q"}
Then the call {outcome: "resolves"}
Then the answer equals the shipped recipe file's own answer over the same graph and parameters: {sameAnswer: true}

Open example

A call to a recipe the catalog does not hold fails the body · spec:consumers.agent-surface.evaluation-sink.unknown-recipe · ready floor ready

Executable Spec

Given a probe corpus in which two Specs depend on each other through dependsOn
Given a body that calls {call: "a recipe number the catalog does not hold"}
When the body runs {entrance: "through sdp q"}
Then the call {outcome: "rejects"}
Then the rejection reads {rejection: "recipes: the catalog holds no recipe 99"}

Open example

Example space

Given a probe corpus in which two Specs depend on each other through dependsOn
Given a body that calls {call:"recipe 26 with no parameters"|"recipe 26 with the severity warning"|"a recipe number the catalog does not hold"}
When the body runs {entrance:"through sdp q"|"through the exported evaluator over a graph derived once"}
Then the call {outcome:"resolves"|"rejects"}
Then the answer equals the shipped recipe file's own answer over the same graph and parameters: {sameAnswer:boolean}
Then the rejection reads {rejection:string}
Design
parseErrorLine line 31 · specs/consumers/agent-surface.evaluation-sink.sdp.md:31
A body that does not parse prints one stderr line, sdp q: the body does not parse at line L, column C: <message>, with 1-based positions in the caller's body, exits 1 and prints nothing on stdout.
recipesBinding line 32 · specs/consumers/agent-surface.evaluation-sink.sdp.md:32
recipes(number, parameters?), where number is a recipe number the catalog's index lists, an integer, and parameters is one plain object, {} when omitted; it returns a promise of the value the recipe's body returns, the same value and never a copy or a JSON round trip.

no citation recorded

recipeSource line 33 · specs/consumers/agent-surface.evaluation-sink.sdp.md:33
a call runs the body the package ships for that number as dist/recipes/<NN>-<slug>.js, the file the catalog derives, read from the package that runs the engine and never from the corpus or the working directory.
calledBindings line 34 · specs/consumers/agent-surface.evaluation-sink.sdp.md:34
a called recipe receives the caller's g, graph and report, the same objects; its parameters object as params; and recipes itself, so one recipe may call another.
callRejections line 35 · specs/consumers/agent-surface.evaluation-sink.sdp.md:35
recipes: the catalog holds no recipe <number> rejects an integer the catalog does not list; recipes: <value> is not a recipe number rejects a value that is not an integer; recipes: recipe <number> takes one parameters object rejects parameters that are null, an array, a string, a number or a boolean.

no citation recorded

evaluatorExport line 36 · specs/consumers/agent-surface.evaluation-sink.sdp.md:36
evaluateBody(body: string, input: { graph: GraphSchema; report?: ValidationReport; params?: Readonly<Record<string, unknown>> }): Promise<unknown>, exported from the package's main entry, @libar-dev/software-delivery-protocol; it binds g to the reader over graph, report to the given report or, when absent, the validation report of graph, params to the given object or {}, and recipes over the same three, and resolves to the body's return.

no citation recorded

evaluatorRejections line 37 · specs/consumers/agent-surface.evaluation-sink.sdp.md:37
a body that does not parse rejects with an Error whose message is the body does not parse at line L, column C: <message>, the text the sink prints after sdp q: ; a body that throws rejects with what it threw; params that are not a plain object reject before the body runs.
Verification

Verifier bindings

  • spec:consumers.agent-surface.evaluation-sink.exported-evaluator · A script holding a graph runs a shipped recipe through the exported evaluator · declared · example enabled · specs/consumers/agent-surface.evaluation-sink.exported-evaluator.sdp.md
  • spec:consumers.agent-surface.evaluation-sink.recipe-call · A body calls a shipped recipe and returns its answer unchanged · declared · example enabled · specs/consumers/agent-surface.evaluation-sink.recipe-call.sdp.md
  • spec:consumers.agent-surface.evaluation-sink.unknown-recipe · A call to a recipe the catalog does not hold fails the body · declared · example enabled · specs/consumers/agent-surface.evaluation-sink.unknown-recipe.sdp.md
  • test:protocol.evaluation-sink · front-door checks verify how the sink takes a body, prints its return and refuses · anchored · test anchor binding present · test/cli-q.test.ts:81
  • test:protocol.query-answer-shapes · anchored · test anchor binding present · test/cli-q.test.ts:730

Example space

  • call · "recipe 26 with no parameters" | "recipe 26 with the severity warning" | "a recipe number the catalog does not hold" · declared by a body that calls {call}
  • entrance · "through sdp q" | "through the exported evaluator over a graph derived once" · declared by the body runs {entrance}

Bound points

Examplecallentrance
spec:consumers.agent-surface.evaluation-sink.exported-evaluator"recipe 26 with the severity warning""through the exported evaluator over a graph derived once"
spec:consumers.agent-surface.evaluation-sink.recipe-call"recipe 26 with no parameters""through sdp q"
spec:consumers.agent-surface.evaluation-sink.unknown-recipe"a recipe number the catalog does not hold""through sdp q"

Oracle binding: present · oracle:protocol.consumers.agent-surface.evaluation-sink · test/reach-examples.test.ts:92

Coverage

call
Declared valueExamples
"recipe 26 with no parameters"spec:consumers.agent-surface.evaluation-sink.recipe-call
"recipe 26 with the severity warning"spec:consumers.agent-surface.evaluation-sink.exported-evaluator
"a recipe number the catalog does not hold"spec:consumers.agent-surface.evaluation-sink.unknown-recipe

Unbound

  • call: None
  • entrance: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.agent-surface.evaluation-sink
The diagram as text
  • spec:consumers.agent-surface.evaluation-sink: The evaluation sink runs one body and prints its return · declared Spec
  • spec:consumers.agent-surface.evaluation-sink.exported-evaluator: A script holding a graph runs a shipped recipe through the exported evaluator · declared Spec
  • spec:consumers.agent-surface.evaluation-sink.recipe-call: A body calls a shipped recipe and returns its answer unchanged · declared Spec
  • spec:consumers.agent-surface.evaluation-sink.unknown-recipe: A call to a recipe the catalog does not hold fails the body · declared Spec
  • spec:consumers.agent-surface: Agents script a visible typed graph · declared Spec
  • api:protocol.evaluate-body: evaluates bodies and shipped recipes over one in-memory reader, graph and report · anchored code · src/reader/evaluate-body.ts:120
  • impl:protocol.build-pipeline-query: runQuery reads one body, derives the graph once for the reader, raw graph and report, and prints the return or refuses on stderr · anchored code · src/cli/q-command.ts:212
  • oracle:protocol.consumers.agent-surface.evaluation-sink: oracle:protocol.consumers.agent-surface.evaluation-sink · anchored oracle binding · test/reach-examples.test.ts:92
  • test:protocol.consumers.agent-surface.evaluation-sink.exported-evaluator: test:protocol.consumers.agent-surface.evaluation-sink.exported-evaluator · anchored test binding · binding present · test/reach-examples.test.ts:416
  • test:protocol.consumers.agent-surface.evaluation-sink.recipe-call: test:protocol.consumers.agent-surface.evaluation-sink.recipe-call · anchored test binding · binding present · test/reach-examples.test.ts:404
  • test:protocol.consumers.agent-surface.evaluation-sink.unknown-recipe: test:protocol.consumers.agent-surface.evaluation-sink.unknown-recipe · anchored test binding · binding present · test/reach-examples.test.ts:410
  • test:protocol.evaluation-sink: front-door checks verify how the sink takes a body, prints its return and refuses · anchored test binding · binding present · test/cli-q.test.ts:81
  • test:protocol.query-answer-shapes: test:protocol.query-answer-shapes · anchored test binding · binding present · test/cli-q.test.ts:730
  • spec:consumers.agent-surface.evaluation-sink refines spec:consumers.agent-surface · declared
  • spec:consumers.agent-surface.evaluation-sink.exported-evaluator refines spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.exported-evaluator verifies spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.recipe-call refines spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.recipe-call verifies spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.unknown-recipe refines spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.unknown-recipe verifies spec:consumers.agent-surface.evaluation-sink · declared
  • api:protocol.evaluate-body satisfies spec:consumers.agent-surface.evaluation-sink · anchored
  • impl:protocol.build-pipeline-query satisfies spec:consumers.agent-surface.evaluation-sink · anchored
  • oracle:protocol.consumers.agent-surface.evaluation-sink models spec:consumers.agent-surface.evaluation-sink · anchored
  • test:protocol.consumers.agent-surface.evaluation-sink.exported-evaluator verifies spec:consumers.agent-surface.evaluation-sink.exported-evaluator · anchored
  • test:protocol.consumers.agent-surface.evaluation-sink.recipe-call verifies spec:consumers.agent-surface.evaluation-sink.recipe-call · anchored
  • test:protocol.consumers.agent-surface.evaluation-sink.unknown-recipe verifies spec:consumers.agent-surface.evaluation-sink.unknown-recipe · anchored
  • test:protocol.evaluation-sink verifies spec:consumers.agent-surface.evaluation-sink · anchored
  • test:protocol.query-answer-shapes verifies spec:consumers.agent-surface.evaluation-sink · 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.agent-front-door

    The front door is two entrances over one seam: the package exports the reader constructor, and the CLI carries a single evaluation sink that derives the graph in process, injects that same reader, and prints the body's pre-shaped return.

Runtime
  • api:protocol.evaluate-body · evaluates bodies and shipped recipes over one in-memory reader, graph and report · src/reader/evaluate-body.ts:120

    Component: component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol

    Uses

    None.

  • 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.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.build-pipeline-query · runQuery reads one body, derives the graph once for the reader, raw graph and report, and prints the return or refuses on stderr · src/cli/q-command.ts:212

    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.agent-surface.evaluation-sink
Relations of spec:consumers.agent-surface.evaluation-sinkdependsOn · declaredrefines · declareddecidedBy · declaredrefines · declaredverifies · declaredrefines · declaredverifies · declaredrefines · declaredverifies · declareddependsOn · declareddependsOn · declaredOutgoing refinesspec:consumers.agent-surfaceAgents script a visibletyped graph…consumers.agent-surfaceOutgoing decidedByspec:decisions.agent-front-doorThe agent front door is oneevaluation sink over theexported reader…decisions.agent-front-doorSubjectspec:consumers.agent-surface.evaluation-sinkThe evaluation sink runsone body and prints itsreturn…consumers.agent-surface.evaluation-sinkIncoming refinesspec:consumers.agent-surface.evaluation-sink.exported-evaluatorA script holding a graphruns a shipped recipethrough the exportedevaluator…consumers.agent-surface.evaluation-sink.exported-evaluatorspec:consumers.agent-surface.evaluation-sink.recipe-callA body calls a shippedrecipe and returns itsanswer unchanged…consumers.agent-surface.evaluation-sink.recipe-callspec:consumers.agent-surface.evaluation-sink.unknown-recipeA call to a recipe thecatalog does not hold failsthe body…consumers.agent-surface.evaluation-sink.unknown-recipeIncoming dependsOnspec:consumers.agent-surface.answer-shapesRecipe answers fit anagent's context and explaintheir misses…consumers.agent-surface.answer-shapesspec:consumers.spec-studio.data.recipe-answersA page takes each recipeanswer from the recipe'sshipped body…consumers.spec-studio.data.recipe-answersspec:validation.corpus-rulesCorpus-authored rules runon the one validation path…validation.corpus-rules
The diagram as text
  • spec:consumers.agent-surface: Agents script a visible typed graph
  • spec:consumers.agent-surface.answer-shapes: Recipe answers fit an agent's context and explain their misses
  • spec:consumers.agent-surface.evaluation-sink: The evaluation sink runs one body and prints its return
  • spec:consumers.agent-surface.evaluation-sink.exported-evaluator: A script holding a graph runs a shipped recipe through the exported evaluator
  • spec:consumers.agent-surface.evaluation-sink.recipe-call: A body calls a shipped recipe and returns its answer unchanged
  • spec:consumers.agent-surface.evaluation-sink.unknown-recipe: A call to a recipe the catalog does not hold fails the body
  • spec:consumers.spec-studio.data.recipe-answers: A page takes each recipe answer from the recipe's shipped body
  • spec:decisions.agent-front-door: The agent front door is one evaluation sink over the exported reader
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path
  • spec:consumers.agent-surface.evaluation-sink decidedBy spec:decisions.agent-front-door · declared
  • spec:consumers.agent-surface.evaluation-sink refines spec:consumers.agent-surface · declared
  • spec:consumers.agent-surface.answer-shapes dependsOn spec:consumers.agent-surface.evaluation-sink · declared — a caller runs a shipped body, and wraps it in its own body, through the evaluation sink
  • 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:validation.corpus-rules dependsOn spec:consumers.agent-surface.evaluation-sink · declared — a rules file holds the body the sink evaluates, with the sink's bindings and trust
  • spec:consumers.agent-surface.evaluation-sink.exported-evaluator refines spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.recipe-call refines spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.unknown-recipe refines spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.exported-evaluator verifies spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.recipe-call verifies spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.unknown-recipe verifies spec:consumers.agent-surface.evaluation-sink · 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 · stated ready, floor ready
  • decidedBy · spec:decisions.agent-front-door · stated ready, floor ready

Rested on by

Distance 1

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

  • spec:validation.architecture-constraints

    Implementing units

    • impl:protocol.architecture-walk-recipe · test/architecture-recipes.test.ts:10

    Referencing units

    None.

    Enabled verifiers: spec:validation.architecture-constraints.forbidden-layer-pair, spec:validation.architecture-constraints.isolated-context-as-rule, spec:validation.architecture-constraints.unstated-layer-unclassified

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

  • spec:validation.corpus-rules.copies-contain-changes

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.copies-contain-changes

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.error-finding-fails

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.error-finding-fails

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.malformed-finding-fails

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.malformed-finding-fails

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.params-edit-starts-a-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.params-edit-starts-a-cycle

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

  • spec:validation.corpus-rules.rules-edit-starts-a-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.rules-edit-starts-a-cycle

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

  • spec:validation.corpus-rules.unreadable-params-fail-one-file

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.unreadable-params-fail-one-file

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

  • spec:validation.corpus-rules.warning-finding-informs

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.warning-finding-informs

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.external-registers

    Implementing units

    • impl:protocol.external-registers-recipe · test/external-registers.test.ts:9

    Referencing units

    None.

    Enabled verifiers: spec:validation.external-registers.uncited-on-request, spec:validation.external-registers.unknown-and-retired

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

Distance 3

  • spec:consumers.spec-studio.register-input

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:validation.architecture-constraints.forbidden-layer-pair

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.forbidden-layer-pair

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.architecture-constraints.isolated-context-as-rule

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.isolated-context-as-rule

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.architecture-constraints.unstated-layer-unclassified

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.unstated-layer-unclassified

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.external-registers.uncited-on-request

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.external-registers.uncited-on-request

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

  • spec:validation.external-registers.unknown-and-retired

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.external-registers.unknown-and-retired

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

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingspec:decisions.agent-front-door
spec:decisions.agent-front-door · resolves
declaredNoneNone
refines · outgoingspec:consumers.agent-surface
spec:consumers.agent-surface · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.agent-surface.answer-shapes
spec:consumers.agent-surface.answer-shapes · resolves
declareda caller runs a shipped body, and wraps it in its own body, through the evaluation sinkNone
dependsOn · incomingspec:consumers.spec-studio.data.recipe-answers
spec:consumers.spec-studio.data.recipe-answers · resolves
declaredthe build composes recipe answers through the same body evaluation sdp q runsNone
dependsOn · incomingCorpus-authored rules run on the one validation path
spec:validation.corpus-rules · resolves
declareda rules file holds the body the sink evaluates, with the sink's bindings and trustNone
refines · incomingA script holding a graph runs a shipped recipe through the exported evaluator
spec:consumers.agent-surface.evaluation-sink.exported-evaluator · resolves
declaredNoneNone
refines · incomingA body calls a shipped recipe and returns its answer unchanged
spec:consumers.agent-surface.evaluation-sink.recipe-call · resolves
declaredNoneNone
refines · incomingA call to a recipe the catalog does not hold fails the body
spec:consumers.agent-surface.evaluation-sink.unknown-recipe · resolves
declaredNoneNone
verifies · incomingA script holding a graph runs a shipped recipe through the exported evaluator
spec:consumers.agent-surface.evaluation-sink.exported-evaluator · resolves
declaredNoneexportedEvaluator, oneEvaluator, recipeCall
verifies · incomingA body calls a shipped recipe and returns its answer unchanged
spec:consumers.agent-surface.evaluation-sink.recipe-call · resolves
declaredNonefifthBinding, recipeCall
verifies · incomingA call to a recipe the catalog does not hold fails the body
spec:consumers.agent-surface.evaluation-sink.unknown-recipe · resolves
declaredNonecallRefusals

Bindings

Implementation binding: present

  • api:protocol.evaluate-body · evaluates bodies and shipped recipes over one in-memory reader, graph and report · src/reader/evaluate-body.ts:120 · role service · component component:protocol.reader · layer application · context protocol
  • impl:protocol.build-pipeline-query · runQuery reads one body, derives the graph once for the reader, raw graph and report, and prints the return or refuses on stderr · src/cli/q-command.ts:212 · role service · component component:protocol.cli · layer edge · context protocol

Design reference: none

Verifier binding: present

  • spec:consumers.agent-surface.evaluation-sink.exported-evaluator · A script holding a graph runs a shipped recipe through the exported evaluator · declared · specs/consumers/agent-surface.evaluation-sink.exported-evaluator.sdp.md · example enabled
  • spec:consumers.agent-surface.evaluation-sink.recipe-call · A body calls a shipped recipe and returns its answer unchanged · declared · specs/consumers/agent-surface.evaluation-sink.recipe-call.sdp.md · example enabled
  • spec:consumers.agent-surface.evaluation-sink.unknown-recipe · A call to a recipe the catalog does not hold fails the body · declared · specs/consumers/agent-surface.evaluation-sink.unknown-recipe.sdp.md · example enabled
  • test:protocol.evaluation-sink · front-door checks verify how the sink takes a body, prints its return and refuses · anchored · test/cli-q.test.ts:81 · test anchor
  • test:protocol.query-answer-shapes · anchored · test/cli-q.test.ts:730 · test anchor

Expected-outcome oracle: present

  • oracle:protocol.consumers.agent-surface.evaluation-sink · test/reach-examples.test.ts:92

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

2. A script holding a graph runs a shipped recipe through the exported evaluator

spec:consumers.agent-surface.evaluation-sink.exported-evaluator

A script holding a graph runs a shipped recipe through the exported evaluator

spec:consumers.agent-surface.evaluation-sink.exported-evaluatorExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/agent-surface.evaluation-sink.exported-evaluator.sdp.md

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

Intent
outcome
Execute a recipe call with a parameter through evaluateBody over a graph the script derived once, and compare its answer with the recipe's shipped file evaluated over the same graph.
assumptions
  • The world writes the probe corpus of the recipe-call example and derives its graph once with the package's extract. It awaits evaluateBody with the body return recipes(26, { severity: "warning" }); and that graph, then awaits evaluateBody with the text of dist/recipes/26-dependency-cycles.js, the same graph and the parameters { severity: "warning" }, and compares the two answers. Neither call derives the graph.
Behavior

Examples

Given a probe corpus in which two Specs depend on each other through dependsOn
Given a body that calls {call: "recipe 26 with the severity warning"}
When the body runs {entrance: "through the exported evaluator over a graph derived once"}
Then the call {outcome: "resolves"}
Then the answer equals the shipped recipe file's own answer over the same graph and parameters: {sameAnswer: true}
Verification

Verifier bindings

  • test:protocol.consumers.agent-surface.evaluation-sink.exported-evaluator · anchored · test anchor binding present · test/reach-examples.test.ts:416
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.agent-surface.evaluation-sink.exported-evaluator
The diagram as text
  • spec:consumers.agent-surface.evaluation-sink.exported-evaluator: A script holding a graph runs a shipped recipe through the exported evaluator · declared Spec
  • spec:consumers.agent-surface.evaluation-sink: The evaluation sink runs one body and prints its return · declared Spec
  • test:protocol.consumers.agent-surface.evaluation-sink.exported-evaluator: test:protocol.consumers.agent-surface.evaluation-sink.exported-evaluator · anchored test binding · binding present · test/reach-examples.test.ts:416
  • spec:consumers.agent-surface.evaluation-sink.exported-evaluator refines spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.exported-evaluator verifies spec:consumers.agent-surface.evaluation-sink · declared
  • test:protocol.consumers.agent-surface.evaluation-sink.exported-evaluator verifies spec:consumers.agent-surface.evaluation-sink.exported-evaluator · 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.evaluation-sink.exported-evaluator
  • E2: verifies · declared
The diagram as text
  • spec:consumers.agent-surface.evaluation-sink: The evaluation sink runs one body and prints its return
  • spec:consumers.agent-surface.evaluation-sink.exported-evaluator: A script holding a graph runs a shipped recipe through the exported evaluator
  • spec:consumers.agent-surface.evaluation-sink.exported-evaluator refines spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.exported-evaluator verifies spec:consumers.agent-surface.evaluation-sink · 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 evaluation sink runs one body and prints its return
spec:consumers.agent-surface.evaluation-sink · resolves
declaredNoneNone
verifies · outgoingThe evaluation sink runs one body and prints its return
spec:consumers.agent-surface.evaluation-sink · resolves
declaredNoneexportedEvaluator, oneEvaluator, recipeCall

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.consumers.agent-surface.evaluation-sink.exported-evaluator · anchored · test/reach-examples.test.ts:416 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

3. A body calls a shipped recipe and returns its answer unchanged

spec:consumers.agent-surface.evaluation-sink.recipe-call

A body calls a shipped recipe and returns its answer unchanged

spec:consumers.agent-surface.evaluation-sink.recipe-callExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/agent-surface.evaluation-sink.recipe-call.sdp.md

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

Intent
outcome
Execute a recipe call through sdp q and compare its answer with the answer of the recipe's shipped file over the same graph.
assumptions
  • The world writes a probe corpus of two story-altitude behavior Specs, each stating idea with an Intent outcome and each declaring dependsOn on the other. It runs sdp q --json on the probe root with the body return recipes(26);, then runs sdp q --json on the same root with the text of dist/recipes/26-dependency-cycles.js as the body, and compares the two printed answers.
Behavior

Examples

Given a probe corpus in which two Specs depend on each other through dependsOn
Given a body that calls {call: "recipe 26 with no parameters"}
When the body runs {entrance: "through sdp q"}
Then the call {outcome: "resolves"}
Then the answer equals the shipped recipe file's own answer over the same graph and parameters: {sameAnswer: true}
Verification

Verifier bindings

  • test:protocol.consumers.agent-surface.evaluation-sink.recipe-call · anchored · test anchor binding present · test/reach-examples.test.ts:404
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.agent-surface.evaluation-sink.recipe-call
The diagram as text
  • spec:consumers.agent-surface.evaluation-sink.recipe-call: A body calls a shipped recipe and returns its answer unchanged · declared Spec
  • spec:consumers.agent-surface.evaluation-sink: The evaluation sink runs one body and prints its return · declared Spec
  • test:protocol.consumers.agent-surface.evaluation-sink.recipe-call: test:protocol.consumers.agent-surface.evaluation-sink.recipe-call · anchored test binding · binding present · test/reach-examples.test.ts:404
  • spec:consumers.agent-surface.evaluation-sink.recipe-call refines spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.recipe-call verifies spec:consumers.agent-surface.evaluation-sink · declared
  • test:protocol.consumers.agent-surface.evaluation-sink.recipe-call verifies spec:consumers.agent-surface.evaluation-sink.recipe-call · 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.evaluation-sink.recipe-call
  • E2: verifies · declared
The diagram as text
  • spec:consumers.agent-surface.evaluation-sink: The evaluation sink runs one body and prints its return
  • spec:consumers.agent-surface.evaluation-sink.recipe-call: A body calls a shipped recipe and returns its answer unchanged
  • spec:consumers.agent-surface.evaluation-sink.recipe-call refines spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.recipe-call verifies spec:consumers.agent-surface.evaluation-sink · 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 evaluation sink runs one body and prints its return
spec:consumers.agent-surface.evaluation-sink · resolves
declaredNoneNone
verifies · outgoingThe evaluation sink runs one body and prints its return
spec:consumers.agent-surface.evaluation-sink · resolves
declaredNonefifthBinding, recipeCall

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.consumers.agent-surface.evaluation-sink.recipe-call · anchored · test/reach-examples.test.ts:404 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

4. A call to a recipe the catalog does not hold fails the body

spec:consumers.agent-surface.evaluation-sink.unknown-recipe

A call to a recipe the catalog does not hold fails the body

spec:consumers.agent-surface.evaluation-sink.unknown-recipeExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/agent-surface.evaluation-sink.unknown-recipe.sdp.md

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

Intent
outcome
Execute a call to a recipe number the catalog does not list through sdp q and read the rejection.
assumptions
  • The world writes the probe corpus of the recipe-call example and runs sdp q on its root with the body return recipes(99);. It reads the exit code and the one stderr line, and takes the rejection as that line's text after sdp q: .
Behavior

Examples

Given a probe corpus in which two Specs depend on each other through dependsOn
Given a body that calls {call: "a recipe number the catalog does not hold"}
When the body runs {entrance: "through sdp q"}
Then the call {outcome: "rejects"}
Then the rejection reads {rejection: "recipes: the catalog holds no recipe 99"}
Verification

Verifier bindings

  • test:protocol.consumers.agent-surface.evaluation-sink.unknown-recipe · anchored · test anchor binding present · test/reach-examples.test.ts:410
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.agent-surface.evaluation-sink.unknown-recipe
The diagram as text
  • spec:consumers.agent-surface.evaluation-sink.unknown-recipe: A call to a recipe the catalog does not hold fails the body · declared Spec
  • spec:consumers.agent-surface.evaluation-sink: The evaluation sink runs one body and prints its return · declared Spec
  • test:protocol.consumers.agent-surface.evaluation-sink.unknown-recipe: test:protocol.consumers.agent-surface.evaluation-sink.unknown-recipe · anchored test binding · binding present · test/reach-examples.test.ts:410
  • spec:consumers.agent-surface.evaluation-sink.unknown-recipe refines spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.unknown-recipe verifies spec:consumers.agent-surface.evaluation-sink · declared
  • test:protocol.consumers.agent-surface.evaluation-sink.unknown-recipe verifies spec:consumers.agent-surface.evaluation-sink.unknown-recipe · 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.evaluation-sink.unknown-recipe
  • E2: verifies · declared
The diagram as text
  • spec:consumers.agent-surface.evaluation-sink: The evaluation sink runs one body and prints its return
  • spec:consumers.agent-surface.evaluation-sink.unknown-recipe: A call to a recipe the catalog does not hold fails the body
  • spec:consumers.agent-surface.evaluation-sink.unknown-recipe refines spec:consumers.agent-surface.evaluation-sink · declared
  • spec:consumers.agent-surface.evaluation-sink.unknown-recipe verifies spec:consumers.agent-surface.evaluation-sink · 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 evaluation sink runs one body and prints its return
spec:consumers.agent-surface.evaluation-sink · resolves
declaredNoneNone
verifies · outgoingThe evaluation sink runs one body and prints its return
spec:consumers.agent-surface.evaluation-sink · resolves
declaredNonecallRefusals

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.consumers.agent-surface.evaluation-sink.unknown-recipe · anchored · test/reach-examples.test.ts:410 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

5. Corpus-authored rules run on the one validation path

spec:validation.corpus-rules

Corpus-authored rules run on the one validation path

spec:validation.corpus-rulesUse Case / Behavior · featureready floor ready

Packs: pack:adopter-speed-v1, pack:corpus-checks-v1, pack:design-management-v1, pack:self-hosting-v1

Design: 11 design entries · 7 pinned declarations · 1 decision

Findings: no errors, no warnings

specs/validation/corpus-rules.sdp.md

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

The original design let a team add its own rules beside the built-in validators, each with an id, a severity and the whole graph query API, run in the same pass and reported in the same output (docs/lineage/v0-design/06-extraction-and-validation.md §6.5). The Protocol has two check families, conformance and honesty, and every validator belongs to one of them. The architectural annotation decision sends a corpus's own rules to the corpus's own gate.

The first adopter's gate runs sdp validate and parses its summary line, then checks its own context isolation, entry addresses, dependency cycles, question keys, prose mentions, cited laws and Pack pages. It also parses carrier frontmatter to read kind, readiness and relations, a second read model that a graph-based corpus-rule runner would remove.

A rules file holds the body sdp q evaluates, so a rule tried through sdp q runs unchanged under sdp validate, and a catalog recipe whose answer carries findings, such as the architecture walk, is a rules file as shipped. A rules file that needs a shipped recipe's answer calls it through recipes and keeps no copy of its code. The runner reads only the answer's findings, so the recipe keeps the rest of its answer for a reader. Corpus findings print after the Protocol's and are tallied on a line of their own, so a gate that reads the Protocol's summary line reads it unchanged; any error, the Protocol's or the corpus's, exits 1, and the two lines say which. Each rules file receives its own copy of what it reads, so a careless rule cannot change another rule's input and the order of the files changes only the order of the output. Its parameters are its own too: a catalog recipe answers a parameter name it does not take with that name and no findings, so parameters shared by every file would fail the walk on the names another file reads.

Intent
problem
A corpus with rules of its own checks them off the one validation path, reading the carriers a second way and reporting in a form no Protocol surface reads.
outcome
Let a corpus author its own graph rules and have their findings join the one validation report, so no corpus re-parses its carriers to check itself.
Behavior
rule line 38 · specs/validation/corpus-rules.sdp.md:38
A corpus rule is a graph body the corpus authors, given g, graph, report, params and recipes as a recipe body is, and returning findings that each carry a rule id, a subject, a message and a severity.
rule.readsGraphOnly line 39 · specs/validation/corpus-rules.sdp.md:39
A corpus rule reads the one derived graph, the Protocol's report and the params the operator supplies for its file, directly or through the shipped recipes it calls, and no carrier, source file or network; that is the rule author's obligation, because the runner evaluates the body with the trust sdp q asks and claims no sandbox.

no example exercises it

Cited at

  • test/skills.test.ts:1475
rule.operatorNamed line 40 · specs/validation/corpus-rules.sdp.md:40
Validation runs corpus rules only from a file the operator names with sdp validate --rules PATH, which may repeat, and never from a file it finds in the corpus or in a configuration; it asks the trust sdp q already asks, to run code the operator chose.

no example exercises it

rule.namedOrder line 41 · specs/validation/corpus-rules.sdp.md:41
Rules files run one at a time in the order named, each to completion, after the Protocol's validators; every file receives the same Protocol report and none sees another file's findings, so the order changes only the order of the output.

spec:validation.corpus-rules.copies-contain-changes · enabled

rule.copiesPerFile line 42 · specs/validation/corpus-rules.sdp.md:42
Each rules file receives its own copy of the graph and the report, made after the graph is written, and its own params, so a body that changes what it receives changes no node, edge, delivery fact or Protocol finding, and nothing another rules file receives.

spec:validation.corpus-rules.copies-contain-changes · enabled

rule line 43 · specs/validation/corpus-rules.sdp.md:43
Each rules file receives as params only the parameters the operator names after its --rules and before the next --rules, or {} when none follow it, so no file receives a parameter meant for another.
rule line 44 · specs/validation/corpus-rules.sdp.md:44
A rule id names one check within its rules file; two files may use the same id, and their findings stay apart by the file that reported them.
rule line 45 · specs/validation/corpus-rules.sdp.md:45
Each corpus finding names its rule and its rules file as its source. The Protocol states none of these rules: a shipped recipe that a corpus names as a rules file checks the rule data the corpus passes it.
rule line 46 · specs/validation/corpus-rules.sdp.md:46
Corpus findings stand outside the conformance and honesty families, in a section of the output labelled as the corpus's own and tallied on a summary line of their own, so the two families keep their meaning, the guardrail that checks never judge content quality or workflow keeps binding the Protocol's own validators, and no corpus finding adds to, suppresses or changes a Protocol finding or the exit reason it sets.
rule.exitCode line 47 · specs/validation/corpus-rules.sdp.md:47
A corpus finding carries severity error or warning. When the operator names --rules, an error corpus finding makes sdp validate exit nonzero and a warning stays informative; without --rules no corpus rule runs and only the Protocol's validators set the exit code.

spec:validation.corpus-rules.error-finding-fails · enabled, spec:validation.corpus-rules.warning-finding-informs · enabled

rule.neverMovesFloor line 48 · specs/validation/corpus-rules.sdp.md:48
A corpus finding moves no readiness floor and reaches no other surface: not the report sdp q hands a body, not the reader, not the written graph, and not the Design Review or another projection.

no example exercises it

rule.brokenRuleFails line 49 · specs/validation/corpus-rules.sdp.md:49
A rules file that cannot be read or does not parse, a body that throws, or an answer that is not an object with a findings array of well-formed findings is a rule execution failure; sdp validate reports it in the corpus section and exits nonzero, so a broken rule never passes as a clean run. A failed file reports none of its findings, and the other files still run.

spec:validation.corpus-rules.malformed-finding-fails · enabled

rule.watchReruns line 50 · specs/validation/corpus-rules.sdp.md:50
sdp validate --watch with --rules reads and runs every named rules file afresh in each cycle, after the Protocol's validators, and a create, change, delete or rename of a named rules file starts a cycle as a carrier edit does, wherever the file lives, under a directory discovery skips such as node_modules included.

spec:validation.corpus-rules.rules-edit-starts-a-cycle · enabled

rule.watchedParams line 51 · specs/validation/corpus-rules.sdp.md:51
Under --watch, each cycle after the first reads again every file a --params @PATH or KEY=@PATH after a --rules names, and an edit to such a file starts a cycle, wherever the file lives; a file that cannot be read or parsed then fails only the rules file it belongs to, for that cycle, while the first cycle's read refuses the command as paramsFlag states.

spec:validation.corpus-rules.params-edit-starts-a-cycle · enabled, spec:validation.corpus-rules.unreadable-params-fail-one-file · enabled

rule.recipesAsRules line 52 · specs/validation/corpus-rules.sdp.md:52
Address resolution (recipe 25) and dependency cycles (recipe 26) answer with findings beside the rest of their answers, as the architecture walk (recipe 42), external registers (recipe 50) and entry citations (recipe 51) do, so a corpus names any of those shipped files as a rules file, or calls it through recipes from a rules file of its own.

spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · enabled, spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · enabled

rule line 53 · specs/validation/corpus-rules.sdp.md:53
When the graph does not derive, no rules file runs, and the corpus summary line says so.

6 unkeyed rules.

Verifying examples

The shipped dependency-cycles file fails a rules run on a cycle · spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · ready floor ready

Executable Spec

Given a probe corpus in which {corpus: "two Specs depend on each other through dependsOn"}
Given the caller passes the addresses {addresses: "none"}
When the shipped {recipe: "dependency cycles"} file runs {invocation: "as a rules file named by sdp validate --rules"}
Then the command exits {exitCode: 1}
Then the answer carries {findings: 1} findings with the rule ids {ruleIds: "dependency-cycle"}

Open example

The shipped address-resolution file fails a rules run on an address that names no entry · spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · ready floor ready

Executable Spec

Given a probe corpus in which {corpus: "one Spec depends on another"}
Given the caller passes the addresses {addresses: "spec:probe.one#design.absent"}
When the shipped {recipe: "address resolution"} file runs {invocation: "as a rules file named by sdp validate --rules"}
Then the command exits {exitCode: 1}
Then the answer carries {findings: 1} findings with the rule ids {ruleIds: "unresolved-address"}

Open example

spec:validation.corpus-rules.copies-contain-changes · spec:validation.corpus-rules.copies-contain-changes · ready floor ready

Executable Spec

Given a probe corpus the Protocol's validators find clean
Given a first rules file that {first: "empties the graph it receives"}
Given a second rules file that returns one warning when the graph it receives holds no node
When the probe corpus is validated with the rules files named by --rules in that order
Then the command exits {exitCode: 0}
Then the Protocol summary line reads {protocolSummary: "validate: 0 errors · 0 warnings (conformance + honesty over the one graph)"}
Then the corpus summary line reads {corpusSummary: "corpus rules: 0 errors · 0 warnings · 0 of 2 files failed (the corpus's own rules)"}

spec:validation.corpus-rules.copies-contain-changes

spec:validation.corpus-rules.error-finding-fails · spec:validation.corpus-rules.error-finding-fails · ready floor ready

Executable Spec

Given a probe corpus the Protocol's validators find clean
Given a first rules file that {first: "returns one error finding"}
When the probe corpus is validated with the rules files named by --rules in that order
Then the command exits {exitCode: 1}
Then the Protocol summary line reads {protocolSummary: "validate: 0 errors · 0 warnings (conformance + honesty over the one graph)"}
Then the corpus summary line reads {corpusSummary: "corpus rules: 1 errors · 0 warnings · 0 of 1 files failed (the corpus's own rules)"}

spec:validation.corpus-rules.error-finding-fails

spec:validation.corpus-rules.malformed-finding-fails · spec:validation.corpus-rules.malformed-finding-fails · ready floor ready

Executable Spec

Given a probe corpus the Protocol's validators find clean
Given a first rules file that {first: "returns a finding with no subject"}
When the probe corpus is validated with the rules files named by --rules in that order
Then the command exits {exitCode: 1}
Then the Protocol summary line reads {protocolSummary: "validate: 0 errors · 0 warnings (conformance + honesty over the one graph)"}
Then the corpus summary line reads {corpusSummary: "corpus rules: 0 errors · 0 warnings · 1 of 1 files failed (the corpus's own rules)"}

spec:validation.corpus-rules.malformed-finding-fails

Editing a parameter file starts a cycle that reads the new parameters · spec:validation.corpus-rules.params-edit-starts-a-cycle · ready floor ready

Executable Spec

Given a probe corpus the Protocol's validators find clean
Given a first rules file that {first: "reads a parameter file that gains a key after the first cycle under --watch"}
Given a second rules file that returns one warning when the graph it receives holds no node
When the probe corpus is validated with the rules files named by --rules in that order
Then the second cycle's corpus summary line reads {corpusSummary: "corpus rules: 0 errors · 2 warnings · 0 of 2 files failed (the corpus's own rules)"}

Open example

Rewriting a rules file under node_modules starts a cycle that runs the new body · spec:validation.corpus-rules.rules-edit-starts-a-cycle · ready floor ready

Executable Spec

Given a probe corpus the Protocol's validators find clean
Given a first rules file that {first: "is rewritten to return one error finding after the first cycle under --watch"}
Given a second rules file that returns one warning when the graph it receives holds no node
When the probe corpus is validated with the rules files named by --rules in that order
Then the second cycle's corpus summary line reads {corpusSummary: "corpus rules: 1 errors · 0 warnings · 0 of 2 files failed (the corpus's own rules)"}

Open example

A parameter file that stops being JSON fails only its own rules file, and the watcher runs on · spec:validation.corpus-rules.unreadable-params-fail-one-file · ready floor ready

Executable Spec

Given a probe corpus the Protocol's validators find clean
Given a first rules file that {first: "reads a parameter file that stops being JSON after the first cycle under --watch"}
Given a second rules file that returns one warning when the graph it receives holds no node
When the probe corpus is validated with the rules files named by --rules in that order
Then the second cycle's corpus summary line reads {corpusSummary: "corpus rules: 0 errors · 0 warnings · 1 of 2 files failed (the corpus's own rules)"}
Then the watcher is still running after the second cycle: {running: true}

Open example

spec:validation.corpus-rules.warning-finding-informs · spec:validation.corpus-rules.warning-finding-informs · ready floor ready

Executable Spec

Given a probe corpus the Protocol's validators find clean
Given a first rules file that {first: "returns one warning finding"}
When the probe corpus is validated with the rules files named by --rules in that order
Then the command exits {exitCode: 0}
Then the Protocol summary line reads {protocolSummary: "validate: 0 errors · 0 warnings (conformance + honesty over the one graph)"}
Then the corpus summary line reads {corpusSummary: "corpus rules: 0 errors · 1 warnings · 0 of 1 files failed (the corpus's own rules)"}

spec:validation.corpus-rules.warning-finding-informs

Example space

Given a probe corpus the Protocol's validators find clean
Given a first rules file that {first:"returns one error finding"|"returns one warning finding"|"returns a finding with no subject"|"empties the graph it receives"|"is rewritten to return one error finding after the first cycle under --watch"|"reads a parameter file that gains a key after the first cycle under --watch"|"reads a parameter file that stops being JSON after the first cycle under --watch"}
Given a second rules file that returns one warning when the graph it receives holds no node
When the probe corpus is validated with the rules files named by --rules in that order
Then the command exits {exitCode:number}
Then the Protocol summary line reads {protocolSummary:string}
Then the corpus summary line reads {corpusSummary:string}
Then the second cycle's corpus summary line reads {corpusSummary:string}
Then the watcher is still running after the second cycle: {running:boolean}
Design
rulesFlag line 56 · specs/validation/corpus-rules.sdp.md:56
sdp validate [root] [--exclude PATH]... [--check-clean | --watch] [--rules PATH [--params JSON | --params @PATH | --params KEY=@PATH]...]...; --rules and --params are options of validate alone, a --params before the first --rules is refused, one file named twice is refused, including through a symlink, and each PATH resolves from the working directory, as a --params @PATH file does. Diagnostics retain the path the operator named.

no citation recorded

paramsFlag line 57 · specs/validation/corpus-rules.sdp.md:57
--params on validate takes the three forms of sdp q --params with the same refusals, before the graph derives; each --params belongs to the nearest --rules before it in the argument list, whatever other options stand between them; one file's parameters merge as sdp q merges them, a key given twice for one file is refused, two files may each take the same key, and a file with no --params after it receives {}.

no citation recorded

rulesFile line 58 · specs/validation/corpus-rules.sdp.md:58
a rules file is UTF-8 text holding one plain JavaScript async function body, the form sdp q evaluates, with the bindings g, graph, report, params and recipes; the runner reads the text and never imports it as a module, so no file extension is required and a catalog recipe file under dist/recipes/ is a lawful rules file.
ruleAnswer line 59 · specs/validation/corpus-rules.sdp.md:59
{ findings: [] }: the body returns an object whose findings is an array, possibly empty; the runner reads findings and nothing else, so the answer's other keys stay the body's own data and are never printed.

no citation recorded

ruleFinding line 60 · specs/validation/corpus-rules.sdp.md:60
{ validatorId, subjectId, severity, message, relatedId?, path?, file?, line? }, where validatorId is the rule id, one token matching ^[a-z][a-z0-9-]*$, so it never reads as a Protocol validator id; subjectId and message are non-empty strings; severity is "error" or "warning"; relatedId and path are strings; file is a non-empty root-relative POSIX path, with absolute paths, backslashes and traversal above the root refused, and line a positive integer that requires file; the runner ignores a finding's other keys.

Cited at

  • test/skills.test.ts:1474
corpusFinding line 61 · specs/validation/corpus-rules.sdp.md:61
{ rulesFile, validatorId, subjectId, severity, message, relatedId?, path?, file?, line? } is the corpus branch of the finding currency, where rulesFile is the path as the operator named it; it carries no family, and the Protocol's findings keep their shape.

no citation recorded

corpusReport line 62 · specs/validation/corpus-rules.sdp.md:62
the report a run with --rules builds keeps the Protocol's findings unchanged in findings and adds corpusFindings, the corpus findings of each file that did not fail, in the order the files are named and then in the order returned, and corpusFailures, one { rulesFile, reason } for each failed file in the order named, never a finding; the report a rules file receives, like the one sdp q hands a body, carries neither.
corpusSection line 63 · specs/validation/corpus-rules.sdp.md:63
on standard error, after every Protocol finding, each rules file in the order named prints the line corpus rules <path> and then its findings in the order returned, each in the one composition of location, severity in brackets, rule id and message; a failed file prints corpus rules <path> failed: <reason> in place of its findings.
corpusSummary line 64 · specs/validation/corpus-rules.sdp.md:64
corpus rules: <errors> errors · <warnings> warnings · <failed> of <files> files failed (the corpus's own rules), written to standard output directly after the Protocol's summary line, which stays as spec:validation.diagnostic-rendering pins it; without --rules no such line prints; when the graph does not derive, no rules file runs and no Protocol summary line prints, and the corpus line, the last line on standard output, reads corpus rules: not run, the graph did not derive.

no citation recorded

exitCodes line 65 · specs/validation/corpus-rules.sdp.md:65
with --rules, sdp validate exits 1 when a Protocol finding is an error, a corpus finding is an error, a rules file fails or the graph does not derive, and 0 otherwise; the two summary lines say which.
failureReasons line 66 · specs/validation/corpus-rules.sdp.md:66
<reason> is cannot be read (<cause>), does not parse at line <L>, column <C>: <cause>, threw: <message on one line>, returned no findings array, followed by ; diagnostics: <the answer's diagnostics as JSON> when the answer carries diagnostics or by ; unknownParams: <as JSON>; accepts: <as JSON> when it carries unknownParams, finding <N> has no lawful <field>, with N counted from 1, or, under --watch after the first cycle, its parameters cannot be read (<cause>) when a parameter file named after its --rules cannot be read or parsed.

no citation recorded

Verification

Verifier bindings

  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · The shipped dependency-cycles file fails a rules run on a cycle · declared · example enabled · specs/consumers/agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run.sdp.md
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · The shipped address-resolution file fails a rules run on an address that names no entry · declared · example enabled · specs/consumers/agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run.sdp.md
  • spec:validation.corpus-rules.copies-contain-changes · A rules file that empties its graph leaves the next file's graph whole · declared · example enabled · specs/validation/corpus-rules.copies-contain-changes.sdp.md
  • spec:validation.corpus-rules.error-finding-fails · An error from a corpus rule fails validation and leaves the Protocol's line alone · declared · example enabled · specs/validation/corpus-rules.error-finding-fails.sdp.md
  • spec:validation.corpus-rules.malformed-finding-fails · A finding with no subject fails its rules file · declared · example enabled · specs/validation/corpus-rules.malformed-finding-fails.sdp.md
  • spec:validation.corpus-rules.params-edit-starts-a-cycle · Editing a parameter file starts a cycle that reads the new parameters · declared · example enabled · specs/validation/corpus-rules.params-edit-starts-a-cycle.sdp.md
  • spec:validation.corpus-rules.rules-edit-starts-a-cycle · Rewriting a rules file under node_modules starts a cycle that runs the new body · declared · example enabled · specs/validation/corpus-rules.rules-edit-starts-a-cycle.sdp.md
  • spec:validation.corpus-rules.unreadable-params-fail-one-file · A parameter file that stops being JSON fails only its own rules file, and the watcher runs on · declared · example enabled · specs/validation/corpus-rules.unreadable-params-fail-one-file.sdp.md
  • spec:validation.corpus-rules.warning-finding-informs · A warning from a corpus rule informs and passes · declared · example enabled · specs/validation/corpus-rules.warning-finding-informs.sdp.md

Example space

  • first · "returns one error finding" | "returns one warning finding" | "returns a finding with no subject" | "empties the graph it receives" | "is rewritten to return one error finding after the first cycle under --watch" | "reads a parameter file that gains a key after the first cycle under --watch" | "reads a parameter file that stops being JSON after the first cycle under --watch" · declared by a first rules file that {first}

Bound points

Examplefirst
spec:validation.corpus-rules.copies-contain-changes"empties the graph it receives"
spec:validation.corpus-rules.error-finding-fails"returns one error finding"
spec:validation.corpus-rules.malformed-finding-fails"returns a finding with no subject"
spec:validation.corpus-rules.params-edit-starts-a-cycle"reads a parameter file that gains a key after the first cycle under --watch"
spec:validation.corpus-rules.rules-edit-starts-a-cycle"is rewritten to return one error finding after the first cycle under --watch"
spec:validation.corpus-rules.unreadable-params-fail-one-file"reads a parameter file that stops being JSON after the first cycle under --watch"
spec:validation.corpus-rules.warning-finding-informs"returns one warning finding"

Oracle binding: present · oracle:protocol.corpus-rules-watch · test/reach-examples.test.ts:247

Coverage

first
Declared valueExamples
"returns one error finding"spec:validation.corpus-rules.error-finding-fails
"returns one warning finding"spec:validation.corpus-rules.warning-finding-informs
"returns a finding with no subject"spec:validation.corpus-rules.malformed-finding-fails
"empties the graph it receives"spec:validation.corpus-rules.copies-contain-changes
"is rewritten to return one error finding after the first cycle under --watch"spec:validation.corpus-rules.rules-edit-starts-a-cycle
"reads a parameter file that gains a key after the first cycle under --watch"spec:validation.corpus-rules.params-edit-starts-a-cycle
"reads a parameter file that stops being JSON after the first cycle under --watch"spec:validation.corpus-rules.unreadable-params-fail-one-file

Unbound

  • first: None
Design view

Requirement drawing

Requirement drawing for spec:validation.corpus-rules
  • E6: refines (7), verifies (9) · declared
Requirement drawing for spec:validation.corpus-rulessatisfies · anchoredsatisfies · anchoredsatisfies · anchoredrefines, verifies · declaredrefines, verifies · declaredE6refines, verifies · declaredmodels · anchoredmodels · anchoredrefines · declaredrefines · declaredrefines · declaredIntended Specsspec:validation.architecture-constraintsDeclared architecture rulesare checked againstanchored structure…validation.architecture-constraintsdeclared Specspec:validation.corpus-rulesCorpus-authored rules runon the one validation path…validation.corpus-rulesdeclared Specspec:validation.external-registersA corpus checks theregister tokens its prosecites…validation.external-registersdeclared SpecDeclared verifying examples14 verifying examples · declared; 14 test bindings · anchored, folded14 verifying examples ·declared14 test bindings · anchored ·foldedSatisfying or referencingunits5 satisfying units · anchored, folded5 satisfying units ·anchoredTest or oracle bindingsoracle:protocol.corpus-rules-watchoracle:protocol.corpus-rules-watch…protocol.corpus-rules-watchanchored oracle bindingoracle:protocol.external-registersoracle:protocol.external-registers…protocol.external-registersanchored oracle bindingOutside the selected setspec:consumers.agent-surfaceAgents script a visibletyped graph…consumers.agent-surfacedeclared Specspec:consumers.agent-surface.address-and-cycle-recipesAddress resolution anddependency cycles stayexecutable graph recipes…consumers.agent-surface.address-and-cycle-recipesdeclared Spec
The diagram as text
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path · declared Spec
  • spec:validation.architecture-constraints: Declared architecture rules are checked against anchored structure · declared Spec
  • spec:validation.corpus-rules.copies-contain-changes: A rules file that empties its graph leaves the next file's graph whole · declared Spec
  • spec:validation.corpus-rules.error-finding-fails: An error from a corpus rule fails validation and leaves the Protocol's line alone · declared Spec
  • spec:validation.corpus-rules.malformed-finding-fails: A finding with no subject fails its rules file · declared Spec
  • spec:validation.corpus-rules.params-edit-starts-a-cycle: Editing a parameter file starts a cycle that reads the new parameters · declared Spec
  • spec:validation.corpus-rules.rules-edit-starts-a-cycle: Rewriting a rules file under node_modules starts a cycle that runs the new body · declared Spec
  • spec:validation.corpus-rules.unreadable-params-fail-one-file: A parameter file that stops being JSON fails only its own rules file, and the watcher runs on · declared Spec
  • spec:validation.corpus-rules.warning-finding-informs: A warning from a corpus rule informs and passes · declared Spec
  • spec:validation.external-registers: A corpus checks the register tokens its prose cites · declared Spec
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run: The shipped dependency-cycles file fails a rules run on a cycle · declared Spec
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run: The shipped address-resolution file fails a rules run on an address that names no entry · declared Spec
  • spec:validation.architecture-constraints.forbidden-layer-pair: A domain member that uses an infrastructure member breaks a forbidden pair · declared Spec
  • spec:validation.architecture-constraints.isolated-context-as-rule: The walk named as a rules file fails validation on an isolation breach · declared Spec
  • spec:validation.architecture-constraints.unstated-layer-unclassified: A component with no layer leaves its edge unclassified · declared Spec
  • spec:validation.external-registers.uncited-on-request: A held token no Spec cites fails a rules run only when the caller asks · declared Spec
  • spec:validation.external-registers.unknown-and-retired: A cited token the register lacks or retires fails a rules run · declared Spec
  • spec:consumers.agent-surface.address-and-cycle-recipes: Address resolution and dependency cycles stay executable graph recipes · declared Spec
  • spec:consumers.agent-surface: Agents script a visible typed graph · declared Spec
  • impl:protocol.architecture-walk-recipe: asserts realization of the shipped architecture walk recipe · anchored code · test/architecture-recipes.test.ts:10
  • impl:protocol.corpus-rule-runner: runs selected corpus rules and separates their failures · anchored code · src/cli/corpus-rules.ts:65
  • impl:protocol.corpus-rules: runs copied rule bodies after Protocol validation and composes the separate corpus report, output and exit · anchored code · src/cli/validate-view-command.ts:79
  • impl:protocol.external-registers-recipe: asserts realization of the shipped external-registers recipe · anchored code · test/external-registers.test.ts:9
  • impl:protocol.validate-watch: watches carrier directories and coalesces events into a pending validation rerun · anchored code · src/cli/validate-watch.ts:591
  • oracle:protocol.corpus-rules-watch: oracle:protocol.corpus-rules-watch · anchored oracle binding · test/reach-examples.test.ts:247
  • oracle:protocol.external-registers: oracle:protocol.external-registers · anchored oracle binding · test/self-hosting-external-registers.test.ts:29
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run: test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · anchored test binding · binding present · test/reach-examples.test.ts:430
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run: test:protocol.consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · anchored test binding · binding present · test/reach-examples.test.ts:438
  • test:protocol.external-registers.uncited-on-request: test:protocol.external-registers.uncited-on-request · anchored test binding · binding present · test/self-hosting-external-registers.test.ts:128
  • test:protocol.external-registers.unknown-and-retired: test:protocol.external-registers.unknown-and-retired · anchored test binding · binding present · test/self-hosting-external-registers.test.ts:122
  • test:protocol.validation.architecture-constraints.forbidden-layer-pair: test:protocol.validation.architecture-constraints.forbidden-layer-pair · anchored test binding · binding present · test/self-hosting-corpus-checks.test.ts:346
  • test:protocol.validation.architecture-constraints.isolated-context-as-rule: test:protocol.validation.architecture-constraints.isolated-context-as-rule · anchored test binding · binding present · test/self-hosting-corpus-checks.test.ts:353
  • test:protocol.validation.architecture-constraints.unstated-layer-unclassified: test:protocol.validation.architecture-constraints.unstated-layer-unclassified · anchored test binding · binding present · test/self-hosting-corpus-checks.test.ts:360
  • test:protocol.validation.corpus-rules.copies-contain-changes: test:protocol.validation.corpus-rules.copies-contain-changes · anchored test binding · binding present · test/self-hosting-corpus-checks.test.ts:318
  • test:protocol.validation.corpus-rules.error-finding-fails: test:protocol.validation.corpus-rules.error-finding-fails · anchored test binding · binding present · test/self-hosting-corpus-checks.test.ts:325
  • test:protocol.validation.corpus-rules.malformed-finding-fails: test:protocol.validation.corpus-rules.malformed-finding-fails · anchored test binding · binding present · test/self-hosting-corpus-checks.test.ts:332
  • test:protocol.validation.corpus-rules.params-edit-starts-a-cycle: test:protocol.validation.corpus-rules.params-edit-starts-a-cycle · anchored test binding · binding present · test/reach-examples.test.ts:454
  • test:protocol.validation.corpus-rules.rules-edit-starts-a-cycle: test:protocol.validation.corpus-rules.rules-edit-starts-a-cycle · anchored test binding · binding present · test/reach-examples.test.ts:448
  • test:protocol.validation.corpus-rules.unreadable-params-fail-one-file: test:protocol.validation.corpus-rules.unreadable-params-fail-one-file · anchored test binding · binding present · test/reach-examples.test.ts:460
  • test:protocol.validation.corpus-rules.warning-finding-informs: test:protocol.validation.corpus-rules.warning-finding-informs · anchored test binding · binding present · test/self-hosting-corpus-checks.test.ts:339
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:validation.corpus-rules · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run verifies spec:validation.corpus-rules · declared
  • spec:validation.architecture-constraints refines spec:validation.corpus-rules · declared — the architecture walk is a corpus-selected rule over anchored structure
  • spec:validation.architecture-constraints.forbidden-layer-pair refines spec:validation.architecture-constraints · declared
  • spec:validation.architecture-constraints.forbidden-layer-pair verifies spec:validation.architecture-constraints · declared
  • spec:validation.architecture-constraints.isolated-context-as-rule refines spec:validation.architecture-constraints · declared
  • spec:validation.architecture-constraints.isolated-context-as-rule verifies spec:validation.architecture-constraints · declared
  • spec:validation.architecture-constraints.unstated-layer-unclassified refines spec:validation.architecture-constraints · declared
  • spec:validation.architecture-constraints.unstated-layer-unclassified verifies spec:validation.architecture-constraints · declared
  • spec:validation.corpus-rules refines spec:consumers.agent-surface · declared — a corpus scripts the graph through the evaluation sink to report its own findings
  • spec:validation.corpus-rules.copies-contain-changes refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.copies-contain-changes verifies spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.error-finding-fails refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.error-finding-fails verifies spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.malformed-finding-fails refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.malformed-finding-fails verifies spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.params-edit-starts-a-cycle refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.params-edit-starts-a-cycle verifies spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.rules-edit-starts-a-cycle refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.rules-edit-starts-a-cycle verifies spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.unreadable-params-fail-one-file refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.unreadable-params-fail-one-file verifies spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.warning-finding-informs refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.warning-finding-informs verifies spec:validation.corpus-rules · declared
  • spec:validation.external-registers refines spec:validation.corpus-rules · declared — external-register checks run as corpus-selected rules
  • spec:validation.external-registers.uncited-on-request refines spec:validation.external-registers · declared
  • spec:validation.external-registers.uncited-on-request verifies spec:validation.external-registers · declared
  • spec:validation.external-registers.unknown-and-retired refines spec:validation.external-registers · declared
  • spec:validation.external-registers.unknown-and-retired verifies spec:validation.external-registers · declared
  • impl:protocol.architecture-walk-recipe satisfies spec:validation.architecture-constraints · anchored
  • impl:protocol.corpus-rule-runner satisfies spec:validation.corpus-rules · anchored
  • impl:protocol.corpus-rules satisfies spec:validation.corpus-rules · anchored
  • impl:protocol.external-registers-recipe satisfies spec:validation.external-registers · anchored
  • impl:protocol.validate-watch satisfies spec:validation.corpus-rules · anchored
  • oracle:protocol.corpus-rules-watch models spec:validation.corpus-rules · anchored
  • oracle:protocol.external-registers models spec:validation.external-registers · anchored
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · anchored
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · anchored
  • test:protocol.external-registers.uncited-on-request verifies spec:validation.external-registers.uncited-on-request · anchored
  • test:protocol.external-registers.unknown-and-retired verifies spec:validation.external-registers.unknown-and-retired · anchored
  • test:protocol.validation.architecture-constraints.forbidden-layer-pair verifies spec:validation.architecture-constraints.forbidden-layer-pair · anchored
  • test:protocol.validation.architecture-constraints.isolated-context-as-rule verifies spec:validation.architecture-constraints.isolated-context-as-rule · anchored
  • test:protocol.validation.architecture-constraints.unstated-layer-unclassified verifies spec:validation.architecture-constraints.unstated-layer-unclassified · anchored
  • test:protocol.validation.corpus-rules.copies-contain-changes verifies spec:validation.corpus-rules.copies-contain-changes · anchored
  • test:protocol.validation.corpus-rules.error-finding-fails verifies spec:validation.corpus-rules.error-finding-fails · anchored
  • test:protocol.validation.corpus-rules.malformed-finding-fails verifies spec:validation.corpus-rules.malformed-finding-fails · anchored
  • test:protocol.validation.corpus-rules.params-edit-starts-a-cycle verifies spec:validation.corpus-rules.params-edit-starts-a-cycle · anchored
  • test:protocol.validation.corpus-rules.rules-edit-starts-a-cycle verifies spec:validation.corpus-rules.rules-edit-starts-a-cycle · anchored
  • test:protocol.validation.corpus-rules.unreadable-params-fail-one-file verifies spec:validation.corpus-rules.unreadable-params-fail-one-file · anchored
  • test:protocol.validation.corpus-rules.warning-finding-informs verifies spec:validation.corpus-rules.warning-finding-informs · 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.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.corpus-rule-runner · runs selected corpus rules and separates their failures · src/cli/corpus-rules.ts:65

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

    Uses

    None.

  • impl:protocol.corpus-rules · runs copied rule bodies after Protocol validation and composes the separate corpus report, output and exit · src/cli/validate-view-command.ts:79

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

    Uses

    None.

  • impl:protocol.validate-watch · watches carrier directories and coalesces events into a pending validation rerun · src/cli/validate-watch.ts:591

    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:validation.corpus-rules

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

The diagram as text
  • spec:consumers.agent-surface: Agents script a visible typed graph
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run: The shipped dependency-cycles file fails a rules run on a cycle
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run: The shipped address-resolution file fails a rules run on an address that names no entry
  • spec:consumers.agent-surface.evaluation-sink: The evaluation sink runs one body and prints its return
  • spec:consumers.agent-surface.recipe-parameters: Recipes take parameters as data and ship as runnable files
  • spec:consumers.validate-watch: Validation re-runs while an author edits carriers
  • spec:decisions.architectural-annotation: Architectural significance is annotated where it is realized
  • spec:validation.architecture-constraints: Declared architecture rules are checked against anchored structure
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path
  • spec:validation.corpus-rules.copies-contain-changes: A rules file that empties its graph leaves the next file's graph whole
  • spec:validation.corpus-rules.error-finding-fails: An error from a corpus rule fails validation and leaves the Protocol's line alone
  • spec:validation.corpus-rules.malformed-finding-fails: A finding with no subject fails its rules file
  • spec:validation.corpus-rules.params-edit-starts-a-cycle: Editing a parameter file starts a cycle that reads the new parameters
  • spec:validation.corpus-rules.rules-edit-starts-a-cycle: Rewriting a rules file under node_modules starts a cycle that runs the new body
  • spec:validation.corpus-rules.unreadable-params-fail-one-file: A parameter file that stops being JSON fails only its own rules file, and the watcher runs on
  • spec:validation.corpus-rules.warning-finding-informs: A warning from a corpus rule informs and passes
  • spec:validation.diagnostic-rendering: One diagnostic currency, its location composed from structured fields
  • spec:validation.external-registers: A corpus checks the register tokens its prose cites
  • spec:validation.two-check-families: Validation separates well-formedness from non-pretending
  • spec:validation.corpus-rules constrainedBy spec:validation.two-check-families · declared
  • spec:validation.corpus-rules decidedBy spec:decisions.architectural-annotation · declared — architecture checks remain the corpus's own rules
  • spec:validation.corpus-rules dependsOn spec:consumers.agent-surface · declared
  • spec:validation.corpus-rules dependsOn spec:consumers.agent-surface.evaluation-sink · declared — a rules file holds the body the sink evaluates, with the sink's bindings and trust
  • spec:validation.corpus-rules dependsOn spec:consumers.agent-surface.recipe-parameters · declared — validate takes `--params` in the sink's grammar
  • spec:validation.corpus-rules dependsOn spec:consumers.validate-watch · declared — the watch loop reruns the named rules in each cycle
  • spec:validation.corpus-rules dependsOn spec:validation.diagnostic-rendering · declared — corpus findings use the shared diagnostic currency
  • spec:validation.corpus-rules refines spec:consumers.agent-surface · declared — a corpus scripts the graph through the evaluation sink to report its own findings
  • spec:validation.architecture-constraints dependsOn spec:validation.corpus-rules · declared
  • spec:validation.external-registers dependsOn spec:validation.corpus-rules · declared — the recipe answers with findings and runs as a rules file
  • spec:validation.architecture-constraints refines spec:validation.corpus-rules · declared — the architecture walk is a corpus-selected rule over anchored structure
  • spec:validation.corpus-rules.copies-contain-changes refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.error-finding-fails refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.malformed-finding-fails refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.params-edit-starts-a-cycle refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.rules-edit-starts-a-cycle refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.unreadable-params-fail-one-file refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.warning-finding-informs refines spec:validation.corpus-rules · declared
  • spec:validation.external-registers refines spec:validation.corpus-rules · declared — external-register checks run as corpus-selected rules
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:validation.corpus-rules · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run verifies spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.copies-contain-changes verifies spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.error-finding-fails verifies spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.malformed-finding-fails verifies spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.params-edit-starts-a-cycle verifies spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.rules-edit-starts-a-cycle verifies spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.unreadable-params-fail-one-file verifies spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.warning-finding-informs verifies spec:validation.corpus-rules · declared

Rests on

  • refines · spec:consumers.agent-surface · stated ready, floor ready
  • dependsOn · spec:consumers.agent-surface · stated ready, floor ready
  • dependsOn · spec:consumers.agent-surface.evaluation-sink · stated ready, floor ready
  • dependsOn · spec:consumers.agent-surface.recipe-parameters · stated ready, floor ready
  • dependsOn · spec:consumers.validate-watch · stated ready, floor ready
  • dependsOn · spec:validation.diagnostic-rendering · stated ready, floor ready
  • constrainedBy · spec:validation.two-check-families · stated ready, floor ready
  • decidedBy · spec:decisions.architectural-annotation · stated ready, floor ready

Rested on by

Distance 1

  • spec:validation.architecture-constraints

    Implementing units

    • impl:protocol.architecture-walk-recipe · test/architecture-recipes.test.ts:10

    Referencing units

    None.

    Enabled verifiers: spec:validation.architecture-constraints.forbidden-layer-pair, spec:validation.architecture-constraints.isolated-context-as-rule, spec:validation.architecture-constraints.unstated-layer-unclassified

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

  • spec:validation.corpus-rules.copies-contain-changes

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.copies-contain-changes

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.error-finding-fails

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.error-finding-fails

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.malformed-finding-fails

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.malformed-finding-fails

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.params-edit-starts-a-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.params-edit-starts-a-cycle

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

  • spec:validation.corpus-rules.rules-edit-starts-a-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.rules-edit-starts-a-cycle

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

  • spec:validation.corpus-rules.unreadable-params-fail-one-file

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.unreadable-params-fail-one-file

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

  • spec:validation.corpus-rules.warning-finding-informs

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.warning-finding-informs

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.external-registers

    Implementing units

    • impl:protocol.external-registers-recipe · test/external-registers.test.ts:9

    Referencing units

    None.

    Enabled verifiers: spec:validation.external-registers.uncited-on-request, spec:validation.external-registers.unknown-and-retired

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

Distance 2

  • spec:consumers.spec-studio.register-input

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:validation.architecture-constraints.forbidden-layer-pair

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.forbidden-layer-pair

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.architecture-constraints.isolated-context-as-rule

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.isolated-context-as-rule

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.architecture-constraints.unstated-layer-unclassified

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.unstated-layer-unclassified

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.external-registers.uncited-on-request

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.external-registers.uncited-on-request

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

  • spec:validation.external-registers.unknown-and-retired

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.external-registers.unknown-and-retired

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

Relations

Relation and directionOther endClaimReasonExercised keys
constrainedBy · outgoingspec:validation.two-check-families
spec:validation.two-check-families · resolves
declaredNoneNone
decidedBy · outgoingspec:decisions.architectural-annotation
spec:decisions.architectural-annotation · resolves
declaredarchitecture checks remain the corpus's own rulesNone
dependsOn · outgoingspec:consumers.agent-surface
spec:consumers.agent-surface · resolves
declaredNoneNone
dependsOn · outgoingThe evaluation sink runs one body and prints its return
spec:consumers.agent-surface.evaluation-sink · resolves
declareda rules file holds the body the sink evaluates, with the sink's bindings and trustNone
dependsOn · outgoingspec:consumers.agent-surface.recipe-parameters
spec:consumers.agent-surface.recipe-parameters · resolves
declaredvalidate takes --params in the sink's grammarNone
dependsOn · outgoingValidation re-runs while an author edits carriers
spec:consumers.validate-watch · resolves
declaredthe watch loop reruns the named rules in each cycleNone
dependsOn · outgoingspec:validation.diagnostic-rendering
spec:validation.diagnostic-rendering · resolves
declaredcorpus findings use the shared diagnostic currencyNone
refines · outgoingspec:consumers.agent-surface
spec:consumers.agent-surface · resolves
declareda corpus scripts the graph through the evaluation sink to report its own findingsNone
dependsOn · incomingspec:validation.architecture-constraints
spec:validation.architecture-constraints · resolves
declaredNoneNone
dependsOn · incomingA corpus checks the register tokens its prose cites
spec:validation.external-registers · resolves
declaredthe recipe answers with findings and runs as a rules fileNone
refines · incomingspec:validation.architecture-constraints
spec:validation.architecture-constraints · resolves
declaredthe architecture walk is a corpus-selected rule over anchored structureNone
refines · incomingspec:validation.corpus-rules.copies-contain-changes
spec:validation.corpus-rules.copies-contain-changes · resolves
declaredNoneNone
refines · incomingspec:validation.corpus-rules.error-finding-fails
spec:validation.corpus-rules.error-finding-fails · resolves
declaredNoneNone
refines · incomingspec:validation.corpus-rules.malformed-finding-fails
spec:validation.corpus-rules.malformed-finding-fails · resolves
declaredNoneNone
refines · incomingEditing a parameter file starts a cycle that reads the new parameters
spec:validation.corpus-rules.params-edit-starts-a-cycle · resolves
declaredNoneNone
refines · incomingRewriting a rules file under node_modules starts a cycle that runs the new body
spec:validation.corpus-rules.rules-edit-starts-a-cycle · resolves
declaredNoneNone
refines · incomingA parameter file that stops being JSON fails only its own rules file, and the watcher runs on
spec:validation.corpus-rules.unreadable-params-fail-one-file · resolves
declaredNoneNone
refines · incomingspec:validation.corpus-rules.warning-finding-informs
spec:validation.corpus-rules.warning-finding-informs · resolves
declaredNoneNone
refines · incomingA corpus checks the register tokens its prose cites
spec:validation.external-registers · resolves
declaredexternal-register checks run as corpus-selected rulesNone
verifies · incomingThe shipped dependency-cycles file fails a rules run on a cycle
spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · resolves
declaredNonerecipesAsRules
verifies · incomingThe shipped address-resolution file fails a rules run on an address that names no entry
spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · resolves
declaredNonerecipesAsRules
verifies · incomingspec:validation.corpus-rules.copies-contain-changes
spec:validation.corpus-rules.copies-contain-changes · resolves
declaredNonecopiesPerFile, namedOrder
verifies · incomingspec:validation.corpus-rules.error-finding-fails
spec:validation.corpus-rules.error-finding-fails · resolves
declaredNoneexitCode
verifies · incomingspec:validation.corpus-rules.malformed-finding-fails
spec:validation.corpus-rules.malformed-finding-fails · resolves
declaredNonebrokenRuleFails
verifies · incomingEditing a parameter file starts a cycle that reads the new parameters
spec:validation.corpus-rules.params-edit-starts-a-cycle · resolves
declaredNonewatchedParams
verifies · incomingRewriting a rules file under node_modules starts a cycle that runs the new body
spec:validation.corpus-rules.rules-edit-starts-a-cycle · resolves
declaredNonewatchReruns
verifies · incomingA parameter file that stops being JSON fails only its own rules file, and the watcher runs on
spec:validation.corpus-rules.unreadable-params-fail-one-file · resolves
declaredNonewatchedParams
verifies · incomingspec:validation.corpus-rules.warning-finding-informs
spec:validation.corpus-rules.warning-finding-informs · resolves
declaredNoneexitCode

Bindings

Implementation binding: present

  • impl:protocol.corpus-rule-runner · runs selected corpus rules and separates their failures · src/cli/corpus-rules.ts:65 · role service · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.corpus-rules · runs copied rule bodies after Protocol validation and composes the separate corpus report, output and exit · src/cli/validate-view-command.ts:79 · role service · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.validate-watch · watches carrier directories and coalesces events into a pending validation rerun · src/cli/validate-watch.ts:591 · role service · component component:protocol.cli · layer edge · context protocol

Design reference: none

Verifier binding: present

  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · The shipped dependency-cycles file fails a rules run on a cycle · declared · specs/consumers/agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run.sdp.md · example enabled
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · The shipped address-resolution file fails a rules run on an address that names no entry · declared · specs/consumers/agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run.sdp.md · example enabled
  • spec:validation.corpus-rules.copies-contain-changes · A rules file that empties its graph leaves the next file's graph whole · declared · specs/validation/corpus-rules.copies-contain-changes.sdp.md · example enabled
  • spec:validation.corpus-rules.error-finding-fails · An error from a corpus rule fails validation and leaves the Protocol's line alone · declared · specs/validation/corpus-rules.error-finding-fails.sdp.md · example enabled
  • spec:validation.corpus-rules.malformed-finding-fails · A finding with no subject fails its rules file · declared · specs/validation/corpus-rules.malformed-finding-fails.sdp.md · example enabled
  • spec:validation.corpus-rules.params-edit-starts-a-cycle · Editing a parameter file starts a cycle that reads the new parameters · declared · specs/validation/corpus-rules.params-edit-starts-a-cycle.sdp.md · example enabled
  • spec:validation.corpus-rules.rules-edit-starts-a-cycle · Rewriting a rules file under node_modules starts a cycle that runs the new body · declared · specs/validation/corpus-rules.rules-edit-starts-a-cycle.sdp.md · example enabled
  • spec:validation.corpus-rules.unreadable-params-fail-one-file · A parameter file that stops being JSON fails only its own rules file, and the watcher runs on · declared · specs/validation/corpus-rules.unreadable-params-fail-one-file.sdp.md · example enabled
  • spec:validation.corpus-rules.warning-finding-informs · A warning from a corpus rule informs and passes · declared · specs/validation/corpus-rules.warning-finding-informs.sdp.md · example enabled

Expected-outcome oracle: present

  • oracle:protocol.corpus-rules-watch · test/reach-examples.test.ts:247

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

6. Editing a parameter file starts a cycle that reads the new parameters

spec:validation.corpus-rules.params-edit-starts-a-cycle

Editing a parameter file starts a cycle that reads the new parameters

spec:validation.corpus-rules.params-edit-starts-a-cycleExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/validation/corpus-rules.params-edit-starts-a-cycle.sdp.md

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

Intent
outcome
Execute the watched-parameters rule on a parameter file, outside the probe root, that gains a key after the first cycle.
assumptions
  • The world writes the probe corpus of the error example, a parameter file outside the probe root holding { "one": 1 }, a first rules file whose body returns one warning finding for each key of its params, named by --rules and followed by --params @PATH naming that file, and the second rules file of the copy example. It starts the watcher as the rules-edit example does and, after the first cycle, writes { "one": 1, "two": 2 } to the parameter file, then reads the second cycle's corpus summary line and stops the watcher.
Behavior

Examples

Given a probe corpus the Protocol's validators find clean
Given a first rules file that {first: "reads a parameter file that gains a key after the first cycle under --watch"}
Given a second rules file that returns one warning when the graph it receives holds no node
When the probe corpus is validated with the rules files named by --rules in that order
Then the second cycle's corpus summary line reads {corpusSummary: "corpus rules: 0 errors · 2 warnings · 0 of 2 files failed (the corpus's own rules)"}
Verification

Verifier bindings

  • test:protocol.validation.corpus-rules.params-edit-starts-a-cycle · anchored · test anchor binding present · test/reach-examples.test.ts:454
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:validation.corpus-rules.params-edit-starts-a-cycle
The diagram as text
  • spec:validation.corpus-rules.params-edit-starts-a-cycle: Editing a parameter file starts a cycle that reads the new parameters · declared Spec
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path · declared Spec
  • test:protocol.validation.corpus-rules.params-edit-starts-a-cycle: test:protocol.validation.corpus-rules.params-edit-starts-a-cycle · anchored test binding · binding present · test/reach-examples.test.ts:454
  • spec:validation.corpus-rules.params-edit-starts-a-cycle refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.params-edit-starts-a-cycle verifies spec:validation.corpus-rules · declared
  • test:protocol.validation.corpus-rules.params-edit-starts-a-cycle verifies spec:validation.corpus-rules.params-edit-starts-a-cycle · 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:validation.corpus-rules.params-edit-starts-a-cycle
  • E2: verifies · declared
The diagram as text
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path
  • spec:validation.corpus-rules.params-edit-starts-a-cycle: Editing a parameter file starts a cycle that reads the new parameters
  • spec:validation.corpus-rules.params-edit-starts-a-cycle refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.params-edit-starts-a-cycle verifies spec:validation.corpus-rules · 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 · outgoingCorpus-authored rules run on the one validation path
spec:validation.corpus-rules · resolves
declaredNoneNone
verifies · outgoingCorpus-authored rules run on the one validation path
spec:validation.corpus-rules · resolves
declaredNonewatchedParams

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.validation.corpus-rules.params-edit-starts-a-cycle · anchored · test/reach-examples.test.ts:454 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

7. Rewriting a rules file under node_modules starts a cycle that runs the new body

spec:validation.corpus-rules.rules-edit-starts-a-cycle

Rewriting a rules file under node_modules starts a cycle that runs the new body

spec:validation.corpus-rules.rules-edit-starts-a-cycleExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/validation/corpus-rules.rules-edit-starts-a-cycle.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 rule on a rules file that lives under a directory discovery skips and is rewritten after the first cycle.
assumptions
  • The world writes the probe corpus of the error example, a first rules file under the probe root's node_modules/probe/ whose body returns one warning finding, and the second rules file of the copy example. It starts sdp validate --watch on the probe root with the two files named by --rules in that order, waits for the first cycle, rewrites the first file to return one error finding in place of the warning, waits for the second cycle, reads its corpus summary line and stops the watcher.
Behavior

Examples

Given a probe corpus the Protocol's validators find clean
Given a first rules file that {first: "is rewritten to return one error finding after the first cycle under --watch"}
Given a second rules file that returns one warning when the graph it receives holds no node
When the probe corpus is validated with the rules files named by --rules in that order
Then the second cycle's corpus summary line reads {corpusSummary: "corpus rules: 1 errors · 0 warnings · 0 of 2 files failed (the corpus's own rules)"}
Verification

Verifier bindings

  • test:protocol.validation.corpus-rules.rules-edit-starts-a-cycle · anchored · test anchor binding present · test/reach-examples.test.ts:448
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:validation.corpus-rules.rules-edit-starts-a-cycle
The diagram as text
  • spec:validation.corpus-rules.rules-edit-starts-a-cycle: Rewriting a rules file under node_modules starts a cycle that runs the new body · declared Spec
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path · declared Spec
  • test:protocol.validation.corpus-rules.rules-edit-starts-a-cycle: test:protocol.validation.corpus-rules.rules-edit-starts-a-cycle · anchored test binding · binding present · test/reach-examples.test.ts:448
  • spec:validation.corpus-rules.rules-edit-starts-a-cycle refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.rules-edit-starts-a-cycle verifies spec:validation.corpus-rules · declared
  • test:protocol.validation.corpus-rules.rules-edit-starts-a-cycle verifies spec:validation.corpus-rules.rules-edit-starts-a-cycle · 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:validation.corpus-rules.rules-edit-starts-a-cycle
  • E2: verifies · declared
The diagram as text
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path
  • spec:validation.corpus-rules.rules-edit-starts-a-cycle: Rewriting a rules file under node_modules starts a cycle that runs the new body
  • spec:validation.corpus-rules.rules-edit-starts-a-cycle refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.rules-edit-starts-a-cycle verifies spec:validation.corpus-rules · 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 · outgoingCorpus-authored rules run on the one validation path
spec:validation.corpus-rules · resolves
declaredNoneNone
verifies · outgoingCorpus-authored rules run on the one validation path
spec:validation.corpus-rules · resolves
declaredNonewatchReruns

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.validation.corpus-rules.rules-edit-starts-a-cycle · anchored · test/reach-examples.test.ts:448 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

8. A parameter file that stops being JSON fails only its own rules file, and the watcher runs on

spec:validation.corpus-rules.unreadable-params-fail-one-file

A parameter file that stops being JSON fails only its own rules file, and the watcher runs on

spec:validation.corpus-rules.unreadable-params-fail-one-fileExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/validation/corpus-rules.unreadable-params-fail-one-file.sdp.md

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

Intent
outcome
Execute the watched-parameters rule on a parameter file that holds text that is not JSON after the first cycle.
assumptions
  • The world writes the probe corpus, parameter file and rules files of the parameter-edit example and starts the watcher as that example does. After the first cycle it writes text that is not JSON to the parameter file, waits for the second cycle, reads its corpus summary line and, on standard error, the line corpus rules <path> failed: its parameters cannot be read (<cause>) for the first file, then checks that the process is still running before it stops the watcher.
Behavior

Examples

Given a probe corpus the Protocol's validators find clean
Given a first rules file that {first: "reads a parameter file that stops being JSON after the first cycle under --watch"}
Given a second rules file that returns one warning when the graph it receives holds no node
When the probe corpus is validated with the rules files named by --rules in that order
Then the second cycle's corpus summary line reads {corpusSummary: "corpus rules: 0 errors · 0 warnings · 1 of 2 files failed (the corpus's own rules)"}
Then the watcher is still running after the second cycle: {running: true}
Verification

Verifier bindings

  • test:protocol.validation.corpus-rules.unreadable-params-fail-one-file · anchored · test anchor binding present · test/reach-examples.test.ts:460
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:validation.corpus-rules.unreadable-params-fail-one-file
The diagram as text
  • spec:validation.corpus-rules.unreadable-params-fail-one-file: A parameter file that stops being JSON fails only its own rules file, and the watcher runs on · declared Spec
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path · declared Spec
  • test:protocol.validation.corpus-rules.unreadable-params-fail-one-file: test:protocol.validation.corpus-rules.unreadable-params-fail-one-file · anchored test binding · binding present · test/reach-examples.test.ts:460
  • spec:validation.corpus-rules.unreadable-params-fail-one-file refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.unreadable-params-fail-one-file verifies spec:validation.corpus-rules · declared
  • test:protocol.validation.corpus-rules.unreadable-params-fail-one-file verifies spec:validation.corpus-rules.unreadable-params-fail-one-file · 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:validation.corpus-rules.unreadable-params-fail-one-file
  • E2: verifies · declared
The diagram as text
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path
  • spec:validation.corpus-rules.unreadable-params-fail-one-file: A parameter file that stops being JSON fails only its own rules file, and the watcher runs on
  • spec:validation.corpus-rules.unreadable-params-fail-one-file refines spec:validation.corpus-rules · declared
  • spec:validation.corpus-rules.unreadable-params-fail-one-file verifies spec:validation.corpus-rules · 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 · outgoingCorpus-authored rules run on the one validation path
spec:validation.corpus-rules · resolves
declaredNoneNone
verifies · outgoingCorpus-authored rules run on the one validation path
spec:validation.corpus-rules · resolves
declaredNonewatchedParams

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.validation.corpus-rules.unreadable-params-fail-one-file · anchored · test/reach-examples.test.ts:460 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

9. Validation re-runs while an author edits carriers

spec:consumers.validate-watch

Validation re-runs while an author edits carriers

spec:consumers.validate-watchUse Case / Behavior · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/validate-watch.sdp.md

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

Intent
problem
An author editing a Spec re-runs sdp validate by hand after every save.
outcome
Let sdp validate --watch re-run the one validation path on every carrier change and stay alive after findings, as a loop for authoring and never a second validation path.
Behavior
rule line 19 · specs/consumers/validate-watch.sdp.md:19
sdp validate --watch [root] installs its watcher first, then runs the same validate path sdp validate runs, from scratch, once at start and again after every carrier create, change, delete or rename under the root.
rule line 20 · specs/consumers/validate-watch.sdp.md:20
A carrier ends in .sdp.md, .sdp.gherkin or .sdp.ts. The watcher ignores the directories discovery skips, the configured exclusion prefixes and every non-carrier path other than the rules files and parameter files --rules names, which it watches wherever they live, as spec:validation.corpus-rules#rule.watchReruns and spec:validation.corpus-rules#rule.watchedParams state; a removed watched directory and an event with no filename each schedule a run because their affected carriers cannot be named.
rule line 21 · specs/consumers/validate-watch.sdp.md:21
Events that arrive while a run is in progress coalesce into one pending run.
rule.operatorStop line 22 · specs/consumers/validate-watch.sdp.md:22
Findings print as sdp validate prints them and the process stays alive; operator SIGINT terminates the process with exit 0 even while a rules body is active, without waiting for it. No further rules file runs or output is written after the stop.

no example exercises it

rule line 23 · specs/consumers/validate-watch.sdp.md:23
For sdp validate, --watch cannot combine with --check-clean, and it re-runs on carrier edits and on edits to the files --rules names, and never on source edits, so an author re-runs validation after editing an anchor. This rule restricts no other verb's --watch, which its own Spec states.

4 unkeyed rules.

Verification

Verifier bindings

  • test:protocol.validate-watch · watch-loop checks verify the validate --watch authoring loop · anchored · test anchor binding present · test/cli.test.ts:1670
  • test:protocol.validate-watch-rules · process checks verify operator stop during active corpus rules · anchored · test anchor binding present · test/corpus-rules.test.ts:343
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.validate-watch
The diagram as text
  • spec:consumers.validate-watch: Validation re-runs while an author edits carriers · declared Spec
  • spec:consumers.authoring-on-ramp: Authors move one Spec from intent to reviewed evidence · declared Spec
  • impl:protocol.validate-watch: watches carrier directories and coalesces events into a pending validation rerun · anchored code · src/cli/validate-watch.ts:591
  • test:protocol.validate-watch: watch-loop checks verify the validate --watch authoring loop · anchored test binding · binding present · test/cli.test.ts:1670
  • test:protocol.validate-watch-rules: process checks verify operator stop during active corpus rules · anchored test binding · binding present · test/corpus-rules.test.ts:343
  • spec:consumers.validate-watch refines spec:consumers.authoring-on-ramp · declared
  • impl:protocol.validate-watch satisfies spec:consumers.validate-watch · anchored
  • test:protocol.validate-watch verifies spec:consumers.validate-watch · anchored
  • test:protocol.validate-watch-rules verifies spec:consumers.validate-watch · 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.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.validate-watch · watches carrier directories and coalesces events into a pending validation rerun · src/cli/validate-watch.ts:591

    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.validate-watch
Relations of spec:consumers.validate-watchdependsOn · declareddependsOn · declaredrefines · declareddependsOn · declareddependsOn · declareddependsOn · declaredOutgoing refinesspec:consumers.authoring-on-rampAuthors move one Spec fromintent to reviewed evidence…consumers.authoring-on-rampOutgoing dependsOnspec:decisions.one-validation-pathValidation follows one graph…decisions.one-validation-pathspec:extraction.excludesExtraction exclusions arestrict consumer input…extraction.excludesSubjectspec:consumers.validate-watchValidation re-runs while anauthor edits carriers…consumers.validate-watchIncoming dependsOnspec:consumers.obsidian-vault.iterationA design pass is followedand answered from the vault…consumers.obsidian-vault.iterationspec:consumers.spec-studio.publisher.watchsdp studio --watch rebuildsthe page set on eachcarrier change…consumers.spec-studio.publisher.watchspec:validation.corpus-rulesCorpus-authored rules runon the one validation path…validation.corpus-rules
The diagram as text
  • spec:consumers.authoring-on-ramp: Authors move one Spec from intent to reviewed evidence
  • spec:consumers.obsidian-vault.iteration: A design pass is followed and answered from the vault
  • spec:consumers.spec-studio.publisher.watch: sdp studio --watch rebuilds the page set on each carrier change
  • spec:consumers.validate-watch: Validation re-runs while an author edits carriers
  • spec:decisions.one-validation-path: Validation follows one graph
  • spec:extraction.excludes: Extraction exclusions are strict consumer input
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path
  • spec:consumers.validate-watch dependsOn spec:decisions.one-validation-path · declared
  • spec:consumers.validate-watch dependsOn spec:extraction.excludes · declared
  • spec:consumers.validate-watch refines spec:consumers.authoring-on-ramp · declared
  • spec:consumers.obsidian-vault.iteration dependsOn spec:consumers.validate-watch · declared — the vault's watch runs the same loop over carriers and anchored source files
  • spec:consumers.spec-studio.publisher.watch dependsOn spec:consumers.validate-watch · declared — the watch reruns on the carrier events validate's watch follows
  • spec:validation.corpus-rules dependsOn spec:consumers.validate-watch · declared — the watch loop reruns the named rules in each cycle
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.authoring-on-ramp · stated ready, floor ready
  • dependsOn · spec:decisions.one-validation-path · stated ready, floor ready
  • dependsOn · spec:extraction.excludes · stated ready, floor ready

Rested on by

Distance 1

Distance 2

  • spec:consumers.obsidian-vault.iteration.watch-rewrites-changed-notes

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.iteration.watch-rewrites-changed-notes

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.iteration.watch-source-anchor

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.iteration.watch-source-anchor

    Packs: pack:obsidian-vault-v1, pack:self-hosting-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.vault-on-ramp

    Implementing units

    • impl:protocol.vault-on-ramp · test/skills.test.ts:1995

    Referencing units

    None.

    Enabled verifiers: test:protocol.vault-on-ramp

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:validation.architecture-constraints

    Implementing units

    • impl:protocol.architecture-walk-recipe · test/architecture-recipes.test.ts:10

    Referencing units

    None.

    Enabled verifiers: spec:validation.architecture-constraints.forbidden-layer-pair, spec:validation.architecture-constraints.isolated-context-as-rule, spec:validation.architecture-constraints.unstated-layer-unclassified

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

  • spec:validation.corpus-rules.copies-contain-changes

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.copies-contain-changes

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.error-finding-fails

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.error-finding-fails

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.malformed-finding-fails

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.malformed-finding-fails

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.params-edit-starts-a-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.params-edit-starts-a-cycle

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

  • spec:validation.corpus-rules.rules-edit-starts-a-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.rules-edit-starts-a-cycle

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

  • spec:validation.corpus-rules.unreadable-params-fail-one-file

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.unreadable-params-fail-one-file

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

  • spec:validation.corpus-rules.warning-finding-informs

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.warning-finding-informs

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.external-registers

    Implementing units

    • impl:protocol.external-registers-recipe · test/external-registers.test.ts:9

    Referencing units

    None.

    Enabled verifiers: spec:validation.external-registers.uncited-on-request, spec:validation.external-registers.unknown-and-retired

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

Distance 3

  • spec:consumers.spec-studio.register-input

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:validation.architecture-constraints.forbidden-layer-pair

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.forbidden-layer-pair

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.architecture-constraints.isolated-context-as-rule

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.isolated-context-as-rule

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.architecture-constraints.unstated-layer-unclassified

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.unstated-layer-unclassified

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.external-registers.uncited-on-request

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.external-registers.uncited-on-request

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

  • spec:validation.external-registers.unknown-and-retired

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.external-registers.unknown-and-retired

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

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:decisions.one-validation-path
spec:decisions.one-validation-path · resolves
declaredNoneNone
dependsOn · outgoingspec:extraction.excludes
spec:extraction.excludes · resolves
declaredNoneNone
refines · outgoingspec:consumers.authoring-on-ramp
spec:consumers.authoring-on-ramp · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.obsidian-vault.iteration
spec:consumers.obsidian-vault.iteration · resolves
declaredthe vault's watch runs the same loop over carriers and anchored source filesNone
dependsOn · incomingspec:consumers.spec-studio.publisher.watch
spec:consumers.spec-studio.publisher.watch · resolves
declaredthe watch reruns on the carrier events validate's watch followsNone
dependsOn · incomingCorpus-authored rules run on the one validation path
spec:validation.corpus-rules · resolves
declaredthe watch loop reruns the named rules in each cycleNone

Bindings

Implementation binding: present

  • impl:protocol.validate-watch · watches carrier directories and coalesces events into a pending validation rerun · src/cli/validate-watch.ts:591 · role service · component component:protocol.cli · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.validate-watch · watch-loop checks verify the validate --watch authoring loop · anchored · test/cli.test.ts:1670 · test anchor
  • test:protocol.validate-watch-rules · process checks verify operator stop during active corpus rules · anchored · test/corpus-rules.test.ts:343 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

10. Address resolution and dependency cycles stay executable graph recipes

spec:consumers.agent-surface.address-and-cycle-recipes

Address resolution and dependency cycles stay executable graph recipes

spec:consumers.agent-surface.address-and-cycle-recipesUse Case / Behavior · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md

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

A dependency cycle is data about the authored dependencies. The readiness floor reads each dependency target's stated rung without walking a chain.

An adopter's gate checks both with copies of these bodies in its own rules file. Each recipe therefore answers with findings beside its rows, so the shipped file runs unchanged as a rules file and a gate keeps no copy. A finding is data: the corpus that names the file as a rules file chooses to fail on it, and the recipe still refuses nothing.

Intent
problem
An adopter that cites entry addresses outside its Specs resolves each one with its own grammar, and a Spec can rest on itself through a dependsOn chain no one has traced.
outcome
Resolve a list of entry addresses and report every dependsOn cycle with catalog recipes, so neither is rebuilt by hand.
Behavior
rule line 28 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:28
Address resolution reads params.addresses, falling back to the catalog sample when absent, and returns one row per input in input order, repeats included; each row carries address, resolves, id, section, key, value, file, line and reason. A resolving row carries the entry text or value and its recorded file and line, null when unlocated, with reason null. A miss keeps id, section and key when parsed, keeps value, file and line null, and gives reason malformed for an input that is no entry address, a bare Spec id included, or spec, section or entry for an absent Spec, section or key; malformed carries expected, the grammar in one line, and section or entry carries available, the keys that section holds sorted in code-unit order.
rule line 29 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:29
Address resolution follows the checked-mentions address grammar: a design or ui key resolves as an own key other than description, a question key resolves when an open question carries it, a rule key resolves through behavior.ruleKeys to its rule or flow text, and a term key resolves through model.termKeys to its term's definition; totals count inputs, resolving rows and each miss reason.
rule line 30 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:30
Dependency cycles take no parameter other than severity and read the whole graph. They report every set of two or more Specs in which each Spec reaches every other through declared dependsOn edges, and every Spec that declares dependsOn on itself and belongs to no such set. An edge whose target is not a Spec in the graph is ignored.
rule line 31 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:31
Each reported set lists its members sorted by id in code-unit order and one cycle through it as a closed path that starts and ends at its first member. The cycle is the shortest such path, found by a breadth-first walk from the first member over targets in code-unit order and restricted to the set; a Spec that depends only on itself reports the path of that Spec twice. Sets are ordered by their first member, and the totals count the sets, the self-dependent Specs, and the Specs in any set.
rule line 32 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:32
Both recipes report their answers and never refuse an authored dependency cycle.
rule.addressFindings line 33 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:33
Address resolution answers with findings beside its totals and rows: one finding for each row that does not resolve, in input order, the catalog sample's rows included, so the shipped file runs as a rules file over the addresses its --params names.

spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · enabled

rule.cycleFindings line 34 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:34
Dependency cycles answers with findings beside its totals and cycles: one finding for each entry of cycles, in that order, naming the first member and the closed path through the set.

spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing · enabled, spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · enabled

rule.findingsSeverity line 35 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:35
Both recipes take params.severity, "error" by default or "warning", which every finding they return carries; another value returns { diagnostics } and no findings, which fails the file as a rules file.

spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · enabled, spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · enabled

rule.answersUnchanged line 36 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:36
Apart from findings, both answers keep their shapes: the totals, rows and cycles stated above.

spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing · enabled

5 unkeyed rules.

Verifying examples

A dependency chain with no cycle yields no finding · spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing · ready floor ready

Executable Spec

Given a probe corpus in which {corpus: "one Spec depends on another"}
Given the caller passes the addresses {addresses: "none"}
When the shipped {recipe: "dependency cycles"} file runs {invocation: "through sdp q"}
Then the command exits {exitCode: 0}
Then the answer carries {findings: 0} findings with the rule ids {ruleIds: ""}

Open example

The shipped dependency-cycles file fails a rules run on a cycle · spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · ready floor ready

Executable Spec

Given a probe corpus in which {corpus: "two Specs depend on each other through dependsOn"}
Given the caller passes the addresses {addresses: "none"}
When the shipped {recipe: "dependency cycles"} file runs {invocation: "as a rules file named by sdp validate --rules"}
Then the command exits {exitCode: 1}
Then the answer carries {findings: 1} findings with the rule ids {ruleIds: "dependency-cycle"}

Open example

The shipped address-resolution file fails a rules run on an address that names no entry · spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · ready floor ready

Executable Spec

Given a probe corpus in which {corpus: "one Spec depends on another"}
Given the caller passes the addresses {addresses: "spec:probe.one#design.absent"}
When the shipped {recipe: "address resolution"} file runs {invocation: "as a rules file named by sdp validate --rules"}
Then the command exits {exitCode: 1}
Then the answer carries {findings: 1} findings with the rule ids {ruleIds: "unresolved-address"}

Open example

Example space

Given a probe corpus in which {corpus:"two Specs depend on each other through dependsOn"|"one Spec depends on another"}
Given the caller passes the addresses {addresses:string}
When the shipped {recipe:"address resolution"|"dependency cycles"} file runs {invocation:"through sdp q"|"as a rules file named by sdp validate --rules"}
Then the command exits {exitCode:number}
Then the answer carries {findings:number} findings with the rule ids {ruleIds:string}
Design
addressFinding line 39 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:39
{ validatorId: "unresolved-address", subjectId, severity, message }, where subjectId is the input when it is a string holding at least one character that is not white space, and the input's JSON text otherwise, and message reads <subjectId> does not resolve: <why>, <why> being not an entry address, no Spec <id>, <id> has no <section> entries or <id> has no <section> entry <key> by the row's reason.

no citation recorded

cycleFinding line 40 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:40
{ validatorId: "dependency-cycle", subjectId, severity, message, file, line }, where subjectId is the entry's first member, message reads <first member> rests on itself through dependsOn: <cycle>, <cycle> being the entry's closed path joined by -> , file is the first member's carrier, and line is the line the location table records for its dependsOn relation to the path's second id, left out when not located.

no citation recorded

severityDiagnostic line 41 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:41
{ diagnostics: [{ parameter: "severity", problem: "Expected error or warning." }] } is the whole answer for a severity other than "error" or "warning".

no citation recorded

answerShapes line 42 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:42
address resolution returns { totals, rows, findings } and dependency cycles returns { totals, cycles, findings }; each recipe's accepted names gain severity, after its existing ones.
Verification

Verifier bindings

Example space

  • corpus · "two Specs depend on each other through dependsOn" | "one Spec depends on another" · declared by a probe corpus in which {corpus}
  • addresses · string · declared by the caller passes the addresses {addresses}
  • recipe · "address resolution" | "dependency cycles" · declared by the shipped {recipe} file runs {invocation}
  • invocation · "through sdp q" | "as a rules file named by sdp validate --rules" · declared by the shipped {recipe} file runs {invocation}

Bound points

Examplecorpusaddressesrecipeinvocation
spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing"one Spec depends on another""none""dependency cycles""through sdp q"
spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run"two Specs depend on each other through dependsOn""none""dependency cycles""as a rules file named by sdp validate --rules"
spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run"one Spec depends on another""spec:probe.one#design.absent""address resolution""as a rules file named by sdp validate --rules"

Oracle binding: present · oracle:protocol.consumers.agent-surface.address-and-cycle-recipes · test/reach-examples.test.ts:174

Coverage

addresses: "none" · spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing, spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run; "spec:probe.one#design.absent" · spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · not enumerable

Unbound

  • corpus: None
  • addresses: None
  • recipe: None
  • invocation: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.agent-surface.address-and-cycle-recipes
The diagram as text
  • spec:consumers.agent-surface.address-and-cycle-recipes: Address resolution and dependency cycles stay executable graph recipes · declared Spec
  • spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing: A dependency chain with no cycle yields no finding · declared Spec
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run: The shipped dependency-cycles file fails a rules run on a cycle · declared Spec
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run: The shipped address-resolution file fails a rules run on an address that names no entry · declared Spec
  • spec:consumers.agent-surface.register-recipes: Register questions stay executable graph recipes · declared Spec
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path · declared Spec
  • impl:protocol.address-and-cycle-recipes: asserts realization of the shipped address resolution and dependency cycle recipes · anchored code · test/recipes.test.ts:3568
  • oracle:protocol.consumers.agent-surface.address-and-cycle-recipes: oracle:protocol.consumers.agent-surface.address-and-cycle-recipes · anchored oracle binding · test/reach-examples.test.ts:174
  • test:protocol.address-and-cycle-recipes: recipe checks verify the address resolution and dependency cycle recipes · anchored test binding · binding present · test/recipes.test.ts:3577
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing: test:protocol.consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing · anchored test binding · binding present · test/reach-examples.test.ts:422
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run: test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · anchored test binding · binding present · test/reach-examples.test.ts:430
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run: test:protocol.consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · anchored test binding · binding present · test/reach-examples.test.ts:438
  • spec:consumers.agent-surface.address-and-cycle-recipes refines spec:consumers.agent-surface.register-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing verifies spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:validation.corpus-rules · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run verifies spec:validation.corpus-rules · declared
  • impl:protocol.address-and-cycle-recipes satisfies spec:consumers.agent-surface.address-and-cycle-recipes · anchored
  • oracle:protocol.consumers.agent-surface.address-and-cycle-recipes models spec:consumers.agent-surface.address-and-cycle-recipes · anchored
  • test:protocol.address-and-cycle-recipes verifies spec:consumers.agent-surface.address-and-cycle-recipes · anchored
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing verifies spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing · anchored
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · anchored
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-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

No decision record named.

Runtime
  • impl:protocol.address-and-cycle-recipes · asserts realization of the shipped address resolution and dependency cycle recipes · test/recipes.test.ts:3568

    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.address-and-cycle-recipes
Relations of spec:consumers.agent-surface.address-and-cycle-recipesdependsOn · declaredrefines · declaredrefines · declaredverifies · declaredrefines · declaredverifies · declaredrefines · declaredverifies · declareddependsOn · declareddependsOn · declaredOutgoing refinesspec:consumers.agent-surface.register-recipesRegister questions stayexecutable graph recipes…agent-surface.register-recipesOutgoing dependsOnspec:consumers.agent-surface.address-and-cycle-recipes.fold.Outgoing.dependsOn4 Outgoing dependsOn, folded…agent-surface.address-and-cycle-recipes.fold.Outgoing.dependsOnSubjectspec:consumers.agent-surface.address-and-cycle-recipesAddress resolution anddependency cycles stayexecutable graph recipes…agent-surface.address-and-cycle-recipesIncoming refinesspec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothingA dependency chain with nocycle yields no finding…agent-surface.address-and-cycle-recipes.chain-reports-nothingspec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-runThe shippeddependency-cycles filefails a rules run on a cycle…agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-runspec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-runThe shippedaddress-resolution filefails a rules run on anaddress that names no entry…agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-runIncoming dependsOnspec:consumers.intent-composition.proposalA change proposal isaddressed, based andchecked before it lands…intent-composition.proposalspec:consumers.readiness-plannerThe readiness plannerorders the statements aperson can make…readiness-planner
The diagram as text
  • spec:consumers.agent-surface.address-and-cycle-recipes: Address resolution and dependency cycles stay executable graph recipes
  • spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing: A dependency chain with no cycle yields no finding
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run: The shipped dependency-cycles file fails a rules run on a cycle
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run: The shipped address-resolution file fails a rules run on an address that names no entry
  • spec:consumers.agent-surface.recipe-parameters: Recipes take parameters as data and ship as runnable files
  • spec:consumers.agent-surface.register-recipes: Register questions stay executable graph recipes
  • spec:consumers.intent-composition.proposal: A change proposal is addressed, based and checked before it lands
  • spec:consumers.readiness-planner: The readiness planner orders the statements a person can make
  • spec:decisions.checked-mentions: A Spec id written in prose is a checked mention
  • 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.agent-surface.address-and-cycle-recipes dependsOn spec:consumers.agent-surface.recipe-parameters · declared — address resolution reads its addresses from params
  • spec:consumers.agent-surface.address-and-cycle-recipes dependsOn spec:decisions.checked-mentions · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes dependsOn spec:model.rule-keys · declared — a rule address resolves through the Spec's rule keys
  • spec:consumers.agent-surface.address-and-cycle-recipes dependsOn spec:model.term-addresses · declared — a term address resolves through the Spec's term keys
  • spec:consumers.agent-surface.address-and-cycle-recipes refines spec:consumers.agent-surface.register-recipes · declared
  • spec:consumers.intent-composition.proposal dependsOn spec:consumers.agent-surface.address-and-cycle-recipes · declared — the check resolves entry-address scopes through address resolution
  • spec:consumers.readiness-planner dependsOn spec:consumers.agent-surface.address-and-cycle-recipes · declared — a cycle among waiting Specs reports in the shape dependency cycles reports
  • spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing verifies spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes · 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.register-recipes · stated ready, floor ready
  • dependsOn · spec:consumers.agent-surface.recipe-parameters · stated ready, floor ready
  • dependsOn · spec:decisions.checked-mentions · stated ready, floor ready
  • dependsOn · spec:model.rule-keys · stated ready, floor ready
  • dependsOn · spec:model.term-addresses · stated ready, floor ready

Rested on by

Distance 1

Distance 2

  • spec:consumers.delivery-session-on-ramp

    Implementing units

    • impl:protocol.delivery-session-on-ramp · test/skills.test.ts:83

    Referencing units

    None.

    Enabled verifiers: test:protocol.delivery-session-on-ramp

    Packs: pack:self-hosting-v1

  • spec:consumers.design-slice

    Implementing units

    • impl:protocol.design-slice-recipe · test/self-hosting-design-slice.test.ts:148

    Referencing units

    • impl:protocol.studio-slice-answer · src/projections/studio/slice-answer.ts:1

    Enabled verifiers: spec:consumers.design-slice.chain, spec:consumers.design-slice.component-absent, spec:consumers.design-slice.component-differing, spec:consumers.design-slice.component-matching, spec:consumers.design-slice.component-unreadable, spec:consumers.design-slice.component-unrelated, spec:consumers.design-slice.decision-backlink, spec:consumers.design-slice.dependency-cycle, spec:consumers.design-slice.folded-example, spec:consumers.design-slice.independent-example, spec:consumers.design-slice.outside-components, spec:consumers.design-slice.outside-holding, spec:consumers.design-slice.outside-satisfied, spec:consumers.design-slice.outside-unbound, test:protocol.design-slice

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

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

    Implementing units

    • impl:protocol.proposal-memo-recipe · test/recipes.test.ts:7298
    • impl:protocol.studio-proposal-memo · src/studio-elements/memo.ts:13

    Referencing units

    None.

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

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

  • spec:consumers.obsidian-vault.iteration

    Implementing units

    • impl:protocol.vault-sync · src/projections/vault/sync.ts:98
    • impl:protocol.vault-text · src/projections/vault/text.ts:30
    • impl:protocol.vault-watch · src/cli/vault-command.ts:219

    Referencing units

    None.

    Enabled verifiers: spec:consumers.obsidian-vault.iteration.watch-rewrites-changed-notes, spec:consumers.obsidian-vault.iteration.watch-source-anchor

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.readiness-planner.cycle-shares-a-round

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.cycle-shares-a-round

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

  • spec:consumers.readiness-planner.decision-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.decision-first

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

  • spec:consumers.readiness-planner.dependency-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.dependency-order

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

  • spec:consumers.readiness-planner.owner-question-holds

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.owner-question-holds

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

  • spec:consumers.roadmap

    Implementing units

    • impl:protocol.roadmap-recipe · test/roadmap.test.ts:20

    Referencing units

    None.

    Enabled verifiers: spec:consumers.roadmap.blocking-part, spec:consumers.roadmap.buildable-part, spec:consumers.roadmap.built-work, spec:consumers.roadmap.design-part, spec:consumers.roadmap.drifting-part, spec:consumers.roadmap.missing-evidence, spec:consumers.roadmap.outside-parent, spec:consumers.roadmap.statement-order, spec:consumers.roadmap.statement-part, test:protocol.roadmap-recipe

    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: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.upgrade-kit.rule-key-proposal

    Implementing units

    • impl:protocol.rule-key-proposal-recipe · test/upgrade-kit.test.ts:742

    Referencing units

    None.

    Enabled verifiers: spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable, spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean

    Packs: pack:adopter-speed-v1, pack:self-hosting-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 3

  • spec:consumers.design-slice.chain

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.chain

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

  • spec:consumers.design-slice.component-absent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-absent

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

  • spec:consumers.design-slice.component-differing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-differing

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

  • spec:consumers.design-slice.component-matching

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-matching

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

  • spec:consumers.design-slice.component-unreadable

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-unreadable

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

  • spec:consumers.design-slice.component-unrelated

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-unrelated

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

  • spec:consumers.design-slice.decision-backlink

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.decision-backlink

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

  • spec:consumers.design-slice.dependency-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.dependency-cycle

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

  • spec:consumers.design-slice.folded-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.folded-example

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

  • spec:consumers.design-slice.independent-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.independent-example

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

  • spec:consumers.design-slice.outside-components

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-components

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

  • spec:consumers.design-slice.outside-holding

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-holding

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

  • spec:consumers.design-slice.outside-satisfied

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-satisfied

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

  • spec:consumers.design-slice.outside-unbound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-unbound

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

  • spec:consumers.graph-first-planning

    Implementing units

    • impl:protocol.graph-first-planning · test/skills.test.ts:290

    Referencing units

    None.

    Enabled verifiers: test:protocol.graph-first-planning

    Packs: pack:self-hosting-v1

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

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-memo-shared

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

  • spec:consumers.obsidian-vault.iteration.watch-rewrites-changed-notes

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.iteration.watch-rewrites-changed-notes

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.iteration.watch-source-anchor

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.iteration.watch-source-anchor

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.projections-model.roadmap-views

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:consumers.roadmap.blocking-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.blocking-part

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

  • spec:consumers.roadmap.buildable-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.buildable-part

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

  • spec:consumers.roadmap.built-work

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.built-work

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

  • spec:consumers.roadmap.design-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.design-part

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

  • spec:consumers.roadmap.drifting-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.drifting-part

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-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.roadmap.missing-evidence

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.missing-evidence

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

  • spec:consumers.roadmap.outside-parent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.outside-parent

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

  • spec:consumers.roadmap.statement-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.statement-order

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

  • spec:consumers.roadmap.statement-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.statement-part

    Packs: pack:roadmaps-and-slices-v1, 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.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.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.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.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.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.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

    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:consumers.upgrade-kit

    Implementing units

    • impl:protocol.upgrade-guide · test/upgrade-kit.test.ts:87

    Referencing units

    None.

    Enabled verifiers: test:protocol.upgrade-guide

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

  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.rule-key-proposal.collision-and-unkeyable

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

  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.rule-key-proposal.proposal-applies-clean

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

  • spec:consumers.vault-on-ramp

    Implementing units

    • impl:protocol.vault-on-ramp · test/skills.test.ts:1995

    Referencing units

    None.

    Enabled verifiers: test:protocol.vault-on-ramp

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:protocol.delivery-record-cleanup

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

Distance 4

  • spec:consumers.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

  • 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.upgrade-kit.capability-adoption

    Implementing units

    • impl:protocol.capability-adoption-recipe · test/upgrade-kit.test.ts:514

    Referencing units

    None.

    Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus

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

Distance 5

  • 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.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.upgrade-kit.capability-adoption.counts-a-corpus

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus

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

Distance 6

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

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

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:consumers.agent-surface.recipe-parameters
spec:consumers.agent-surface.recipe-parameters · resolves
declaredaddress resolution reads its addresses from paramsNone
dependsOn · outgoingA Spec id written in prose is a checked mention
spec:decisions.checked-mentions · resolves
declaredNoneNone
dependsOn · outgoingspec:model.rule-keys
spec:model.rule-keys · resolves
declareda rule address resolves through the Spec's rule keysNone
dependsOn · outgoingA Model term may carry a key that addresses it
spec:model.term-addresses · resolves
declareda term address resolves through the Spec's term keysNone
refines · outgoingspec:consumers.agent-surface.register-recipes
spec:consumers.agent-surface.register-recipes · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.intent-composition.proposal
spec:consumers.intent-composition.proposal · resolves
declaredthe check resolves entry-address scopes through address resolutionNone
dependsOn · incomingThe readiness planner orders the statements a person can make
spec:consumers.readiness-planner · resolves
declareda cycle among waiting Specs reports in the shape dependency cycles reportsNone
refines · incomingA dependency chain with no cycle yields no finding
spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing · resolves
declaredNoneNone
refines · incomingThe shipped dependency-cycles file fails a rules run on a cycle
spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · resolves
declaredNoneNone
refines · incomingThe shipped address-resolution file fails a rules run on an address that names no entry
spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · resolves
declaredNoneNone
verifies · incomingA dependency chain with no cycle yields no finding
spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing · resolves
declaredNonecycleFindings, answersUnchanged
verifies · incomingThe shipped dependency-cycles file fails a rules run on a cycle
spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · resolves
declaredNonecycleFindings, findingsSeverity
verifies · incomingThe shipped address-resolution file fails a rules run on an address that names no entry
spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · resolves
declaredNoneaddressFindings, findingsSeverity

Bindings

Implementation binding: present

  • impl:protocol.address-and-cycle-recipes · asserts realization of the shipped address resolution and dependency cycle recipes · test/recipes.test.ts:3568

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.consumers.agent-surface.address-and-cycle-recipes · test/reach-examples.test.ts:174

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

11. A dependency chain with no cycle yields no finding

spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing

A dependency chain with no cycle yields no finding

spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothingExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/agent-surface.address-and-cycle-recipes.chain-reports-nothing.sdp.md

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

Intent
outcome
Execute the cycle findings through sdp q over a chain, which reports no set and carries no finding.
assumptions
  • The world writes the probe corpus of the unresolved-address example and runs sdp q --json on its root with the text of dist/recipes/26-dependency-cycles.js as the body and no --params, which the addresses none names. It reads the exit code, the answer's findings and the answer's keys, which are totals, cycles and findings.
Behavior

Examples

Given a probe corpus in which {corpus: "one Spec depends on another"}
Given the caller passes the addresses {addresses: "none"}
When the shipped {recipe: "dependency cycles"} file runs {invocation: "through sdp q"}
Then the command exits {exitCode: 0}
Then the answer carries {findings: 0} findings with the rule ids {ruleIds: ""}
Verification

Verifier bindings

  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing · anchored · test anchor binding present · test/reach-examples.test.ts:422
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing
The diagram as text
  • spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing: A dependency chain with no cycle yields no finding · declared Spec
  • spec:consumers.agent-surface.address-and-cycle-recipes: Address resolution and dependency cycles stay executable graph recipes · declared Spec
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing: test:protocol.consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing · anchored test binding · binding present · test/reach-examples.test.ts:422
  • spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing verifies spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing verifies spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing · 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.address-and-cycle-recipes.chain-reports-nothing
  • E2: verifies · declared
The diagram as text
  • spec:consumers.agent-surface.address-and-cycle-recipes: Address resolution and dependency cycles stay executable graph recipes
  • spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing: A dependency chain with no cycle yields no finding
  • spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing verifies spec:consumers.agent-surface.address-and-cycle-recipes · 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 · outgoingAddress resolution and dependency cycles stay executable graph recipes
spec:consumers.agent-surface.address-and-cycle-recipes · resolves
declaredNoneNone
verifies · outgoingAddress resolution and dependency cycles stay executable graph recipes
spec:consumers.agent-surface.address-and-cycle-recipes · resolves
declaredNonecycleFindings, answersUnchanged

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing · anchored · test/reach-examples.test.ts:422 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

12. The shipped dependency-cycles file fails a rules run on a cycle

spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run

The shipped dependency-cycles file fails a rules run on a cycle

spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-runExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-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 cycle findings by naming the shipped dependency-cycles file as a rules file over a corpus with one cycle.
assumptions
  • The world writes a probe corpus of two story-altitude behavior Specs, each stating idea with an Intent outcome and each declaring dependsOn on the other, which the Protocol's validators find clean. It runs sdp validate on the probe root with dist/recipes/26-dependency-cycles.js named by --rules and no --params, which the addresses none names. The findings are the corpus findings the run prints, and the rule ids are their rule ids joined by a comma and a space.
Behavior

Examples

Given a probe corpus in which {corpus: "two Specs depend on each other through dependsOn"}
Given the caller passes the addresses {addresses: "none"}
When the shipped {recipe: "dependency cycles"} file runs {invocation: "as a rules file named by sdp validate --rules"}
Then the command exits {exitCode: 1}
Then the answer carries {findings: 1} findings with the rule ids {ruleIds: "dependency-cycle"}
Verification

Verifier bindings

  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · anchored · test anchor binding present · test/reach-examples.test.ts:430
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run
The diagram as text
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run: The shipped dependency-cycles file fails a rules run on a cycle · declared Spec
  • spec:consumers.agent-surface.address-and-cycle-recipes: Address resolution and dependency cycles stay executable graph recipes · declared Spec
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path · declared Spec
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run: test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · anchored test binding · binding present · test/reach-examples.test.ts:430
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:validation.corpus-rules · declared
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-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.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run
The diagram as text
  • spec:consumers.agent-surface.address-and-cycle-recipes: Address resolution and dependency cycles stay executable graph recipes
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run: The shipped dependency-cycles file fails a rules run on a cycle
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run verifies spec:validation.corpus-rules · 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 · outgoingAddress resolution and dependency cycles stay executable graph recipes
spec:consumers.agent-surface.address-and-cycle-recipes · resolves
declaredNoneNone
verifies · outgoingAddress resolution and dependency cycles stay executable graph recipes
spec:consumers.agent-surface.address-and-cycle-recipes · resolves
declaredNonecycleFindings, findingsSeverity
verifies · outgoingCorpus-authored rules run on the one validation path
spec:validation.corpus-rules · resolves
declaredNonerecipesAsRules

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · anchored · test/reach-examples.test.ts:430 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

13. The shipped address-resolution file fails a rules run on an address that names no entry

spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run

The shipped address-resolution file fails a rules run on an address that names no entry

spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-runExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-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 address findings by naming the shipped address-resolution file as a rules file with one address its Spec does not carry.
assumptions
  • The world writes a probe corpus of two story-altitude behavior Specs stating idea, each with an Intent outcome, the first declaring dependsOn on the second, which the Protocol's validators find clean; the first Spec's id is the one the address names. It runs sdp validate on the probe root with dist/recipes/25-address-resolution.js named by --rules and followed by --params holding the address as addresses. The findings and rule ids are read as in the cycle example.
Behavior

Examples

Given a probe corpus in which {corpus: "one Spec depends on another"}
Given the caller passes the addresses {addresses: "spec:probe.one#design.absent"}
When the shipped {recipe: "address resolution"} file runs {invocation: "as a rules file named by sdp validate --rules"}
Then the command exits {exitCode: 1}
Then the answer carries {findings: 1} findings with the rule ids {ruleIds: "unresolved-address"}
Verification

Verifier bindings

  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · anchored · test anchor binding present · test/reach-examples.test.ts:438
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run
The diagram as text
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run: The shipped address-resolution file fails a rules run on an address that names no entry · declared Spec
  • spec:consumers.agent-surface.address-and-cycle-recipes: Address resolution and dependency cycles stay executable graph recipes · declared Spec
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path · declared Spec
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run: test:protocol.consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · anchored test binding · binding present · test/reach-examples.test.ts:438
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run verifies spec:validation.corpus-rules · declared
  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-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.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run
The diagram as text
  • spec:consumers.agent-surface.address-and-cycle-recipes: Address resolution and dependency cycles stay executable graph recipes
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run: The shipped address-resolution file fails a rules run on an address that names no entry
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run refines spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run verifies spec:consumers.agent-surface.address-and-cycle-recipes · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run verifies spec:validation.corpus-rules · 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 · outgoingAddress resolution and dependency cycles stay executable graph recipes
spec:consumers.agent-surface.address-and-cycle-recipes · resolves
declaredNoneNone
verifies · outgoingAddress resolution and dependency cycles stay executable graph recipes
spec:consumers.agent-surface.address-and-cycle-recipes · resolves
declaredNoneaddressFindings, findingsSeverity
verifies · outgoingCorpus-authored rules run on the one validation path
spec:validation.corpus-rules · resolves
declaredNonerecipesAsRules

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · anchored · test/reach-examples.test.ts:438 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

14. A corpus checks the register tokens its prose cites

spec:validation.external-registers

A corpus checks the register tokens its prose cites

spec:validation.external-registersUse Case / Behavior · storyready floor ready

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

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

Findings: no errors, no warnings

specs/validation/external-registers.sdp.md

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

A corpus written against an earlier design cites that design's numbered things by token: its decisions, laws, scenarios, and the extensions the corpus itself adds. The first adopter keeps such a register as a table in its design README and checks the tokens its Specs cite against it with a script that reads the carriers a second way (libar-platform/design/tools/check.py). A register is the corpus's own data and never the Protocol's. A token stays prose: the carrier gains no grammar for it and the graph mints no node for it. Recipe 50 reads the tokens the Specs already hold as text, finds them by a pattern the corpus gives, checks them against a register file the corpus passes, and answers with findings, so the check runs as a rules file on the one validation path. Which registers a corpus may cite, and so which files it passes, is its owner's ruling.

Intent
problem
A corpus that cites the tokens of an outside register checks them with a script that reads its carriers a second way, or does not check them at all.
outcome
Check the tokens a corpus cites from an outside register against a register file it supplies, as a rules file, with no new grammar and no graph node.
Behavior
rule.tokensStayProse line 27 · specs/validation/external-registers.sdp.md:27
A register token stays prose: the carrier gains no grammar for it, the graph holds no node or edge for it, and no Protocol validator reads it.

no example exercises it

rule.registerAsData line 28 · specs/validation/external-registers.sdp.md:28
External registers, recipe 50, takes the register as data, a file the corpus passes with --params register=@PATH, and the pattern that finds the register's tokens in text, and reads the graph and nothing else.

spec:validation.external-registers.unknown-and-retired · enabled

rule.textRead line 29 · specs/validation/external-registers.sdp.md:29
It reads every string entry search walks in each Spec, the narrative and every section value with the keys an author coins, open questions and their fields and example steps included, plus each Spec's title and the reason of each relation it declares; it reads no id, fixed field name, Pack manifest, file or source.

no example exercises it

rule.citation line 30 · specs/validation/external-registers.sdp.md:30
Each match of the pattern in one of those strings cites the matched text as a token, at that Spec and entry.

spec:validation.external-registers.unknown-and-retired · enabled

rule.unknownToken line 31 · specs/validation/external-registers.sdp.md:31
A cited token the register does not list is an unknown-token finding, once per citing Spec and token.

spec:validation.external-registers.unknown-and-retired · enabled

rule.retiredToken line 32 · specs/validation/external-registers.sdp.md:32
A cited token the register retires is a retired-token finding, once per citing Spec and token.

spec:validation.external-registers.unknown-and-retired · enabled

rule.uncitedToken line 33 · specs/validation/external-registers.sdp.md:33
When the caller passes uncited: true, each token the register holds that no Spec cites is an uncited-token finding; a retired token is never one.

spec:validation.external-registers.uncited-on-request · enabled

rule.asRulesFile line 34 · specs/validation/external-registers.sdp.md:34
The answer carries its findings, so the shipped file runs unchanged as a rules file at the severity the corpus passes; a corpus that checks several registers calls the recipe once per register through recipes from a rules file of its own, because one rules file is named once.

spec:validation.external-registers.uncited-on-request · enabled, spec:validation.external-registers.unknown-and-retired · enabled

rule line 35 · specs/validation/external-registers.sdp.md:35
The recipe reports and refuses nothing, and states no register: what an outside design may be cited for stays the corpus's own text.

1 unkeyed rule.

Verifying examples

A held token no Spec cites fails a rules run only when the caller asks · spec:validation.external-registers.uncited-on-request · ready floor ready

Executable Spec

Given a probe corpus whose Spec cites the tokens {cited: "E-1"}
Given a register file that holds {held: "E-1 E-2"} and retires {retired: ""}
When the shipped external-registers file runs as a rules file with the pattern for E-numbers and uncited {uncited: true}
Then the command exits {exitCode: 1}
Then the corpus findings carry the rule ids {ruleIds: "uncited-token"}

Open example

A cited token the register lacks or retires fails a rules run · spec:validation.external-registers.unknown-and-retired · ready floor ready

Executable Spec

Given a probe corpus whose Spec cites the tokens {cited: "E-1 E-7 E-9"}
Given a register file that holds {held: "E-1 E-2"} and retires {retired: "E-7"}
When the shipped external-registers file runs as a rules file with the pattern for E-numbers and uncited {uncited: false}
Then the command exits {exitCode: 1}
Then the corpus findings carry the rule ids {ruleIds: "retired-token, unknown-token"}

Open example

Example space

Given a probe corpus whose Spec cites the tokens {cited:string}
Given a register file that holds {held:string} and retires {retired:string}
When the shipped external-registers file runs as a rules file with the pattern for E-numbers and uncited {uncited:boolean}
Then the command exits {exitCode:number}
Then the corpus findings carry the rule ids {ruleIds:string}
Design
registerFile line 38 · specs/validation/external-registers.sdp.md:38
{ "tokens": [token] }, where each token is a non-empty string the register holds, or { "token": "<string>", "retired": <boolean> }, retired when retired is true and held otherwise; other keys of the file and of a token object are the corpus's own and ignored, so a register may carry its own columns.

no citation recorded

registerParams line 39 · specs/validation/external-registers.sdp.md:39
recipe 50 takes params.register, the register file's object, params.pattern, params.severity, "error" by default or "warning", and params.uncited, false by default; register and pattern have no sample, and a missing or malformed parameter returns { diagnostics: [{ parameter, problem }] } and no findings, which fails the file as a rules file.
patternParam line 40 · specs/validation/external-registers.sdp.md:40
params.pattern is the source of a JavaScript regular expression compiled with the flags gu, whose whole match is the token; a pattern that does not compile, that matches the empty string, or that fails to match each of the register's tokens whole is a diagnostic, as is a token the register lists twice.

no citation recorded

registerAnswer line 41 · specs/validation/external-registers.sdp.md:41
{ input: { pattern, severity, uncited }, totals: { specs, citations, tokens, unknown, retired, uncited }, tokens, findings }, where specs counts the Specs read, citations the matches, tokens the distinct cited tokens, and the last three the findings of each rule id.

no citation recorded

tokenRow line 42 · specs/validation/external-registers.sdp.md:42
{ token, held, retired, citations, specs } for each distinct cited token in code-unit order, where specs lists the citing Specs by id and an unknown token has held and retired false.

no citation recorded

tokenFinding line 43 · specs/validation/external-registers.sdp.md:43
{ validatorId, subjectId, relatedId, severity, message, file, path, line } for unknown-token and retired-token, where subjectId is the citing Spec, relatedId the token, file the Spec's carrier, path the first citing text, in the order the title, the narrative and sections as entry search walks them, then relation reasons as authored, written title, a text path in the form the prose-mention check writes, such as narrative, behavior.rules[2] or design.<key>, or relation.<type>.<target>, and line that text's recorded line, left out when not located; findings sort by Spec id, then token.

no citation recorded

tokenMessages line 44 · specs/validation/external-registers.sdp.md:44
<spec> cites <token>, which the register does not list for unknown-token, <spec> cites <token>, which the register retires for retired-token, and <token> is held by the register and no Spec cites it for uncited-token.

no citation recorded

uncitedFinding line 45 · specs/validation/external-registers.sdp.md:45
{ validatorId: "uncited-token", subjectId, severity, message }, where subjectId is the token; these findings follow the others, in the register's order.

no citation recorded

Verification

Verifier bindings

Example space

  • cited · string · declared by a probe corpus whose Spec cites the tokens {cited}
  • held · string · declared by a register file that holds {held} and retires {retired}
  • retired · string · declared by a register file that holds {held} and retires {retired}
  • uncited · boolean · declared by the shipped external-registers file runs as a rules file with the pattern for E-numbers and uncited {uncited}

Bound points

Examplecitedheldretireduncited
spec:validation.external-registers.uncited-on-request"E-1""E-1 E-2"""true
spec:validation.external-registers.unknown-and-retired"E-1 E-7 E-9""E-1 E-2""E-7"false

Oracle binding: present · oracle:protocol.external-registers · test/self-hosting-external-registers.test.ts:29

Coverage

cited: "E-1" · spec:validation.external-registers.uncited-on-request; "E-1 E-7 E-9" · spec:validation.external-registers.unknown-and-retired · not enumerable

held: "E-1 E-2" · spec:validation.external-registers.uncited-on-request, spec:validation.external-registers.unknown-and-retired · not enumerable

retired: "" · spec:validation.external-registers.uncited-on-request; "E-7" · spec:validation.external-registers.unknown-and-retired · not enumerable

uncited: true · spec:validation.external-registers.uncited-on-request; false · spec:validation.external-registers.unknown-and-retired · not enumerable

Unbound

  • cited: None
  • held: None
  • retired: None
  • uncited: None
Design view

Requirement drawing

Requirement drawing for spec:validation.external-registers
Requirement drawing for spec:validation.external-registerssatisfies · anchoredmodels · anchoredrefines · declaredrefines, verifies · declaredrefines, verifies · declaredverifies · anchoredverifies · anchoredIntended Specsspec:validation.external-registersA corpus checks theregister tokens its prosecites…validation.external-registersdeclared SpecDeclared verifying examplesspec:validation.external-registers.uncited-on-requestA held token no Spec citesfails a rules run only whenthe caller asks…validation.external-registers.uncited-on-requestdeclared Specspec:validation.external-registers.unknown-and-retiredA cited token the registerlacks or retires fails arules run…validation.external-registers.unknown-and-retireddeclared SpecSatisfying or referencingunitsimpl:protocol.external-registers-recipeasserts realization of theshipped external-registersrecipe…protocol.external-registers-recipeanchored codeTest or oracle bindingsoracle:protocol.external-registersoracle:protocol.external-registers…protocol.external-registersanchored oracle bindingtest:protocol.external-registers.uncited-on-requesttest:protocol.external-registers.uncited-on-request…protocol.external-registers.uncited-on-requestanchored test binding ·binding presenttest:protocol.external-registers.unknown-and-retiredtest:protocol.external-registers.unknown-and-retired…protocol.external-registers.unknown-and-retiredanchored test binding ·binding presentOutside the selected setspec:validation.corpus-rulesCorpus-authored rules runon the one validation path…validation.corpus-rulesdeclared Spec
The diagram as text
  • spec:validation.external-registers: A corpus checks the register tokens its prose cites · declared Spec
  • spec:validation.external-registers.uncited-on-request: A held token no Spec cites fails a rules run only when the caller asks · declared Spec
  • spec:validation.external-registers.unknown-and-retired: A cited token the register lacks or retires fails a rules run · declared Spec
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path · declared Spec
  • impl:protocol.external-registers-recipe: asserts realization of the shipped external-registers recipe · anchored code · test/external-registers.test.ts:9
  • oracle:protocol.external-registers: oracle:protocol.external-registers · anchored oracle binding · test/self-hosting-external-registers.test.ts:29
  • test:protocol.external-registers.uncited-on-request: test:protocol.external-registers.uncited-on-request · anchored test binding · binding present · test/self-hosting-external-registers.test.ts:128
  • test:protocol.external-registers.unknown-and-retired: test:protocol.external-registers.unknown-and-retired · anchored test binding · binding present · test/self-hosting-external-registers.test.ts:122
  • spec:validation.external-registers refines spec:validation.corpus-rules · declared — external-register checks run as corpus-selected rules
  • spec:validation.external-registers.uncited-on-request refines spec:validation.external-registers · declared
  • spec:validation.external-registers.uncited-on-request verifies spec:validation.external-registers · declared
  • spec:validation.external-registers.unknown-and-retired refines spec:validation.external-registers · declared
  • spec:validation.external-registers.unknown-and-retired verifies spec:validation.external-registers · declared
  • impl:protocol.external-registers-recipe satisfies spec:validation.external-registers · anchored
  • oracle:protocol.external-registers models spec:validation.external-registers · anchored
  • test:protocol.external-registers.uncited-on-request verifies spec:validation.external-registers.uncited-on-request · anchored
  • test:protocol.external-registers.unknown-and-retired verifies spec:validation.external-registers.unknown-and-retired · 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
  • impl:protocol.external-registers-recipe · asserts realization of the shipped external-registers recipe · test/external-registers.test.ts:9

    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:validation.external-registers
Relations of spec:validation.external-registersdependsOn · declareddependsOn · declareddependsOn · declareddependsOn · declaredrefines · declaredrefines · declaredverifies · declaredrefines · declaredverifies · declaredOutgoing refinesspec:validation.corpus-rulesCorpus-authored rules runon the one validation path…validation.corpus-rulesOutgoing dependsOnspec:consumers.agent-surface.recipe-parametersRecipes take parameters asdata and ship as runnablefiles…consumers.agent-surface.recipe-parametersspec:consumers.agent-surface.register-recipesRegister questions stayexecutable graph recipes…consumers.agent-surface.register-recipesSubjectspec:validation.external-registersA corpus checks theregister tokens its prosecites…validation.external-registersIncoming refinesspec:validation.external-registers.uncited-on-requestA held token no Spec citesfails a rules run only whenthe caller asks…validation.external-registers.uncited-on-requestspec:validation.external-registers.unknown-and-retiredA cited token the registerlacks or retires fails arules run…validation.external-registers.unknown-and-retiredIncoming dependsOnspec:consumers.spec-studio.register-inputAn outside register is anamed Studio input, so acited token links to itsentry…consumers.spec-studio.register-input
The diagram as text
  • spec:consumers.agent-surface.recipe-parameters: Recipes take parameters as data and ship as runnable files
  • spec:consumers.agent-surface.register-recipes: Register questions stay executable graph recipes
  • spec:consumers.spec-studio.register-input: An outside register is a named Studio input, so a cited token links to its entry
  • spec:validation.corpus-rules: Corpus-authored rules run on the one validation path
  • spec:validation.external-registers: A corpus checks the register tokens its prose cites
  • spec:validation.external-registers.uncited-on-request: A held token no Spec cites fails a rules run only when the caller asks
  • spec:validation.external-registers.unknown-and-retired: A cited token the register lacks or retires fails a rules run
  • spec:validation.external-registers dependsOn spec:consumers.agent-surface.recipe-parameters · declared — the register arrives as data through `--params register=@PATH`
  • spec:validation.external-registers dependsOn spec:consumers.agent-surface.register-recipes · declared — the recipe reads the strings entry search walks, with its entry paths and lines
  • spec:validation.external-registers dependsOn spec:validation.corpus-rules · declared — the recipe answers with findings and runs as a rules file
  • spec:validation.external-registers refines spec:validation.corpus-rules · declared — external-register checks run as corpus-selected rules
  • spec:consumers.spec-studio.register-input dependsOn spec:validation.external-registers · declared — the input is the register file and pattern the external-registers recipe already reads
  • spec:validation.external-registers.uncited-on-request refines spec:validation.external-registers · declared
  • spec:validation.external-registers.unknown-and-retired refines spec:validation.external-registers · declared
  • spec:validation.external-registers.uncited-on-request verifies spec:validation.external-registers · declared
  • spec:validation.external-registers.unknown-and-retired verifies spec:validation.external-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:validation.corpus-rules · stated ready, floor ready
  • dependsOn · spec:consumers.agent-surface.recipe-parameters · stated ready, floor ready
  • dependsOn · spec:consumers.agent-surface.register-recipes · stated ready, floor ready
  • dependsOn · spec:validation.corpus-rules · stated ready, floor ready

Rested on by

Distance 1

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:consumers.agent-surface.recipe-parameters
spec:consumers.agent-surface.recipe-parameters · resolves
declaredthe register arrives as data through --params register=@PATHNone
dependsOn · outgoingspec:consumers.agent-surface.register-recipes
spec:consumers.agent-surface.register-recipes · resolves
declaredthe recipe reads the strings entry search walks, with its entry paths and linesNone
dependsOn · outgoingCorpus-authored rules run on the one validation path
spec:validation.corpus-rules · resolves
declaredthe recipe answers with findings and runs as a rules fileNone
refines · outgoingCorpus-authored rules run on the one validation path
spec:validation.corpus-rules · resolves
declaredexternal-register checks run as corpus-selected rulesNone
dependsOn · incomingspec:consumers.spec-studio.register-input
spec:consumers.spec-studio.register-input · resolves
declaredthe input is the register file and pattern the external-registers recipe already readsNone
refines · incomingA held token no Spec cites fails a rules run only when the caller asks
spec:validation.external-registers.uncited-on-request · resolves
declaredNoneNone
refines · incomingA cited token the register lacks or retires fails a rules run
spec:validation.external-registers.unknown-and-retired · resolves
declaredNoneNone
verifies · incomingA held token no Spec cites fails a rules run only when the caller asks
spec:validation.external-registers.uncited-on-request · resolves
declaredNoneuncitedToken, asRulesFile
verifies · incomingA cited token the register lacks or retires fails a rules run
spec:validation.external-registers.unknown-and-retired · resolves
declaredNoneregisterAsData, citation, unknownToken, retiredToken, asRulesFile

Bindings

Implementation binding: present

  • impl:protocol.external-registers-recipe · asserts realization of the shipped external-registers recipe · test/external-registers.test.ts:9

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.external-registers · test/self-hosting-external-registers.test.ts:29

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

15. A held token no Spec cites fails a rules run only when the caller asks

spec:validation.external-registers.uncited-on-request

A held token no Spec cites fails a rules run only when the caller asks

spec:validation.external-registers.uncited-on-requestExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/validation/external-registers.uncited-on-request.sdp.md

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

Intent
outcome
Execute the uncited check as a rules file over a Spec that cites one of two held tokens.
assumptions
  • The world writes the probe corpus of the unknown-and-retired example, its first Spec citing only the held token named below, and the register file { "tokens": ["E-1", "E-2"] }, and runs the shipped file as that example does, with uncited true.
Behavior

Examples

Given a probe corpus whose Spec cites the tokens {cited: "E-1"}
Given a register file that holds {held: "E-1 E-2"} and retires {retired: ""}
When the shipped external-registers file runs as a rules file with the pattern for E-numbers and uncited {uncited: true}
Then the command exits {exitCode: 1}
Then the corpus findings carry the rule ids {ruleIds: "uncited-token"}
Verification

Verifier bindings

  • test:protocol.external-registers.uncited-on-request · anchored · test anchor binding present · test/self-hosting-external-registers.test.ts:128
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:validation.external-registers.uncited-on-request
The diagram as text
  • spec:validation.external-registers.uncited-on-request: A held token no Spec cites fails a rules run only when the caller asks · declared Spec
  • spec:validation.external-registers: A corpus checks the register tokens its prose cites · declared Spec
  • test:protocol.external-registers.uncited-on-request: test:protocol.external-registers.uncited-on-request · anchored test binding · binding present · test/self-hosting-external-registers.test.ts:128
  • spec:validation.external-registers.uncited-on-request refines spec:validation.external-registers · declared
  • spec:validation.external-registers.uncited-on-request verifies spec:validation.external-registers · declared
  • test:protocol.external-registers.uncited-on-request verifies spec:validation.external-registers.uncited-on-request · 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:validation.external-registers.uncited-on-request
  • E2: verifies · declared
The diagram as text
  • spec:validation.external-registers: A corpus checks the register tokens its prose cites
  • spec:validation.external-registers.uncited-on-request: A held token no Spec cites fails a rules run only when the caller asks
  • spec:validation.external-registers.uncited-on-request refines spec:validation.external-registers · declared
  • spec:validation.external-registers.uncited-on-request verifies spec:validation.external-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 · outgoingA corpus checks the register tokens its prose cites
spec:validation.external-registers · resolves
declaredNoneNone
verifies · outgoingA corpus checks the register tokens its prose cites
spec:validation.external-registers · resolves
declaredNoneuncitedToken, asRulesFile

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.external-registers.uncited-on-request · anchored · test/self-hosting-external-registers.test.ts:128 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

16. A cited token the register lacks or retires fails a rules run

spec:validation.external-registers.unknown-and-retired

A cited token the register lacks or retires fails a rules run

spec:validation.external-registers.unknown-and-retiredExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/validation/external-registers.unknown-and-retired.sdp.md

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

Intent
outcome
Execute the register check as a rules file over a Spec that cites one held, one retired and one unlisted token.
assumptions
  • The world writes a probe corpus of two story-altitude behavior Specs stating idea, each with an Intent outcome, the second declaring refines on the first, so the Protocol's validators report no finding; the first Spec's outcome names the cited tokens in prose. It writes the register file { "tokens": ["E-1", "E-2", { "token": "E-7", "retired": true }] } and runs sdp validate on the probe root with dist/recipes/50-external-registers.js named by --rules, followed by --params register=@ that file and --params holding the pattern \bE-\d+\b and uncited. The rule ids are the corpus findings' rule ids in printed order, joined by a comma and a space.
Behavior

Examples

Given a probe corpus whose Spec cites the tokens {cited: "E-1 E-7 E-9"}
Given a register file that holds {held: "E-1 E-2"} and retires {retired: "E-7"}
When the shipped external-registers file runs as a rules file with the pattern for E-numbers and uncited {uncited: false}
Then the command exits {exitCode: 1}
Then the corpus findings carry the rule ids {ruleIds: "retired-token, unknown-token"}
Verification

Verifier bindings

  • test:protocol.external-registers.unknown-and-retired · anchored · test anchor binding present · test/self-hosting-external-registers.test.ts:122
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:validation.external-registers.unknown-and-retired
The diagram as text
  • spec:validation.external-registers.unknown-and-retired: A cited token the register lacks or retires fails a rules run · declared Spec
  • spec:validation.external-registers: A corpus checks the register tokens its prose cites · declared Spec
  • test:protocol.external-registers.unknown-and-retired: test:protocol.external-registers.unknown-and-retired · anchored test binding · binding present · test/self-hosting-external-registers.test.ts:122
  • spec:validation.external-registers.unknown-and-retired refines spec:validation.external-registers · declared
  • spec:validation.external-registers.unknown-and-retired verifies spec:validation.external-registers · declared
  • test:protocol.external-registers.unknown-and-retired verifies spec:validation.external-registers.unknown-and-retired · 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:validation.external-registers.unknown-and-retired
  • E2: verifies · declared
The diagram as text
  • spec:validation.external-registers: A corpus checks the register tokens its prose cites
  • spec:validation.external-registers.unknown-and-retired: A cited token the register lacks or retires fails a rules run
  • spec:validation.external-registers.unknown-and-retired refines spec:validation.external-registers · declared
  • spec:validation.external-registers.unknown-and-retired verifies spec:validation.external-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 · outgoingA corpus checks the register tokens its prose cites
spec:validation.external-registers · resolves
declaredNoneNone
verifies · outgoingA corpus checks the register tokens its prose cites
spec:validation.external-registers · resolves
declaredNoneregisterAsData, citation, unknownToken, retiredToken, asRulesFile

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.external-registers.unknown-and-retired · anchored · test/self-hosting-external-registers.test.ts:122 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

17. Every verb answers --help, and one verb writes every projection root

spec:consumers.command-line

Every verb answers --help, and one verb writes every projection root

spec:consumers.command-lineUse Case / Behavior · storyready floor ready

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

Design: 5 design entries · 2 pinned declarations · 1 decision

Findings: no errors, no warnings

specs/consumers/command-line.sdp.md

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

An adopter meets the command line one verb at a time, and the verb itself is the natural place to ask how it works. Each publisher's build first removes all five projection roots, so after one publisher runs only its own root is current, and writing all five took a script private to this repository. One public verb writes every root from one graph in one run, so an adopter's checkout and its CI publish the same set the Protocol's own does.

Intent
actor
An adopter, or an agent working for one, at the command line or in CI.
problem
A verb refuses --help instead of explaining itself, and no public verb publishes every projection root at once, so an adopter runs the publishers one by one and is left with only the last one's root.
outcome
Let every verb explain itself through --help, and let one verb write every projection root from one graph in one run.
Behavior
rule.verbHelp line 31 · specs/consumers/command-line.sdp.md:31
Every verb answers --help: when --help is among a verb's arguments, the verb prints its help on standard output and exits 0, reading no other argument, deriving no graph and touching no file, a projection root included.

spec:consumers.command-line.verb-help-touches-nothing · enabled

rule.oneHelpText line 32 · specs/consumers/command-line.sdp.md:32
A verb's help opens with its usage and its paragraph from the top-level help, the same text, so a verb's help and sdp --help never disagree; only the scaffolder's help, for sdp new and sdp new spec, adds a paragraph of its own after that text.

spec:consumers.command-line.verb-help-touches-nothing · enabled

rule.generateVerb line 33 · specs/consumers/command-line.sdp.md:33
sdp generate [root] [--exclude PATH]... [--vault DIR] [--check-clean] enters the shared build once, validates the graph, synchronizes the vault, and writes all five projection roots from that one graph: the Design Review, the census, the Mermaid diagrams, the Gherkin-shaped view and the Studio.

spec:consumers.command-line.generate-writes-every-root · enabled

rule.sameBytes line 34 · specs/consumers/command-line.sdp.md:34
Each root the verb writes holds the bytes its own publisher writes from the same graph, written wholesale through its temporary sibling as that publisher writes it.

spec:consumers.command-line.generate-writes-every-root · enabled

rule.generateExit line 35 · specs/consumers/command-line.sdp.md:35
Findings never withhold a root: the verb writes all five and exits with the validation exit code, and a graph that does not derive writes no root and exits 1.

spec:consumers.command-line.generate-writes-every-root · enabled

rule.generateCheck line 36 · specs/consumers/command-line.sdp.md:36
With --check-clean, the verb applies to each root the check its publisher applies under --check-clean, to renders of the one graph; a root that fails its check is removed, the others are written, and the run exits 1.

spec:consumers.command-line.generate-check-failure · enabled

0 unkeyed rules.

Verifying examples

A root that fails its check is removed while sdp generate writes the others · spec:consumers.command-line.generate-check-failure · ready floor ready

Executable Spec

Given an extraction root holding two authored Specs and {roots: "five current projection roots, one stale page planted in the census root"}
When the command {command: "sdp generate --check-clean"} runs at that root
Then the command exits {exitCode: 1}
Then the stale pages survive: {staleSurvive: false}
Then the roots holding the current pages for those Specs are {currentRoots: "design-review, mermaid, gherkin, spec-studio"}
Then the absent projection roots are {absentRoots: "census"}

Open example

One run of sdp generate leaves all five roots current · spec:consumers.command-line.generate-writes-every-root · ready floor ready

Executable Spec

Given an extraction root holding two authored Specs and {roots: "a stale page in each of the five projection roots"}
When the command {command: "sdp generate"} runs at that root
Then the command exits {exitCode: 0}
Then the stale pages survive: {staleSurvive: false}
Then the roots holding the current pages for those Specs are {currentRoots: "design-review, census, mermaid, gherkin, spec-studio"}
Then the absent projection roots are {absentRoots: ""}

Open example

A publisher's --help prints its help and touches no root · spec:consumers.command-line.verb-help-touches-nothing · ready floor ready

Executable Spec

Given an extraction root holding two authored Specs and {roots: "a stale page in each of the five projection roots"}
When the command {command: "sdp view --help"} runs at that root
Then the command exits {exitCode: 0}
Then the stale pages survive: {staleSurvive: true}
Then the roots holding the current pages for those Specs are {currentRoots: ""}
Then the absent projection roots are {absentRoots: ""}
Then standard output opens with the line {firstLine: "Usage:"}

Open example

Example space

Given an extraction root holding two authored Specs and {roots:"a stale page in each of the five projection roots"|"five current projection roots, one stale page planted in the census root"}
When the command {command:"sdp generate"|"sdp generate --check-clean"|"sdp view --help"} runs at that root
Then the command exits {exitCode:number}
Then the stale pages survive: {staleSurvive:boolean}
Then the roots holding the current pages for those Specs are {currentRoots:string}
Then the absent projection roots are {absentRoots:string}
Then standard output opens with the line {firstLine:string}
Design
helpVerbs line 39 · specs/consumers/command-line.sdp.md:39
build, validate, view, census, mermaid, gherkin, studio, vault, stamp, generate, import, new and q answer --help.

no citation recorded

verbHelpText line 40 · specs/consumers/command-line.sdp.md:40
Usage: on its own line, then the verb's usage lines as sdp --help writes them, a blank line and the verb's paragraph from the Commands: list of sdp --help; sdp new --help and sdp new spec --help then add a blank line and the scaffolder's own paragraph on what PATH takes and what the scaffold writes.

no citation recorded

generateRoots line 41 · specs/consumers/command-line.sdp.md:41
in this order, generated/design-review/, generated/census/, generated/mermaid/, generated/gherkin/ and generated/spec-studio/.
generateOutput line 42 · specs/consumers/command-line.sdp.md:42
the build and validation summary lines once, then the vault's Wrote <out>/sdp (…) line unless --check-clean, then the line each publisher prints for its root, in the order of the roots.
vaultRoot line 43 · specs/consumers/command-line.sdp.md:43
the verb never removes a vault with the five roots; before it publishes any root it synchronizes the vault at the folder sdp vault uses for the same root, or at --vault DIR, resolved against the working directory, through the vault's own directory checks and guard, and a refusal there writes no root and exits 1; under --check-clean it leaves the vault alone, since the vault has no check mode and its tests hold its determinism.
Verification

Verifier bindings

Example space

  • roots · "a stale page in each of the five projection roots" | "five current projection roots, one stale page planted in the census root" · declared by an extraction root holding two authored Specs and {roots}
  • command · "sdp generate" | "sdp generate --check-clean" | "sdp view --help" · declared by the command {command} runs at that root

Bound points

Examplerootscommand
spec:consumers.command-line.generate-check-failure"five current projection roots, one stale page planted in the census root""sdp generate --check-clean"
spec:consumers.command-line.generate-writes-every-root"a stale page in each of the five projection roots""sdp generate"
spec:consumers.command-line.verb-help-touches-nothing"a stale page in each of the five projection roots""sdp view --help"

Oracle binding: present · oracle:protocol.command-line · test/self-hosting-command-line.test.ts:69

Coverage

roots
Declared valueExamples
"a stale page in each of the five projection roots"spec:consumers.command-line.generate-writes-every-root, spec:consumers.command-line.verb-help-touches-nothing
"five current projection roots, one stale page planted in the census root"spec:consumers.command-line.generate-check-failure

Unbound

  • roots: None
  • command: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.command-line
Requirement drawing for spec:consumers.command-linesatisfies · anchoredsatisfies · anchoredverifies · anchoredverifies · anchoredverifies · anchoredverifies · anchoredmodels · anchoredrefines · declaredrefines, verifies · declaredrefines, verifies · declaredrefines, verifies · declaredrefines · declaredIntended Specsspec:consumers.command-lineEvery verb answers --help,and one verb writes everyprojection root…consumers.command-linedeclared Specspec:consumers.engine-provenanceThe CLI names the enginethat produced a result…consumers.engine-provenancedeclared SpecDeclared verifying examplesspec:consumers.command-line.generate-check-failureA root that fails its checkis removed while sdpgenerate writes the others…consumers.command-line.generate-check-failuredeclared Specspec:consumers.command-line.generate-writes-every-rootOne run of sdp generateleaves all five rootscurrent…consumers.command-line.generate-writes-every-rootdeclared Specspec:consumers.command-line.verb-help-touches-nothingA publisher's --help printsits help and touches no root…consumers.command-line.verb-help-touches-nothingdeclared SpecSatisfying or referencingunits6 satisfying units · anchored, folded6 satisfying units ·anchoredTest or oracle bindings4 test bindings · anchored, folded4 test bindings · anchoredoracle:protocol.command-lineoracle:protocol.command-line…protocol.command-lineanchored oracle bindingOutside the selected setspec:consumers.projections-modelProjections fan out fromone graph without becomingtruth stores…consumers.projections-modeldeclared Spec
The diagram as text
  • spec:consumers.command-line: Every verb answers --help, and one verb writes every projection root · declared Spec
  • spec:consumers.command-line.generate-check-failure: A root that fails its check is removed while sdp generate writes the others · declared Spec
  • spec:consumers.command-line.generate-writes-every-root: One run of sdp generate leaves all five roots current · declared Spec
  • spec:consumers.command-line.verb-help-touches-nothing: A publisher's --help prints its help and touches no root · declared Spec
  • spec:consumers.engine-provenance: The CLI names the engine that produced a result · declared Spec
  • spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores · declared Spec
  • impl:protocol.adopter-help: SDP_HELP_TEXT indexes the shipped skills, recipe catalog, schema, walkthrough, glossary and specs/ by package-relative path · anchored code · src/cli/help.ts:167
  • impl:protocol.agent-surface-cli: CLI verb dispatcher and agent-surface front of the package CLI · anchored code · src/cli/sdp.ts:94
  • impl:protocol.build-args: shared build arguments and corpus-rule inputs · anchored code · src/cli/build-args.ts:11
  • impl:protocol.build-artifacts: the build step that writes each catalog recipe to dist/recipes and records the build commit beside the CLI · anchored code · src/cli/build-artifacts.ts:182
  • impl:protocol.engine-provenance-cli: prints sdp version and the commit parsed from the build-info file beside the compiled CLI · anchored code · src/cli/sdp.ts:102
  • impl:protocol.generate-command: prepares all prior roots before one shared build and publishes with each verb's checks · anchored code · src/cli/generate-command.ts:34
  • oracle:protocol.command-line: oracle:protocol.command-line · anchored oracle binding · test/self-hosting-command-line.test.ts:69
  • test:protocol.command-line.generate-check-failure: test:protocol.command-line.generate-check-failure · anchored test binding · binding present · test/self-hosting-command-line.test.ts:186
  • test:protocol.command-line.generate-writes-every-root: test:protocol.command-line.generate-writes-every-root · anchored test binding · binding present · test/self-hosting-command-line.test.ts:180
  • test:protocol.command-line.verb-help-touches-nothing: test:protocol.command-line.verb-help-touches-nothing · anchored test binding · binding present · test/self-hosting-command-line.test.ts:192
  • test:protocol.engine-provenance: version checks verify the engine provenance line and the build's commit record · anchored test binding · binding present · test/cli.test.ts:2371
  • spec:consumers.command-line refines spec:consumers.projections-model · declared — one verb publishes every projection root from one graph
  • spec:consumers.command-line.generate-check-failure refines spec:consumers.command-line · declared
  • spec:consumers.command-line.generate-check-failure verifies spec:consumers.command-line · declared
  • spec:consumers.command-line.generate-writes-every-root refines spec:consumers.command-line · declared
  • spec:consumers.command-line.generate-writes-every-root verifies spec:consumers.command-line · declared
  • spec:consumers.command-line.verb-help-touches-nothing refines spec:consumers.command-line · declared
  • spec:consumers.command-line.verb-help-touches-nothing verifies spec:consumers.command-line · declared
  • spec:consumers.engine-provenance refines spec:consumers.command-line · declared — the version flag is one more answer the command line gives an adopter
  • impl:protocol.adopter-help satisfies spec:consumers.command-line · anchored
  • impl:protocol.agent-surface-cli satisfies spec:consumers.command-line · anchored
  • impl:protocol.build-args satisfies spec:consumers.command-line · anchored
  • impl:protocol.build-artifacts satisfies spec:consumers.engine-provenance · anchored
  • impl:protocol.engine-provenance-cli satisfies spec:consumers.engine-provenance · anchored
  • impl:protocol.generate-command satisfies spec:consumers.command-line · anchored
  • oracle:protocol.command-line models spec:consumers.command-line · anchored
  • test:protocol.command-line.generate-check-failure verifies spec:consumers.command-line.generate-check-failure · anchored
  • test:protocol.command-line.generate-writes-every-root verifies spec:consumers.command-line.generate-writes-every-root · anchored
  • test:protocol.command-line.verb-help-touches-nothing verifies spec:consumers.command-line.verb-help-touches-nothing · anchored
  • test:protocol.engine-provenance verifies spec:consumers.engine-provenance · 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
  • impl:protocol.adopter-help · SDP_HELP_TEXT indexes the shipped skills, recipe catalog, schema, walkthrough, glossary and specs/ by package-relative path · src/cli/help.ts:167

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

    Uses

    None.

  • impl:protocol.agent-surface-cli · CLI verb dispatcher and agent-surface front of the package CLI · src/cli/sdp.ts:94

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

    Uses

    None.

  • impl:protocol.build-args · shared build arguments and corpus-rule inputs · src/cli/build-args.ts:11

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

    Uses

    None.

  • impl:protocol.generate-command · prepares all prior roots before one shared build and publishes with each verb's checks · src/cli/generate-command.ts:34

    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.command-line
Relations of spec:consumers.command-linedependsOn · declaredrefines · declareddependsOn · declareddependsOn · declareddecidedBy · declaredrefines · declaredverifies · declaredOutgoing refinesspec:consumers.projections-modelProjections fan out fromone graph without becomingtruth stores…consumers.projections-modelOutgoing dependsOnspec:consumers.adopter-on-rampAn adopter learns graphhomes, carrier grammar andshipped paths from theon-ramps…consumers.adopter-on-rampspec:consumers.spec-studio.publishersdp studio publishes theStudio as one page set…consumers.spec-studio.publisherspec:consumers.wholesale-view-rewriteEvery view run rewrites theview wholesale…consumers.wholesale-view-rewriteOutgoing decidedByspec:decisions.shipped-projections-frozenThe shipped projectionsstay frozen…decisions.shipped-projections-frozenSubjectspec:consumers.command-lineEvery verb answers --help,and one verb writes everyprojection root…consumers.command-lineIncoming refinesspec:consumers.command-line.fold.Incoming.refines4 Incoming refines, folded…consumers.command-line.fold.Incoming.refines
The diagram as text
  • spec:consumers.adopter-on-ramp: An adopter learns graph homes, carrier grammar and shipped paths from the on-ramps
  • spec:consumers.command-line: Every verb answers --help, and one verb writes every projection root
  • spec:consumers.command-line.generate-check-failure: A root that fails its check is removed while sdp generate writes the others
  • spec:consumers.command-line.generate-writes-every-root: One run of sdp generate leaves all five roots current
  • spec:consumers.command-line.verb-help-touches-nothing: A publisher's --help prints its help and touches no root
  • spec:consumers.engine-provenance: The CLI names the engine that produced a result
  • spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores
  • spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set
  • spec:consumers.wholesale-view-rewrite: Every view run rewrites the view wholesale
  • spec:decisions.shipped-projections-frozen: The shipped projections stay frozen
  • spec:consumers.command-line decidedBy spec:decisions.shipped-projections-frozen · declared — the verb writes the frozen roots unchanged and adds no projection of its own
  • spec:consumers.command-line dependsOn spec:consumers.adopter-on-ramp · declared — a verb's help repeats the top-level help that names the shipped on-ramps
  • 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.command-line dependsOn spec:consumers.wholesale-view-rewrite · declared — each root the verb writes is written and invalidated as every view run's is
  • spec:consumers.command-line refines spec:consumers.projections-model · declared — one verb publishes every projection root from one graph
  • spec:consumers.command-line.generate-check-failure refines spec:consumers.command-line · declared
  • spec:consumers.command-line.generate-writes-every-root refines spec:consumers.command-line · declared
  • spec:consumers.command-line.verb-help-touches-nothing refines spec:consumers.command-line · declared
  • spec:consumers.engine-provenance refines spec:consumers.command-line · declared — the version flag is one more answer the command line gives an adopter
  • spec:consumers.command-line.generate-check-failure verifies spec:consumers.command-line · declared
  • spec:consumers.command-line.generate-writes-every-root verifies spec:consumers.command-line · declared
  • spec:consumers.command-line.verb-help-touches-nothing verifies spec:consumers.command-line · 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.adopter-on-ramp · stated ready, floor ready
  • dependsOn · spec:consumers.spec-studio.publisher · stated ready, floor ready
  • dependsOn · spec:consumers.wholesale-view-rewrite · stated ready, floor ready
  • decidedBy · spec:decisions.shipped-projections-frozen · stated ready, floor ready

Rested on by

Distance 1

Distance 2

  • 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

Distance 3

  • 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 4

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

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.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
decidedBy · outgoingspec:decisions.shipped-projections-frozen
spec:decisions.shipped-projections-frozen · resolves
declaredthe verb writes the frozen roots unchanged and adds no projection of its ownNone
dependsOn · outgoingspec:consumers.adopter-on-ramp
spec:consumers.adopter-on-ramp · resolves
declareda verb's help repeats the top-level help that names the shipped on-rampsNone
dependsOn · outgoingspec:consumers.spec-studio.publisher
spec:consumers.spec-studio.publisher · resolves
declaredthe Studio's page set is one of the roots the verb writesNone
dependsOn · outgoingspec:consumers.wholesale-view-rewrite
spec:consumers.wholesale-view-rewrite · resolves
declaredeach root the verb writes is written and invalidated as every view run's isNone
refines · outgoingspec:consumers.projections-model
spec:consumers.projections-model · resolves
declaredone verb publishes every projection root from one graphNone
refines · incomingA root that fails its check is removed while sdp generate writes the others
spec:consumers.command-line.generate-check-failure · resolves
declaredNoneNone
refines · incomingOne run of sdp generate leaves all five roots current
spec:consumers.command-line.generate-writes-every-root · resolves
declaredNoneNone
refines · incomingA publisher's --help prints its help and touches no root
spec:consumers.command-line.verb-help-touches-nothing · resolves
declaredNoneNone
refines · incomingspec:consumers.engine-provenance
spec:consumers.engine-provenance · resolves
declaredthe version flag is one more answer the command line gives an adopterNone
verifies · incomingA root that fails its check is removed while sdp generate writes the others
spec:consumers.command-line.generate-check-failure · resolves
declaredNonegenerateCheck
verifies · incomingOne run of sdp generate leaves all five roots current
spec:consumers.command-line.generate-writes-every-root · resolves
declaredNonegenerateVerb, sameBytes, generateExit
verifies · incomingA publisher's --help prints its help and touches no root
spec:consumers.command-line.verb-help-touches-nothing · resolves
declaredNoneverbHelp, oneHelpText

Bindings

Implementation binding: present

  • impl:protocol.adopter-help · SDP_HELP_TEXT indexes the shipped skills, recipe catalog, schema, walkthrough, glossary and specs/ by package-relative path · src/cli/help.ts:167 · role projection · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.agent-surface-cli · CLI verb dispatcher and agent-surface front of the package CLI · src/cli/sdp.ts:94 · role service · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.build-args · shared build arguments and corpus-rule inputs · src/cli/build-args.ts:11 · role codec · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.generate-command · prepares all prior roots before one shared build and publishes with each verb's checks · src/cli/generate-command.ts:34 · role publisher · component component:protocol.cli · layer edge · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.command-line · test/self-hosting-command-line.test.ts:69

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

18. A root that fails its check is removed while sdp generate writes the others

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

A root that fails its check is removed while sdp generate writes the others

spec:consumers.command-line.generate-check-failureExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/command-line.generate-check-failure.sdp.md

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

Intent
outcome
Execute the check rule of the all-roots verb over five current roots, one of which holds a page its publisher would not write.
assumptions
  • The world writes the extraction root of the generate example, runs sdp generate on it so every root is current, since each publisher alone would leave only its own root, then plants one stale page in the census root. It runs sdp generate --check-clean on the root, then checks that the census root is gone and that each other root's files equal the files its own publisher writes when run alone on a copy of the same root. Lists of roots read as in the generate example.
Behavior

Examples

Given an extraction root holding two authored Specs and {roots: "five current projection roots, one stale page planted in the census root"}
When the command {command: "sdp generate --check-clean"} runs at that root
Then the command exits {exitCode: 1}
Then the stale pages survive: {staleSurvive: false}
Then the roots holding the current pages for those Specs are {currentRoots: "design-review, mermaid, gherkin, spec-studio"}
Then the absent projection roots are {absentRoots: "census"}
Verification

Verifier bindings

  • test:protocol.command-line.generate-check-failure · anchored · test anchor binding present · test/self-hosting-command-line.test.ts:186
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.command-line.generate-check-failure
The diagram as text
  • spec:consumers.command-line.generate-check-failure: A root that fails its check is removed while sdp generate writes the others · declared Spec
  • spec:consumers.command-line: Every verb answers --help, and one verb writes every projection root · declared Spec
  • test:protocol.command-line.generate-check-failure: test:protocol.command-line.generate-check-failure · anchored test binding · binding present · test/self-hosting-command-line.test.ts:186
  • spec:consumers.command-line.generate-check-failure refines spec:consumers.command-line · declared
  • spec:consumers.command-line.generate-check-failure verifies spec:consumers.command-line · declared
  • test:protocol.command-line.generate-check-failure verifies spec:consumers.command-line.generate-check-failure · 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.command-line.generate-check-failure
  • E2: verifies · declared
The diagram as text
  • spec:consumers.command-line: Every verb answers --help, and one verb writes every projection root
  • spec:consumers.command-line.generate-check-failure: A root that fails its check is removed while sdp generate writes the others
  • spec:consumers.command-line.generate-check-failure refines spec:consumers.command-line · declared
  • spec:consumers.command-line.generate-check-failure verifies spec:consumers.command-line · 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 · outgoingEvery verb answers --help, and one verb writes every projection root
spec:consumers.command-line · resolves
declaredNoneNone
verifies · outgoingEvery verb answers --help, and one verb writes every projection root
spec:consumers.command-line · resolves
declaredNonegenerateCheck

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.command-line.generate-check-failure · anchored · test/self-hosting-command-line.test.ts:186 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

19. One run of sdp generate leaves all five roots current

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

One run of sdp generate leaves all five roots current

spec:consumers.command-line.generate-writes-every-rootExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/command-line.generate-writes-every-root.sdp.md

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

Intent
outcome
Execute the all-roots verb over a root whose five projection roots each hold a stale page.
assumptions
  • The world writes an extraction root of two story-altitude behavior Specs stating idea, each with an Intent outcome, the second declaring refines on the first, so the Protocol's validators report no finding, and plants one stale page in each of the five projection roots. It runs sdp generate on the root, then checks that no stale page survives and that each root's files equal the files its own publisher writes when run alone on a copy of the same root. A list of roots names each by its directory under generated/, in the verb's root order, joined by a comma and a space.
Behavior

Examples

Given an extraction root holding two authored Specs and {roots: "a stale page in each of the five projection roots"}
When the command {command: "sdp generate"} runs at that root
Then the command exits {exitCode: 0}
Then the stale pages survive: {staleSurvive: false}
Then the roots holding the current pages for those Specs are {currentRoots: "design-review, census, mermaid, gherkin, spec-studio"}
Then the absent projection roots are {absentRoots: ""}
Verification

Verifier bindings

  • test:protocol.command-line.generate-writes-every-root · anchored · test anchor binding present · test/self-hosting-command-line.test.ts:180
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.command-line.generate-writes-every-root
The diagram as text
  • spec:consumers.command-line.generate-writes-every-root: One run of sdp generate leaves all five roots current · declared Spec
  • spec:consumers.command-line: Every verb answers --help, and one verb writes every projection root · declared Spec
  • test:protocol.command-line.generate-writes-every-root: test:protocol.command-line.generate-writes-every-root · anchored test binding · binding present · test/self-hosting-command-line.test.ts:180
  • spec:consumers.command-line.generate-writes-every-root refines spec:consumers.command-line · declared
  • spec:consumers.command-line.generate-writes-every-root verifies spec:consumers.command-line · declared
  • test:protocol.command-line.generate-writes-every-root verifies spec:consumers.command-line.generate-writes-every-root · 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.command-line.generate-writes-every-root
  • E2: verifies · declared
The diagram as text
  • spec:consumers.command-line: Every verb answers --help, and one verb writes every projection root
  • spec:consumers.command-line.generate-writes-every-root: One run of sdp generate leaves all five roots current
  • spec:consumers.command-line.generate-writes-every-root refines spec:consumers.command-line · declared
  • spec:consumers.command-line.generate-writes-every-root verifies spec:consumers.command-line · 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 · outgoingEvery verb answers --help, and one verb writes every projection root
spec:consumers.command-line · resolves
declaredNoneNone
verifies · outgoingEvery verb answers --help, and one verb writes every projection root
spec:consumers.command-line · resolves
declaredNonegenerateVerb, sameBytes, generateExit

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.command-line.generate-writes-every-root · anchored · test/self-hosting-command-line.test.ts:180 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

20. A publisher's --help prints its help and touches no root

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

A publisher's --help prints its help and touches no root

spec:consumers.command-line.verb-help-touches-nothingExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/command-line.verb-help-touches-nothing.sdp.md

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

Intent
outcome
Execute the help rule on a publisher whose build would otherwise remove every projection root.
assumptions
  • The world writes the extraction root and stale pages of the generate example, runs sdp view --help on it, checks that standard output holds the view's usage line and its paragraph from sdp --help, and that every stale page is still in place.
Behavior

Examples

Given an extraction root holding two authored Specs and {roots: "a stale page in each of the five projection roots"}
When the command {command: "sdp view --help"} runs at that root
Then the command exits {exitCode: 0}
Then the stale pages survive: {staleSurvive: true}
Then the roots holding the current pages for those Specs are {currentRoots: ""}
Then the absent projection roots are {absentRoots: ""}
Then standard output opens with the line {firstLine: "Usage:"}
Verification

Verifier bindings

  • test:protocol.command-line.verb-help-touches-nothing · anchored · test anchor binding present · test/self-hosting-command-line.test.ts:192
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.command-line.verb-help-touches-nothing
The diagram as text
  • spec:consumers.command-line.verb-help-touches-nothing: A publisher's --help prints its help and touches no root · declared Spec
  • spec:consumers.command-line: Every verb answers --help, and one verb writes every projection root · declared Spec
  • test:protocol.command-line.verb-help-touches-nothing: test:protocol.command-line.verb-help-touches-nothing · anchored test binding · binding present · test/self-hosting-command-line.test.ts:192
  • spec:consumers.command-line.verb-help-touches-nothing refines spec:consumers.command-line · declared
  • spec:consumers.command-line.verb-help-touches-nothing verifies spec:consumers.command-line · declared
  • test:protocol.command-line.verb-help-touches-nothing verifies spec:consumers.command-line.verb-help-touches-nothing · 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.command-line.verb-help-touches-nothing
  • E2: verifies · declared
The diagram as text
  • spec:consumers.command-line: Every verb answers --help, and one verb writes every projection root
  • spec:consumers.command-line.verb-help-touches-nothing: A publisher's --help prints its help and touches no root
  • spec:consumers.command-line.verb-help-touches-nothing refines spec:consumers.command-line · declared
  • spec:consumers.command-line.verb-help-touches-nothing verifies spec:consumers.command-line · 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 · outgoingEvery verb answers --help, and one verb writes every projection root
spec:consumers.command-line · resolves
declaredNoneNone
verifies · outgoingEvery verb answers --help, and one verb writes every projection root
spec:consumers.command-line · resolves
declaredNoneverbHelp, oneHelpText

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.command-line.verb-help-touches-nothing · anchored · test/self-hosting-command-line.test.ts:192 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

21. An example step may carry a key that survives rewording

spec:carrier.step-keys

An example step may carry a key that survives rewording

spec:carrier.step-keysBusiness Rule · storyready floor ready

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

Design: 9 design entries · 7 pinned declarations · 1 decision

Findings: no errors, no warnings

specs/carrier/step-keys.sdp.md

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

A test that binds an example through bindExample names each step it handles, and an oracle names each Then step of its example space as an outcome kind. Both names are the step's skeleton, the step text with each slot reduced to its name, so rewording a step renames it and the typecheck fails at every handler and oracle that names it; a generated registrar holds its own handlers and changes with the contract when it is regenerated, so behind a registrar only the oracle's kinds hold a step's name. That break is the right default for a step whose words are its meaning, and the wrong one when an author improves the wording of a step that many examples and tests share. A step key separates the two. An author keys a step once, in the vocabulary its sibling examples share, and the key, not the wording, names the step in the contract and in the test. The key serves the build and the test, not prose: nothing outside an example and its test cites a single step, so the address grammar gains no step segment.

Intent
problem
A test that binds an example's steps directly names each by its text, and an oracle names each Then step the same way, so improving a step's wording breaks every test and oracle that names it, though nothing the step means has changed.
outcome
Let an example step carry a key in a marker, so its contract key and the binding a test holds survive a change of wording, in the Markdown, Gherkin and TypeScript carriers alike.
Rule

The world writes one extraction root holding a parent probe Spec and one child example in the carrier the slot names. The parent is a story-altitude behavior Spec stating scoped, with an Intent outcome, one rule and an example space whose Given steps are the steps the vocabulary slot joins with a semicolon and a space, followed by When the probe runs and Then the probe ends with {result:string}. The child is an example stating scoped that refines and verifies the parent, whose Given steps are the steps the example slot joins the same way, followed by When the probe runs and Then the probe ends with {result: "done"}. In Markdown the two are separate carriers; in Gherkin they are the Feature and one Scenario of one .sdp.gherkin file, with the vocabulary in its @example-space pseudo-scenario; in TypeScript they are two .sdp.ts carriers whose step strings are the same steps. The world extracts the root and generates the contracts, replaces every occurrence of the before text with the after text in every step as written, markers included, and extracts and generates again. A finding read is the first extraction finding of the first run, or the first contract-generation finding of the first run that names the child, and an empty slot value means the run reports none. A binding key is the key the child's step contract gives its first Given step, in the first run and then in the second, and an empty string when no step contract is emitted for the child. The world writes one bindExample handler map against the first contract, one handler per contract key, each declaring its parameters with the names and types that contract gives them and recording which handler each step reaches; it typechecks that unchanged map against the second contract and, when the typecheck passes, runs it with the second contract through planExample and runExamplePlan. stillBound is true only when the unchanged map typechecks and the reworded step reaches the handler it reached in the first run; a changed contract key, slot name or declared slot type makes it false. The import reads the carriers as reworded: the world imports each TypeScript carrier to Markdown, reads the emitted fence line of the parent's first Given step, extracts the imported carriers in a fresh root, and compares each Spec's step keys and step text with the TypeScript graph's.

rule.stepMarker line 23 · specs/carrier/step-keys.sdp.md:23
A step may open its text with a step key marker, [#key] and one space, after its keyword: in a line of a gwt or gwt-vocabulary fence, in a step of a .sdp.gherkin Scenario or @example-space pseudo-scenario, and at the start of a step string in the TypeScript carrier. The key is lower-camel ASCII, the grammar every marker key follows, and an unkeyed step stays lawful. Importing a TypeScript carrier to Markdown writes the marker on every step that carries the key.

spec:carrier.step-keys.gherkin-keyed-step-stays-bound · enabled, spec:carrier.step-keys.reworded-keyed-step-stays-bound · enabled, spec:carrier.step-keys.typescript-keyed-step-imports-keyed · enabled

rule line 24 · specs/carrier/step-keys.sdp.md:24
The marker is carrier syntax: the graph holds the step text without it and records the key apart, so the slot notation, the skeleton, the vocabulary match, the bound point, the readiness floor and the frozen projections read the step text unchanged.
rule.markerRefusals line 25 · specs/carrier/step-keys.sdp.md:25
Step text that opens with [# and does not continue as a marker is refused at its step; a marker later in the text is plain text.

spec:carrier.step-keys.malformed-marker-refused · enabled

rule.oneKeyOneStep line 26 · specs/carrier/step-keys.sdp.md:26
Within one Spec a key names one step and a step carries one key, a step being one skeleton: a key on two skeletons, or two keys on one skeleton, is refused at each step that carries one. A step written more than once needs its marker once and may repeat it. An example space belongs to one Spec, so its keys are unique across the space and the sibling set that binds it. A refused Markdown or Gherkin carrier is refused whole, as for every structure refusal; in the TypeScript carrier the key drops at each site and the Spec stays.

spec:carrier.step-keys.repeated-key-refused · enabled, spec:carrier.step-keys.two-keys-on-one-step-refused · enabled

rule.vocabularyHome line 27 · specs/carrier/step-keys.sdp.md:27
A sibling set shares its parent's vocabulary, and so its keys: an example step that resolves to a step of its parent's example space takes that step's key. A marker on such a step must repeat that key; any other marker, or a marker where the vocabulary step has none, withholds the example's step contract. An example step that no parent's example space declares takes its key from its own marker.

spec:carrier.step-keys.conflicting-example-key-withheld · enabled, spec:carrier.step-keys.gherkin-keyed-step-stays-bound · enabled, spec:carrier.step-keys.reworded-keyed-step-stays-bound · enabled

rule.contractKey line 28 · specs/carrier/step-keys.sdp.md:28
A step's contract key is its key when it has one and its skeleton otherwise, as spec:extraction.executable-contracts derives it. The contract key names the step in the generated contract, the handler a test binds to it, and, for a Then step of an example space, the kind of its outcome.

spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · enabled, spec:carrier.step-keys.reworded-keyed-step-stays-bound · enabled, spec:carrier.step-keys.reworded-unkeyed-step-breaks · enabled, spec:carrier.step-keys.typescript-keyed-step-imports-keyed · enabled

rule line 29 · specs/carrier/step-keys.sdp.md:29
A key names the step and its slots name the step's parameters: the handler bound under a key receives the step's bound values, typed by the vocabulary as an unkeyed handler's are, and a key never names a slot.
rule.rewordedStaysBound line 30 · specs/carrier/step-keys.sdp.md:30
Rewording a keyed step, in the vocabulary and in every example that uses it, leaves its contract key unchanged, so a directly authored handler bound under the key, and an oracle that names it as an outcome kind, compile and run unchanged; an adopted registrar is regenerated, as after every carrier edit, and its authored adapters compile unchanged. Renaming or retyping one of its slots changes its parameters and breaks the binding, as it always has.

spec:carrier.step-keys.gherkin-keyed-step-stays-bound · enabled, spec:carrier.step-keys.reworded-keyed-step-stays-bound · enabled

rule.unkeyedBreaks line 31 · specs/carrier/step-keys.sdp.md:31
An unkeyed step is keyed by its skeleton, as it always was: rewording it changes its contract key. A directly authored handler under the old skeleton fails the typecheck as a missing and an excess property and fails the run at that step; a committed adopted registrar fails the regeneration preflight until it is regenerated; and an oracle that names a reworded Then step by its old kind fails the typecheck.

spec:carrier.step-keys.reworded-unkeyed-step-breaks · enabled

rule.renamedKey line 32 · specs/carrier/step-keys.sdp.md:32
Renaming or removing a key changes the step's contract key: a directly authored handler under the old key fails the typecheck, and when the key names a Then step of the example space, an oracle that names its old outcome kind fails the typecheck too. A key changes only when an author changes it.

spec:carrier.step-keys.renamed-key-breaks · enabled

rule line 33 · specs/carrier/step-keys.sdp.md:33
A step key is not an entry address: the address grammar gains no step segment, prose cites no step, and the location table records none. The generated contract and the code bound to it are a key's only readers, and the typechecker holds them to it; a review that cites one step cites its example Spec and the rules that example exercises.
rule line 34 · specs/carrier/step-keys.sdp.md:34
A step key mints no edge, confers no delivery fact and moves no readiness floor.

4 unkeyed rules.

Verifying examples

An example marker that disagrees with its vocabulary withholds the contract · spec:carrier.step-keys.conflicting-example-key-withheld · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "[#basketSize] a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the first contract finding about the child is {contractFinding: "contracts/conflicting-step-key"}
Then the child contract binds its first Given step as {bindingKey: ""} and then as {rewordedBindingKey: ""}

Open example

A keyed Gherkin step keeps its binding across a rewording · spec:carrier.step-keys.gherkin-keyed-step-stays-bound · ready floor ready

Executable Spec

Given the {carrier: "Gherkin"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the child contract binds its first Given step as {bindingKey: "cartSize"} and then as {rewordedBindingKey: "cartSize"}
Then the handlers bound to the first contract cover the second: {stillBound: true}

Open example

A step key equal to another step's skeleton withholds the contract · spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] the cart has {items:number} items; cartSize"}
Given a child example of that parent whose Given steps read {example: "the cart has {items: 2} items; cartSize"}
When the contracts are generated, the step lines are reworded by replacing {before: "the cart has"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the first contract finding about the child is {contractFinding: "contracts/duplicate-step-key"}
Then the child contract binds its first Given step as {bindingKey: ""} and then as {rewordedBindingKey: ""}

Open example

A step marker whose key is off the grammar refuses the carrier · spec:carrier.step-keys.malformed-marker-refused · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cart-size] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: "step key markers must be [#<lower-camel ASCII key>] followed by one space and text"}

Open example

Renaming a step key breaks the binding · spec:carrier.step-keys.renamed-key-breaks · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "cartSize"} with {after: "cartLines"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the child contract binds its first Given step as {bindingKey: "cartSize"} and then as {rewordedBindingKey: "cartLines"}
Then the handlers bound to the first contract cover the second: {stillBound: false}

Open example

One key on two vocabulary steps refuses the carrier · spec:carrier.step-keys.repeated-key-refused · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items; [#cartSize] the cart is open"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items; the cart is open"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: "names two steps; a step key names one step within a Spec"}

Open example

A keyed step reworded in its vocabulary and its example keeps its binding · spec:carrier.step-keys.reworded-keyed-step-stays-bound · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the child contract binds its first Given step as {bindingKey: "cartSize"} and then as {rewordedBindingKey: "cartSize"}
Then the handlers bound to the first contract cover the second: {stillBound: true}

Open example

The same rewording without a key breaks the binding · spec:carrier.step-keys.reworded-unkeyed-step-breaks · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the child contract binds its first Given step as {bindingKey: "a customer has a cart with {items} line items"} and then as {rewordedBindingKey: "the cart holds {items} line items"}
Then the handlers bound to the first contract cover the second: {stillBound: false}

Open example

Two keys on one step refuse the carrier · spec:carrier.step-keys.two-keys-on-one-step-refused · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items; [#cartLines] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: "carries two step keys; a step carries one key within a Spec"}

Open example

A keyed TypeScript step keeps its key through import to Markdown · spec:carrier.step-keys.typescript-keyed-step-imports-keyed · ready floor ready

Executable Spec

Given the {carrier: "TypeScript"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the child contract binds its first Given step as {bindingKey: "cartSize"} and then as {rewordedBindingKey: "cartSize"}
Then the carriers imported to Markdown write the parent's first Given step as {importedStep: "Given [#cartSize] the cart holds {items:number} line items"} and keep every step key and step text: {keptOnImport: true}

Open example

Example space

Given the {carrier:"Markdown"|"Gherkin"|"TypeScript"} carriers of a parent whose example space declares the Given steps {vocabulary:string}
Given a child example of that parent whose Given steps read {example:string}
When the contracts are generated, the step lines are reworded by replacing {before:string} with {after:string}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage:string}
Then the first contract finding about the child is {contractFinding:string}
Then the child contract binds its first Given step as {bindingKey:string} and then as {rewordedBindingKey:string}
Then the handlers bound to the first contract cover the second: {stillBound:boolean}
Then the carriers imported to Markdown write the parent's first Given step as {importedStep:string} and keep every step key and step text: {keptOnImport:boolean}
Design
stepMarker line 51 · specs/carrier/step-keys.sdp.md:51
<keyword> [#<key>] <text> is a keyed step in a gwt or gwt-vocabulary fence line and in a .sdp.gherkin step, with <keyword> one of Given, When, Then and And, and "[#<key>] <text>" is a keyed TypeScript step string; <key> matches ^[a-z][A-Za-z0-9]*$.

no citation recorded

stepKeysField line 52 · specs/carrier/step-keys.sdp.md:52
behavior.stepKeys maps each key to the skeleton of the step it names, in authored order, the example space's steps before the examples' steps; the step strings hold the text with the marker removed; a Spec with no keyed step carries no stepKeys, and the serialized graph writes it after exampleSpace.

no citation recorded

markerRefusal line 53 · specs/carrier/step-keys.sdp.md:53
step key markers must be [#<lower-camel ASCII key>] followed by one space and text is the message, as the finding extract/unrecognized-property at severity error.

no citation recorded

keyOnTwoSteps line 54 · specs/carrier/step-keys.sdp.md:54
step key "<key>" names two steps; a step key names one step within a Spec is the message, as the same finding, at each step that carries the key.

no citation recorded

twoKeysOnStep line 55 · specs/carrier/step-keys.sdp.md:55
step "<skeleton>" carries two step keys; a step carries one key within a Spec is the message, as the same finding, at each step of that skeleton that carries a key.

no citation recorded

stepPath line 56 · specs/carrier/step-keys.sdp.md:56
a step refusal's path is behavior.exampleSpace.<phase>[<i>] or behavior.examples[<n>].<phase>[<i>], with <phase> one of given, when and then and each index counting from 0; the finding carries the step's source line where its carrier reports one and the Spec's line otherwise.
conflictingKey line 57 · specs/carrier/step-keys.sdp.md:57
contracts/conflicting-step-key is the contract-generation warning for an example marker that disagrees with its vocabulary step; it names the example, the step's skeleton, the marker's key and the vocabulary step's key or none, and the example's step contract and registrar are withheld.

no citation recorded

importEmitter line 58 · specs/carrier/step-keys.sdp.md:58
the TypeScript-to-Markdown import writes [#<key>] at the start of every step of the Spec whose skeleton stepKeys maps the key to, so a keyed TypeScript Spec imports keyed.
keyedBinding line 59 · specs/carrier/step-keys.sdp.md:59
bindExample(contract, () => world, { cartSize: (world, { items }) => { … }, "the probe runs": (world) => { … } }) binds a keyed step by its key beside an unkeyed step bound by its skeleton.

no citation recorded

Verification

Verifier bindings

Example space

  • carrier · "Markdown" | "Gherkin" | "TypeScript" · declared by the {carrier} carriers of a parent whose example space declares the Given steps {vocabulary}
  • vocabulary · string · declared by the {carrier} carriers of a parent whose example space declares the Given steps {vocabulary}
  • example · string · declared by a child example of that parent whose Given steps read {example}
  • before · string · declared by the contracts are generated, the step lines are reworded by replacing {before} with {after}, and the contracts are generated again
  • after · string · declared by the contracts are generated, the step lines are reworded by replacing {before} with {after}, and the contracts are generated again

Bound points

Examplecarriervocabularyexamplebeforeafter
spec:carrier.step-keys.conflicting-example-key-withheld"Markdown""[#cartSize] a customer has a cart with {items:number} line items""[#basketSize] a customer has a cart with {items: 2} line items""a customer has a cart with""the cart holds"
spec:carrier.step-keys.gherkin-keyed-step-stays-bound"Gherkin""[#cartSize] a customer has a cart with {items:number} line items""a customer has a cart with {items: 2} line items""a customer has a cart with""the cart holds"
spec:carrier.step-keys.key-equal-to-a-skeleton-withheld"Markdown""[#cartSize] the cart has {items:number} items; cartSize""the cart has {items: 2} items; cartSize""the cart has""the cart holds"
spec:carrier.step-keys.malformed-marker-refused"Markdown""[#cart-size] a customer has a cart with {items:number} line items""a customer has a cart with {items: 2} line items""a customer has a cart with""the cart holds"
spec:carrier.step-keys.renamed-key-breaks"Markdown""[#cartSize] a customer has a cart with {items:number} line items""a customer has a cart with {items: 2} line items""cartSize""cartLines"
spec:carrier.step-keys.repeated-key-refused"Markdown""[#cartSize] a customer has a cart with {items:number} line items; [#cartSize] the cart is open""a customer has a cart with {items: 2} line items; the cart is open""a customer has a cart with""the cart holds"
spec:carrier.step-keys.reworded-keyed-step-stays-bound"Markdown""[#cartSize] a customer has a cart with {items:number} line items""a customer has a cart with {items: 2} line items""a customer has a cart with""the cart holds"
spec:carrier.step-keys.reworded-unkeyed-step-breaks"Markdown""a customer has a cart with {items:number} line items""a customer has a cart with {items: 2} line items""a customer has a cart with""the cart holds"
spec:carrier.step-keys.two-keys-on-one-step-refused"Markdown""[#cartSize] a customer has a cart with {items:number} line items; [#cartLines] a customer has a cart with {items:number} line items""a customer has a cart with {items: 2} line items""a customer has a cart with""the cart holds"
spec:carrier.step-keys.typescript-keyed-step-imports-keyed"TypeScript""[#cartSize] a customer has a cart with {items:number} line items""a customer has a cart with {items: 2} line items""a customer has a cart with""the cart holds"

Oracle binding: none

Coverage

vocabulary: "[#cartSize] a customer has a cart with {items:number} line items" · spec:carrier.step-keys.conflicting-example-key-withheld, spec:carrier.step-keys.gherkin-keyed-step-stays-bound, spec:carrier.step-keys.renamed-key-breaks, spec:carrier.step-keys.reworded-keyed-step-stays-bound, spec:carrier.step-keys.typescript-keyed-step-imports-keyed; "[#cartSize] the cart has {items:number} items; cartSize" · spec:carrier.step-keys.key-equal-to-a-skeleton-withheld; "[#cart-size] a customer has a cart with {items:number} line items" · spec:carrier.step-keys.malformed-marker-refused; "[#cartSize] a customer has a cart with {items:number} line items; [#cartSize] the cart is open" · spec:carrier.step-keys.repeated-key-refused; "a customer has a cart with {items:number} line items" · spec:carrier.step-keys.reworded-unkeyed-step-breaks; "[#cartSize] a customer has a cart with {items:number} line items; [#cartLines] a customer has a cart with {items:number} line items" · spec:carrier.step-keys.two-keys-on-one-step-refused · not enumerable

example: "[#basketSize] a customer has a cart with {items: 2} line items" · spec:carrier.step-keys.conflicting-example-key-withheld; "a customer has a cart with {items: 2} line items" · spec:carrier.step-keys.gherkin-keyed-step-stays-bound, spec:carrier.step-keys.malformed-marker-refused, spec:carrier.step-keys.renamed-key-breaks, spec:carrier.step-keys.reworded-keyed-step-stays-bound, spec:carrier.step-keys.reworded-unkeyed-step-breaks, spec:carrier.step-keys.two-keys-on-one-step-refused, spec:carrier.step-keys.typescript-keyed-step-imports-keyed; "the cart has {items: 2} items; cartSize" · spec:carrier.step-keys.key-equal-to-a-skeleton-withheld; "a customer has a cart with {items: 2} line items; the cart is open" · spec:carrier.step-keys.repeated-key-refused · not enumerable

before: "a customer has a cart with" · spec:carrier.step-keys.conflicting-example-key-withheld, spec:carrier.step-keys.gherkin-keyed-step-stays-bound, spec:carrier.step-keys.malformed-marker-refused, spec:carrier.step-keys.repeated-key-refused, spec:carrier.step-keys.reworded-keyed-step-stays-bound, spec:carrier.step-keys.reworded-unkeyed-step-breaks, spec:carrier.step-keys.two-keys-on-one-step-refused, spec:carrier.step-keys.typescript-keyed-step-imports-keyed; "the cart has" · spec:carrier.step-keys.key-equal-to-a-skeleton-withheld; "cartSize" · spec:carrier.step-keys.renamed-key-breaks · not enumerable

after: "the cart holds" · spec:carrier.step-keys.conflicting-example-key-withheld, spec:carrier.step-keys.gherkin-keyed-step-stays-bound, spec:carrier.step-keys.key-equal-to-a-skeleton-withheld, spec:carrier.step-keys.malformed-marker-refused, spec:carrier.step-keys.repeated-key-refused, spec:carrier.step-keys.reworded-keyed-step-stays-bound, spec:carrier.step-keys.reworded-unkeyed-step-breaks, spec:carrier.step-keys.two-keys-on-one-step-refused, spec:carrier.step-keys.typescript-keyed-step-imports-keyed; "cartLines" · spec:carrier.step-keys.renamed-key-breaks · not enumerable

Unbound

  • carrier: None
  • vocabulary: None
  • example: None
  • before: None
  • after: None
Design view

Requirement drawing

Requirement drawing for spec:carrier.step-keys
Requirement drawing for spec:carrier.step-keyssatisfies · anchoredrefines, verifies · declaredverifies · declaredrefines · declaredverifies · anchoredIntended Specsspec:carrier.step-keysAn example step may carry akey that survives rewording…carrier.step-keysdeclared SpecDeclared verifying examples10 verifying examples · declared; 10 test bindings · anchored, folded10 verifying examples ·declared10 test bindings · anchored ·foldedSatisfying or referencingunits7 satisfying units · anchored, folded7 satisfying units ·anchoredTest or oracle bindingstest:protocol.keyed-contenttest:protocol.keyed-content…protocol.keyed-contentanchored test binding ·binding presentOutside the selected setspec:carrier.slot-notationSlot notation declares,binds, and refuses to guess…carrier.slot-notationdeclared Specspec:extraction.executable-contractsThe build derives step andspace contracts from graphexamples…extraction.executable-contractsdeclared Spec
The diagram as text
  • spec:carrier.step-keys: An example step may carry a key that survives rewording · declared Spec
  • spec:carrier.step-keys.conflicting-example-key-withheld: An example marker that disagrees with its vocabulary withholds the contract · declared Spec
  • spec:carrier.step-keys.gherkin-keyed-step-stays-bound: A keyed Gherkin step keeps its binding across a rewording · declared Spec
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld: A step key equal to another step's skeleton withholds the contract · declared Spec
  • spec:carrier.step-keys.malformed-marker-refused: A step marker whose key is off the grammar refuses the carrier · declared Spec
  • spec:carrier.step-keys.renamed-key-breaks: Renaming a step key breaks the binding · declared Spec
  • spec:carrier.step-keys.repeated-key-refused: One key on two vocabulary steps refuses the carrier · declared Spec
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound: A keyed step reworded in its vocabulary and its example keeps its binding · declared Spec
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks: The same rewording without a key breaks the binding · declared Spec
  • spec:carrier.step-keys.two-keys-on-one-step-refused: Two keys on one step refuse the carrier · declared Spec
  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed: A keyed TypeScript step keeps its key through import to Markdown · declared Spec
  • spec:carrier.slot-notation: Slot notation declares, binds, and refuses to guess · declared Spec
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples · declared Spec
  • impl:protocol.example-runner: plans and executes a bound example against the caller's world · anchored code · src/runner/index.ts:108
  • impl:protocol.example-space-decoding: shared example-space interpretation for contracts and reader contexts · anchored code · src/notation/example-space.ts:473
  • impl:protocol.executable-contracts: derives step and example-space contracts from the graph · anchored code · src/codegen/contracts.ts:647
  • impl:protocol.key-markers: normalizes step and term markers across the three carriers · anchored code · src/extract/key-markers.ts:136
  • impl:protocol.open-section-order: preserves authored open-section and model-term order and Pack field order · anchored code · src/extract/serialize.ts:105
  • impl:protocol.sdp-import-markdown-emit: emits the Markdown document twin for an imported Spec · anchored code · src/import/emit-markdown.ts:253
  • impl:protocol.spec-sections: typed Spec section shapes · anchored code · src/model/sections.ts:138
  • test:protocol.keyed-content: test:protocol.keyed-content · anchored test binding · binding present · test/keyed-content.test.ts:28
  • test:protocol.step-keys.conflicting-example-key-withheld: test:protocol.step-keys.conflicting-example-key-withheld · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:26
  • test:protocol.step-keys.gherkin-keyed-step-stays-bound: test:protocol.step-keys.gherkin-keyed-step-stays-bound · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:73
  • test:protocol.step-keys.key-equal-to-a-skeleton-withheld: test:protocol.step-keys.key-equal-to-a-skeleton-withheld · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:120
  • test:protocol.step-keys.malformed-marker-refused: test:protocol.step-keys.malformed-marker-refused · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:167
  • test:protocol.step-keys.renamed-key-breaks: test:protocol.step-keys.renamed-key-breaks · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:214
  • test:protocol.step-keys.repeated-key-refused: test:protocol.step-keys.repeated-key-refused · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:261
  • test:protocol.step-keys.reworded-keyed-step-stays-bound: test:protocol.step-keys.reworded-keyed-step-stays-bound · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:308
  • test:protocol.step-keys.reworded-unkeyed-step-breaks: test:protocol.step-keys.reworded-unkeyed-step-breaks · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:355
  • test:protocol.step-keys.two-keys-on-one-step-refused: test:protocol.step-keys.two-keys-on-one-step-refused · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:402
  • test:protocol.step-keys.typescript-keyed-step-imports-keyed: test:protocol.step-keys.typescript-keyed-step-imports-keyed · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:449
  • spec:carrier.step-keys refines spec:carrier.slot-notation · declared — a key joins the step text the notation reads, ahead of its slots
  • spec:carrier.step-keys.conflicting-example-key-withheld refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.conflicting-example-key-withheld verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.conflicting-example-key-withheld verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.gherkin-keyed-step-stays-bound refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.gherkin-keyed-step-stays-bound verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.malformed-marker-refused refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.malformed-marker-refused verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.renamed-key-breaks refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.renamed-key-breaks verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.repeated-key-refused refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.repeated-key-refused verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.two-keys-on-one-step-refused refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.two-keys-on-one-step-refused verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed verifies spec:carrier.step-keys · declared
  • impl:protocol.example-runner satisfies spec:carrier.step-keys · anchored
  • impl:protocol.example-space-decoding satisfies spec:carrier.step-keys · anchored
  • impl:protocol.executable-contracts satisfies spec:carrier.step-keys · anchored
  • impl:protocol.key-markers satisfies spec:carrier.step-keys · anchored
  • impl:protocol.open-section-order satisfies spec:carrier.step-keys · anchored
  • impl:protocol.sdp-import-markdown-emit satisfies spec:carrier.step-keys · anchored
  • impl:protocol.spec-sections satisfies spec:carrier.step-keys · anchored
  • test:protocol.keyed-content verifies spec:carrier.step-keys · anchored
  • test:protocol.step-keys.conflicting-example-key-withheld verifies spec:carrier.step-keys.conflicting-example-key-withheld · anchored
  • test:protocol.step-keys.gherkin-keyed-step-stays-bound verifies spec:carrier.step-keys.gherkin-keyed-step-stays-bound · anchored
  • test:protocol.step-keys.key-equal-to-a-skeleton-withheld verifies spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · anchored
  • test:protocol.step-keys.malformed-marker-refused verifies spec:carrier.step-keys.malformed-marker-refused · anchored
  • test:protocol.step-keys.renamed-key-breaks verifies spec:carrier.step-keys.renamed-key-breaks · anchored
  • test:protocol.step-keys.repeated-key-refused verifies spec:carrier.step-keys.repeated-key-refused · anchored
  • test:protocol.step-keys.reworded-keyed-step-stays-bound verifies spec:carrier.step-keys.reworded-keyed-step-stays-bound · anchored
  • test:protocol.step-keys.reworded-unkeyed-step-breaks verifies spec:carrier.step-keys.reworded-unkeyed-step-breaks · anchored
  • test:protocol.step-keys.two-keys-on-one-step-refused verifies spec:carrier.step-keys.two-keys-on-one-step-refused · anchored
  • test:protocol.step-keys.typescript-keyed-step-imports-keyed verifies spec:carrier.step-keys.typescript-keyed-step-imports-keyed · 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

  • 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.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · 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.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.extract · the carrier and source pipeline · src/extract/index.ts:192 · 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.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocol

    Uses

    • component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · 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.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol

    Uses

    None.

  • 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.runner · provider-neutral example execution · src/runner/index.ts:99 · layer application · context protocol

    Uses

    • component:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocol
  • impl:protocol.example-runner · plans and executes a bound example against the caller's world · src/runner/index.ts:108

    Component: component:protocol.runner · provider-neutral example execution · src/runner/index.ts:99 · layer application · context protocol

    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.

  • impl:protocol.executable-contracts · derives step and example-space contracts from the graph · src/codegen/contracts.ts:647

    Component: component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocol

    Uses

    None.

  • impl:protocol.key-markers · normalizes step and term markers across the three carriers · src/extract/key-markers.ts:136

    Component: component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocol

    Uses

    None.

  • impl:protocol.open-section-order · preserves authored open-section and model-term order and Pack field order · src/extract/serialize.ts:105

    Component: component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocol

    Uses

    None.

  • impl:protocol.sdp-import-markdown-emit · emits the Markdown document twin for an imported Spec · src/import/emit-markdown.ts:253

    Component: component:protocol.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocol

    Uses

    None.

  • impl:protocol.spec-sections · typed Spec section shapes · src/model/sections.ts:138

    Component: component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · 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:carrier.step-keys
Relations of spec:carrier.step-keysdependsOn · declareddependsOn · declaredrefines · declareddecidedBy · declaredrefines · declaredverifies · declareddependsOn · declareddependsOn · declareddependsOn · declaredOutgoing refinesspec:carrier.slot-notationSlot notation declares,binds, and refuses to guess…carrier.slot-notationOutgoing decidedByspec:decisions.shipped-projections-frozenThe shipped projectionsstay frozen…decisions.shipped-projections-frozenSubjectspec:carrier.step-keysAn example step may carry akey that survives rewording…carrier.step-keysIncoming refinesspec:carrier.step-keys.fold.Incoming.refines10 Incoming refines, folded…carrier.step-keys.fold.Incoming.refinesIncoming dependsOnspec:carrier.gherkin-authoringGherkin authoring entersthe one graph…carrier.gherkin-authoringspec:carrier.markdown-body-grammarThe Markdown body acceptsone closed form per section…carrier.markdown-body-grammarspec:consumers.upgrade-kit.capability-adoptionCapability adoption countswhere each capability isused and where it couldapply…consumers.upgrade-kit.capability-adoptionspec:extraction.executable-contractsThe build derives step andspace contracts from graphexamples…extraction.executable-contractsspec:extraction.runnable-modulesDerived runnable modulesfreeze the registrarinterface…extraction.runnable-modules
The diagram as text
  • spec:carrier.gherkin-authoring: Gherkin authoring enters the one graph
  • spec:carrier.markdown-body-grammar: The Markdown body accepts one closed form per section
  • spec:carrier.slot-notation: Slot notation declares, binds, and refuses to guess
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:carrier.step-keys.conflicting-example-key-withheld: An example marker that disagrees with its vocabulary withholds the contract
  • spec:carrier.step-keys.gherkin-keyed-step-stays-bound: A keyed Gherkin step keeps its binding across a rewording
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld: A step key equal to another step's skeleton withholds the contract
  • spec:carrier.step-keys.malformed-marker-refused: A step marker whose key is off the grammar refuses the carrier
  • spec:carrier.step-keys.renamed-key-breaks: Renaming a step key breaks the binding
  • spec:carrier.step-keys.repeated-key-refused: One key on two vocabulary steps refuses the carrier
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound: A keyed step reworded in its vocabulary and its example keeps its binding
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks: The same rewording without a key breaks the binding
  • spec:carrier.step-keys.two-keys-on-one-step-refused: Two keys on one step refuse the carrier
  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed: A keyed TypeScript step keeps its key through import to Markdown
  • spec:consumers.upgrade-kit.capability-adoption: Capability adoption counts where each capability is used and where it could apply
  • spec:decisions.shipped-projections-frozen: The shipped projections stay frozen
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples
  • spec:extraction.runnable-modules: Derived runnable modules freeze the registrar interface
  • spec:carrier.step-keys decidedBy spec:decisions.shipped-projections-frozen · declared — keys stay off the frozen projections, which read the step text unchanged
  • spec:carrier.step-keys refines spec:carrier.slot-notation · declared — a key joins the step text the notation reads, ahead of its slots
  • spec:carrier.gherkin-authoring dependsOn spec:carrier.step-keys · declared — a step may open with a step key marker
  • spec:carrier.markdown-body-grammar dependsOn spec:carrier.step-keys · declared — a fence step may open with a step key marker
  • spec:consumers.upgrade-kit.capability-adoption dependsOn spec:carrier.step-keys · declared — step keys are counted where example steps are
  • spec:extraction.executable-contracts dependsOn spec:carrier.step-keys · declared — a keyed step's contract key is its step key
  • spec:extraction.runnable-modules dependsOn spec:carrier.step-keys · declared — the registrar binds each step under its contract key
  • spec:carrier.step-keys.conflicting-example-key-withheld refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.gherkin-keyed-step-stays-bound refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.malformed-marker-refused refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.renamed-key-breaks refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.repeated-key-refused refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.two-keys-on-one-step-refused refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.conflicting-example-key-withheld verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.gherkin-keyed-step-stays-bound verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.malformed-marker-refused verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.renamed-key-breaks verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.repeated-key-refused verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.two-keys-on-one-step-refused verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed verifies spec:carrier.step-keys · 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:carrier.slot-notation · stated ready, floor ready
  • decidedBy · spec:decisions.shipped-projections-frozen · stated ready, floor ready

Rested on by

Distance 1

Distance 2

  • spec:carrier.gherkin-authoring.authored-fact-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.authored-fact-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.contract-parity

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.contract-parity

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.description-location-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.description-location-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.duplicate-surface-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.duplicate-surface-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.example-space-extraction

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.example-space-extraction

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.malformed-relation-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.malformed-relation-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.missing-id-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.missing-id-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.multi-finding-bounded

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.multi-finding-bounded

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.parent-child-extraction

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.parent-child-extraction

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.step-less-scenario-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.step-less-scenario-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.unbound-ready-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.unbound-ready-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.unknown-tag-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.unknown-tag-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.unsupported-construct-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.unsupported-construct-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.inline-code-spans

    Implementing units

    • impl:protocol.inline-code-spans · src/extract/markdown-inline-code.ts:4

    Referencing units

    None.

    Enabled verifiers: spec:carrier.inline-code-spans.description, spec:carrier.inline-code-spans.list, spec:carrier.inline-code-spans.narrative, spec:carrier.inline-code-spans.pack

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.continuation-line-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.continuation-line-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.foreign-fence-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.foreign-fence-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.h3-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.h3-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.integer-term-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.integer-term-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.keyed-bullet-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.keyed-bullet-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.ordered-list-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.ordered-list-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.plain-bullet-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.plain-bullet-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.raw-html-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.raw-html-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.repeated-field-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.repeated-field-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.second-primary-owner-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.second-primary-owner-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.shared-description-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.shared-description-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.table-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.table-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.trailing-prose-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.trailing-prose-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.unrecognized-heading-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.unrecognized-heading-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-parser

    Implementing units

    • impl:protocol.markdown-parser · src/extract/markdown.ts:37
    • impl:protocol.static-reification · src/extract/reify.ts:2139

    Referencing units

    None.

    Enabled verifiers: spec:carrier.markdown-parser.bounded-parity, test:protocol.markdown-parser

    Packs: pack:self-hosting-v1

  • spec:carrier.prose-ownership-rule

    Implementing units

    • impl:protocol.markdown-body-grammar · src/extract/markdown-body.ts:120

    Referencing units

    None.

    Enabled verifiers: test:protocol.prose-ownership

    Packs: pack:self-hosting-v1

  • spec:consumers.adopter-on-ramp

    Implementing units

    • impl:protocol.adopter-help · src/cli/help.ts:167
    • impl:protocol.adopter-on-ramp · test/skills.test.ts:712

    Referencing units

    None.

    Enabled verifiers: test:protocol.adopter-on-ramp, test:protocol.shipped-protocol-corpus

    Packs: pack:self-hosting-v1

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

    Implementing units

    • impl:protocol.example-space-coverage-recipe · test/studio-s1.test.ts:856
    • impl:protocol.example-space-decoding · src/notation/example-space.ts:473

    Referencing units

    None.

    Enabled verifiers: spec:consumers.agent-surface.example-space-coverage.number-not-enumerable, spec:consumers.agent-surface.example-space-coverage.uncovered-literal

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

  • spec:consumers.authoring-on-ramp

    Implementing units

    • impl:protocol.authoring-on-ramp · test/skills.test.ts:76
    • impl:protocol.spec-scaffolder · src/cli/new-spec-command.ts:348

    Referencing units

    None.

    Enabled verifiers: test:protocol.authoring-on-ramp

    Packs: pack:self-hosting-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.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.upgrade-kit.capability-adoption.counts-a-corpus

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus

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

  • spec:decisions.adopted-registrars-committed

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:extraction.contract-declarations

    Implementing units

    • impl:protocol.pack-design · src/reader/reader.ts:499
    • impl:protocol.register-recipes · test/recipes.test.ts:2057

    Referencing units

    None.

    Enabled verifiers: test:protocol.register-recipes

    Packs: pack:self-hosting-v1

  • spec:extraction.example-runner

    Implementing units

    • component:protocol.adapters · src/adapters/vitest.ts:23
    • component:protocol.runner · src/runner/index.ts:99
    • impl:protocol.example-runner · src/runner/index.ts:108
    • impl:protocol.example-runner-adapter · src/adapters/vitest.ts:32

    Referencing units

    None.

    Enabled verifiers: spec:extraction.example-runner.red-step-naming, spec:extraction.example-runner.step-order, test:protocol.example-runner-cleanup

    Packs: pack:self-hosting-v1

  • spec:extraction.executable-contracts.case-colliding-path

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.executable-contracts.case-colliding-path

    Packs: pack:self-hosting-v1

  • spec:extraction.executable-contracts.concreteness-refusal

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.executable-contracts.concreteness-refusal

    Packs: pack:self-hosting-v1

  • spec:extraction.executable-contracts.multi-entry-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.executable-contracts.multi-entry-example

    Packs: pack:self-hosting-v1

  • spec:model.open-question-keys

    Implementing units

    • impl:protocol.open-question-keys · src/extract/markdown-body-owner-behavior.ts:38
    • impl:protocol.open-section-order · src/extract/serialize.ts:105
    • impl:protocol.prose-mentions · src/validate/validators.ts:1370
    • impl:protocol.register-recipes · test/recipes.test.ts:2057
    • impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253
    • impl:protocol.stable-ids · src/ids.ts:173
    • impl:protocol.static-reification · src/extract/reify.ts:2139

    Referencing units

    None.

    Enabled verifiers: spec:model.open-question-keys.keyed-question-resolves, spec:model.open-question-keys.renamed-key-breaks, spec:model.open-question-keys.repeated-key-refused

    Packs: pack:self-hosting-v1

Distance 3

  • spec:carrier.inline-code-spans.description

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.inline-code-spans.description

    Packs: pack:self-hosting-v1

  • spec:carrier.inline-code-spans.list

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.inline-code-spans.list

    Packs: pack:self-hosting-v1

  • spec:carrier.inline-code-spans.narrative

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.inline-code-spans.narrative

    Packs: pack:self-hosting-v1

  • spec:carrier.inline-code-spans.pack

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.inline-code-spans.pack

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-authoring

    Implementing units

    • impl:protocol.markdown-parser · src/extract/markdown.ts:37

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-authoring

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-pack-authoring

    Implementing units

    • impl:protocol.markdown-pack-authoring · src/extract/markdown-pack.ts:117
    • impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33
    • impl:protocol.static-reification · src/extract/reify.ts:2139

    Referencing units

    None.

    Enabled verifiers: spec:carrier.markdown-pack-authoring.markdown-ts-parity, spec:carrier.markdown-pack-authoring.spec-envelope-refused, test:protocol.roadmap-priority

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-parser.bounded-parity

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-parser.bounded-parity

    Packs: pack:self-hosting-v1

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

    Implementing units

    None.

    Referencing units

    None.

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

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

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

    Implementing units

    None.

    Referencing units

    None.

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

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

  • 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.delivery-session-on-ramp

    Implementing units

    • impl:protocol.delivery-session-on-ramp · test/skills.test.ts:83

    Referencing units

    None.

    Enabled verifiers: test:protocol.delivery-session-on-ramp

    Packs: pack:self-hosting-v1

  • spec:consumers.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.graph-first-planning

    Implementing units

    • impl:protocol.graph-first-planning · test/skills.test.ts:290

    Referencing units

    None.

    Enabled verifiers: test:protocol.graph-first-planning

    Packs: pack:self-hosting-v1

  • spec:consumers.pack-design

    Implementing units

    • impl:protocol.pack-design · src/reader/reader.ts:499

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-design

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

  • spec:consumers.shipped-protocol-corpus

    Implementing units

    • impl:protocol.shipped-protocol-corpus · test/package-smoke.test.ts:252

    Referencing units

    None.

    Enabled verifiers: test:protocol.shipped-protocol-corpus

    Packs: pack:self-hosting-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.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: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.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.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.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.upgrade-kit

    Implementing units

    • impl:protocol.upgrade-guide · test/upgrade-kit.test.ts:87

    Referencing units

    None.

    Enabled verifiers: test:protocol.upgrade-guide

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

  • spec:consumers.validate-watch

    Implementing units

    • impl:protocol.validate-watch · src/cli/validate-watch.ts:591

    Referencing units

    None.

    Enabled verifiers: test:protocol.validate-watch, test:protocol.validate-watch-rules

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

  • spec:decisions.prose-ownership

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.question-key-rendering

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:extraction.entry-locations

    Implementing units

    • impl:protocol.entry-location-recipes · test/recipes.test.ts:5979
    • impl:protocol.entry-locations · src/extract/derive.ts:78
    • impl:protocol.reader · src/reader/reader.ts:687

    Referencing units

    • impl:protocol.pack-design · src/reader/reader.ts:499

    Enabled verifiers: test:protocol.entry-locations

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

  • spec:extraction.example-runner.red-step-naming

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.example-runner.red-step-naming

    Packs: pack:self-hosting-v1

  • spec:extraction.example-runner.step-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.example-runner.step-order

    Packs: pack:self-hosting-v1

  • spec:model.enrichment-lifecycle

    Implementing units

    • impl:protocol.slimming-recipe · test/curation-recipes.test.ts:26

    Referencing units

    None.

    Enabled verifiers: test:protocol.slimming-recipe

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

  • spec:model.open-question-fields

    Implementing units

    • impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597
    • impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8

    Referencing units

    None.

    Enabled verifiers: spec:model.open-question-fields.dropped-list-warns, test:protocol.authoring-grammar, test:protocol.authoring-grammar-recipes

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

  • spec:model.open-question-keys.keyed-question-resolves

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.open-question-keys.keyed-question-resolves

    Packs: pack:self-hosting-v1

  • spec:model.open-question-keys.renamed-key-breaks

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.open-question-keys.renamed-key-breaks

    Packs: pack:self-hosting-v1

  • spec:model.open-question-keys.repeated-key-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.open-question-keys.repeated-key-refused

    Packs: pack:self-hosting-v1

  • spec:model.rule-keys

    Implementing units

    • impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597
    • impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8
    • impl:protocol.rule-exercises · src/validate/validators.ts:1479

    Referencing units

    None.

    Enabled verifiers: test:protocol.authoring-grammar, test:protocol.authoring-grammar-recipes

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

  • spec:validation.duplicate-ids

    Implementing units

    • impl:protocol.duplicate-id-exclusion · src/extract/index.ts:93
    • impl:protocol.duplicate-ids · src/validate/validators.ts:263

    Referencing units

    None.

    Enabled verifiers: spec:validation.duplicate-ids.dual-carrier

    Packs: pack:self-hosting-v1

Distance 4

  • spec:carrier.envelope-contract

    Implementing units

    • impl:protocol.envelope-contract · src/extract/markdown-frontmatter.ts:33
    • impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33

    Referencing units

    None.

    Enabled verifiers: test:protocol.envelope-contract

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-pack-authoring.markdown-ts-parity

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-pack-authoring.markdown-ts-parity

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-pack-authoring.spec-envelope-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-pack-authoring.spec-envelope-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.sdp-import

    Implementing units

    • component:protocol.import · src/import/import.ts:45
    • impl:protocol.import-fidelity · src/import/markdown-fidelity.ts:102
    • impl:protocol.sdp-import · src/cli/import-command.ts:71
    • impl:protocol.sdp-import-core · src/import/import.ts:58
    • impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253
    • impl:protocol.sdp-import-publish · src/cli/import-publish.ts:23
    • impl:protocol.sdp-import-scan · src/cli/import-scan.ts:62

    Referencing units

    None.

    Enabled verifiers: spec:carrier.sdp-import.round-trip

    Packs: pack:self-hosting-v1

  • spec:carrier.slot-notation

    Implementing units

    • component:protocol.notation · src/notation/slots.ts:261
    • impl:protocol.slot-notation · src/notation/slots.ts:269

    Referencing units

    None.

    Enabled verifiers: spec:carrier.slot-notation.one-literal-binding, spec:carrier.slot-notation.refused-guess, spec:carrier.slot-notation.typed-declaration

    Packs: pack:self-hosting-v1

  • spec:consumers.agent-surface.address-and-cycle-recipes

    Implementing units

    • impl:protocol.address-and-cycle-recipes · test/recipes.test.ts:3568

    Referencing units

    None.

    Enabled verifiers: spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing, spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run, spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run, test:protocol.address-and-cycle-recipes

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

  • spec:consumers.agent-surface.design-recipes

    Implementing units

    • impl:protocol.design-recipes · test/recipes.test.ts:4769

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-recipes

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

  • spec:consumers.agent-surface.register-recipes

    Implementing units

    • impl:protocol.register-recipes · test/recipes.test.ts:2057

    Referencing units

    None.

    Enabled verifiers: test:protocol.register-recipes

    Packs: pack:self-hosting-v1

  • 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.design-review

    Implementing units

    • impl:protocol.design-review · src/projections/design-review.ts:44
    • impl:protocol.design-review-codec · src/projections/design-review-markdown.ts:3

    Referencing units

    None.

    Enabled verifiers: spec:consumers.design-review.pure-projection

    Packs: pack:self-hosting-v1

  • spec:consumers.design-review.pack-design-page

    Implementing units

    • impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120

    Referencing units

    • impl:protocol.pack-design-sections · src/projections/design-review-pack-sections.ts:19

    Enabled verifiers: test:protocol.pack-design-page

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

  • spec:consumers.design-slice

    Implementing units

    • impl:protocol.design-slice-recipe · test/self-hosting-design-slice.test.ts:148

    Referencing units

    • impl:protocol.studio-slice-answer · src/projections/studio/slice-answer.ts:1

    Enabled verifiers: spec:consumers.design-slice.chain, spec:consumers.design-slice.component-absent, spec:consumers.design-slice.component-differing, spec:consumers.design-slice.component-matching, spec:consumers.design-slice.component-unreadable, spec:consumers.design-slice.component-unrelated, spec:consumers.design-slice.decision-backlink, spec:consumers.design-slice.dependency-cycle, spec:consumers.design-slice.folded-example, spec:consumers.design-slice.independent-example, spec:consumers.design-slice.outside-components, spec:consumers.design-slice.outside-holding, spec:consumers.design-slice.outside-satisfied, spec:consumers.design-slice.outside-unbound, test:protocol.design-slice

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

  • spec:consumers.gherkin-view

    Implementing units

    • impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6
    • impl:protocol.gherkin-view · src/projections/gherkin-view.ts:19
    • impl:protocol.gherkin-view-cli · src/cli/gherkin-command.ts:66

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-view

    Packs: pack:self-hosting-v1

  • spec:consumers.obsidian-vault.bases

    Implementing units

    • impl:protocol.vault-bases · src/projections/vault/bases.ts:43
    • impl:protocol.vault-notes · src/projections/vault/notes.ts:45

    Referencing units

    None.

    Enabled verifiers: spec:consumers.obsidian-vault.bases.views-match-sources

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.iteration

    Implementing units

    • impl:protocol.vault-sync · src/projections/vault/sync.ts:98
    • impl:protocol.vault-text · src/projections/vault/text.ts:30
    • impl:protocol.vault-watch · src/cli/vault-command.ts:219

    Referencing units

    None.

    Enabled verifiers: spec:consumers.obsidian-vault.iteration.watch-rewrites-changed-notes, spec:consumers.obsidian-vault.iteration.watch-source-anchor

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.readiness-planner

    Implementing units

    • impl:protocol.statement-queue-recipe · test/self-hosting-readiness-planner.test.ts:74

    Referencing units

    None.

    Enabled verifiers: spec:consumers.readiness-planner.cycle-shares-a-round, spec:consumers.readiness-planner.decision-first, spec:consumers.readiness-planner.dependency-order, spec:consumers.readiness-planner.owner-question-holds

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

  • spec:consumers.review-perspectives

    Implementing units

    • impl:protocol.perspective-filter-recipe · test/iteration-recipes.test.ts:753

    Referencing units

    None.

    Enabled verifiers: test:protocol.perspective-filter-recipe

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

  • spec:consumers.roadmap

    Implementing units

    • impl:protocol.roadmap-recipe · test/roadmap.test.ts:20

    Referencing units

    None.

    Enabled verifiers: spec:consumers.roadmap.blocking-part, spec:consumers.roadmap.buildable-part, spec:consumers.roadmap.built-work, spec:consumers.roadmap.design-part, spec:consumers.roadmap.drifting-part, spec:consumers.roadmap.missing-evidence, spec:consumers.roadmap.outside-parent, spec:consumers.roadmap.statement-order, spec:consumers.roadmap.statement-part, test:protocol.roadmap-recipe

    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.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.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.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.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.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.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.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.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.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:consumers.upgrade-kit.rule-key-proposal

    Implementing units

    • impl:protocol.rule-key-proposal-recipe · test/upgrade-kit.test.ts:742

    Referencing units

    None.

    Enabled verifiers: spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable, spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean

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

  • spec:decisions.carrier-ruling

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.carrier-universality

    Implementing units

    None.

    Referencing units

    • impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.pack-design-page

    Implementing units

    None.

    Referencing units

    • impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120

    Enabled verifiers: None

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

  • spec:decisions.sdp-ts-extension

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:extraction.entry-citations

    Implementing units

    • impl:protocol.entry-address-resolution · src/graph/entry-address.ts:6
    • impl:protocol.entry-citation-reader · src/reader/entry-citations.ts:19
    • impl:protocol.entry-citation-recipe · test/recipes.test.ts:7008
    • impl:protocol.entry-citation-scan · src/extract/entry-citations.ts:6

    Referencing units

    None.

    Enabled verifiers: spec:extraction.entry-citations.code-comment-cites-declaration, spec:extraction.entry-citations.test-title-cites-declaration, spec:extraction.entry-citations.unanchored-file-unread, spec:extraction.entry-citations.unresolved-citation

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

  • spec:extraction.pack-member-order

    Implementing units

    • impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33
    • impl:protocol.open-section-order · src/extract/serialize.ts:105
    • impl:protocol.pack-coherence · src/validate/validators.ts:1102
    • impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120
    • impl:protocol.pack-member-order · src/extract/derive.ts:153
    • impl:protocol.reader · src/reader/reader.ts:687

    Referencing units

    None.

    Enabled verifiers: spec:extraction.pack-member-order.manifest-order-kept, test:protocol.roadmap-priority

    Packs: pack:self-hosting-v1

  • spec:model.design-maturity

    Implementing units

    • impl:protocol.pack-design · src/reader/reader.ts:499

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-design

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

  • spec:model.open-question-fields.dropped-list-warns

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.open-question-fields.dropped-list-warns

    Packs: pack:self-hosting-v1

  • spec:model.relation-reasons

    Implementing units

    • impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597
    • impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.authoring-grammar, test:protocol.authoring-grammar-recipes

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

  • spec:model.term-addresses

    Implementing units

    • impl:protocol.address-and-cycle-recipes · test/recipes.test.ts:3568
    • impl:protocol.entry-locations · src/extract/derive.ts:78
    • impl:protocol.key-markers · src/extract/key-markers.ts:136
    • impl:protocol.open-section-order · src/extract/serialize.ts:105
    • impl:protocol.prose-mentions · src/validate/validators.ts:1370
    • impl:protocol.register-recipes · test/recipes.test.ts:2057
    • impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253
    • impl:protocol.spec-sections · src/model/sections.ts:138
    • impl:protocol.stable-ids · src/ids.ts:173

    Referencing units

    None.

    Enabled verifiers: spec:model.term-addresses.keyed-term-resolves, spec:model.term-addresses.malformed-term-marker-refused, spec:model.term-addresses.repeated-term-key-refused, spec:model.term-addresses.typescript-term-imports-keyed, spec:model.term-addresses.unknown-term-key-refused, test:protocol.keyed-content

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

  • spec:protocol.self-hosting

    Implementing units

    • impl:protocol.self-hosting · test/self-hosting-graph.test.ts:136

    Referencing units

    None.

    Enabled verifiers: test:protocol.self-hosting

    Packs: pack:self-hosting-v1

  • spec:validation.corpus-rules

    Implementing units

    • impl:protocol.corpus-rule-runner · src/cli/corpus-rules.ts:65
    • impl:protocol.corpus-rules · src/cli/validate-view-command.ts:79
    • impl:protocol.validate-watch · src/cli/validate-watch.ts:591

    Referencing units

    None.

    Enabled verifiers: spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run, spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run, spec:validation.corpus-rules.copies-contain-changes, spec:validation.corpus-rules.error-finding-fails, spec:validation.corpus-rules.malformed-finding-fails, spec:validation.corpus-rules.params-edit-starts-a-cycle, spec:validation.corpus-rules.rules-edit-starts-a-cycle, spec:validation.corpus-rules.unreadable-params-fail-one-file, spec:validation.corpus-rules.warning-finding-informs

    Packs: pack:adopter-speed-v1, pack:corpus-checks-v1, pack:design-management-v1, pack:self-hosting-v1

  • spec:validation.duplicate-ids.dual-carrier

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.duplicate-ids.dual-carrier

    Packs: pack:self-hosting-v1

  • spec:validation.prose-mentions

    Implementing units

    • impl:protocol.entry-address-resolution · src/graph/entry-address.ts:6
    • impl:protocol.prose-mentions · src/validate/validators.ts:1370

    Referencing units

    None.

    Enabled verifiers: test:protocol.entry-locations, test:protocol.prose-mentions

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal

    Implementing units

    • impl:protocol.superseded-decision-signal · src/validate/validators.ts:1817

    Referencing units

    None.

    Enabled verifiers: spec:validation.superseded-decision-signal.branch-names-every-end, spec:validation.superseded-decision-signal.chain-end-named, spec:validation.superseded-decision-signal.closed-chain-named, spec:validation.superseded-decision-signal.dependency-unread, spec:validation.superseded-decision-signal.end-and-loop-named, spec:validation.superseded-decision-signal.live-replacement-warns, spec:validation.superseded-decision-signal.replaced-ruling-warns, spec:validation.superseded-decision-signal.replacement-below-ready-named, spec:validation.superseded-decision-signal.superseded-subject-silent

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

Distance 5

  • spec:carrier.sdp-import.feature-adapter

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:carrier.sdp-import.round-trip

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.sdp-import.round-trip

    Packs: pack:self-hosting-v1

  • spec:carrier.slot-notation.one-literal-binding

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.slot-notation.one-literal-binding

    Packs: pack:self-hosting-v1

  • spec:carrier.slot-notation.refused-guess

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.slot-notation.refused-guess

    Packs: pack:self-hosting-v1

  • spec:carrier.slot-notation.typed-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.slot-notation.typed-declaration

    Packs: pack:self-hosting-v1

  • spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing

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

  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run

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

  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run

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

  • spec:consumers.agent-surface.answer-shapes

    Implementing units

    • impl:protocol.answer-shape-recipes · test/recipes.test.ts:6214

    Referencing units

    • impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597
    • impl:protocol.reader · src/reader/reader.ts:687

    Enabled verifiers: test:protocol.answer-shape-recipes

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

  • spec:consumers.binding-language-views

    Implementing units

    • impl:protocol.binding-language-index-table · src/projections/design-review-pages.ts:201
    • impl:protocol.binding-language-spec-page · src/projections/design-review-context.ts:95

    Referencing units

    None.

    Enabled verifiers: spec:consumers.binding-language-views.bound-spec-page, spec:consumers.binding-language-views.pack-member-table

    Packs: pack:self-hosting-v1

  • spec:consumers.context-bundle

    Implementing units

    • impl:protocol.context-bundle-recipe · test/iteration-recipes.test.ts:765

    Referencing units

    None.

    Enabled verifiers: spec:consumers.context-bundle.oversized-member-named, spec:consumers.context-bundle.parts-cover-the-pack, test:protocol.context-bundle-recipe

    Packs: pack:adopter-speed-v1, pack:design-iteration-v1, pack:design-management-v1, pack:self-hosting-v1

  • spec:consumers.derived-readiness-banner

    Implementing units

    • impl:protocol.derived-readiness-banner · src/projections/design-review-context.ts:18

    Referencing units

    None.

    Enabled verifiers: spec:consumers.derived-readiness-banner.dishonest-divergence, spec:consumers.derived-readiness-banner.honest-headroom, test:protocol.derived-readiness-banner.idea-floor-unmet

    Packs: pack:self-hosting-v1

  • spec:consumers.design-review.pure-projection

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-review.pure-projection

    Packs: pack:self-hosting-v1

  • spec:consumers.design-slice.chain

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.chain

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

  • spec:consumers.design-slice.component-absent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-absent

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

  • spec:consumers.design-slice.component-differing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-differing

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

  • spec:consumers.design-slice.component-matching

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-matching

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

  • spec:consumers.design-slice.component-unreadable

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-unreadable

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

  • spec:consumers.design-slice.component-unrelated

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-unrelated

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

  • spec:consumers.design-slice.decision-backlink

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.decision-backlink

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

  • spec:consumers.design-slice.dependency-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.dependency-cycle

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

  • spec:consumers.design-slice.folded-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.folded-example

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

  • spec:consumers.design-slice.independent-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.independent-example

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

  • spec:consumers.design-slice.outside-components

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-components

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

  • spec:consumers.design-slice.outside-holding

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-holding

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

  • spec:consumers.design-slice.outside-satisfied

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-satisfied

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

  • spec:consumers.design-slice.outside-unbound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-unbound

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

  • spec:consumers.intent-composition.proposal

    Implementing units

    • impl:protocol.proposal-schema-and-recipe · test/iteration-recipes.test.ts:1510
    • impl:protocol.studio-proposal-contract · src/studio-elements/proposal.ts:1

    Referencing units

    None.

    Enabled verifiers: test:protocol.proposal-schema-and-recipe

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

  • spec:consumers.obsidian-vault.bases.views-match-sources

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.bases.views-match-sources

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.iteration.watch-rewrites-changed-notes

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.iteration.watch-rewrites-changed-notes

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.iteration.watch-source-anchor

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.iteration.watch-source-anchor

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.notes

    Implementing units

    • impl:protocol.vault-notes · src/projections/vault/notes.ts:45
    • impl:protocol.vault-sections · src/projections/vault/sections.ts:10
    • impl:protocol.vault-text · src/projections/vault/text.ts:30

    Referencing units

    None.

    Enabled verifiers: spec:consumers.obsidian-vault.notes.case-collision-refused, spec:consumers.obsidian-vault.notes.entry-address-link, spec:consumers.obsidian-vault.notes.term-address-link, spec:consumers.obsidian-vault.notes.unresolved-mention-stays, test:protocol.vault-priority

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.projections-model.roadmap-views

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:consumers.readiness-planner.cycle-shares-a-round

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.cycle-shares-a-round

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

  • spec:consumers.readiness-planner.decision-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.decision-first

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

  • spec:consumers.readiness-planner.dependency-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.dependency-order

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

  • spec:consumers.readiness-planner.owner-question-holds

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.owner-question-holds

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

  • spec:consumers.roadmap.blocking-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.blocking-part

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

  • spec:consumers.roadmap.buildable-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.buildable-part

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

  • spec:consumers.roadmap.built-work

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.built-work

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

  • spec:consumers.roadmap.design-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.design-part

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

  • spec:consumers.roadmap.drifting-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.drifting-part

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-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.roadmap.missing-evidence

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.missing-evidence

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

  • spec:consumers.roadmap.outside-parent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.outside-parent

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

  • spec:consumers.roadmap.statement-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.statement-order

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

  • spec:consumers.roadmap.statement-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.statement-part

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

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

    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.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.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.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.upgrade-kit.rule-key-proposal.collision-and-unkeyable

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.rule-key-proposal.collision-and-unkeyable

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

  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.rule-key-proposal.proposal-applies-clean

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

  • spec:consumers.vault-on-ramp

    Implementing units

    • impl:protocol.vault-on-ramp · test/skills.test.ts:1995

    Referencing units

    None.

    Enabled verifiers: test:protocol.vault-on-ramp

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.wholesale-view-rewrite

    Implementing units

    • impl:protocol.build-pipeline-emit · src/cli/build-command.ts:251
    • impl:protocol.wholesale-view-rewrite · src/cli/validate-view-command.ts:128

    Referencing units

    None.

    Enabled verifiers: spec:consumers.wholesale-view-rewrite.build-invalidates-view, spec:consumers.wholesale-view-rewrite.failed-run-view-removed, spec:consumers.wholesale-view-rewrite.late-stale-page, spec:consumers.wholesale-view-rewrite.stale-page-removed

    Packs: pack:self-hosting-v1

  • spec:decisions.adopt-the-nouns

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.authored-entry-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.concept-docs-dissolve

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.envelope-grammar-posture

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.executable-meta-model

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.gherkin-carrier-option

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.pack-markdown-carrier

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.plain-language-references

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.protocol-naming

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.sdp-gherkin-extension

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:extraction.entry-citations.code-comment-cites-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.entry-citations.code-comment-cites-declaration

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

  • spec:extraction.entry-citations.test-title-cites-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.entry-citations.test-title-cites-declaration

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

  • spec:extraction.entry-citations.unanchored-file-unread

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.entry-citations.unanchored-file-unread

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

  • spec:extraction.entry-citations.unresolved-citation

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.entry-citations.unresolved-citation

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

  • spec:extraction.pack-member-order.manifest-order-kept

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-member-order

    Packs: pack:self-hosting-v1

  • spec:model.term-addresses.keyed-term-resolves

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.term-addresses.keyed-term-resolves

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

  • spec:model.term-addresses.malformed-term-marker-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.term-addresses.malformed-term-marker-refused

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

  • spec:model.term-addresses.repeated-term-key-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.term-addresses.repeated-term-key-refused

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

  • spec:model.term-addresses.typescript-term-imports-keyed

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.term-addresses.typescript-term-imports-keyed

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

  • spec:model.term-addresses.unknown-term-key-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.term-addresses.unknown-term-key-refused

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

  • spec:protocol.capability-epics

    Implementing units

    • impl:protocol.capability-epics · test/recipes.test.ts:8173

    Referencing units

    None.

    Enabled verifiers: test:protocol.capability-epics

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-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

  • spec:protocol.structural-self-binding

    Implementing units

    • impl:protocol.structural-self-binding · test/self-hosting-oracle/structural-edges.ts:76

    Referencing units

    None.

    Enabled verifiers: test:protocol.structural-self-binding

    Packs: pack:self-hosting-v1

  • spec:validation.architecture-constraints

    Implementing units

    • impl:protocol.architecture-walk-recipe · test/architecture-recipes.test.ts:10

    Referencing units

    None.

    Enabled verifiers: spec:validation.architecture-constraints.forbidden-layer-pair, spec:validation.architecture-constraints.isolated-context-as-rule, spec:validation.architecture-constraints.unstated-layer-unclassified

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

  • spec:validation.corpus-rules.copies-contain-changes

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.copies-contain-changes

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.error-finding-fails

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.error-finding-fails

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.malformed-finding-fails

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.malformed-finding-fails

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.params-edit-starts-a-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.params-edit-starts-a-cycle

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

  • spec:validation.corpus-rules.rules-edit-starts-a-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.rules-edit-starts-a-cycle

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

  • spec:validation.corpus-rules.unreadable-params-fail-one-file

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.unreadable-params-fail-one-file

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

  • spec:validation.corpus-rules.warning-finding-informs

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.warning-finding-informs

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.diagnostic-rendering

    Implementing units

    • impl:protocol.diagnostic-rendering-cli · src/cli/output.ts:23
    • impl:protocol.diagnostic-rendering-design-review · src/projections/design-review-context.ts:208
    • impl:protocol.validate-summary · src/cli/validate-view-command.ts:23
    • impl:protocol.validation-contracts · src/validate/contracts.ts:5

    Referencing units

    None.

    Enabled verifiers: spec:validation.diagnostic-rendering.composed-location, spec:validation.diagnostic-rendering.table-cell-location

    Packs: pack:self-hosting-v1

  • spec:validation.external-registers

    Implementing units

    • impl:protocol.external-registers-recipe · test/external-registers.test.ts:9

    Referencing units

    None.

    Enabled verifiers: spec:validation.external-registers.uncited-on-request, spec:validation.external-registers.unknown-and-retired

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

  • spec:validation.superseded-decision-signal.branch-names-every-end

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.branch-names-every-end

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.chain-end-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.chain-end-named

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.closed-chain-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.closed-chain-named

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.dependency-unread

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.dependency-unread

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.end-and-loop-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.end-and-loop-named

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.live-replacement-warns

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.live-replacement-warns

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.replaced-ruling-warns

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.replaced-ruling-warns

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.replacement-below-ready-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.replacement-below-ready-named

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.superseded-subject-silent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.superseded-subject-silent

    Packs: pack:self-hosting-v1

Distance 6

  • spec:consumers.binding-language-views.bound-spec-page

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.binding-language-views.bound-spec-page

    Packs: pack:self-hosting-v1

  • spec:consumers.binding-language-views.pack-member-table

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.binding-language-views.pack-member-table

    Packs: pack:self-hosting-v1

  • spec:consumers.census-page

    Implementing units

    • impl:protocol.census-page · src/projections/census.ts:21
    • impl:protocol.census-page-cli · src/cli/census-command.ts:66

    Referencing units

    None.

    Enabled verifiers: test:protocol.census-page

    Packs: pack:self-hosting-v1

  • spec:consumers.context-bundle.oversized-member-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.context-bundle.oversized-member-named

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

  • spec:consumers.context-bundle.parts-cover-the-pack

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.context-bundle.parts-cover-the-pack

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

  • spec:consumers.derived-readiness-banner.dishonest-divergence

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.derived-readiness-banner.dishonest-divergence

    Packs: pack:self-hosting-v1

  • spec:consumers.derived-readiness-banner.honest-headroom

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.derived-readiness-banner.honest-headroom

    Packs: pack:self-hosting-v1

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

    Implementing units

    • impl:protocol.proposal-memo-recipe · test/recipes.test.ts:7298
    • impl:protocol.studio-proposal-memo · src/studio-elements/memo.ts:13

    Referencing units

    None.

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

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

  • spec:consumers.mermaid-view

    Implementing units

    • impl:protocol.mermaid-view · src/projections/mermaid.ts:14
    • impl:protocol.mermaid-view-cli · src/cli/mermaid-command.ts:82

    Referencing units

    None.

    Enabled verifiers: test:protocol.mermaid-view

    Packs: pack:self-hosting-v1

  • spec:consumers.obsidian-vault

    Implementing units

    • impl:protocol.vault-command · src/cli/vault-command.ts:191
    • impl:protocol.vault-notes · src/projections/vault/notes.ts:45
    • impl:protocol.vault-sync · src/projections/vault/sync.ts:98

    Referencing units

    None.

    Enabled verifiers: spec:consumers.obsidian-vault.changed-note-refused, spec:consumers.obsidian-vault.failed-extraction-keeps-notes, spec:consumers.obsidian-vault.failed-extraction-recovered, spec:consumers.obsidian-vault.fresh-vault, spec:consumers.obsidian-vault.hidden-file-refused, spec:consumers.obsidian-vault.interrupted-run-recovered, spec:consumers.obsidian-vault.person-notes-survive, spec:consumers.obsidian-vault.unknown-note-refused, spec:consumers.obsidian-vault.vault-in-build-path-refused

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.notes.case-collision-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.case-collision-refused

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.notes.entry-address-link

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.entry-address-link

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.notes.term-address-link

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.term-address-link

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.notes.unresolved-mention-stays

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.unresolved-mention-stays

    Packs: pack:obsidian-vault-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.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.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.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.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.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.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.wholesale-view-rewrite.build-invalidates-view

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.wholesale-view-rewrite.build-invalidates-view

    Packs: pack:self-hosting-v1

  • spec:consumers.wholesale-view-rewrite.failed-run-view-removed

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.wholesale-view-rewrite.failed-run-view-removed

    Packs: pack:self-hosting-v1

  • spec:consumers.wholesale-view-rewrite.late-stale-page

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.wholesale-view-rewrite.late-stale-page

    Packs: pack:self-hosting-v1

  • spec:consumers.wholesale-view-rewrite.stale-page-removed

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.wholesale-view-rewrite.stale-page-removed

    Packs: pack:self-hosting-v1

  • spec:decisions.roadmap-priority

    Implementing units

    None.

    Referencing units

    • impl:protocol.pack-aggregate · src/model/pack.ts:23
    • impl:protocol.pack-member-order · src/extract/derive.ts:153

    Enabled verifiers: None

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

  • spec:protocol.delivery-record-cleanup

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:protocol.role-vocabulary

    Implementing units

    • impl:protocol.role-vocabulary · test/self-hosting-graph.test.ts:143

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:protocol.significant-units-review

    Implementing units

    • impl:protocol.structural-self-binding · test/self-hosting-oracle/structural-edges.ts:76

    Referencing units

    None.

    Enabled verifiers: test:protocol.structural-self-binding

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

  • spec:validation.architecture-constraints.forbidden-layer-pair

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.forbidden-layer-pair

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.architecture-constraints.isolated-context-as-rule

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.isolated-context-as-rule

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.architecture-constraints.unstated-layer-unclassified

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.unstated-layer-unclassified

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.diagnostic-rendering.composed-location

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.diagnostic-rendering.composed-location

    Packs: pack:self-hosting-v1

  • spec:validation.diagnostic-rendering.table-cell-location

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.diagnostic-rendering.table-cell-location

    Packs: pack:self-hosting-v1

  • spec:validation.external-registers.uncited-on-request

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.external-registers.uncited-on-request

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

  • spec:validation.external-registers.unknown-and-retired

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.external-registers.unknown-and-retired

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

Distance 7

  • spec:consumers.design-diff

    Implementing units

    • impl:protocol.design-diff-recipe · test/iteration-recipes.test.ts:27

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-diff-recipe, test:protocol.roadmap-priority

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

  • 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.obsidian-vault.changed-note-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.changed-note-refused

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.failed-extraction-keeps-notes

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.failed-extraction-keeps-notes

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.failed-extraction-recovered

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.failed-extraction-recovered

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.fresh-vault

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.fresh-vault

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.hidden-file-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.hidden-file-refused

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.interrupted-run-recovered

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.interrupted-run-recovered

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.person-notes-survive

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.person-notes-survive

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.unknown-note-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.unknown-note-refused

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.vault-in-build-path-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.vault-in-build-path-refused

    Packs: pack:obsidian-vault-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.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.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.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.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.structural-mermaid

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:decisions.roadmap-over-plans

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:decisions.vault-owned-folder

    Implementing units

    None.

    Referencing units

    • impl:protocol.vault-command · src/cli/vault-command.ts:191
    • impl:protocol.vault-sync · src/projections/vault/sync.ts:98

    Enabled verifiers: None

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:model.pack-aggregate

    Implementing units

    • impl:protocol.pack-aggregate · src/model/pack.ts:23

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-builder, test:protocol.roadmap-priority

    Packs: pack:self-hosting-v1

Distance 8

  • spec:decisions.pack-reified

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:validation.pack-coherence

    Implementing units

    • impl:protocol.pack-coherence · src/validate/validators.ts:1102

    Referencing units

    None.

    Enabled verifiers: spec:validation.pack-coherence.incoherent-aggregate

    Packs: pack:self-hosting-v1

Distance 9

  • spec:validation.pack-coherence.incoherent-aggregate

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-coherence.incoherent-aggregate

    Packs: pack:self-hosting-v1

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingspec:decisions.shipped-projections-frozen
spec:decisions.shipped-projections-frozen · resolves
declaredkeys stay off the frozen projections, which read the step text unchangedNone
refines · outgoingspec:carrier.slot-notation
spec:carrier.slot-notation · resolves
declareda key joins the step text the notation reads, ahead of its slotsNone
dependsOn · incomingspec:carrier.gherkin-authoring
spec:carrier.gherkin-authoring · resolves
declareda step may open with a step key markerNone
dependsOn · incomingspec:carrier.markdown-body-grammar
spec:carrier.markdown-body-grammar · resolves
declareda fence step may open with a step key markerNone
dependsOn · incomingCapability adoption counts where each capability is used and where it could apply
spec:consumers.upgrade-kit.capability-adoption · resolves
declaredstep keys are counted where example steps areNone
dependsOn · incomingThe build derives step and space contracts from graph examples
spec:extraction.executable-contracts · resolves
declareda keyed step's contract key is its step keyNone
dependsOn · incomingDerived runnable modules freeze the registrar interface
spec:extraction.runnable-modules · resolves
declaredthe registrar binds each step under its contract keyNone
refines · incomingAn example marker that disagrees with its vocabulary withholds the contract
spec:carrier.step-keys.conflicting-example-key-withheld · resolves
declaredNoneNone
refines · incomingA keyed Gherkin step keeps its binding across a rewording
spec:carrier.step-keys.gherkin-keyed-step-stays-bound · resolves
declaredNoneNone
refines · incomingA step key equal to another step's skeleton withholds the contract
spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · resolves
declaredNoneNone
refines · incomingA step marker whose key is off the grammar refuses the carrier
spec:carrier.step-keys.malformed-marker-refused · resolves
declaredNoneNone
refines · incomingRenaming a step key breaks the binding
spec:carrier.step-keys.renamed-key-breaks · resolves
declaredNoneNone
refines · incomingOne key on two vocabulary steps refuses the carrier
spec:carrier.step-keys.repeated-key-refused · resolves
declaredNoneNone
refines · incomingA keyed step reworded in its vocabulary and its example keeps its binding
spec:carrier.step-keys.reworded-keyed-step-stays-bound · resolves
declaredNoneNone
refines · incomingThe same rewording without a key breaks the binding
spec:carrier.step-keys.reworded-unkeyed-step-breaks · resolves
declaredNoneNone
refines · incomingTwo keys on one step refuse the carrier
spec:carrier.step-keys.two-keys-on-one-step-refused · resolves
declaredNoneNone
refines · incomingA keyed TypeScript step keeps its key through import to Markdown
spec:carrier.step-keys.typescript-keyed-step-imports-keyed · resolves
declaredNoneNone
verifies · incomingAn example marker that disagrees with its vocabulary withholds the contract
spec:carrier.step-keys.conflicting-example-key-withheld · resolves
declaredNonevocabularyHome
verifies · incomingA keyed Gherkin step keeps its binding across a rewording
spec:carrier.step-keys.gherkin-keyed-step-stays-bound · resolves
declaredNonestepMarker, vocabularyHome, rewordedStaysBound
verifies · incomingA step key equal to another step's skeleton withholds the contract
spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · resolves
declaredNonecontractKey
verifies · incomingA step marker whose key is off the grammar refuses the carrier
spec:carrier.step-keys.malformed-marker-refused · resolves
declaredNonemarkerRefusals
verifies · incomingRenaming a step key breaks the binding
spec:carrier.step-keys.renamed-key-breaks · resolves
declaredNonerenamedKey
verifies · incomingOne key on two vocabulary steps refuses the carrier
spec:carrier.step-keys.repeated-key-refused · resolves
declaredNoneoneKeyOneStep
verifies · incomingA keyed step reworded in its vocabulary and its example keeps its binding
spec:carrier.step-keys.reworded-keyed-step-stays-bound · resolves
declaredNonestepMarker, vocabularyHome, contractKey, rewordedStaysBound
verifies · incomingThe same rewording without a key breaks the binding
spec:carrier.step-keys.reworded-unkeyed-step-breaks · resolves
declaredNonecontractKey, unkeyedBreaks
verifies · incomingTwo keys on one step refuse the carrier
spec:carrier.step-keys.two-keys-on-one-step-refused · resolves
declaredNoneoneKeyOneStep
verifies · incomingA keyed TypeScript step keeps its key through import to Markdown
spec:carrier.step-keys.typescript-keyed-step-imports-keyed · resolves
declaredNonestepMarker, contractKey

Bindings

Implementation binding: present

  • impl:protocol.example-runner · plans and executes a bound example against the caller's world · src/runner/index.ts:108 · role service · component component:protocol.runner · layer application · context protocol
  • 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
  • impl:protocol.executable-contracts · derives step and example-space contracts from the graph · src/codegen/contracts.ts:647 · role projection · component component:protocol.codegen · layer application · context protocol
  • impl:protocol.key-markers · normalizes step and term markers across the three carriers · src/extract/key-markers.ts:136 · role codec · component component:protocol.extract · layer application · context protocol
  • impl:protocol.open-section-order · preserves authored open-section and model-term order and Pack field order · src/extract/serialize.ts:105 · role codec · component component:protocol.extract · layer application · context protocol
  • impl:protocol.sdp-import-markdown-emit · emits the Markdown document twin for an imported Spec · src/import/emit-markdown.ts:253 · role codec · component component:protocol.import · layer application · context protocol
  • impl:protocol.spec-sections · typed Spec section shapes · src/model/sections.ts:138 · role contract · component component:protocol.model · layer domain · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

22. An example marker that disagrees with its vocabulary withholds the contract

spec:carrier.step-keys.conflicting-example-key-withheld

An example marker that disagrees with its vocabulary withholds the contract

spec:carrier.step-keys.conflicting-example-key-withheldExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/carrier/step-keys.conflicting-example-key-withheld.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-key rule: an example step keyed apart from the vocabulary step it resolves to gets no step contract, and the finding names the conflict.
Behavior

Examples

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "[#basketSize] a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the first contract finding about the child is {contractFinding: "contracts/conflicting-step-key"}
Then the child contract binds its first Given step as {bindingKey: ""} and then as {rewordedBindingKey: ""}
Verification

Verifier bindings

  • test:protocol.step-keys.conflicting-example-key-withheld · anchored · test anchor binding present · test/self-hosting-step-keys.test.ts:26
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:carrier.step-keys.conflicting-example-key-withheld
The diagram as text
  • spec:carrier.step-keys.conflicting-example-key-withheld: An example marker that disagrees with its vocabulary withholds the contract · declared Spec
  • spec:carrier.step-keys: An example step may carry a key that survives rewording · declared Spec
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples · declared Spec
  • test:protocol.step-keys.conflicting-example-key-withheld: test:protocol.step-keys.conflicting-example-key-withheld · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:26
  • spec:carrier.step-keys.conflicting-example-key-withheld refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.conflicting-example-key-withheld verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.conflicting-example-key-withheld verifies spec:extraction.executable-contracts · declared
  • test:protocol.step-keys.conflicting-example-key-withheld verifies spec:carrier.step-keys.conflicting-example-key-withheld · 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:carrier.step-keys.conflicting-example-key-withheld
The diagram as text
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:carrier.step-keys.conflicting-example-key-withheld: An example marker that disagrees with its vocabulary withholds the contract
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples
  • spec:carrier.step-keys.conflicting-example-key-withheld refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.conflicting-example-key-withheld verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.conflicting-example-key-withheld verifies spec:extraction.executable-contracts · 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 · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNoneNone
verifies · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNonevocabularyHome
verifies · outgoingThe build derives step and space contracts from graph examples
spec:extraction.executable-contracts · resolves
declaredNonekeyConflicts

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.step-keys.conflicting-example-key-withheld · anchored · test/self-hosting-step-keys.test.ts:26 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

23. A keyed Gherkin step keeps its binding across a rewording

spec:carrier.step-keys.gherkin-keyed-step-stays-bound

A keyed Gherkin step keeps its binding across a rewording

spec:carrier.step-keys.gherkin-keyed-step-stays-boundExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/carrier/step-keys.gherkin-keyed-step-stays-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 step marker in the Gherkin carrier, where the vocabulary lives in the @example-space pseudo-scenario and the child is an ordinary Scenario.
Behavior

Examples

Given the {carrier: "Gherkin"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the child contract binds its first Given step as {bindingKey: "cartSize"} and then as {rewordedBindingKey: "cartSize"}
Then the handlers bound to the first contract cover the second: {stillBound: true}
Verification

Verifier bindings

  • test:protocol.step-keys.gherkin-keyed-step-stays-bound · anchored · test anchor binding present · test/self-hosting-step-keys.test.ts:73
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:carrier.step-keys.gherkin-keyed-step-stays-bound
The diagram as text
  • spec:carrier.step-keys.gherkin-keyed-step-stays-bound: A keyed Gherkin step keeps its binding across a rewording · declared Spec
  • spec:carrier.step-keys: An example step may carry a key that survives rewording · declared Spec
  • test:protocol.step-keys.gherkin-keyed-step-stays-bound: test:protocol.step-keys.gherkin-keyed-step-stays-bound · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:73
  • spec:carrier.step-keys.gherkin-keyed-step-stays-bound refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.gherkin-keyed-step-stays-bound verifies spec:carrier.step-keys · declared
  • test:protocol.step-keys.gherkin-keyed-step-stays-bound verifies spec:carrier.step-keys.gherkin-keyed-step-stays-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:carrier.step-keys.gherkin-keyed-step-stays-bound
  • E2: verifies · declared
The diagram as text
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:carrier.step-keys.gherkin-keyed-step-stays-bound: A keyed Gherkin step keeps its binding across a rewording
  • spec:carrier.step-keys.gherkin-keyed-step-stays-bound refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.gherkin-keyed-step-stays-bound verifies spec:carrier.step-keys · 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 · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNoneNone
verifies · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNonestepMarker, vocabularyHome, rewordedStaysBound

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.step-keys.gherkin-keyed-step-stays-bound · anchored · test/self-hosting-step-keys.test.ts:73 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

24. A step key equal to another step's skeleton withholds the contract

spec:carrier.step-keys.key-equal-to-a-skeleton-withheld

A step key equal to another step's skeleton withholds the contract

spec:carrier.step-keys.key-equal-to-a-skeleton-withheldExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/carrier/step-keys.key-equal-to-a-skeleton-withheld.sdp.md

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

Intent
outcome
Execute the contract-key collision: a keyed step and an unkeyed step whose skeleton is that key would share one contract key, so extraction accepts both and contract generation withholds the child's step contract with a named finding.
Behavior

Examples

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] the cart has {items:number} items; cartSize"}
Given a child example of that parent whose Given steps read {example: "the cart has {items: 2} items; cartSize"}
When the contracts are generated, the step lines are reworded by replacing {before: "the cart has"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the first contract finding about the child is {contractFinding: "contracts/duplicate-step-key"}
Then the child contract binds its first Given step as {bindingKey: ""} and then as {rewordedBindingKey: ""}
Verification

Verifier bindings

  • test:protocol.step-keys.key-equal-to-a-skeleton-withheld · anchored · test anchor binding present · test/self-hosting-step-keys.test.ts:120
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:carrier.step-keys.key-equal-to-a-skeleton-withheld
The diagram as text
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld: A step key equal to another step's skeleton withholds the contract · declared Spec
  • spec:carrier.step-keys: An example step may carry a key that survives rewording · declared Spec
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples · declared Spec
  • test:protocol.step-keys.key-equal-to-a-skeleton-withheld: test:protocol.step-keys.key-equal-to-a-skeleton-withheld · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:120
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld verifies spec:extraction.executable-contracts · declared
  • test:protocol.step-keys.key-equal-to-a-skeleton-withheld verifies spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · 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:carrier.step-keys.key-equal-to-a-skeleton-withheld
The diagram as text
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld: A step key equal to another step's skeleton withholds the contract
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld verifies spec:extraction.executable-contracts · 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 · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNoneNone
verifies · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNonecontractKey
verifies · outgoingThe build derives step and space contracts from graph examples
spec:extraction.executable-contracts · resolves
declaredNonekeyConflicts

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.step-keys.key-equal-to-a-skeleton-withheld · anchored · test/self-hosting-step-keys.test.ts:120 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

25. A step marker whose key is off the grammar refuses the carrier

spec:carrier.step-keys.malformed-marker-refused

A step marker whose key is off the grammar refuses the carrier

spec:carrier.step-keys.malformed-marker-refusedExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/carrier/step-keys.malformed-marker-refused.sdp.md

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

Intent
outcome
Execute the marker refusal on step text that opens with a marker whose key is not lower-camel ASCII.
Behavior

Examples

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cart-size] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: "step key markers must be [#<lower-camel ASCII key>] followed by one space and text"}
Verification

Verifier bindings

  • test:protocol.step-keys.malformed-marker-refused · anchored · test anchor binding present · test/self-hosting-step-keys.test.ts:167
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:carrier.step-keys.malformed-marker-refused
The diagram as text
  • spec:carrier.step-keys.malformed-marker-refused: A step marker whose key is off the grammar refuses the carrier · declared Spec
  • spec:carrier.step-keys: An example step may carry a key that survives rewording · declared Spec
  • test:protocol.step-keys.malformed-marker-refused: test:protocol.step-keys.malformed-marker-refused · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:167
  • spec:carrier.step-keys.malformed-marker-refused refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.malformed-marker-refused verifies spec:carrier.step-keys · declared
  • test:protocol.step-keys.malformed-marker-refused verifies spec:carrier.step-keys.malformed-marker-refused · 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:carrier.step-keys.malformed-marker-refused
  • E2: verifies · declared
The diagram as text
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:carrier.step-keys.malformed-marker-refused: A step marker whose key is off the grammar refuses the carrier
  • spec:carrier.step-keys.malformed-marker-refused refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.malformed-marker-refused verifies spec:carrier.step-keys · 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 · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNoneNone
verifies · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNonemarkerRefusals

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.step-keys.malformed-marker-refused · anchored · test/self-hosting-step-keys.test.ts:167 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

26. Renaming a step key breaks the binding

spec:carrier.step-keys.renamed-key-breaks

Renaming a step key breaks the binding

spec:carrier.step-keys.renamed-key-breaksExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/carrier/step-keys.renamed-key-breaks.sdp.md

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

Intent
outcome
Execute the renamed-key rule: a change of the key itself, with the wording left as it was, renames the step in the contract.
Behavior

Examples

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "cartSize"} with {after: "cartLines"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the child contract binds its first Given step as {bindingKey: "cartSize"} and then as {rewordedBindingKey: "cartLines"}
Then the handlers bound to the first contract cover the second: {stillBound: false}
Verification

Verifier bindings

  • test:protocol.step-keys.renamed-key-breaks · anchored · test anchor binding present · test/self-hosting-step-keys.test.ts:214
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:carrier.step-keys.renamed-key-breaks
The diagram as text
  • spec:carrier.step-keys.renamed-key-breaks: Renaming a step key breaks the binding · declared Spec
  • spec:carrier.step-keys: An example step may carry a key that survives rewording · declared Spec
  • test:protocol.step-keys.renamed-key-breaks: test:protocol.step-keys.renamed-key-breaks · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:214
  • spec:carrier.step-keys.renamed-key-breaks refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.renamed-key-breaks verifies spec:carrier.step-keys · declared
  • test:protocol.step-keys.renamed-key-breaks verifies spec:carrier.step-keys.renamed-key-breaks · 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:carrier.step-keys.renamed-key-breaks
  • E2: verifies · declared
The diagram as text
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:carrier.step-keys.renamed-key-breaks: Renaming a step key breaks the binding
  • spec:carrier.step-keys.renamed-key-breaks refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.renamed-key-breaks verifies spec:carrier.step-keys · 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 · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNoneNone
verifies · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNonerenamedKey

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.step-keys.renamed-key-breaks · anchored · test/self-hosting-step-keys.test.ts:214 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

27. One key on two vocabulary steps refuses the carrier

spec:carrier.step-keys.repeated-key-refused

One key on two vocabulary steps refuses the carrier

spec:carrier.step-keys.repeated-key-refusedExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/carrier/step-keys.repeated-key-refused.sdp.md

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

Intent
outcome
Execute the refusal of a key that names two steps of one Spec.
Behavior

Examples

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items; [#cartSize] the cart is open"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items; the cart is open"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: "names two steps; a step key names one step within a Spec"}
Verification

Verifier bindings

  • test:protocol.step-keys.repeated-key-refused · anchored · test anchor binding present · test/self-hosting-step-keys.test.ts:261
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:carrier.step-keys.repeated-key-refused
The diagram as text
  • spec:carrier.step-keys.repeated-key-refused: One key on two vocabulary steps refuses the carrier · declared Spec
  • spec:carrier.step-keys: An example step may carry a key that survives rewording · declared Spec
  • test:protocol.step-keys.repeated-key-refused: test:protocol.step-keys.repeated-key-refused · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:261
  • spec:carrier.step-keys.repeated-key-refused refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.repeated-key-refused verifies spec:carrier.step-keys · declared
  • test:protocol.step-keys.repeated-key-refused verifies spec:carrier.step-keys.repeated-key-refused · 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:carrier.step-keys.repeated-key-refused
  • E2: verifies · declared
The diagram as text
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:carrier.step-keys.repeated-key-refused: One key on two vocabulary steps refuses the carrier
  • spec:carrier.step-keys.repeated-key-refused refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.repeated-key-refused verifies spec:carrier.step-keys · 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 · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNoneNone
verifies · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNoneoneKeyOneStep

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.step-keys.repeated-key-refused · anchored · test/self-hosting-step-keys.test.ts:261 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

28. A keyed step reworded in its vocabulary and its example keeps its binding

spec:carrier.step-keys.reworded-keyed-step-stays-bound

A keyed step reworded in its vocabulary and its example keeps its binding

spec:carrier.step-keys.reworded-keyed-step-stays-boundExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/carrier/step-keys.reworded-keyed-step-stays-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 step key's acceptance: a step keyed in the parent's vocabulary keeps its contract key across a rewording, so the handlers bound before it still bind.
Behavior

Examples

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the child contract binds its first Given step as {bindingKey: "cartSize"} and then as {rewordedBindingKey: "cartSize"}
Then the handlers bound to the first contract cover the second: {stillBound: true}
Verification

Verifier bindings

  • test:protocol.step-keys.reworded-keyed-step-stays-bound · anchored · test anchor binding present · test/self-hosting-step-keys.test.ts:308
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:carrier.step-keys.reworded-keyed-step-stays-bound
The diagram as text
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound: A keyed step reworded in its vocabulary and its example keeps its binding · declared Spec
  • spec:carrier.step-keys: An example step may carry a key that survives rewording · declared Spec
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples · declared Spec
  • test:protocol.step-keys.reworded-keyed-step-stays-bound: test:protocol.step-keys.reworded-keyed-step-stays-bound · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:308
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound verifies spec:extraction.executable-contracts · declared
  • test:protocol.step-keys.reworded-keyed-step-stays-bound verifies spec:carrier.step-keys.reworded-keyed-step-stays-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:carrier.step-keys.reworded-keyed-step-stays-bound
The diagram as text
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound: A keyed step reworded in its vocabulary and its example keeps its binding
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound verifies spec:extraction.executable-contracts · 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 · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNoneNone
verifies · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNonestepMarker, vocabularyHome, contractKey, rewordedStaysBound
verifies · outgoingThe build derives step and space contracts from graph examples
spec:extraction.executable-contracts · resolves
declaredNonecontractKeys

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.step-keys.reworded-keyed-step-stays-bound · anchored · test/self-hosting-step-keys.test.ts:308 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

29. The same rewording without a key breaks the binding

spec:carrier.step-keys.reworded-unkeyed-step-breaks

The same rewording without a key breaks the binding

spec:carrier.step-keys.reworded-unkeyed-step-breaksExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/carrier/step-keys.reworded-unkeyed-step-breaks.sdp.md

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

Intent
outcome
Execute the contrast to the keyed rewording: an unkeyed step is keyed by its skeleton, so the same rewording renames it and the handlers bound before it no longer cover the contract.
Behavior

Examples

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the child contract binds its first Given step as {bindingKey: "a customer has a cart with {items} line items"} and then as {rewordedBindingKey: "the cart holds {items} line items"}
Then the handlers bound to the first contract cover the second: {stillBound: false}
Verification

Verifier bindings

  • test:protocol.step-keys.reworded-unkeyed-step-breaks · anchored · test anchor binding present · test/self-hosting-step-keys.test.ts:355
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:carrier.step-keys.reworded-unkeyed-step-breaks
The diagram as text
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks: The same rewording without a key breaks the binding · declared Spec
  • spec:carrier.step-keys: An example step may carry a key that survives rewording · declared Spec
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples · declared Spec
  • test:protocol.step-keys.reworded-unkeyed-step-breaks: test:protocol.step-keys.reworded-unkeyed-step-breaks · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:355
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks verifies spec:extraction.executable-contracts · declared
  • test:protocol.step-keys.reworded-unkeyed-step-breaks verifies spec:carrier.step-keys.reworded-unkeyed-step-breaks · 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:carrier.step-keys.reworded-unkeyed-step-breaks
The diagram as text
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks: The same rewording without a key breaks the binding
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks verifies spec:extraction.executable-contracts · 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 · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNoneNone
verifies · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNonecontractKey, unkeyedBreaks
verifies · outgoingThe build derives step and space contracts from graph examples
spec:extraction.executable-contracts · resolves
declaredNonecontractKeys

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.step-keys.reworded-unkeyed-step-breaks · anchored · test/self-hosting-step-keys.test.ts:355 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

30. Two keys on one step refuse the carrier

spec:carrier.step-keys.two-keys-on-one-step-refused

Two keys on one step refuse the carrier

spec:carrier.step-keys.two-keys-on-one-step-refusedExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/carrier/step-keys.two-keys-on-one-step-refused.sdp.md

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

Intent
outcome
Execute the refusal of one step, written twice in a vocabulary, that carries a different key each time.
Behavior

Examples

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items; [#cartLines] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: "carries two step keys; a step carries one key within a Spec"}
Verification

Verifier bindings

  • test:protocol.step-keys.two-keys-on-one-step-refused · anchored · test anchor binding present · test/self-hosting-step-keys.test.ts:402
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:carrier.step-keys.two-keys-on-one-step-refused
The diagram as text
  • spec:carrier.step-keys.two-keys-on-one-step-refused: Two keys on one step refuse the carrier · declared Spec
  • spec:carrier.step-keys: An example step may carry a key that survives rewording · declared Spec
  • test:protocol.step-keys.two-keys-on-one-step-refused: test:protocol.step-keys.two-keys-on-one-step-refused · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:402
  • spec:carrier.step-keys.two-keys-on-one-step-refused refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.two-keys-on-one-step-refused verifies spec:carrier.step-keys · declared
  • test:protocol.step-keys.two-keys-on-one-step-refused verifies spec:carrier.step-keys.two-keys-on-one-step-refused · 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:carrier.step-keys.two-keys-on-one-step-refused
  • E2: verifies · declared
The diagram as text
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:carrier.step-keys.two-keys-on-one-step-refused: Two keys on one step refuse the carrier
  • spec:carrier.step-keys.two-keys-on-one-step-refused refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.two-keys-on-one-step-refused verifies spec:carrier.step-keys · 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 · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNoneNone
verifies · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNoneoneKeyOneStep

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.step-keys.two-keys-on-one-step-refused · anchored · test/self-hosting-step-keys.test.ts:402 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

31. A keyed TypeScript step keeps its key through import to Markdown

spec:carrier.step-keys.typescript-keyed-step-imports-keyed

A keyed TypeScript step keeps its key through import to Markdown

spec:carrier.step-keys.typescript-keyed-step-imports-keyedExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/carrier/step-keys.typescript-keyed-step-imports-keyed.sdp.md

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

Intent
outcome
Execute the step marker in the TypeScript carrier: a keyed step string keeps its contract key across a rewording, and importing the carriers to Markdown writes the marker and extracts to the same step keys and step text.
Behavior

Examples

Given the {carrier: "TypeScript"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the child contract binds its first Given step as {bindingKey: "cartSize"} and then as {rewordedBindingKey: "cartSize"}
Then the carriers imported to Markdown write the parent's first Given step as {importedStep: "Given [#cartSize] the cart holds {items:number} line items"} and keep every step key and step text: {keptOnImport: true}
Verification

Verifier bindings

  • test:protocol.step-keys.typescript-keyed-step-imports-keyed · anchored · test anchor binding present · test/self-hosting-step-keys.test.ts:449
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:carrier.step-keys.typescript-keyed-step-imports-keyed
The diagram as text
  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed: A keyed TypeScript step keeps its key through import to Markdown · declared Spec
  • spec:carrier.step-keys: An example step may carry a key that survives rewording · declared Spec
  • test:protocol.step-keys.typescript-keyed-step-imports-keyed: test:protocol.step-keys.typescript-keyed-step-imports-keyed · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:449
  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed verifies spec:carrier.step-keys · declared
  • test:protocol.step-keys.typescript-keyed-step-imports-keyed verifies spec:carrier.step-keys.typescript-keyed-step-imports-keyed · 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:carrier.step-keys.typescript-keyed-step-imports-keyed
  • E2: verifies · declared
The diagram as text
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed: A keyed TypeScript step keeps its key through import to Markdown
  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed verifies spec:carrier.step-keys · 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 · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNoneNone
verifies · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredNonestepMarker, contractKey

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.step-keys.typescript-keyed-step-imports-keyed · anchored · test/self-hosting-step-keys.test.ts:449 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

32. The build derives step and space contracts from graph examples

spec:extraction.executable-contracts

The build derives step and space contracts from graph examples

spec:extraction.executable-contractsUse Case / Behavior · featureready floor ready

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

Design: 6 design entries · 5 pinned declarations · 1 decision

Findings: no errors, no warnings

specs/extraction/executable-contracts.sdp.md

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

Intent
outcome
Give bound tests typed step contracts and space contracts without reading authored Specs directly.
Behavior
rule line 22 · specs/extraction/executable-contracts.sdp.md:22
generateContracts derives per-example step contracts and per-parent space contracts solely from the extracted graph.
rule line 23 · specs/extraction/executable-contracts.sdp.md:23
A generated contract is disposable, keyed by Spec ID, and withheld when its example is not in the bindable form or its steps do not resolve against the shared vocabulary.
rule.concreteness line 24 · specs/extraction/executable-contracts.sdp.md:24
The concreteness law is a refusal, never a guess — an example carrying an unbound slot in any used step of any entry is not the bindable form and receives no step contract, and a prose-only example receives none either.

spec:extraction.executable-contracts.concreteness-refusal · enabled

rule line 25 · specs/extraction/executable-contracts.sdp.md:25
Concreteness reads the example's own form, whether or not a parent declares shared vocabulary. Vocabulary resolution is a separate later check; incompatible resolution withholds the step contract with contracts/unmatched-vocabulary-step.
rule.onePoint line 26 · specs/extraction/executable-contracts.sdp.md:26
An example is one point, so the step contract and bound point derive from the same first complete structured Given/When/Then entry. A further entry, which the TypeScript carrier can carry, is named contracts/multi-entry-example rather than left silently inert.

spec:extraction.executable-contracts.multi-entry-example · enabled

rule.contractKeys line 27 · specs/extraction/executable-contracts.sdp.md:27
Each step of a step contract carries its contract key beside its skeleton: its step key, from its own marker or from the vocabulary step it resolves to, under spec:carrier.step-keys, and its skeleton when it has none. The Step union and the StepParams properties are the contract keys in first-occurrence order, and the runner dispatches each step to the handler bound under its contract key.

spec:carrier.step-keys.reworded-keyed-step-stays-bound · enabled, spec:carrier.step-keys.reworded-unkeyed-step-breaks · enabled

rule line 28 · specs/extraction/executable-contracts.sdp.md:28
Degradation is loud and local: an undeclared slot or a value outside its declared type is named and left out of the bound point; an off-type value stays in the step contract, widened to its scalar kind, so the emitted module still compiles; and a conflicting re-binding is named and its first value wins, in the bound point for a slot bound twice and in the step contract for a step that recurs with other values.
rule line 29 · specs/extraction/executable-contracts.sdp.md:29
A vocabulary slot group that declares no usable type is named rather than dropped in silence, and no dimension enters the space for it.
rule.outcomeIdentity line 30 · specs/extraction/executable-contracts.sdp.md:30
Each Then step of the parent's example space is one variant of the space contract's Outcome union, whose kind is that step's contract key, its step key or else its skeleton text; the build derives no slug or ordinal, and the runner core adds unspecified.

no example exercises it

rule.keyConflicts line 31 · specs/extraction/executable-contracts.sdp.md:31
A contract never holds two steps under one contract key. An example marker that disagrees with the key of its vocabulary step withholds the example's step contract with contracts/conflicting-step-key. A step or space contract whose steps would share a contract key, two skeletons under one key or a key equal to another step's skeleton, is withheld with contracts/duplicate-step-key, naming the key and both skeletons; a withheld space contract withholds every registrar of its children.

spec:carrier.step-keys.conflicting-example-key-withheld · enabled, spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · enabled

rule.caseCollision line 32 · specs/extraction/executable-contracts.sdp.md:32
Two contract paths differing only by letter case cannot coexist on a case-insensitive filesystem, so the contracts tree is withheld whole and the finding names the colliding pair.

spec:extraction.executable-contracts.case-colliding-path · enabled

rule line 33 · specs/extraction/executable-contracts.sdp.md:33
Every generation finding is a warning that describes what did not emit; gating belongs to graph validation alone, so a withheld contract never fails the build by itself.

6 unkeyed rules.

Verifying examples

An example marker that disagrees with its vocabulary withholds the contract · spec:carrier.step-keys.conflicting-example-key-withheld · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "[#basketSize] a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the first contract finding about the child is {contractFinding: "contracts/conflicting-step-key"}
Then the child contract binds its first Given step as {bindingKey: ""} and then as {rewordedBindingKey: ""}

Open example

A step key equal to another step's skeleton withholds the contract · spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] the cart has {items:number} items; cartSize"}
Given a child example of that parent whose Given steps read {example: "the cart has {items: 2} items; cartSize"}
When the contracts are generated, the step lines are reworded by replacing {before: "the cart has"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the first contract finding about the child is {contractFinding: "contracts/duplicate-step-key"}
Then the child contract binds its first Given step as {bindingKey: ""} and then as {rewordedBindingKey: ""}

Open example

A keyed step reworded in its vocabulary and its example keeps its binding · spec:carrier.step-keys.reworded-keyed-step-stays-bound · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the child contract binds its first Given step as {bindingKey: "cartSize"} and then as {rewordedBindingKey: "cartSize"}
Then the handlers bound to the first contract cover the second: {stillBound: true}

Open example

The same rewording without a key breaks the binding · spec:carrier.step-keys.reworded-unkeyed-step-breaks · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the child contract binds its first Given step as {bindingKey: "a customer has a cart with {items} line items"} and then as {rewordedBindingKey: "the cart holds {items} line items"}
Then the handlers bound to the first contract cover the second: {stillBound: false}

Open example

spec:extraction.executable-contracts.case-colliding-path · spec:extraction.executable-contracts.case-colliding-path · ready floor ready

Executable Spec

Given a parent spec whose example space declares the slot {dimension: "n"}
Given a refining example {exampleId: "spec:probe.create-order.same-case"} whose used step {binding: "binds"} that slot
Given a case-twin example {twinId: "spec:probe.create-order.same-Case"} whose contract path differs only by letter case
When the contracts are generated from the derived graph
Then the generated tree holds {fileCount: 0} files
Then the findings name {findingId: "contracts/case-colliding-path"}

spec:extraction.executable-contracts.case-colliding-path

spec:extraction.executable-contracts.concreteness-refusal · spec:extraction.executable-contracts.concreteness-refusal · ready floor ready

Executable Spec

Given a parent spec that declares no shared vocabulary for the slot {dimension: "n"}
Given a refining example {exampleId: "spec:probe.create-order.unbound"} whose used step {binding: "leaves unbound"} that slot
When the contracts are generated from the derived graph
Then the generated tree holds {fileCount: 0} files
Then the step contract for the example is emitted: {emitted: false}

spec:extraction.executable-contracts.concreteness-refusal

spec:extraction.executable-contracts.multi-entry-example · spec:extraction.executable-contracts.multi-entry-example · ready floor ready

Executable Spec

Given a parent spec whose example space declares the slot {dimension: "n"}
Given a refining example {exampleId: "spec:probe.create-order.multi"} whose used step {binding: "binds"} that slot
Given the example carries {entryCount: 2} structured entries
When the contracts are generated from the derived graph
Then the step contract for the example is emitted: {emitted: true}
Then the findings name {findingId: "contracts/multi-entry-example"}

spec:extraction.executable-contracts.multi-entry-example

Example space

Given a parent spec whose example space declares the slot {dimension:string}
Given a parent spec that declares no shared vocabulary for the slot {dimension:string}
Given a refining example {exampleId:string} whose used step {binding:"binds"|"leaves unbound"} that slot
Given the example carries {entryCount:number} structured entries
Given a case-twin example {twinId:string} whose contract path differs only by letter case
When the contracts are generated from the derived graph
Then the generated tree holds {fileCount:number} files
Then the step contract for the example is emitted: {emitted:boolean}
Then the findings name {findingId:string}
Design
findingIds line 49 · specs/extraction/executable-contracts.sdp.md:49
contracts/undeclared-slot · contracts/off-dimension-value · contracts/conflicting-binding · contracts/conflicting-dimension · contracts/untyped-vocabulary-slot · contracts/multi-entry-example · contracts/unmatched-vocabulary-step · contracts/case-colliding-path · contracts/multiple-registrar-paths · contracts/conflicting-step-key · contracts/duplicate-step-key, each at warning severity.

no citation recorded

duplicateStepKey line 50 · specs/extraction/executable-contracts.sdp.md:50
contracts/duplicate-step-key is a warning on the parent at behavior.exampleSpace for a space collision, or on the example at behavior.examples for a step-contract collision. Its message is contract key "<key>" names both "<first skeleton>" and "<second skeleton>"; <space|step> contract withheld, with the skeletons in first-occurrence order.

no citation recorded

contractStep line 51 · specs/extraction/executable-contracts.sdp.md:51
export interface ContractStep<K extends string, P extends ParamShape> { readonly kind: StepKind; readonly key: K; readonly text: string; readonly params: P; } is the step shape the runner exports, where key is the contract key and text the skeleton the natural reading renders.

no citation recorded

stepContractModule line 52 · specs/extraction/executable-contracts.sdp.md:52
export type Step = "<contract key>" | …; is the union of the example's contract keys in first-occurrence order, StepParams maps each contract key to its parameters, and export const <camel>Contract: ExampleContract<Step, StepParams> lists every step as { kind, key, text, params } in authored order.

no citation recorded

outcomeVariant line 53 · specs/extraction/executable-contracts.sdp.md:53
{ readonly kind: "<contract key>"; readonly <slot>: <type>; … } is the Outcome variant of one Then step of the example space, one per Then step, beside UnspecifiedOutcome.

no citation recorded

planDispatch line 54 · specs/extraction/executable-contracts.sdp.md:54
the runner's planExample runs each step through bindings[step.key], carries key on each planned step beside text and label, and renders the label from text and params, so a red keyed step still names itself in the Spec's own words.
Verification

Verifier bindings

  • spec:carrier.step-keys.conflicting-example-key-withheld · An example marker that disagrees with its vocabulary withholds the contract · declared · example enabled · specs/carrier/step-keys.conflicting-example-key-withheld.sdp.md
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · A step key equal to another step's skeleton withholds the contract · declared · example enabled · specs/carrier/step-keys.key-equal-to-a-skeleton-withheld.sdp.md
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound · A keyed step reworded in its vocabulary and its example keeps its binding · declared · example enabled · specs/carrier/step-keys.reworded-keyed-step-stays-bound.sdp.md
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks · The same rewording without a key breaks the binding · declared · example enabled · specs/carrier/step-keys.reworded-unkeyed-step-breaks.sdp.md
  • spec:extraction.executable-contracts.case-colliding-path · A case-only path collision withholds the whole contracts tree · declared · example enabled · specs/extraction/executable-contracts.case-colliding-path.sdp.md
  • spec:extraction.executable-contracts.concreteness-refusal · An unbound slot in a used step earns no step contract · declared · example enabled · specs/extraction/executable-contracts.concreteness-refusal.sdp.md
  • spec:extraction.executable-contracts.multi-entry-example · A second structured entry is named, never left silently inert · declared · example enabled · specs/extraction/executable-contracts.multi-entry-example.sdp.md

Example space

  • dimension · string · declared by a parent spec whose example space declares the slot {dimension}
  • exampleId · string · declared by a refining example {exampleId} whose used step {binding} that slot
  • binding · "binds" | "leaves unbound" · declared by a refining example {exampleId} whose used step {binding} that slot
  • entryCount · number · declared by the example carries {entryCount} structured entries
  • twinId · string · declared by a case-twin example {twinId} whose contract path differs only by letter case

Bound points

ExampledimensionexampleIdbindingentryCounttwinId
spec:extraction.executable-contracts.case-colliding-path"n""spec:probe.create-order.same-case""binds"unbound"spec:probe.create-order.same-Case"
spec:extraction.executable-contracts.concreteness-refusal"n""spec:probe.create-order.unbound""leaves unbound"unboundunbound
spec:extraction.executable-contracts.multi-entry-example"n""spec:probe.create-order.multi""binds"2unbound

Oracle binding: none

Coverage

dimension: "n" · spec:extraction.executable-contracts.case-colliding-path, spec:extraction.executable-contracts.concreteness-refusal, spec:extraction.executable-contracts.multi-entry-example · not enumerable

exampleId: "spec:probe.create-order.same-case" · spec:extraction.executable-contracts.case-colliding-path; "spec:probe.create-order.unbound" · spec:extraction.executable-contracts.concreteness-refusal; "spec:probe.create-order.multi" · spec:extraction.executable-contracts.multi-entry-example · not enumerable

binding
Declared valueExamples
"binds"spec:extraction.executable-contracts.case-colliding-path, spec:extraction.executable-contracts.multi-entry-example
"leaves unbound"spec:extraction.executable-contracts.concreteness-refusal

entryCount: 2 · spec:extraction.executable-contracts.multi-entry-example · not enumerable

twinId: "spec:probe.create-order.same-Case" · spec:extraction.executable-contracts.case-colliding-path · not enumerable

Unbound

  • dimension: None
  • exampleId: None
  • binding: None
  • entryCount: spec:extraction.executable-contracts.case-colliding-path, spec:extraction.executable-contracts.concreteness-refusal
  • twinId: spec:extraction.executable-contracts.concreteness-refusal, spec:extraction.executable-contracts.multi-entry-example
Design view

Requirement drawing

Requirement drawing for spec:extraction.executable-contracts
Requirement drawing for spec:extraction.executable-contractssatisfies · anchoredsatisfies · anchoredrefines, verifies · declaredrefines (3), verifies (7) · declaredrefines · declaredrefines · declaredrefines · declaredverifies · anchoredIntended Specsspec:extraction.contract-declarationsPinned declarations give anadopter a derived module totypecheck…extraction.contract-declarationsdeclared Specspec:extraction.executable-contractsThe build derives step andspace contracts from graphexamples…extraction.executable-contractsdeclared SpecDeclared verifying examples7 verifying examples · declared; 7 test bindings · anchored, folded7 verifying examples ·declared7 test bindings · anchored ·foldedSatisfying or referencingunits4 satisfying units · anchored, folded4 satisfying units ·anchoredTest or oracle bindingstest:protocol.register-recipesrecipe checks verify theregister recipes…protocol.register-recipesanchored test binding ·binding presentOutside the selected setspec:carrier.step-keysAn example step may carry akey that survives rewording…carrier.step-keysdeclared Specspec:extraction.build-pipelineThe build pipeline has oneordered flow…extraction.build-pipelinedeclared Specspec:extraction.executable-examplesBound examples executetheir authored steps…extraction.executable-examplesdeclared Spec
The diagram as text
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples · declared Spec
  • spec:extraction.contract-declarations: Pinned declarations give an adopter a derived module to typecheck · declared Spec
  • spec:extraction.executable-contracts.case-colliding-path: A case-only path collision withholds the whole contracts tree · declared Spec
  • spec:extraction.executable-contracts.concreteness-refusal: An unbound slot in a used step earns no step contract · declared Spec
  • spec:extraction.executable-contracts.multi-entry-example: A second structured entry is named, never left silently inert · declared Spec
  • spec:carrier.step-keys.conflicting-example-key-withheld: An example marker that disagrees with its vocabulary withholds the contract · declared Spec
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld: A step key equal to another step's skeleton withholds the contract · declared Spec
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound: A keyed step reworded in its vocabulary and its example keeps its binding · declared Spec
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks: The same rewording without a key breaks the binding · declared Spec
  • spec:carrier.step-keys: An example step may carry a key that survives rewording · declared Spec
  • spec:extraction.build-pipeline: The build pipeline has one ordered flow · declared Spec
  • spec:extraction.executable-examples: Bound examples execute their authored steps · declared Spec
  • impl:protocol.example-space: resolves example-space vocabulary for contracts and floors · anchored code · src/graph/example-space.ts:117
  • impl:protocol.executable-contracts: derives step and example-space contracts from the graph · anchored code · src/codegen/contracts.ts:647
  • impl:protocol.pack-design: the Pack design helpers and the Pack context assembly they serve · anchored code · src/reader/reader.ts:499
  • impl:protocol.register-recipes: asserts realization of the shipped register recipes · anchored code · test/recipes.test.ts:2057
  • test:protocol.executable-contracts.case-colliding-path: the collision point verifies the all-or-nothing withholding · anchored test binding · binding present · test/self-hosting-extraction.test.ts:593
  • test:protocol.executable-contracts.concreteness-refusal: the concreteness point verifies the unbound-slot refusal · anchored test binding · binding present · test/self-hosting-extraction.test.ts:575
  • test:protocol.executable-contracts.multi-entry-example: the multi-entry point verifies the named second entry · anchored test binding · binding present · test/self-hosting-extraction.test.ts:584
  • test:protocol.register-recipes: recipe checks verify the register recipes · anchored test binding · binding present · test/recipes.test.ts:2068
  • test:protocol.step-keys.conflicting-example-key-withheld: test:protocol.step-keys.conflicting-example-key-withheld · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:26
  • test:protocol.step-keys.key-equal-to-a-skeleton-withheld: test:protocol.step-keys.key-equal-to-a-skeleton-withheld · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:120
  • test:protocol.step-keys.reworded-keyed-step-stays-bound: test:protocol.step-keys.reworded-keyed-step-stays-bound · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:308
  • test:protocol.step-keys.reworded-unkeyed-step-breaks: test:protocol.step-keys.reworded-unkeyed-step-breaks · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:355
  • spec:carrier.step-keys.conflicting-example-key-withheld refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.conflicting-example-key-withheld verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.conflicting-example-key-withheld verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks verifies spec:extraction.executable-contracts · declared
  • spec:extraction.contract-declarations refines spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts refines spec:extraction.build-pipeline · declared
  • spec:extraction.executable-contracts refines spec:extraction.executable-examples · declared — typed contracts carry the authored steps and example space into execution
  • spec:extraction.executable-contracts.case-colliding-path refines spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.case-colliding-path verifies spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.concreteness-refusal refines spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.concreteness-refusal verifies spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.multi-entry-example refines spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.multi-entry-example verifies spec:extraction.executable-contracts · declared
  • impl:protocol.example-space satisfies spec:extraction.executable-contracts · anchored
  • impl:protocol.executable-contracts satisfies spec:extraction.executable-contracts · anchored
  • impl:protocol.pack-design satisfies spec:extraction.contract-declarations · anchored
  • impl:protocol.register-recipes satisfies spec:extraction.contract-declarations · anchored
  • test:protocol.executable-contracts.case-colliding-path verifies spec:extraction.executable-contracts.case-colliding-path · anchored
  • test:protocol.executable-contracts.concreteness-refusal verifies spec:extraction.executable-contracts.concreteness-refusal · anchored
  • test:protocol.executable-contracts.multi-entry-example verifies spec:extraction.executable-contracts.multi-entry-example · anchored
  • test:protocol.register-recipes verifies spec:extraction.contract-declarations · anchored
  • test:protocol.step-keys.conflicting-example-key-withheld verifies spec:carrier.step-keys.conflicting-example-key-withheld · anchored
  • test:protocol.step-keys.key-equal-to-a-skeleton-withheld verifies spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · anchored
  • test:protocol.step-keys.reworded-keyed-step-stays-bound verifies spec:carrier.step-keys.reworded-keyed-step-stays-bound · anchored
  • test:protocol.step-keys.reworded-unkeyed-step-breaks verifies spec:carrier.step-keys.reworded-unkeyed-step-breaks · 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

  • spec:decisions.point-per-example

    An example binds exactly one point; table syntax may expand statically into sibling examples and renderers may project siblings as a table.

Runtime
  • component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · 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.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.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocol

    Uses

    • 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
  • impl:protocol.example-space · resolves example-space vocabulary for contracts and floors · src/graph/example-space.ts:117

    Component: component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocol

    Uses

    None.

  • impl:protocol.executable-contracts · derives step and example-space contracts from the graph · src/codegen/contracts.ts:647

    Component: component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · 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:extraction.executable-contracts

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

The diagram as text
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:carrier.step-keys.conflicting-example-key-withheld: An example marker that disagrees with its vocabulary withholds the contract
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld: A step key equal to another step's skeleton withholds the contract
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound: A keyed step reworded in its vocabulary and its example keeps its binding
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks: The same rewording without a key breaks the binding
  • spec:consumers.agent-surface.example-space-coverage: Example spaces report which values their examples cover
  • spec:consumers.spec-studio.verification-panels: The panels for examples, targets, verifiers and evidence
  • spec:decisions.point-per-example: Each example binds one point
  • spec:extraction.build-pipeline: The build pipeline has one ordered flow
  • spec:extraction.contract-declarations: Pinned declarations give an adopter a derived module to typecheck
  • spec:extraction.example-runner: A bound example runs its contract steps against a fresh world
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples
  • spec:extraction.executable-contracts.case-colliding-path: A case-only path collision withholds the whole contracts tree
  • spec:extraction.executable-contracts.concreteness-refusal: An unbound slot in a used step earns no step contract
  • spec:extraction.executable-contracts.multi-entry-example: A second structured entry is named, never left silently inert
  • spec:extraction.executable-examples: Bound examples execute their authored steps
  • spec:extraction.runnable-modules: Derived runnable modules freeze the registrar interface
  • spec:extraction.executable-contracts decidedBy spec:decisions.point-per-example · declared
  • spec:extraction.executable-contracts dependsOn spec:carrier.step-keys · declared — a keyed step's contract key is its step key
  • spec:extraction.executable-contracts refines spec:extraction.build-pipeline · declared
  • spec:extraction.executable-contracts refines spec:extraction.executable-examples · declared — typed contracts carry the authored steps and example space into execution
  • 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.spec-studio.verification-panels dependsOn spec:extraction.executable-contracts · declared
  • spec:extraction.example-runner dependsOn spec:extraction.executable-contracts · declared — runs the step contracts the build emits
  • spec:extraction.runnable-modules dependsOn spec:extraction.executable-contracts · declared
  • spec:extraction.contract-declarations refines spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.case-colliding-path refines spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.concreteness-refusal refines spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.multi-entry-example refines spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.conflicting-example-key-withheld verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks verifies spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.case-colliding-path verifies spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.concreteness-refusal verifies spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.multi-entry-example verifies spec:extraction.executable-contracts · declared

Rests on

  • refines · spec:extraction.build-pipeline · stated ready, floor ready
  • refines · spec:extraction.executable-examples · stated ready, floor ready
  • dependsOn · spec:carrier.step-keys · stated ready, floor ready
  • decidedBy · spec:decisions.point-per-example · stated ready, floor ready

Rested on by

Distance 1

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

    Implementing units

    • impl:protocol.example-space-coverage-recipe · test/studio-s1.test.ts:856
    • impl:protocol.example-space-decoding · src/notation/example-space.ts:473

    Referencing units

    None.

    Enabled verifiers: spec:consumers.agent-surface.example-space-coverage.number-not-enumerable, spec:consumers.agent-surface.example-space-coverage.uncovered-literal

    Packs: pack:design-management-v1, 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:extraction.contract-declarations

    Implementing units

    • impl:protocol.pack-design · src/reader/reader.ts:499
    • impl:protocol.register-recipes · test/recipes.test.ts:2057

    Referencing units

    None.

    Enabled verifiers: test:protocol.register-recipes

    Packs: pack:self-hosting-v1

  • spec:extraction.example-runner

    Implementing units

    • component:protocol.adapters · src/adapters/vitest.ts:23
    • component:protocol.runner · src/runner/index.ts:99
    • impl:protocol.example-runner · src/runner/index.ts:108
    • impl:protocol.example-runner-adapter · src/adapters/vitest.ts:32

    Referencing units

    None.

    Enabled verifiers: spec:extraction.example-runner.red-step-naming, spec:extraction.example-runner.step-order, test:protocol.example-runner-cleanup

    Packs: pack:self-hosting-v1

  • spec:extraction.executable-contracts.case-colliding-path

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.executable-contracts.case-colliding-path

    Packs: pack:self-hosting-v1

  • spec:extraction.executable-contracts.concreteness-refusal

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.executable-contracts.concreteness-refusal

    Packs: pack:self-hosting-v1

  • spec:extraction.executable-contracts.multi-entry-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.executable-contracts.multi-entry-example

    Packs: pack:self-hosting-v1

  • spec:extraction.runnable-modules

    Implementing units

    • component:protocol.codegen · src/codegen/contracts.ts:633
    • component:protocol.testing · src/testing/index.ts:38
    • impl:protocol.example-testing-helpers · src/testing/index.ts:50
    • impl:protocol.runnable-modules · src/codegen/contracts.ts:658

    Referencing units

    None.

    Enabled verifiers: test:protocol.runnable-modules, test:protocol.runnable-modules-generation, test:protocol.runnable-modules-types

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

Distance 2

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

    Implementing units

    None.

    Referencing units

    None.

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

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

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

    Implementing units

    None.

    Referencing units

    None.

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

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

  • spec:consumers.pack-design

    Implementing units

    • impl:protocol.pack-design · src/reader/reader.ts:499

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-design

    Packs: pack:design-management-v1, pack:self-hosting-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.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.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.upgrade-kit.capability-adoption

    Implementing units

    • impl:protocol.capability-adoption-recipe · test/upgrade-kit.test.ts:514

    Referencing units

    None.

    Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus

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

  • spec:decisions.adopted-registrars-committed

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:extraction.example-runner.red-step-naming

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.example-runner.red-step-naming

    Packs: pack:self-hosting-v1

  • spec:extraction.example-runner.step-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.example-runner.step-order

    Packs: pack:self-hosting-v1

  • spec:model.enrichment-lifecycle

    Implementing units

    • impl:protocol.slimming-recipe · test/curation-recipes.test.ts:26

    Referencing units

    None.

    Enabled verifiers: test:protocol.slimming-recipe

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

Distance 3

  • spec:consumers.agent-surface.design-recipes

    Implementing units

    • impl:protocol.design-recipes · test/recipes.test.ts:4769

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-recipes

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

  • spec:consumers.delivery-session-on-ramp

    Implementing units

    • impl:protocol.delivery-session-on-ramp · test/skills.test.ts:83

    Referencing units

    None.

    Enabled verifiers: test:protocol.delivery-session-on-ramp

    Packs: pack:self-hosting-v1

  • spec:consumers.design-review.pack-design-page

    Implementing units

    • impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120

    Referencing units

    • impl:protocol.pack-design-sections · src/projections/design-review-pack-sections.ts:19

    Enabled verifiers: test:protocol.pack-design-page

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

  • spec:consumers.design-slice

    Implementing units

    • impl:protocol.design-slice-recipe · test/self-hosting-design-slice.test.ts:148

    Referencing units

    • impl:protocol.studio-slice-answer · src/projections/studio/slice-answer.ts:1

    Enabled verifiers: spec:consumers.design-slice.chain, spec:consumers.design-slice.component-absent, spec:consumers.design-slice.component-differing, spec:consumers.design-slice.component-matching, spec:consumers.design-slice.component-unreadable, spec:consumers.design-slice.component-unrelated, spec:consumers.design-slice.decision-backlink, spec:consumers.design-slice.dependency-cycle, spec:consumers.design-slice.folded-example, spec:consumers.design-slice.independent-example, spec:consumers.design-slice.outside-components, spec:consumers.design-slice.outside-holding, spec:consumers.design-slice.outside-satisfied, spec:consumers.design-slice.outside-unbound, test:protocol.design-slice

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

  • spec:consumers.obsidian-vault.bases

    Implementing units

    • impl:protocol.vault-bases · src/projections/vault/bases.ts:43
    • impl:protocol.vault-notes · src/projections/vault/notes.ts:45

    Referencing units

    None.

    Enabled verifiers: spec:consumers.obsidian-vault.bases.views-match-sources

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.review-perspectives

    Implementing units

    • impl:protocol.perspective-filter-recipe · test/iteration-recipes.test.ts:753

    Referencing units

    None.

    Enabled verifiers: test:protocol.perspective-filter-recipe

    Packs: pack:design-iteration-v1, pack:design-management-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

    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.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.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.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.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.upgrade-kit.capability-adoption.counts-a-corpus

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus

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

  • spec:decisions.pack-design-page

    Implementing units

    None.

    Referencing units

    • impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120

    Enabled verifiers: None

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

  • spec:model.design-maturity

    Implementing units

    • impl:protocol.pack-design · src/reader/reader.ts:499

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-design

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

Distance 4

  • spec:consumers.agent-surface.answer-shapes

    Implementing units

    • impl:protocol.answer-shape-recipes · test/recipes.test.ts:6214

    Referencing units

    • impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597
    • impl:protocol.reader · src/reader/reader.ts:687

    Enabled verifiers: test:protocol.answer-shape-recipes

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

  • spec:consumers.context-bundle

    Implementing units

    • impl:protocol.context-bundle-recipe · test/iteration-recipes.test.ts:765

    Referencing units

    None.

    Enabled verifiers: spec:consumers.context-bundle.oversized-member-named, spec:consumers.context-bundle.parts-cover-the-pack, test:protocol.context-bundle-recipe

    Packs: pack:adopter-speed-v1, pack:design-iteration-v1, pack:design-management-v1, pack:self-hosting-v1

  • spec:consumers.design-slice.chain

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.chain

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

  • spec:consumers.design-slice.component-absent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-absent

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

  • spec:consumers.design-slice.component-differing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-differing

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

  • spec:consumers.design-slice.component-matching

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-matching

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

  • spec:consumers.design-slice.component-unreadable

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-unreadable

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

  • spec:consumers.design-slice.component-unrelated

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-unrelated

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

  • spec:consumers.design-slice.decision-backlink

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.decision-backlink

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

  • spec:consumers.design-slice.dependency-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.dependency-cycle

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

  • spec:consumers.design-slice.folded-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.folded-example

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

  • spec:consumers.design-slice.independent-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.independent-example

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

  • spec:consumers.design-slice.outside-components

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-components

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

  • spec:consumers.design-slice.outside-holding

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-holding

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

  • spec:consumers.design-slice.outside-satisfied

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-satisfied

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

  • spec:consumers.design-slice.outside-unbound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-unbound

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

  • spec:consumers.graph-first-planning

    Implementing units

    • impl:protocol.graph-first-planning · test/skills.test.ts:290

    Referencing units

    None.

    Enabled verifiers: test:protocol.graph-first-planning

    Packs: pack:self-hosting-v1

  • spec:consumers.obsidian-vault.bases.views-match-sources

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.bases.views-match-sources

    Packs: pack:obsidian-vault-v1, 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.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.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.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

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

    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.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.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.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 5

  • 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.context-bundle.oversized-member-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.context-bundle.oversized-member-named

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

  • spec:consumers.context-bundle.parts-cover-the-pack

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.context-bundle.parts-cover-the-pack

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

  • spec:consumers.readiness-planner

    Implementing units

    • impl:protocol.statement-queue-recipe · test/self-hosting-readiness-planner.test.ts:74

    Referencing units

    None.

    Enabled verifiers: spec:consumers.readiness-planner.cycle-shares-a-round, spec:consumers.readiness-planner.decision-first, spec:consumers.readiness-planner.dependency-order, spec:consumers.readiness-planner.owner-question-holds

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

  • spec:consumers.roadmap

    Implementing units

    • impl:protocol.roadmap-recipe · test/roadmap.test.ts:20

    Referencing units

    None.

    Enabled verifiers: spec:consumers.roadmap.blocking-part, spec:consumers.roadmap.buildable-part, spec:consumers.roadmap.built-work, spec:consumers.roadmap.design-part, spec:consumers.roadmap.drifting-part, spec:consumers.roadmap.missing-evidence, spec:consumers.roadmap.outside-parent, spec:consumers.roadmap.statement-order, spec:consumers.roadmap.statement-part, test:protocol.roadmap-recipe

    Packs: pack:roadmaps-and-slices-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.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.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.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.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.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.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.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 6

  • 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.projections-model.roadmap-views

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:consumers.readiness-planner.cycle-shares-a-round

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.cycle-shares-a-round

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

  • spec:consumers.readiness-planner.decision-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.decision-first

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

  • spec:consumers.readiness-planner.dependency-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.dependency-order

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

  • spec:consumers.readiness-planner.owner-question-holds

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.owner-question-holds

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

  • spec:consumers.roadmap.blocking-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.blocking-part

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

  • spec:consumers.roadmap.buildable-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.buildable-part

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

  • spec:consumers.roadmap.built-work

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.built-work

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

  • spec:consumers.roadmap.design-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.design-part

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

  • spec:consumers.roadmap.drifting-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.drifting-part

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-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.roadmap.missing-evidence

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.missing-evidence

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

  • spec:consumers.roadmap.outside-parent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.outside-parent

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

  • spec:consumers.roadmap.statement-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.statement-order

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

  • spec:consumers.roadmap.statement-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.statement-part

    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.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.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.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.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.structural-mermaid

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:consumers.upgrade-kit

    Implementing units

    • impl:protocol.upgrade-guide · test/upgrade-kit.test.ts:87

    Referencing units

    None.

    Enabled verifiers: test:protocol.upgrade-guide

    Packs: pack:adopter-speed-v1, pack:self-hosting-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 7

Distance 8

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingspec:decisions.point-per-example
spec:decisions.point-per-example · resolves
declaredNoneNone
dependsOn · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declareda keyed step's contract key is its step keyNone
refines · outgoingspec:extraction.build-pipeline
spec:extraction.build-pipeline · resolves
declaredNoneNone
refines · outgoingspec:extraction.executable-examples
spec:extraction.executable-examples · resolves
declaredtyped contracts carry the authored steps and example space into executionNone
dependsOn · incomingspec:consumers.agent-surface.example-space-coverage
spec:consumers.agent-surface.example-space-coverage · resolves
declaredits decoded slots and bound points reuse the space-contract interpretationNone
dependsOn · incomingspec:consumers.spec-studio.verification-panels
spec:consumers.spec-studio.verification-panels · resolves
declaredNoneNone
dependsOn · incomingspec:extraction.example-runner
spec:extraction.example-runner · resolves
declaredruns the step contracts the build emitsNone
dependsOn · incomingDerived runnable modules freeze the registrar interface
spec:extraction.runnable-modules · resolves
declaredNoneNone
refines · incomingspec:extraction.contract-declarations
spec:extraction.contract-declarations · resolves
declaredNoneNone
refines · incomingspec:extraction.executable-contracts.case-colliding-path
spec:extraction.executable-contracts.case-colliding-path · resolves
declaredNoneNone
refines · incomingspec:extraction.executable-contracts.concreteness-refusal
spec:extraction.executable-contracts.concreteness-refusal · resolves
declaredNoneNone
refines · incomingspec:extraction.executable-contracts.multi-entry-example
spec:extraction.executable-contracts.multi-entry-example · resolves
declaredNoneNone
verifies · incomingAn example marker that disagrees with its vocabulary withholds the contract
spec:carrier.step-keys.conflicting-example-key-withheld · resolves
declaredNonekeyConflicts
verifies · incomingA step key equal to another step's skeleton withholds the contract
spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · resolves
declaredNonekeyConflicts
verifies · incomingA keyed step reworded in its vocabulary and its example keeps its binding
spec:carrier.step-keys.reworded-keyed-step-stays-bound · resolves
declaredNonecontractKeys
verifies · incomingThe same rewording without a key breaks the binding
spec:carrier.step-keys.reworded-unkeyed-step-breaks · resolves
declaredNonecontractKeys
verifies · incomingspec:extraction.executable-contracts.case-colliding-path
spec:extraction.executable-contracts.case-colliding-path · resolves
declaredNonecaseCollision
verifies · incomingspec:extraction.executable-contracts.concreteness-refusal
spec:extraction.executable-contracts.concreteness-refusal · resolves
declaredNoneconcreteness
verifies · incomingspec:extraction.executable-contracts.multi-entry-example
spec:extraction.executable-contracts.multi-entry-example · resolves
declaredNoneonePoint

Bindings

Implementation binding: present

  • impl:protocol.example-space · resolves example-space vocabulary for contracts and floors · src/graph/example-space.ts:117 · role decider · component component:protocol.graph · layer domain · context protocol
  • impl:protocol.executable-contracts · derives step and example-space contracts from the graph · src/codegen/contracts.ts:647 · role projection · component component:protocol.codegen · layer application · context protocol

Design reference: none

Verifier binding: present

  • spec:carrier.step-keys.conflicting-example-key-withheld · An example marker that disagrees with its vocabulary withholds the contract · declared · specs/carrier/step-keys.conflicting-example-key-withheld.sdp.md · example enabled
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · A step key equal to another step's skeleton withholds the contract · declared · specs/carrier/step-keys.key-equal-to-a-skeleton-withheld.sdp.md · example enabled
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound · A keyed step reworded in its vocabulary and its example keeps its binding · declared · specs/carrier/step-keys.reworded-keyed-step-stays-bound.sdp.md · example enabled
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks · The same rewording without a key breaks the binding · declared · specs/carrier/step-keys.reworded-unkeyed-step-breaks.sdp.md · example enabled
  • spec:extraction.executable-contracts.case-colliding-path · A case-only path collision withholds the whole contracts tree · declared · specs/extraction/executable-contracts.case-colliding-path.sdp.md · example enabled
  • spec:extraction.executable-contracts.concreteness-refusal · An unbound slot in a used step earns no step contract · declared · specs/extraction/executable-contracts.concreteness-refusal.sdp.md · example enabled
  • spec:extraction.executable-contracts.multi-entry-example · A second structured entry is named, never left silently inert · declared · specs/extraction/executable-contracts.multi-entry-example.sdp.md · example enabled

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

33. Derived runnable modules freeze the registrar interface

spec:extraction.runnable-modules

Derived runnable modules freeze the registrar interface

spec:extraction.runnable-modulesUse Case / Behavior · featureready floor ready

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

Design: 7 design entries · 5 pinned declarations · 4 decisions

Findings: no errors, no warnings

specs/extraction/runnable-modules.sdp.md

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

Intent
problem
A bound example test would otherwise repeat registration, step dispatch and oracle comparison that the graph and contracts already determine.
outcome
Give each bindable example a generated registrar, so its authored test keeps semantics derivation cannot supply.
value
A Spec and a small authored semantics module express the test while the engine neither loads nor executes adopter code.
Behavior
rule line 28 · specs/extraction/runnable-modules.sdp.md:28
Code generation emits a registrar called with createWorld, invoke, observe, expected and optional assertions. It owns describe/it registration, step dispatch, the three-way comparator and failure rendering. The authored test keeps its top-level specTest anchor and one activation call beside its semantics. The authored file imports the generated registrar; the generated module imports no authored code. Normal runner discovery loads the authored file and activates registration. Generated modules never self-register; the graph records binding, never liveness.
rule line 29 · specs/extraction/runnable-modules.sdp.md:29
Generated sibling path — for each bindable example, codegen emits exactly one generated registration module as a sibling *.generated.ts of the authored .test.ts (deterministic filename keyed by Spec ID, not by the authored suite filename). One authored suite may verify many examples without their registrar map keys or output paths colliding. Exactly one generated registration per example; a second registration path for the same example is refused. Generated siblings are disposable build output: an adopted registrar is committed because authored code imports it, while unadopted registrars remain ignored, regenerable output and confer no migration claim.
rule line 30 · specs/extraction/runnable-modules.sdp.md:30
generated/registrars.json is a versioned, sorted manifest of every extraction-root-relative registrar sibling owed by the build. Publication reconciles the manifest and removes siblings no longer owed under the build-pipeline law. --check-clean compares the manifest and every sibling byte with fresh generation. Preflight independently compares every tracked adopted registrar in the worktree and Git index with regenerated bytes.
rule line 31 · specs/extraction/runnable-modules.sdp.md:31
Registration-path loudness — multiple anchors in one authored suite still locate one registrar sibling; when one example resolves to more than one distinct authored suite path, generation emits a named finding and withholds that registrar rather than selecting a path silently.
rule line 32 · specs/extraction/runnable-modules.sdp.md:32
Generated registrars import shared runtime helpers from @libar-dev/software-delivery-protocol/testing and types through public package subpaths. Public exports are the root for model, anchors and public types, ./anchors for zero-dependency anchor builders, ./runner for the framework-neutral plan/run core, ./vitest for bindExample, and ./testing for the registrar runtime. Authored suites may import anchor builders through the root or ./anchors. Authored and generated modules never import private src paths. The supported optional Vitest peer range is >=2, as declared by the package.
rule line 33 · specs/extraction/runnable-modules.sdp.md:33
Step identity is the step's contract key: its step key under spec:carrier.step-keys, or its skeleton text when it has none, and generation introduces no ordinal or slug identity. A directly authored bindExample handler map fails the typecheck when one of its keys goes stale. An adopted registrar holds no authored per-step handler: a stale committed registrar fails the regeneration preflight, and its internal handlers change with the contract when it is regenerated. The contract key of a Then step of the example space also names an Outcome kind, so changing it fails the typecheck of an authored oracle that names the old kind.
rule line 34 · specs/extraction/runnable-modules.sdp.md:34
Handler resolution — the generated registrar's internal dispatch object is an exhaustive mapped type over the contract's step keys: removing or staling one of those generated callbacks is a tsc error naming that step. The adopted authored surface retains no per-step callbacks (and therefore no step keys); its five adapters are required keys (assertions optional), so a missing or stale authored callback is a tsc error naming that adapter. These are the two exhaustive mapped-type checks; demanding an authored error name a step while simultaneously retaining no authored per-step surface is refused as contradictory. Codegen cannot statically see authored handlers, so no generation-time handler refusal is promised — the type system carries it. Existing generation-time refusals (unbindable example, incompatible vocabulary, colliding path) are reused unchanged.
rule line 35 · specs/extraction/runnable-modules.sdp.md:35
Scenario-level invocation — the five-adapter interface carries one product invoke per example, so the first When occurrence invokes it and later When occurrences in the same lawful scenario do not repeat side effects.
rule line 36 · specs/extraction/runnable-modules.sdp.md:36
At the first Then, the comparator refuses an incomplete point before calling the oracle and otherwise evaluates and caches expected(point). It finds the authored Then whose contract key equals expected.kind, compares that step's authored parameters with the oracle payload, reads observe(world), compares observed and oracle outcomes, and runs additional assertions separately. Actual-equals-oracle alone is insufficient: a Spec parameter mutation must fail. The oracle accepts Partial<Conditions>; the registrar never casts a partial point to Conditions.
rule line 37 · specs/extraction/runnable-modules.sdp.md:37
Oracle payload versus Spec Then parameters and observed versus oracle outcomes use deep structural equality on the authored shape. Diagnostics name missing, extra or changed values by path and show expected and actual values. The comparator quotes authored Then parameters and skeleton text without rephrasing them.
rule line 38 · specs/extraction/runnable-modules.sdp.md:38
Failure rendering reuses the contract's matching Then step plus the existing renderContractStep path. When the oracle selected no authored Then, emit a scenario-level diagnostic quoting Spec ID, oracle kind, and the contract keys of the available Then steps; preserve the original assertion as cause.
rule line 39 · specs/extraction/runnable-modules.sdp.md:39
Bound unspecified outcome — unspecified names a coverage gap in the example space, but a bound executable example selecting it reddens because no authored Then may silently witness that gap.
rule line 40 · specs/extraction/runnable-modules.sdp.md:40
The authored top-level specTest carries a non-empty verifies target naming the example. It remains the source of has-verifier; generated execution confers no delivery fact and records no pass state.
rule line 41 · specs/extraction/runnable-modules.sdp.md:41
Additive assertions — optional assertions may add domain checks the Outcome union cannot express; they never replace steps (3) or (5) of the three-way comparator and never silence a Spec-param or oracle mismatch.
rule line 42 · specs/extraction/runnable-modules.sdp.md:42
Case mapping and outlines — outline rows map one deterministic case per row in carrier order when a multi-row table sugar expands statically into sibling examples (point-per-example). Scenario Outlines and inline Examples tables stay refused as executable carrier constructs inside a single example; one example remains one point and earns exactly one generated registration.
rule line 43 · specs/extraction/runnable-modules.sdp.md:43
Registrars use no environment, global or module side channel, mutable global registry or singleton world shared across examples. Generated siblings export the registrar and never self-register. Generation derives no domain observation; the engine never loads or executes adopter code. Registrars do not become generated test harnesses. Scenario Outlines stay refused. The interface changes neither the claim taxonomy, anchor bindings nor the contract-key identity of steps.

16 unkeyed rules.

Design
registrar line 46 · specs/extraction/runnable-modules.sdp.md:46
export declare function registerExample<World>(adapters: RunnableExampleAdapters<World, Conditions, Outcome>): void; is the signature template; substitute the generated function name and the parent's generated Conditions and Outcome names.

no citation recorded

registrarName line 47 · specs/extraction/runnable-modules.sdp.md:47
Prefix register to the example's final dot-delimited id segment in PascalCase after removing the first occurrence of the parent's final segment in PascalCase; if removal leaves an empty name, use the example's PascalCase segment. PascalCase splits that segment at non-alphanumeric characters, capitalizes each part, and prefixes X when the result starts with a digit.
adapters line 48 · specs/extraction/runnable-modules.sdp.md:48
interface RunnableExampleAdapters<W, C, O extends { readonly kind: string }> { readonly createWorld: (point: Partial<C>) => W; readonly invoke: (world: W, point: Partial<C>) => void | Promise<void>; readonly observe: (world: W) => O; readonly expected: (point: Partial<C>) => O; readonly assertions?: (world: W, observed: O) => void | Promise<void>; }

no citation recorded

registrarPath line 49 · specs/extraction/runnable-modules.sdp.md:49
The authored suite directory plus the example id without the spec: prefix and the suffix .test.generated.ts, retaining the id's dots.
registrarManifest line 50 · specs/extraction/runnable-modules.sdp.md:50
generated/registrars.json carries the versioned, sorted extraction-root-relative registrar paths owed by the build.

no citation recorded

thenBinding line 51 · specs/extraction/runnable-modules.sdp.md:51
compareContractOutcome(execution, { kind: "then", key, text, params }) is the generated binding of a Then step; it compares only the step whose key equals the oracle's kind.

no citation recorded

noMatchingThen line 52 · specs/extraction/runnable-modules.sdp.md:52
scenario <spec>: oracle selected "<kind>"; available Then steps: "<key>", … is the diagnostic when no authored Then matches, listing each Then step's contract key in contract order, with the original assertion as cause.

no citation recorded

Verification

Verifier bindings

  • test:protocol.runnable-modules · verifies generated runnable-module registration and runtime semantics · anchored · test anchor binding present · test/testing.test.ts:58
  • test:protocol.runnable-modules-generation · checks registrar generation, sibling paths and competing suite paths · anchored · test anchor binding present · test/codegen.test.ts:22
  • test:protocol.runnable-modules-types · checks registrar skeletons and required authored adapters · anchored · test anchor binding present · test/runnable-modules.typecheck.ts:5
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:extraction.runnable-modules
  • E9: verifies · anchored
Requirement drawing for spec:extraction.runnable-modulessatisfies · anchoredsatisfies · anchoredsatisfies · anchoredsatisfies · anchoredrefines · declaredrefines · declaredverifies · anchoredverifies · anchoredE9Intended Specsspec:decisions.adopted-registrars-committedAdopted runnable registrarsare committed…decisions.adopted-registrars-committeddeclared Specspec:extraction.runnable-modulesDerived runnable modulesfreeze the registrarinterface…extraction.runnable-modulesdeclared SpecSatisfying or referencingunitscomponent:protocol.codegencontracts and registraroutput…protocol.codegenanchored codecomponent:protocol.testingthe generated registrarruntime…protocol.testinganchored codeimpl:protocol.example-testing-helpersadapter-lifecycle andoracle-comparison helpersfor bound examples…protocol.example-testing-helpersanchored codeimpl:protocol.runnable-modulesderives and publishesrunnable registrar modulesfrom the graphimpl:protocol.runnable-modulesanchored codeTest or oracle bindingstest:protocol.runnable-modulesverifies generatedrunnable-moduleregistration and runtimesemanticstest:protocol.runnable-modulesanchored test binding ·binding presenttest:protocol.runnable-modules-generationchecks registrargeneration, sibling pathsand competing suite paths…protocol.runnable-modules-generationanchored test binding ·binding presenttest:protocol.runnable-modules-typeschecks registrar skeletonsand required authoredadapters…protocol.runnable-modules-typesanchored test binding ·binding presentOutside the selected setspec:extraction.example-runnerA bound example runs itscontract steps against afresh world…extraction.example-runnerdeclared Spec
The diagram as text
  • spec:extraction.runnable-modules: Derived runnable modules freeze the registrar interface · declared Spec
  • spec:decisions.adopted-registrars-committed: Adopted runnable registrars are committed · declared Spec
  • spec:extraction.example-runner: A bound example runs its contract steps against a fresh world · declared Spec
  • component:protocol.codegen: contracts and registrar output · anchored code · src/codegen/contracts.ts:633
  • component:protocol.testing: the generated registrar runtime · anchored code · src/testing/index.ts:38
  • impl:protocol.example-testing-helpers: adapter-lifecycle and oracle-comparison helpers for bound examples · anchored code · src/testing/index.ts:50
  • impl:protocol.runnable-modules: derives and publishes runnable registrar modules from the graph · anchored code · src/codegen/contracts.ts:658
  • test:protocol.runnable-modules: verifies generated runnable-module registration and runtime semantics · anchored test binding · binding present · test/testing.test.ts:58
  • test:protocol.runnable-modules-generation: checks registrar generation, sibling paths and competing suite paths · anchored test binding · binding present · test/codegen.test.ts:22
  • test:protocol.runnable-modules-types: checks registrar skeletons and required authored adapters · anchored test binding · binding present · test/runnable-modules.typecheck.ts:5
  • spec:decisions.adopted-registrars-committed refines spec:extraction.runnable-modules · declared
  • spec:extraction.runnable-modules refines spec:extraction.example-runner · declared
  • component:protocol.codegen satisfies spec:extraction.runnable-modules · anchored
  • component:protocol.testing satisfies spec:extraction.runnable-modules · anchored
  • impl:protocol.example-testing-helpers satisfies spec:extraction.runnable-modules · anchored
  • impl:protocol.runnable-modules satisfies spec:extraction.runnable-modules · anchored
  • test:protocol.runnable-modules verifies spec:extraction.runnable-modules · anchored
  • test:protocol.runnable-modules-generation verifies spec:extraction.runnable-modules · anchored
  • test:protocol.runnable-modules-types verifies spec:extraction.runnable-modules · 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.adopted-registrars-committed

    A registrar becomes adopted when tracked authored code imports it. Adopted registrars are committed and byte-checked against fresh generation; unadopted registrars remain ignored, regenerable output. A deterministic generated manifest owns reconciliation for both groups without turning registrar content into authored truth.

  • spec:decisions.anchor-comment-form

    An anchor has two extracted representations that feed one closed envelope, the constant form as ruled and a comment form. The comment form is a top-level /** … */ block in a .ts or .tsx file carrying reserved camelCase, TSDoc-compatible tags; @sdpAnchor <id> opens it, and the id's namespace selects the flavor exactly as the constant builders do. Comment prose still authors nothing: only the reserved tags are read, and a comment that does not open with /** is never read. Trust is by reserved grammar, not by builder import, so no import is required. The same id in two forms is a duplicate id. The package also ships a zero-dependency subpath @libar-dev/software-delivery-protocol/anchors exporting the id builders and the three anchor builders and nothing else, for runtimes that may import but must not load node:* modules or ts-morph; the extractor trusts that specifier as a Protocol builder module.

  • 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.point-per-example

    An example binds exactly one point; table syntax may expand statically into sibling examples and renderers may project siblings as a table.

Runtime
  • component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · 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.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.testing · the generated registrar runtime · src/testing/index.ts:38 · layer adapter · context protocol

    Uses

    • component:protocol.adapters · external runtime and source adapters · src/adapters/vitest.ts:23 · layer adapter · context protocol
    • component:protocol.runner · provider-neutral example execution · src/runner/index.ts:99 · layer application · context protocol
  • impl:protocol.example-testing-helpers · adapter-lifecycle and oracle-comparison helpers for bound examples · src/testing/index.ts:50

    Component: component:protocol.testing · the generated registrar runtime · src/testing/index.ts:38 · layer adapter · context protocol

    Uses

    None.

  • impl:protocol.runnable-modules · derives and publishes runnable registrar modules from the graph · src/codegen/contracts.ts:658

    Component: component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · 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:extraction.runnable-modules
  • E9: dependsOn · declared
Relations of spec:extraction.runnable-modulesrefines · declareddependsOn · declareddecidedBy · declareddecidedBy · declareddecidedBy · declareddecidedBy · declareddependsOn · declaredrefines · declaredE9Outgoing refinesspec:extraction.example-runnerA bound example runs itscontract steps against afresh world…extraction.example-runnerOutgoing dependsOnspec:carrier.step-keysAn example step may carry akey that survives rewording…carrier.step-keysspec:extraction.build-pipelineThe build pipeline has oneordered flow…extraction.build-pipelinespec:extraction.executable-contractsThe build derives step andspace contracts from graphexamples…extraction.executable-contractsOutgoing decidedByspec:decisions.anchor-comment-formThe comment form is asecond anchor representation…decisions.anchor-comment-formspec:decisions.binding-not-livenessBindings state existence,not liveness…decisions.binding-not-livenessspec:decisions.point-per-exampleEach example binds one point…decisions.point-per-exampleSubjectspec:extraction.runnable-modulesDerived runnable modulesfreeze the registrarinterface…extraction.runnable-modulesIncoming refinesspec:decisions.adopted-registrars-committedAdopted runnable registrarsare committed…decisions.adopted-registrars-committed
The diagram as text
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:decisions.adopted-registrars-committed: Adopted runnable registrars are committed
  • spec:decisions.anchor-comment-form: The comment form is a second anchor representation
  • spec:decisions.binding-not-liveness: Bindings state existence, not liveness
  • spec:decisions.point-per-example: Each example binds one point
  • spec:extraction.build-pipeline: The build pipeline has one ordered flow
  • spec:extraction.example-runner: A bound example runs its contract steps against a fresh world
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples
  • spec:extraction.runnable-modules: Derived runnable modules freeze the registrar interface
  • spec:extraction.runnable-modules decidedBy spec:decisions.adopted-registrars-committed · declared
  • spec:extraction.runnable-modules decidedBy spec:decisions.anchor-comment-form · declared
  • spec:extraction.runnable-modules decidedBy spec:decisions.binding-not-liveness · declared
  • spec:extraction.runnable-modules decidedBy spec:decisions.point-per-example · declared
  • spec:extraction.runnable-modules dependsOn spec:carrier.step-keys · declared — the registrar binds each step under its contract key
  • spec:extraction.runnable-modules dependsOn spec:extraction.build-pipeline · declared — the build publishes the registrars and their manifest under its staged-publication law
  • spec:extraction.runnable-modules dependsOn spec:extraction.executable-contracts · declared
  • spec:extraction.runnable-modules refines spec:extraction.example-runner · declared
  • spec:decisions.adopted-registrars-committed refines spec:extraction.runnable-modules · 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:extraction.example-runner · stated ready, floor ready
  • dependsOn · spec:carrier.step-keys · stated ready, floor ready
  • dependsOn · spec:extraction.build-pipeline · stated ready, floor ready
  • dependsOn · spec:extraction.executable-contracts · stated ready, floor ready
  • decidedBy · spec:decisions.adopted-registrars-committed · stated ready, floor ready
  • decidedBy · spec:decisions.anchor-comment-form · stated ready, floor ready
  • decidedBy · spec:decisions.binding-not-liveness · stated ready, floor ready
  • decidedBy · spec:decisions.point-per-example · stated ready, floor ready

Rested on by

Distance 1

  • spec:decisions.adopted-registrars-committed

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingspec:decisions.adopted-registrars-committed
spec:decisions.adopted-registrars-committed · resolves
declaredNoneNone
decidedBy · outgoingspec:decisions.anchor-comment-form
spec:decisions.anchor-comment-form · resolves
declaredNoneNone
decidedBy · outgoingspec:decisions.binding-not-liveness
spec:decisions.binding-not-liveness · resolves
declaredNoneNone
decidedBy · outgoingspec:decisions.point-per-example
spec:decisions.point-per-example · resolves
declaredNoneNone
dependsOn · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredthe registrar binds each step under its contract keyNone
dependsOn · outgoingspec:extraction.build-pipeline
spec:extraction.build-pipeline · resolves
declaredthe build publishes the registrars and their manifest under its staged-publication lawNone
dependsOn · outgoingThe build derives step and space contracts from graph examples
spec:extraction.executable-contracts · resolves
declaredNoneNone
refines · outgoingspec:extraction.example-runner
spec:extraction.example-runner · resolves
declaredNoneNone
refines · incomingspec:decisions.adopted-registrars-committed
spec:decisions.adopted-registrars-committed · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · role projection · layer application · context protocol
  • component:protocol.testing · the generated registrar runtime · src/testing/index.ts:38 · role adapter · layer adapter · context protocol
  • impl:protocol.example-testing-helpers · adapter-lifecycle and oracle-comparison helpers for bound examples · src/testing/index.ts:50 · role adapter · component component:protocol.testing · layer adapter · context protocol
  • impl:protocol.runnable-modules · derives and publishes runnable registrar modules from the graph · src/codegen/contracts.ts:658 · role projection · component component:protocol.codegen · layer application · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.runnable-modules · verifies generated runnable-module registration and runtime semantics · anchored · test/testing.test.ts:58 · test anchor
  • test:protocol.runnable-modules-generation · checks registrar generation, sibling paths and competing suite paths · anchored · test/codegen.test.ts:22 · test anchor
  • test:protocol.runnable-modules-types · checks registrar skeletons and required authored adapters · anchored · test/runnable-modules.typecheck.ts:5 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

34. A Model term may carry a key that addresses it

spec:model.term-addresses

A Model term may carry a key that addresses it

spec:model.term-addressesBusiness Rule · storyready floor ready

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

Design: 10 design entries · 7 pinned declarations · 2 decisions

Findings: no errors, no warnings

specs/model/term-addresses.sdp.md

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

A Model section defines a Spec's terms, and prose names those terms by word. A word is not a checked entry address, so a view cannot resolve it to one authored definition, and a renamed term leaves every sentence that names it silently stale. Design, UI, question and rule entries already carry keys that a mention addresses and validation checks; a key gives a Model term the same. The key is authored in a marker, as a rule's is, rather than derived from the term: a derived key would change, and break every address, whenever the term is reworded. The address segment is term, because an address names the kind of entry it reaches, as question and rule do, and the Model section's own prose is not an entry. The ratified glossary stays a document, beside the graph and outside it, so its terms gain no address; a term gains one where a Spec defines it.

Intent
problem
Prose that names a concept a Model section defines has no checked way to point at that definition, so a view cannot link it and a renamed term breaks its readers silently.
outcome
Let a Model term carry a key, addressed as spec:<id>#term.<key>, so prose cites a concept as a checked mention and every view links it exactly.
Rule

The world writes two carriers in one extraction root. The first is a story-altitude model Spec stating scoped, with an Intent outcome and a Model section holding the entries the terms slot joins with a semicolon and a space, in the carrier the slot names: in Markdown one line each, as written, and in TypeScript a .sdp.ts carrier whose model.terms object maps each entry's term to its definition, marker included. The second is a Markdown story-altitude rule Spec stating idea, with an Intent outcome and one rule; its narrative names the address, and it declares dependsOn on the first. A finding read is the first extraction finding, and an empty slot value means the extraction reports none; the term keys of every Spec in the graph are joined by a comma and a space. resolved is true when address resolution gives the address a resolving row whose value is the definition without its marker and whose file and line are those of the term's row in the location table. found is true when entry search for the words of the term that carries the address's key returns a row with that address and that line. The audit reason is the reason of the mention audit's unresolved row for the address, and empty when it lists none. The import reads the first carrier as written in TypeScript: the world imports it to Markdown, reads the emitted Model entry of its first term, extracts the imported carrier in a fresh root, and compares its term keys and definitions with the TypeScript graph's.

rule.termMarker line 32 · specs/model/term-addresses.sdp.md:32
A Model term may carry an optional key in a marker that opens its definition, after the bold term and the em dash, as in - **step key** — [#stepKey] the key a step carries; the TypeScript carrier writes the same marker at the start of the definition string. The key follows the entry-address key grammar, and an unkeyed term stays lawful and has no address. Importing a TypeScript carrier to Markdown writes the marker on the term that carries the key.

spec:model.term-addresses.keyed-term-resolves · enabled, spec:model.term-addresses.malformed-term-marker-refused · enabled, spec:model.term-addresses.typescript-term-imports-keyed · enabled

rule.authoredKey line 33 · specs/model/term-addresses.sdp.md:33
The key is authored and never derived from the term, so rewording a term or its definition keeps its address, while renaming or removing the key fails validation in every Spec that addresses it.

spec:model.term-addresses.unknown-term-key-refused · enabled

rule.uniqueTermKeys line 34 · specs/model/term-addresses.sdp.md:34
A term key is unique among the Model terms of one Spec. Term keys and the Spec's Design, UI, question and rule keys sit under different address segments and stay apart.

spec:model.term-addresses.repeated-term-key-refused · enabled

rule.markerRefusals line 35 · specs/model/term-addresses.sdp.md:35
A definition that opens with [# and does not continue as a marker is refused at its term, and a repeated term key is refused at each term that carries it; a refused Markdown carrier is refused whole, as for every structure refusal, and in the TypeScript carrier the key drops at each site and the Spec stays.

spec:model.term-addresses.malformed-term-marker-refused · enabled, spec:model.term-addresses.repeated-term-key-refused · enabled

rule.termAddress line 36 · specs/model/term-addresses.sdp.md:36
A keyed term is addressed as spec:<id>#term.<key>. The address parses, is refused in every id slot as every entry address is, and resolves while the Spec's model.termKeys carries the key; a mention of a term key the Spec does not carry is a prose-mentions error.

spec:model.term-addresses.keyed-term-resolves · enabled, spec:model.term-addresses.typescript-term-imports-keyed · enabled, spec:model.term-addresses.unknown-term-key-refused · enabled

rule line 37 · specs/model/term-addresses.sdp.md:37
The ratified glossary stays a document, so its terms gain no address; a term gains one where a Spec defines it in a Model section.
rule.termLocations line 38 · specs/model/term-addresses.sdp.md:38
The location table records every Model term its carrier locates, keyed or not, as term[<i>], with <i> the term's position among the Spec's terms in authored order and key beside a keyed term.

spec:model.term-addresses.keyed-term-resolves · enabled

rule.termReaders line 39 · specs/model/term-addresses.sdp.md:39
Address resolution resolves a term address to the term's definition with its file and line, entry search gives a keyed term its address and matches term keys as it matches rule keys, and the mention audit reports a term key the Spec does not carry as a missing entry.

spec:model.term-addresses.keyed-term-resolves · enabled, spec:model.term-addresses.unknown-term-key-refused · enabled

rule line 40 · specs/model/term-addresses.sdp.md:40
A term key mints no edge, confers no delivery fact and moves no readiness floor, and exercises names rule keys only. A term promoted to a model Spec of its own leaves its address behind, because promotion moves the content out, and every mention of the address fails until it names the new Spec.

2 unkeyed rules.

Verifying examples

A keyed term is reified and its address resolves · spec:model.term-addresses.keyed-term-resolves · ready floor ready

Executable Spec

Given a {carrier: "Markdown"} Spec carrier {specId: "spec:probe.subject"} whose Model terms read {terms: "- **step key** — [#stepKey] the key a step carries in its marker; - **slot** — one typed placeholder in a step"}
Given a second Spec that names {address: "spec:probe.subject#term.stepKey"} in its narrative and declares dependsOn on the first
When the extractor reifies both carriers and the graph is validated
Then the first carrier is reified: {reified: true}
Then the first extraction finding's message contains {extractMessage: ""}
Then the graph holds the term keys {keys: "stepKey"}
Then the report holds {mentionErrors: 0} prose-mention errors
Then address resolution resolves the address to the marker-free definition at its recorded term location: {resolved: true}
Then entry search for the addressed term's words finds it at that same address and line: {found: true}

Open example

A term marker whose key is off the grammar refuses its carrier · spec:model.term-addresses.malformed-term-marker-refused · ready floor ready

Executable Spec

Given a {carrier: "Markdown"} Spec carrier {specId: "spec:probe.subject"} whose Model terms read {terms: "- **step key** — [#step-key] the key a step carries in its marker"}
Given a second Spec that names {address: "spec:probe.subject#term.stepKey"} in its narrative and declares dependsOn on the first
When the extractor reifies both carriers and the graph is validated
Then the first carrier is reified: {reified: false}
Then the first extraction finding's message contains {extractMessage: "term key markers must be [#<lower-camel ASCII key>] followed by one space and text"}
Then the graph holds the term keys {keys: ""}
Then the report holds {mentionErrors: 1} prose-mention errors

Open example

A term key repeated in one Spec refuses its carrier · spec:model.term-addresses.repeated-term-key-refused · ready floor ready

Executable Spec

Given a {carrier: "Markdown"} Spec carrier {specId: "spec:probe.subject"} whose Model terms read {terms: "- **step key** — [#stepKey] the key a step carries in its marker; - **term key** — [#stepKey] the key a Model term carries in its marker"}
Given a second Spec that names {address: "spec:probe.subject#term.stepKey"} in its narrative and declares dependsOn on the first
When the extractor reifies both carriers and the graph is validated
Then the first carrier is reified: {reified: false}
Then the first extraction finding's message contains {extractMessage: "is repeated; term keys must be unique within a Spec"}
Then the graph holds the term keys {keys: ""}
Then the report holds {mentionErrors: 1} prose-mention errors

Open example

A keyed TypeScript term keeps its address through import to Markdown · spec:model.term-addresses.typescript-term-imports-keyed · ready floor ready

Executable Spec

Given a {carrier: "TypeScript"} Spec carrier {specId: "spec:probe.subject"} whose Model terms read {terms: "- **step key** — [#stepKey] the key a step carries in its marker"}
Given a second Spec that names {address: "spec:probe.subject#term.stepKey"} in its narrative and declares dependsOn on the first
When the extractor reifies both carriers and the graph is validated
Then the first carrier is reified: {reified: true}
Then the first extraction finding's message contains {extractMessage: ""}
Then the graph holds the term keys {keys: "stepKey"}
Then the report holds {mentionErrors: 0} prose-mention errors
Then the first carrier imported to Markdown writes the entry {importedEntry: "- **step key** — [#stepKey] the key a step carries in its marker"} and keeps its term keys and definitions: {keptOnImport: true}

Open example

An address that names a term key no term carries is an error · spec:model.term-addresses.unknown-term-key-refused · ready floor ready

Executable Spec

Given a {carrier: "Markdown"} Spec carrier {specId: "spec:probe.subject"} whose Model terms read {terms: "- **step key** — [#stepLabel] the key a step carries in its marker"}
Given a second Spec that names {address: "spec:probe.subject#term.stepKey"} in its narrative and declares dependsOn on the first
When the extractor reifies both carriers and the graph is validated
Then the first carrier is reified: {reified: true}
Then the first extraction finding's message contains {extractMessage: ""}
Then the graph holds the term keys {keys: "stepLabel"}
Then the report holds {mentionErrors: 1} prose-mention errors
Then the mention audit lists the address as unresolved with reason {auditReason: "entry"}

Open example

Example space

Given a {carrier:"Markdown"|"TypeScript"} Spec carrier {specId:string} whose Model terms read {terms:string}
Given a second Spec that names {address:string} in its narrative and declares dependsOn on the first
When the extractor reifies both carriers and the graph is validated
Then the first carrier is reified: {reified:boolean}
Then the first extraction finding's message contains {extractMessage:string}
Then the graph holds the term keys {keys:string}
Then the report holds {mentionErrors:number} prose-mention errors
Then address resolution resolves the address to the marker-free definition at its recorded term location: {resolved:boolean}
Then entry search for the addressed term's words finds it at that same address and line: {found:boolean}
Then the mention audit lists the address as unresolved with reason {auditReason:string}
Then the first carrier imported to Markdown writes the entry {importedEntry:string} and keeps its term keys and definitions: {keptOnImport:boolean}
Design
termMarker line 60 · specs/model/term-addresses.sdp.md:60
- **<term>** — [#<key>] <definition> is a keyed Model entry in Markdown and terms: { "<term>": "[#<key>] <definition>" } in TypeScript; <key> matches ^[a-z][A-Za-z0-9]*$, and a marker later in the definition is plain text.

no citation recorded

termKeysField line 61 · specs/model/term-addresses.sdp.md:61
model.termKeys maps each key to the term it names, as authored, in authored order; the definitions hold the text with the marker removed; a Spec with no keyed term carries no termKeys, and the serialized graph writes it after terms.

no citation recorded

markerRefusal line 62 · specs/model/term-addresses.sdp.md:62
term key markers must be [#<lower-camel ASCII key>] followed by one space and text is the message, as the finding extract/unrecognized-property at severity error, at path model.terms.<term>.

no citation recorded

repeatedKey line 63 · specs/model/term-addresses.sdp.md:63
term key "<key>" is repeated; term keys must be unique within a Spec is the message, as the same finding, at each term that carries the key.

no citation recorded

addressSections line 64 · specs/model/term-addresses.sdp.md:64
ENTRY_ADDRESS_SECTIONS is ["design", "ui", "question", "rule", "term"], and parseId refuses any other segment with entry address must be <section>.<key> with section design, ui, question, rule, or term.

no citation recorded

missingTerm line 65 · specs/model/term-addresses.sdp.md:65
Mention in "<spec>" at <path> points to missing entry "term.<key>" of "<target>". is the prose-mentions error for a term key the target does not carry.

no citation recorded

termLocation line 66 · specs/model/term-addresses.sdp.md:66
{ spec, file, entry: "term[<i>]", key?, line } is a term's row in the location table; a mention in a definition, at model.terms.<term>, takes that row's line.

no citation recorded

resolutionRow line 67 · specs/model/term-addresses.sdp.md:67
address resolution (recipe 25) reads term through model.termKeys; a resolving row gives the marker-free definition as value and its recorded file and line. A section or entry miss gives the available term keys sorted in code-unit order. The grammar text is spec:<id>#<section>.<key>, section design, ui, question, rule, or term; key lower-camel ASCII.
searchRow line 68 · specs/model/term-addresses.sdp.md:68
entry search (recipe 23) gives a matching keyed term, in section model and entry terms.<term>, the address spec:<id>#term.<key> and the line of its term[<i>] row, matches the term key as it matches a rule key, and never walks termKeys as content.
importEmitter line 69 · specs/model/term-addresses.sdp.md:69
the TypeScript-to-Markdown import writes a keyed term as - **<term>** — [#<key>] <definition>, so a keyed TypeScript term imports keyed.
Verification

Verifier bindings

Example space

  • carrier · "Markdown" | "TypeScript" · declared by a {carrier} Spec carrier {specId} whose Model terms read {terms}
  • specId · string · declared by a {carrier} Spec carrier {specId} whose Model terms read {terms}
  • terms · string · declared by a {carrier} Spec carrier {specId} whose Model terms read {terms}
  • address · string · declared by a second Spec that names {address} in its narrative and declares dependsOn on the first

Bound points

ExamplecarrierspecIdtermsaddress
spec:model.term-addresses.keyed-term-resolves"Markdown""spec:probe.subject""- **step key** — [#stepKey] the key a step carries in its marker; - **slot** — one typed placeholder in a step""spec:probe.subject#term.stepKey"
spec:model.term-addresses.malformed-term-marker-refused"Markdown""spec:probe.subject""- **step key** — [#step-key] the key a step carries in its marker""spec:probe.subject#term.stepKey"
spec:model.term-addresses.repeated-term-key-refused"Markdown""spec:probe.subject""- **step key** — [#stepKey] the key a step carries in its marker; - **term key** — [#stepKey] the key a Model term carries in its marker""spec:probe.subject#term.stepKey"
spec:model.term-addresses.typescript-term-imports-keyed"TypeScript""spec:probe.subject""- **step key** — [#stepKey] the key a step carries in its marker""spec:probe.subject#term.stepKey"
spec:model.term-addresses.unknown-term-key-refused"Markdown""spec:probe.subject""- **step key** — [#stepLabel] the key a step carries in its marker""spec:probe.subject#term.stepKey"

Oracle binding: none

Coverage

specId: "spec:probe.subject" · spec:model.term-addresses.keyed-term-resolves, spec:model.term-addresses.malformed-term-marker-refused, spec:model.term-addresses.repeated-term-key-refused, spec:model.term-addresses.typescript-term-imports-keyed, spec:model.term-addresses.unknown-term-key-refused · not enumerable

terms: "- **step key** — [#stepKey] the key a step carries in its marker; - **slot** — one typed placeholder in a step" · spec:model.term-addresses.keyed-term-resolves; "- **step key** — [#step-key] the key a step carries in its marker" · spec:model.term-addresses.malformed-term-marker-refused; "- **step key** — [#stepKey] the key a step carries in its marker; - **term key** — [#stepKey] the key a Model term carries in its marker" · spec:model.term-addresses.repeated-term-key-refused; "- **step key** — [#stepKey] the key a step carries in its marker" · spec:model.term-addresses.typescript-term-imports-keyed; "- **step key** — [#stepLabel] the key a step carries in its marker" · spec:model.term-addresses.unknown-term-key-refused · not enumerable

address: "spec:probe.subject#term.stepKey" · spec:model.term-addresses.keyed-term-resolves, spec:model.term-addresses.malformed-term-marker-refused, spec:model.term-addresses.repeated-term-key-refused, spec:model.term-addresses.typescript-term-imports-keyed, spec:model.term-addresses.unknown-term-key-refused · not enumerable

Unbound

  • carrier: None
  • specId: None
  • terms: None
  • address: None
Design view

Requirement drawing

Requirement drawing for spec:model.term-addresses
Requirement drawing for spec:model.term-addressessatisfies · anchoredrefines, verifies · declaredrefines · declaredverifies · anchoredIntended Specsspec:model.term-addressesA Model term may carry akey that addresses it…model.term-addressesdeclared SpecDeclared verifying examples5 verifying examples · declared; 5 test bindings · anchored, folded5 verifying examples ·declared5 test bindings · anchored ·foldedSatisfying or referencingunits9 satisfying units · anchored, folded9 satisfying units ·anchoredTest or oracle bindingstest:protocol.keyed-contenttest:protocol.keyed-content…protocol.keyed-contentanchored test binding ·binding presentOutside the selected setspec:model.spec-sectionsSpec sections carry typeddetail and direct verifiersemantics…model.spec-sectionsdeclared Spec
The diagram as text
  • spec:model.term-addresses: A Model term may carry a key that addresses it · declared Spec
  • spec:model.term-addresses.keyed-term-resolves: A keyed term is reified and its address resolves · declared Spec
  • spec:model.term-addresses.malformed-term-marker-refused: A term marker whose key is off the grammar refuses its carrier · declared Spec
  • spec:model.term-addresses.repeated-term-key-refused: A term key repeated in one Spec refuses its carrier · declared Spec
  • spec:model.term-addresses.typescript-term-imports-keyed: A keyed TypeScript term keeps its address through import to Markdown · declared Spec
  • spec:model.term-addresses.unknown-term-key-refused: An address that names a term key no term carries is an error · declared Spec
  • spec:model.spec-sections: Spec sections carry typed detail and direct verifier semantics · declared Spec
  • impl:protocol.address-and-cycle-recipes: asserts realization of the shipped address resolution and dependency cycle recipes · anchored code · test/recipes.test.ts:3568
  • impl:protocol.entry-locations: builds the carrier entry location table · anchored code · src/extract/derive.ts:78
  • impl:protocol.key-markers: normalizes step and term markers across the three carriers · anchored code · src/extract/key-markers.ts:136
  • impl:protocol.open-section-order: preserves authored open-section and model-term order and Pack field order · anchored code · src/extract/serialize.ts:105
  • impl:protocol.prose-mentions: checks that prose mentions resolve and warns once per unbacked Spec pair · anchored code · src/validate/validators.ts:1370
  • impl:protocol.register-recipes: asserts realization of the shipped register recipes · anchored code · test/recipes.test.ts:2057
  • impl:protocol.sdp-import-markdown-emit: emits the Markdown document twin for an imported Spec · anchored code · src/import/emit-markdown.ts:253
  • impl:protocol.spec-sections: typed Spec section shapes · anchored code · src/model/sections.ts:138
  • impl:protocol.stable-ids: stable ID grammar parser · anchored code · src/ids.ts:173
  • test:protocol.keyed-content: test:protocol.keyed-content · anchored test binding · binding present · test/keyed-content.test.ts:28
  • test:protocol.term-addresses.keyed-term-resolves: test:protocol.term-addresses.keyed-term-resolves · anchored test binding · binding present · test/self-hosting-term-addresses.test.ts:16
  • test:protocol.term-addresses.malformed-term-marker-refused: test:protocol.term-addresses.malformed-term-marker-refused · anchored test binding · binding present · test/self-hosting-term-addresses.test.ts:63
  • test:protocol.term-addresses.repeated-term-key-refused: test:protocol.term-addresses.repeated-term-key-refused · anchored test binding · binding present · test/self-hosting-term-addresses.test.ts:110
  • test:protocol.term-addresses.typescript-term-imports-keyed: test:protocol.term-addresses.typescript-term-imports-keyed · anchored test binding · binding present · test/self-hosting-term-addresses.test.ts:157
  • test:protocol.term-addresses.unknown-term-key-refused: test:protocol.term-addresses.unknown-term-key-refused · anchored test binding · binding present · test/self-hosting-term-addresses.test.ts:204
  • spec:model.term-addresses refines spec:model.spec-sections · declared — extends entry addresses to the terms a Model section defines
  • spec:model.term-addresses.keyed-term-resolves refines spec:model.term-addresses · declared
  • spec:model.term-addresses.keyed-term-resolves verifies spec:model.term-addresses · declared
  • spec:model.term-addresses.malformed-term-marker-refused refines spec:model.term-addresses · declared
  • spec:model.term-addresses.malformed-term-marker-refused verifies spec:model.term-addresses · declared
  • spec:model.term-addresses.repeated-term-key-refused refines spec:model.term-addresses · declared
  • spec:model.term-addresses.repeated-term-key-refused verifies spec:model.term-addresses · declared
  • spec:model.term-addresses.typescript-term-imports-keyed refines spec:model.term-addresses · declared
  • spec:model.term-addresses.typescript-term-imports-keyed verifies spec:model.term-addresses · declared
  • spec:model.term-addresses.unknown-term-key-refused refines spec:model.term-addresses · declared
  • spec:model.term-addresses.unknown-term-key-refused verifies spec:model.term-addresses · declared
  • impl:protocol.address-and-cycle-recipes satisfies spec:model.term-addresses · anchored
  • impl:protocol.entry-locations satisfies spec:model.term-addresses · anchored
  • impl:protocol.key-markers satisfies spec:model.term-addresses · anchored
  • impl:protocol.open-section-order satisfies spec:model.term-addresses · anchored
  • impl:protocol.prose-mentions satisfies spec:model.term-addresses · anchored
  • impl:protocol.register-recipes satisfies spec:model.term-addresses · anchored
  • impl:protocol.sdp-import-markdown-emit satisfies spec:model.term-addresses · anchored
  • impl:protocol.spec-sections satisfies spec:model.term-addresses · anchored
  • impl:protocol.stable-ids satisfies spec:model.term-addresses · anchored
  • test:protocol.keyed-content verifies spec:model.term-addresses · anchored
  • test:protocol.term-addresses.keyed-term-resolves verifies spec:model.term-addresses.keyed-term-resolves · anchored
  • test:protocol.term-addresses.malformed-term-marker-refused verifies spec:model.term-addresses.malformed-term-marker-refused · anchored
  • test:protocol.term-addresses.repeated-term-key-refused verifies spec:model.term-addresses.repeated-term-key-refused · anchored
  • test:protocol.term-addresses.typescript-term-imports-keyed verifies spec:model.term-addresses.typescript-term-imports-keyed · anchored
  • test:protocol.term-addresses.unknown-term-key-refused verifies spec:model.term-addresses.unknown-term-key-refused · 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

  • A Spec id written in prose is a checked mention

    A Spec id in narrative or section text, outside gwt and gwt-vocabulary fences, is a mention. A mention that does not resolve is a conformance error. A mention of another Spec that shares no declared relation with the mentioning Spec, in either direction, is one warning per mentioning Spec and target Spec pair, whatever the number of locations; an address on the mentioning Spec's own id is checked for its entry and never warned. An entry address is a Spec id followed by #, the section name design, ui, question, rule, or term, a dot, and the entry's lower-camel ASCII key, as in spec:<id>#design.<key> or spec:<id>#question.<key>. A design or ui address resolves when the Spec exists and that section holds the key as its own key, other than description; a question address resolves when the Spec exists and one of its open questions carries that key; a term address resolves when the Spec exists and one of its Model terms carries that key. The # sub-part is reserved for the entry address in every namespace: a Spec's own id, a relation target, a Pack member or model reference, an anchor id or target, and the specId and ref builders all refuse it. A mention mints no edge, and the reader gains no join.

  • 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.extract · the carrier and source pipeline · src/extract/index.ts:192 · 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.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocol

    Uses

    • component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · 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.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol

    Uses

    None.

  • component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · 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
  • impl:protocol.address-and-cycle-recipes · asserts realization of the shipped address resolution and dependency cycle recipes · test/recipes.test.ts:3568

    Uses

    None.

  • impl:protocol.entry-locations · builds the carrier entry location table · src/extract/derive.ts:78

    Component: component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocol

    Uses

    None.

  • impl:protocol.key-markers · normalizes step and term markers across the three carriers · src/extract/key-markers.ts:136

    Component: component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocol

    Uses

    None.

  • impl:protocol.open-section-order · preserves authored open-section and model-term order and Pack field order · src/extract/serialize.ts:105

    Component: component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocol

    Uses

    None.

  • impl:protocol.prose-mentions · checks that prose mentions resolve and warns once per unbacked Spec pair · src/validate/validators.ts:1370

    Component: component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol

    Uses

    None.

  • impl:protocol.register-recipes · asserts realization of the shipped register recipes · test/recipes.test.ts:2057

    Uses

    None.

  • impl:protocol.sdp-import-markdown-emit · emits the Markdown document twin for an imported Spec · src/import/emit-markdown.ts:253

    Component: component:protocol.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocol

    Uses

    None.

  • impl:protocol.spec-sections · typed Spec section shapes · src/model/sections.ts:138

    Component: component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol

    Uses

    None.

  • impl:protocol.stable-ids · stable ID grammar parser · src/ids.ts:173

    Component: component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · 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:model.term-addresses
Relations of spec:model.term-addressesdecidedBy · declareddecidedBy · declareddependsOn · declareddependsOn · declaredrefines · declareddependsOn · declareddependsOn · declaredrefines · declaredverifies · declaredOutgoing refinesspec:model.spec-sectionsSpec sections carry typeddetail and direct verifiersemantics…model.spec-sectionsOutgoing dependsOnspec:extraction.entry-locationsThe graph records whereeach addressable entry iswritten…extraction.entry-locationsspec:model.rule-keysA rule or flow entry maycarry a key that addressesit…model.rule-keysspec:model.stable-idsStable IDs are theProtocol's durable join key…model.stable-idsOutgoing decidedByspec:decisions.checked-mentionsA Spec id written in proseis a checked mention…decisions.checked-mentionsspec:decisions.shipped-projections-frozenThe shipped projectionsstay frozen…decisions.shipped-projections-frozenSubjectspec:model.term-addressesA Model term may carry akey that addresses it…model.term-addressesIncoming refinesspec:model.term-addresses.fold.Incoming.refines5 Incoming refines, folded…model.term-addresses.fold.Incoming.refinesIncoming dependsOnspec:model.term-addresses.fold.Incoming.dependsOn8 Incoming dependsOn, folded…model.term-addresses.fold.Incoming.dependsOn
The diagram as text
  • spec:carrier.markdown-body-grammar: The Markdown body accepts one closed form per section
  • spec:consumers.agent-surface.address-and-cycle-recipes: Address resolution and dependency cycles stay executable graph recipes
  • spec:consumers.agent-surface.register-recipes: Register questions stay executable graph recipes
  • spec:consumers.obsidian-vault.notes: Every Spec, Pack, code unit and keyed term is a note, and every relation is a link
  • spec:consumers.spec-studio.glossary-page: The glossary page lists every term the corpus's Specs define
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order
  • spec:consumers.upgrade-kit.capability-adoption: Capability adoption counts where each capability is used and where it could apply
  • spec:decisions.checked-mentions: A Spec id written in prose is a checked mention
  • spec:decisions.shipped-projections-frozen: The shipped projections stay frozen
  • spec:extraction.entry-locations: The graph records where each addressable entry is written
  • spec:model.rule-keys: A rule or flow entry may carry a key that addresses it
  • spec:model.spec-sections: Spec sections carry typed detail and direct verifier semantics
  • spec:model.stable-ids: Stable IDs are the Protocol's durable join key
  • spec:model.term-addresses: A Model term may carry a key that addresses it
  • spec:model.term-addresses.keyed-term-resolves: A keyed term is reified and its address resolves
  • spec:model.term-addresses.malformed-term-marker-refused: A term marker whose key is off the grammar refuses its carrier
  • spec:model.term-addresses.repeated-term-key-refused: A term key repeated in one Spec refuses its carrier
  • spec:model.term-addresses.typescript-term-imports-keyed: A keyed TypeScript term keeps its address through import to Markdown
  • spec:model.term-addresses.unknown-term-key-refused: An address that names a term key no term carries is an error
  • spec:validation.prose-mentions: Every Spec id written in prose resolves
  • spec:model.term-addresses decidedBy spec:decisions.checked-mentions · declared — a term address joins the address law that decision rules
  • spec:model.term-addresses decidedBy spec:decisions.shipped-projections-frozen · declared — term keys stay off the frozen projections, which read the definition unchanged
  • spec:model.term-addresses dependsOn spec:extraction.entry-locations · declared — adds a row per Model term to the location table
  • spec:model.term-addresses dependsOn spec:model.rule-keys · declared — the term-key design follows the rule-entry address pattern
  • spec:model.term-addresses dependsOn spec:model.stable-ids · declared — a term address extends the Spec entry-address grammar
  • spec:model.term-addresses refines spec:model.spec-sections · declared — extends entry addresses to the terms a Model section defines
  • spec:carrier.markdown-body-grammar dependsOn spec:model.term-addresses · declared — a Model definition may open with a term key marker
  • spec:consumers.agent-surface.address-and-cycle-recipes dependsOn spec:model.term-addresses · declared — a term address resolves through the Spec's term keys
  • spec:consumers.agent-surface.register-recipes dependsOn spec:model.term-addresses · declared — entry search and the mention audit read term addresses
  • spec:consumers.obsidian-vault.notes dependsOn spec:model.term-addresses · declared — a term note exists for a Model term that carries a key and so an address
  • 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.spec-page dependsOn spec:model.term-addresses · declared — a keyed term's address names the element a glossary row links to
  • spec:consumers.upgrade-kit.capability-adoption dependsOn spec:model.term-addresses · declared — term keys are counted where Model terms are
  • spec:validation.prose-mentions dependsOn spec:model.term-addresses · declared — a term address resolves through the Spec's term keys
  • spec:model.term-addresses.keyed-term-resolves refines spec:model.term-addresses · declared
  • spec:model.term-addresses.malformed-term-marker-refused refines spec:model.term-addresses · declared
  • spec:model.term-addresses.repeated-term-key-refused refines spec:model.term-addresses · declared
  • spec:model.term-addresses.typescript-term-imports-keyed refines spec:model.term-addresses · declared
  • spec:model.term-addresses.unknown-term-key-refused refines spec:model.term-addresses · declared
  • spec:model.term-addresses.keyed-term-resolves verifies spec:model.term-addresses · declared
  • spec:model.term-addresses.malformed-term-marker-refused verifies spec:model.term-addresses · declared
  • spec:model.term-addresses.repeated-term-key-refused verifies spec:model.term-addresses · declared
  • spec:model.term-addresses.typescript-term-imports-keyed verifies spec:model.term-addresses · declared
  • spec:model.term-addresses.unknown-term-key-refused verifies spec:model.term-addresses · 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:model.spec-sections · stated ready, floor ready
  • dependsOn · spec:extraction.entry-locations · stated ready, floor ready
  • dependsOn · spec:model.rule-keys · stated ready, floor ready
  • dependsOn · spec:model.stable-ids · stated ready, floor ready
  • decidedBy · spec:decisions.checked-mentions · stated ready, floor ready
  • decidedBy · spec:decisions.shipped-projections-frozen · stated ready, floor ready

Rested on by

Distance 1

  • spec:carrier.markdown-body-grammar

    Implementing units

    • impl:protocol.markdown-body-grammar · src/extract/markdown-body.ts:120
    • impl:protocol.markdown-content · src/extract/markdown-body-content.ts:7

    Referencing units

    None.

    Enabled verifiers: spec:carrier.markdown-body-grammar.continuation-line-refused, spec:carrier.markdown-body-grammar.foreign-fence-refused, spec:carrier.markdown-body-grammar.h3-refused, spec:carrier.markdown-body-grammar.integer-term-refused, spec:carrier.markdown-body-grammar.keyed-bullet-refused, spec:carrier.markdown-body-grammar.ordered-list-refused, spec:carrier.markdown-body-grammar.plain-bullet-refused, spec:carrier.markdown-body-grammar.raw-html-refused, spec:carrier.markdown-body-grammar.repeated-field-refused, spec:carrier.markdown-body-grammar.second-primary-owner-refused, spec:carrier.markdown-body-grammar.shared-description-refused, spec:carrier.markdown-body-grammar.table-refused, spec:carrier.markdown-body-grammar.trailing-prose-refused, spec:carrier.markdown-body-grammar.unrecognized-heading-refused, spec:validation.kind-evidence.second-entry-untargeted

    Packs: pack:self-hosting-v1

  • spec:consumers.agent-surface.address-and-cycle-recipes

    Implementing units

    • impl:protocol.address-and-cycle-recipes · test/recipes.test.ts:3568

    Referencing units

    None.

    Enabled verifiers: spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing, spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run, spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run, test:protocol.address-and-cycle-recipes

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

  • spec:consumers.agent-surface.register-recipes

    Implementing units

    • impl:protocol.register-recipes · test/recipes.test.ts:2057

    Referencing units

    None.

    Enabled verifiers: test:protocol.register-recipes

    Packs: pack:self-hosting-v1

  • spec:consumers.obsidian-vault.notes

    Implementing units

    • impl:protocol.vault-notes · src/projections/vault/notes.ts:45
    • impl:protocol.vault-sections · src/projections/vault/sections.ts:10
    • impl:protocol.vault-text · src/projections/vault/text.ts:30

    Referencing units

    None.

    Enabled verifiers: spec:consumers.obsidian-vault.notes.case-collision-refused, spec:consumers.obsidian-vault.notes.entry-address-link, spec:consumers.obsidian-vault.notes.term-address-link, spec:consumers.obsidian-vault.notes.unresolved-mention-stays, test:protocol.vault-priority

    Packs: pack:obsidian-vault-v1, pack:self-hosting-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.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.upgrade-kit.capability-adoption

    Implementing units

    • impl:protocol.capability-adoption-recipe · test/upgrade-kit.test.ts:514

    Referencing units

    None.

    Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus

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

  • spec:model.term-addresses.keyed-term-resolves

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.term-addresses.keyed-term-resolves

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

  • spec:model.term-addresses.malformed-term-marker-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.term-addresses.malformed-term-marker-refused

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

  • spec:model.term-addresses.repeated-term-key-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.term-addresses.repeated-term-key-refused

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

  • spec:model.term-addresses.typescript-term-imports-keyed

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.term-addresses.typescript-term-imports-keyed

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

  • spec:model.term-addresses.unknown-term-key-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.term-addresses.unknown-term-key-refused

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

  • spec:validation.prose-mentions

    Implementing units

    • impl:protocol.entry-address-resolution · src/graph/entry-address.ts:6
    • impl:protocol.prose-mentions · src/validate/validators.ts:1370

    Referencing units

    None.

    Enabled verifiers: test:protocol.entry-locations, test:protocol.prose-mentions

    Packs: pack:self-hosting-v1

Distance 2

  • spec:carrier.inline-code-spans

    Implementing units

    • impl:protocol.inline-code-spans · src/extract/markdown-inline-code.ts:4

    Referencing units

    None.

    Enabled verifiers: spec:carrier.inline-code-spans.description, spec:carrier.inline-code-spans.list, spec:carrier.inline-code-spans.narrative, spec:carrier.inline-code-spans.pack

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.continuation-line-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.continuation-line-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.foreign-fence-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.foreign-fence-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.h3-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.h3-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.integer-term-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.integer-term-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.keyed-bullet-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.keyed-bullet-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.ordered-list-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.ordered-list-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.plain-bullet-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.plain-bullet-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.raw-html-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.raw-html-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.repeated-field-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.repeated-field-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.second-primary-owner-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.second-primary-owner-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.shared-description-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.shared-description-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.table-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.table-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.trailing-prose-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.trailing-prose-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.unrecognized-heading-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.unrecognized-heading-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-parser

    Implementing units

    • impl:protocol.markdown-parser · src/extract/markdown.ts:37
    • impl:protocol.static-reification · src/extract/reify.ts:2139

    Referencing units

    None.

    Enabled verifiers: spec:carrier.markdown-parser.bounded-parity, test:protocol.markdown-parser

    Packs: pack:self-hosting-v1

  • spec:carrier.prose-ownership-rule

    Implementing units

    • impl:protocol.markdown-body-grammar · src/extract/markdown-body.ts:120

    Referencing units

    None.

    Enabled verifiers: test:protocol.prose-ownership

    Packs: pack:self-hosting-v1

  • spec:consumers.adopter-on-ramp

    Implementing units

    • impl:protocol.adopter-help · src/cli/help.ts:167
    • impl:protocol.adopter-on-ramp · test/skills.test.ts:712

    Referencing units

    None.

    Enabled verifiers: test:protocol.adopter-on-ramp, test:protocol.shipped-protocol-corpus

    Packs: pack:self-hosting-v1

  • spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing

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

  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run

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

  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run

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

  • spec:consumers.agent-surface.design-recipes

    Implementing units

    • impl:protocol.design-recipes · test/recipes.test.ts:4769

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-recipes

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

  • spec:consumers.intent-composition.proposal

    Implementing units

    • impl:protocol.proposal-schema-and-recipe · test/iteration-recipes.test.ts:1510
    • impl:protocol.studio-proposal-contract · src/studio-elements/proposal.ts:1

    Referencing units

    None.

    Enabled verifiers: test:protocol.proposal-schema-and-recipe

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

  • spec:consumers.obsidian-vault.notes.case-collision-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.case-collision-refused

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.notes.entry-address-link

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.entry-address-link

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.notes.term-address-link

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.term-address-link

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.notes.unresolved-mention-stays

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.unresolved-mention-stays

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.readiness-planner

    Implementing units

    • impl:protocol.statement-queue-recipe · test/self-hosting-readiness-planner.test.ts:74

    Referencing units

    None.

    Enabled verifiers: spec:consumers.readiness-planner.cycle-shares-a-round, spec:consumers.readiness-planner.decision-first, spec:consumers.readiness-planner.dependency-order, spec:consumers.readiness-planner.owner-question-holds

    Packs: pack:adopter-speed-v1, pack:self-hosting-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.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.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.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.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.upgrade-kit.capability-adoption.counts-a-corpus

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus

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

  • spec:consumers.vault-on-ramp

    Implementing units

    • impl:protocol.vault-on-ramp · test/skills.test.ts:1995

    Referencing units

    None.

    Enabled verifiers: test:protocol.vault-on-ramp

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:extraction.entry-citations

    Implementing units

    • impl:protocol.entry-address-resolution · src/graph/entry-address.ts:6
    • impl:protocol.entry-citation-reader · src/reader/entry-citations.ts:19
    • impl:protocol.entry-citation-recipe · test/recipes.test.ts:7008
    • impl:protocol.entry-citation-scan · src/extract/entry-citations.ts:6

    Referencing units

    None.

    Enabled verifiers: spec:extraction.entry-citations.code-comment-cites-declaration, spec:extraction.entry-citations.test-title-cites-declaration, spec:extraction.entry-citations.unanchored-file-unread, spec:extraction.entry-citations.unresolved-citation

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

  • spec:model.open-question-keys

    Implementing units

    • impl:protocol.open-question-keys · src/extract/markdown-body-owner-behavior.ts:38
    • impl:protocol.open-section-order · src/extract/serialize.ts:105
    • impl:protocol.prose-mentions · src/validate/validators.ts:1370
    • impl:protocol.register-recipes · test/recipes.test.ts:2057
    • impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253
    • impl:protocol.stable-ids · src/ids.ts:173
    • impl:protocol.static-reification · src/extract/reify.ts:2139

    Referencing units

    None.

    Enabled verifiers: spec:model.open-question-keys.keyed-question-resolves, spec:model.open-question-keys.renamed-key-breaks, spec:model.open-question-keys.repeated-key-refused

    Packs: pack:self-hosting-v1

  • spec:validation.external-registers

    Implementing units

    • impl:protocol.external-registers-recipe · test/external-registers.test.ts:9

    Referencing units

    None.

    Enabled verifiers: spec:validation.external-registers.uncited-on-request, spec:validation.external-registers.unknown-and-retired

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

Distance 3

  • spec:carrier.inline-code-spans.description

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.inline-code-spans.description

    Packs: pack:self-hosting-v1

  • spec:carrier.inline-code-spans.list

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.inline-code-spans.list

    Packs: pack:self-hosting-v1

  • spec:carrier.inline-code-spans.narrative

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.inline-code-spans.narrative

    Packs: pack:self-hosting-v1

  • spec:carrier.inline-code-spans.pack

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.inline-code-spans.pack

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-authoring

    Implementing units

    • impl:protocol.markdown-parser · src/extract/markdown.ts:37

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-authoring

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-pack-authoring

    Implementing units

    • impl:protocol.markdown-pack-authoring · src/extract/markdown-pack.ts:117
    • impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33
    • impl:protocol.static-reification · src/extract/reify.ts:2139

    Referencing units

    None.

    Enabled verifiers: spec:carrier.markdown-pack-authoring.markdown-ts-parity, spec:carrier.markdown-pack-authoring.spec-envelope-refused, test:protocol.roadmap-priority

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-parser.bounded-parity

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-parser.bounded-parity

    Packs: pack:self-hosting-v1

  • spec:consumers.agent-surface.answer-shapes

    Implementing units

    • impl:protocol.answer-shape-recipes · test/recipes.test.ts:6214

    Referencing units

    • impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597
    • impl:protocol.reader · src/reader/reader.ts:687

    Enabled verifiers: test:protocol.answer-shape-recipes

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

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

    Implementing units

    • impl:protocol.example-space-coverage-recipe · test/studio-s1.test.ts:856
    • impl:protocol.example-space-decoding · src/notation/example-space.ts:473

    Referencing units

    None.

    Enabled verifiers: spec:consumers.agent-surface.example-space-coverage.number-not-enumerable, spec:consumers.agent-surface.example-space-coverage.uncovered-literal

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

  • spec:consumers.authoring-on-ramp

    Implementing units

    • impl:protocol.authoring-on-ramp · test/skills.test.ts:76
    • impl:protocol.spec-scaffolder · src/cli/new-spec-command.ts:348

    Referencing units

    None.

    Enabled verifiers: test:protocol.authoring-on-ramp

    Packs: pack:self-hosting-v1

  • 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.context-bundle

    Implementing units

    • impl:protocol.context-bundle-recipe · test/iteration-recipes.test.ts:765

    Referencing units

    None.

    Enabled verifiers: spec:consumers.context-bundle.oversized-member-named, spec:consumers.context-bundle.parts-cover-the-pack, test:protocol.context-bundle-recipe

    Packs: pack:adopter-speed-v1, pack:design-iteration-v1, pack:design-management-v1, pack:self-hosting-v1

  • spec:consumers.delivery-session-on-ramp

    Implementing units

    • impl:protocol.delivery-session-on-ramp · test/skills.test.ts:83

    Referencing units

    None.

    Enabled verifiers: test:protocol.delivery-session-on-ramp

    Packs: pack:self-hosting-v1

  • spec:consumers.design-slice

    Implementing units

    • impl:protocol.design-slice-recipe · test/self-hosting-design-slice.test.ts:148

    Referencing units

    • impl:protocol.studio-slice-answer · src/projections/studio/slice-answer.ts:1

    Enabled verifiers: spec:consumers.design-slice.chain, spec:consumers.design-slice.component-absent, spec:consumers.design-slice.component-differing, spec:consumers.design-slice.component-matching, spec:consumers.design-slice.component-unreadable, spec:consumers.design-slice.component-unrelated, spec:consumers.design-slice.decision-backlink, spec:consumers.design-slice.dependency-cycle, spec:consumers.design-slice.folded-example, spec:consumers.design-slice.independent-example, spec:consumers.design-slice.outside-components, spec:consumers.design-slice.outside-holding, spec:consumers.design-slice.outside-satisfied, spec:consumers.design-slice.outside-unbound, test:protocol.design-slice

    Packs: pack:roadmaps-and-slices-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.intent-composition.proposal.memo

    Implementing units

    • impl:protocol.proposal-memo-recipe · test/recipes.test.ts:7298
    • impl:protocol.studio-proposal-memo · src/studio-elements/memo.ts:13

    Referencing units

    None.

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

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

  • spec:consumers.obsidian-vault.iteration

    Implementing units

    • impl:protocol.vault-sync · src/projections/vault/sync.ts:98
    • impl:protocol.vault-text · src/projections/vault/text.ts:30
    • impl:protocol.vault-watch · src/cli/vault-command.ts:219

    Referencing units

    None.

    Enabled verifiers: spec:consumers.obsidian-vault.iteration.watch-rewrites-changed-notes, spec:consumers.obsidian-vault.iteration.watch-source-anchor

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.readiness-planner.cycle-shares-a-round

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.cycle-shares-a-round

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

  • spec:consumers.readiness-planner.decision-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.decision-first

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

  • spec:consumers.readiness-planner.dependency-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.dependency-order

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

  • spec:consumers.readiness-planner.owner-question-holds

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.owner-question-holds

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

  • spec:consumers.roadmap

    Implementing units

    • impl:protocol.roadmap-recipe · test/roadmap.test.ts:20

    Referencing units

    None.

    Enabled verifiers: spec:consumers.roadmap.blocking-part, spec:consumers.roadmap.buildable-part, spec:consumers.roadmap.built-work, spec:consumers.roadmap.design-part, spec:consumers.roadmap.drifting-part, spec:consumers.roadmap.missing-evidence, spec:consumers.roadmap.outside-parent, spec:consumers.roadmap.statement-order, spec:consumers.roadmap.statement-part, test:protocol.roadmap-recipe

    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.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.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.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: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.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.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.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.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:consumers.upgrade-kit.rule-key-proposal

    Implementing units

    • impl:protocol.rule-key-proposal-recipe · test/upgrade-kit.test.ts:742

    Referencing units

    None.

    Enabled verifiers: spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable, spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean

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

  • spec:decisions.prose-ownership

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.question-key-rendering

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:extraction.contract-declarations

    Implementing units

    • impl:protocol.pack-design · src/reader/reader.ts:499
    • impl:protocol.register-recipes · test/recipes.test.ts:2057

    Referencing units

    None.

    Enabled verifiers: test:protocol.register-recipes

    Packs: pack:self-hosting-v1

  • spec:extraction.entry-citations.code-comment-cites-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.entry-citations.code-comment-cites-declaration

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

  • spec:extraction.entry-citations.test-title-cites-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.entry-citations.test-title-cites-declaration

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

  • spec:extraction.entry-citations.unanchored-file-unread

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.entry-citations.unanchored-file-unread

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

  • spec:extraction.entry-citations.unresolved-citation

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.entry-citations.unresolved-citation

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

  • spec:extraction.entry-locations

    Implementing units

    • impl:protocol.entry-location-recipes · test/recipes.test.ts:5979
    • impl:protocol.entry-locations · src/extract/derive.ts:78
    • impl:protocol.reader · src/reader/reader.ts:687

    Referencing units

    • impl:protocol.pack-design · src/reader/reader.ts:499

    Enabled verifiers: test:protocol.entry-locations

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

  • spec:model.open-question-fields

    Implementing units

    • impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597
    • impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8

    Referencing units

    None.

    Enabled verifiers: spec:model.open-question-fields.dropped-list-warns, test:protocol.authoring-grammar, test:protocol.authoring-grammar-recipes

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

  • spec:model.open-question-keys.keyed-question-resolves

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.open-question-keys.keyed-question-resolves

    Packs: pack:self-hosting-v1

  • spec:model.open-question-keys.renamed-key-breaks

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.open-question-keys.renamed-key-breaks

    Packs: pack:self-hosting-v1

  • spec:model.open-question-keys.repeated-key-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.open-question-keys.repeated-key-refused

    Packs: pack:self-hosting-v1

  • spec:model.rule-keys

    Implementing units

    • impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597
    • impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8
    • impl:protocol.rule-exercises · src/validate/validators.ts:1479

    Referencing units

    None.

    Enabled verifiers: test:protocol.authoring-grammar, test:protocol.authoring-grammar-recipes

    Packs: pack:design-iteration-v1, pack:design-management-v1, pack:self-hosting-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

  • spec:validation.duplicate-ids

    Implementing units

    • impl:protocol.duplicate-id-exclusion · src/extract/index.ts:93
    • impl:protocol.duplicate-ids · src/validate/validators.ts:263

    Referencing units

    None.

    Enabled verifiers: spec:validation.duplicate-ids.dual-carrier

    Packs: pack:self-hosting-v1

  • spec:validation.external-registers.uncited-on-request

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.external-registers.uncited-on-request

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

  • spec:validation.external-registers.unknown-and-retired

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.external-registers.unknown-and-retired

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

Distance 4

  • spec:carrier.envelope-contract

    Implementing units

    • impl:protocol.envelope-contract · src/extract/markdown-frontmatter.ts:33
    • impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33

    Referencing units

    None.

    Enabled verifiers: test:protocol.envelope-contract

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring

    Implementing units

    • impl:protocol.gherkin-authoring · src/extract/gherkin.ts:1323
    • impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6

    Referencing units

    None.

    Enabled verifiers: spec:carrier.gherkin-authoring.authored-fact-refused, spec:carrier.gherkin-authoring.contract-parity, spec:carrier.gherkin-authoring.description-location-refused, spec:carrier.gherkin-authoring.duplicate-surface-refused, spec:carrier.gherkin-authoring.example-space-extraction, spec:carrier.gherkin-authoring.malformed-relation-refused, spec:carrier.gherkin-authoring.missing-id-refused, spec:carrier.gherkin-authoring.multi-finding-bounded, spec:carrier.gherkin-authoring.parent-child-extraction, spec:carrier.gherkin-authoring.step-less-scenario-refused, spec:carrier.gherkin-authoring.unbound-ready-refused, spec:carrier.gherkin-authoring.unknown-tag-refused, spec:carrier.gherkin-authoring.unsupported-construct-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-pack-authoring.markdown-ts-parity

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-pack-authoring.markdown-ts-parity

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-pack-authoring.spec-envelope-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-pack-authoring.spec-envelope-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.sdp-import

    Implementing units

    • component:protocol.import · src/import/import.ts:45
    • impl:protocol.import-fidelity · src/import/markdown-fidelity.ts:102
    • impl:protocol.sdp-import · src/cli/import-command.ts:71
    • impl:protocol.sdp-import-core · src/import/import.ts:58
    • impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253
    • impl:protocol.sdp-import-publish · src/cli/import-publish.ts:23
    • impl:protocol.sdp-import-scan · src/cli/import-scan.ts:62

    Referencing units

    None.

    Enabled verifiers: spec:carrier.sdp-import.round-trip

    Packs: pack:self-hosting-v1

  • spec:carrier.slot-notation

    Implementing units

    • component:protocol.notation · src/notation/slots.ts:261
    • impl:protocol.slot-notation · src/notation/slots.ts:269

    Referencing units

    None.

    Enabled verifiers: spec:carrier.slot-notation.one-literal-binding, spec:carrier.slot-notation.refused-guess, spec:carrier.slot-notation.typed-declaration

    Packs: pack:self-hosting-v1

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

    Implementing units

    None.

    Referencing units

    None.

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

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

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

    Implementing units

    None.

    Referencing units

    None.

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

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

  • 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.context-bundle.oversized-member-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.context-bundle.oversized-member-named

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

  • spec:consumers.context-bundle.parts-cover-the-pack

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.context-bundle.parts-cover-the-pack

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

  • spec:consumers.design-review

    Implementing units

    • impl:protocol.design-review · src/projections/design-review.ts:44
    • impl:protocol.design-review-codec · src/projections/design-review-markdown.ts:3

    Referencing units

    None.

    Enabled verifiers: spec:consumers.design-review.pure-projection

    Packs: pack:self-hosting-v1

  • spec:consumers.design-slice.chain

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.chain

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

  • spec:consumers.design-slice.component-absent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-absent

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

  • spec:consumers.design-slice.component-differing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-differing

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

  • spec:consumers.design-slice.component-matching

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-matching

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

  • spec:consumers.design-slice.component-unreadable

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-unreadable

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

  • spec:consumers.design-slice.component-unrelated

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-unrelated

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

  • spec:consumers.design-slice.decision-backlink

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.decision-backlink

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

  • spec:consumers.design-slice.dependency-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.dependency-cycle

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

  • spec:consumers.design-slice.folded-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.folded-example

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

  • spec:consumers.design-slice.independent-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.independent-example

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

  • spec:consumers.design-slice.outside-components

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-components

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

  • spec:consumers.design-slice.outside-holding

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-holding

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

  • spec:consumers.design-slice.outside-satisfied

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-satisfied

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

  • spec:consumers.design-slice.outside-unbound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-unbound

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

  • spec:consumers.gherkin-view

    Implementing units

    • impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6
    • impl:protocol.gherkin-view · src/projections/gherkin-view.ts:19
    • impl:protocol.gherkin-view-cli · src/cli/gherkin-command.ts:66

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-view

    Packs: pack:self-hosting-v1

  • spec:consumers.graph-first-planning

    Implementing units

    • impl:protocol.graph-first-planning · test/skills.test.ts:290

    Referencing units

    None.

    Enabled verifiers: test:protocol.graph-first-planning

    Packs: pack:self-hosting-v1

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

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.studio-memo-shared

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

  • spec:consumers.obsidian-vault.iteration.watch-rewrites-changed-notes

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.iteration.watch-rewrites-changed-notes

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.iteration.watch-source-anchor

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.iteration.watch-source-anchor

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.pack-design

    Implementing units

    • impl:protocol.pack-design · src/reader/reader.ts:499

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-design

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

  • spec:consumers.projections-model.roadmap-views

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:consumers.roadmap.blocking-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.blocking-part

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

  • spec:consumers.roadmap.buildable-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.buildable-part

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

  • spec:consumers.roadmap.built-work

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.built-work

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

  • spec:consumers.roadmap.design-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.design-part

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

  • spec:consumers.roadmap.drifting-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.drifting-part

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

  • spec:consumers.roadmap.missing-evidence

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.missing-evidence

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

  • spec:consumers.roadmap.outside-parent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.outside-parent

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

  • spec:consumers.roadmap.statement-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.statement-order

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

  • spec:consumers.roadmap.statement-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.statement-part

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

  • spec:consumers.shipped-protocol-corpus

    Implementing units

    • impl:protocol.shipped-protocol-corpus · test/package-smoke.test.ts:252

    Referencing units

    None.

    Enabled verifiers: test:protocol.shipped-protocol-corpus

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

    Implementing units

    • impl:protocol.upgrade-guide · test/upgrade-kit.test.ts:87

    Referencing units

    None.

    Enabled verifiers: test:protocol.upgrade-guide

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

  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.rule-key-proposal.collision-and-unkeyable

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

  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.rule-key-proposal.proposal-applies-clean

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

  • spec:consumers.validate-watch

    Implementing units

    • impl:protocol.validate-watch · src/cli/validate-watch.ts:591

    Referencing units

    None.

    Enabled verifiers: test:protocol.validate-watch, test:protocol.validate-watch-rules

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

  • spec:decisions.carrier-ruling

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.carrier-universality

    Implementing units

    None.

    Referencing units

    • impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.sdp-ts-extension

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:extraction.pack-member-order

    Implementing units

    • impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33
    • impl:protocol.open-section-order · src/extract/serialize.ts:105
    • impl:protocol.pack-coherence · src/validate/validators.ts:1102
    • impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120
    • impl:protocol.pack-member-order · src/extract/derive.ts:153
    • impl:protocol.reader · src/reader/reader.ts:687

    Referencing units

    None.

    Enabled verifiers: spec:extraction.pack-member-order.manifest-order-kept, test:protocol.roadmap-priority

    Packs: pack:self-hosting-v1

  • spec:model.enrichment-lifecycle

    Implementing units

    • impl:protocol.slimming-recipe · test/curation-recipes.test.ts:26

    Referencing units

    None.

    Enabled verifiers: test:protocol.slimming-recipe

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

  • spec:model.open-question-fields.dropped-list-warns

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.open-question-fields.dropped-list-warns

    Packs: pack:self-hosting-v1

  • spec:model.relation-reasons

    Implementing units

    • impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597
    • impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.authoring-grammar, test:protocol.authoring-grammar-recipes

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

  • spec:protocol.delivery-record-cleanup

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:protocol.self-hosting

    Implementing units

    • impl:protocol.self-hosting · test/self-hosting-graph.test.ts:136

    Referencing units

    None.

    Enabled verifiers: test:protocol.self-hosting

    Packs: pack:self-hosting-v1

  • spec:validation.duplicate-ids.dual-carrier

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.duplicate-ids.dual-carrier

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal

    Implementing units

    • impl:protocol.superseded-decision-signal · src/validate/validators.ts:1817

    Referencing units

    None.

    Enabled verifiers: spec:validation.superseded-decision-signal.branch-names-every-end, spec:validation.superseded-decision-signal.chain-end-named, spec:validation.superseded-decision-signal.closed-chain-named, spec:validation.superseded-decision-signal.dependency-unread, spec:validation.superseded-decision-signal.end-and-loop-named, spec:validation.superseded-decision-signal.live-replacement-warns, spec:validation.superseded-decision-signal.replaced-ruling-warns, spec:validation.superseded-decision-signal.replacement-below-ready-named, spec:validation.superseded-decision-signal.superseded-subject-silent

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

Distance 5

  • spec:carrier.gherkin-authoring.authored-fact-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.authored-fact-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.contract-parity

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.contract-parity

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.description-location-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.description-location-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.duplicate-surface-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.duplicate-surface-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.example-space-extraction

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.example-space-extraction

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.malformed-relation-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.malformed-relation-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.missing-id-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.missing-id-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.multi-finding-bounded

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.multi-finding-bounded

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.parent-child-extraction

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.parent-child-extraction

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.step-less-scenario-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.step-less-scenario-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.unbound-ready-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.unbound-ready-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.unknown-tag-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.unknown-tag-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.unsupported-construct-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.unsupported-construct-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.sdp-import.feature-adapter

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:carrier.sdp-import.round-trip

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.sdp-import.round-trip

    Packs: pack:self-hosting-v1

  • spec:carrier.slot-notation.one-literal-binding

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.slot-notation.one-literal-binding

    Packs: pack:self-hosting-v1

  • spec:carrier.slot-notation.refused-guess

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.slot-notation.refused-guess

    Packs: pack:self-hosting-v1

  • spec:carrier.slot-notation.typed-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.slot-notation.typed-declaration

    Packs: pack:self-hosting-v1

  • spec:carrier.step-keys

    Implementing units

    • impl:protocol.example-runner · src/runner/index.ts:108
    • impl:protocol.example-space-decoding · src/notation/example-space.ts:473
    • impl:protocol.executable-contracts · src/codegen/contracts.ts:647
    • impl:protocol.key-markers · src/extract/key-markers.ts:136
    • impl:protocol.open-section-order · src/extract/serialize.ts:105
    • impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253
    • impl:protocol.spec-sections · src/model/sections.ts:138

    Referencing units

    None.

    Enabled verifiers: spec:carrier.step-keys.conflicting-example-key-withheld, spec:carrier.step-keys.gherkin-keyed-step-stays-bound, spec:carrier.step-keys.key-equal-to-a-skeleton-withheld, spec:carrier.step-keys.malformed-marker-refused, spec:carrier.step-keys.renamed-key-breaks, spec:carrier.step-keys.repeated-key-refused, spec:carrier.step-keys.reworded-keyed-step-stays-bound, spec:carrier.step-keys.reworded-unkeyed-step-breaks, spec:carrier.step-keys.two-keys-on-one-step-refused, spec:carrier.step-keys.typescript-keyed-step-imports-keyed, test:protocol.keyed-content

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

  • spec:consumers.binding-language-views

    Implementing units

    • impl:protocol.binding-language-index-table · src/projections/design-review-pages.ts:201
    • impl:protocol.binding-language-spec-page · src/projections/design-review-context.ts:95

    Referencing units

    None.

    Enabled verifiers: spec:consumers.binding-language-views.bound-spec-page, spec:consumers.binding-language-views.pack-member-table

    Packs: pack:self-hosting-v1

  • spec:consumers.derived-readiness-banner

    Implementing units

    • impl:protocol.derived-readiness-banner · src/projections/design-review-context.ts:18

    Referencing units

    None.

    Enabled verifiers: spec:consumers.derived-readiness-banner.dishonest-divergence, spec:consumers.derived-readiness-banner.honest-headroom, test:protocol.derived-readiness-banner.idea-floor-unmet

    Packs: pack:self-hosting-v1

  • spec:consumers.design-review.pack-design-page

    Implementing units

    • impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120

    Referencing units

    • impl:protocol.pack-design-sections · src/projections/design-review-pack-sections.ts:19

    Enabled verifiers: test:protocol.pack-design-page

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

  • spec:consumers.design-review.pure-projection

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-review.pure-projection

    Packs: pack:self-hosting-v1

  • spec:consumers.obsidian-vault.bases

    Implementing units

    • impl:protocol.vault-bases · src/projections/vault/bases.ts:43
    • impl:protocol.vault-notes · src/projections/vault/notes.ts:45

    Referencing units

    None.

    Enabled verifiers: spec:consumers.obsidian-vault.bases.views-match-sources

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.review-perspectives

    Implementing units

    • impl:protocol.perspective-filter-recipe · test/iteration-recipes.test.ts:753

    Referencing units

    None.

    Enabled verifiers: test:protocol.perspective-filter-recipe

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

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

    Implementing units

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

    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.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.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.wholesale-view-rewrite

    Implementing units

    • impl:protocol.build-pipeline-emit · src/cli/build-command.ts:251
    • impl:protocol.wholesale-view-rewrite · src/cli/validate-view-command.ts:128

    Referencing units

    None.

    Enabled verifiers: spec:consumers.wholesale-view-rewrite.build-invalidates-view, spec:consumers.wholesale-view-rewrite.failed-run-view-removed, spec:consumers.wholesale-view-rewrite.late-stale-page, spec:consumers.wholesale-view-rewrite.stale-page-removed

    Packs: pack:self-hosting-v1

  • spec:decisions.adopt-the-nouns

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.authored-entry-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.concept-docs-dissolve

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.envelope-grammar-posture

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.executable-meta-model

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.gherkin-carrier-option

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.pack-design-page

    Implementing units

    None.

    Referencing units

    • impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120

    Enabled verifiers: None

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

  • spec:decisions.pack-markdown-carrier

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.plain-language-references

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.protocol-naming

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.sdp-gherkin-extension

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:extraction.pack-member-order.manifest-order-kept

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-member-order

    Packs: pack:self-hosting-v1

  • spec:model.design-maturity

    Implementing units

    • impl:protocol.pack-design · src/reader/reader.ts:499

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-design

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

  • spec:protocol.capability-epics

    Implementing units

    • impl:protocol.capability-epics · test/recipes.test.ts:8173

    Referencing units

    None.

    Enabled verifiers: test:protocol.capability-epics

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

  • spec:protocol.structural-self-binding

    Implementing units

    • impl:protocol.structural-self-binding · test/self-hosting-oracle/structural-edges.ts:76

    Referencing units

    None.

    Enabled verifiers: test:protocol.structural-self-binding

    Packs: pack:self-hosting-v1

  • spec:validation.corpus-rules

    Implementing units

    • impl:protocol.corpus-rule-runner · src/cli/corpus-rules.ts:65
    • impl:protocol.corpus-rules · src/cli/validate-view-command.ts:79
    • impl:protocol.validate-watch · src/cli/validate-watch.ts:591

    Referencing units

    None.

    Enabled verifiers: spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run, spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run, spec:validation.corpus-rules.copies-contain-changes, spec:validation.corpus-rules.error-finding-fails, spec:validation.corpus-rules.malformed-finding-fails, spec:validation.corpus-rules.params-edit-starts-a-cycle, spec:validation.corpus-rules.rules-edit-starts-a-cycle, spec:validation.corpus-rules.unreadable-params-fail-one-file, spec:validation.corpus-rules.warning-finding-informs

    Packs: pack:adopter-speed-v1, pack:corpus-checks-v1, pack:design-management-v1, pack:self-hosting-v1

  • spec:validation.diagnostic-rendering

    Implementing units

    • impl:protocol.diagnostic-rendering-cli · src/cli/output.ts:23
    • impl:protocol.diagnostic-rendering-design-review · src/projections/design-review-context.ts:208
    • impl:protocol.validate-summary · src/cli/validate-view-command.ts:23
    • impl:protocol.validation-contracts · src/validate/contracts.ts:5

    Referencing units

    None.

    Enabled verifiers: spec:validation.diagnostic-rendering.composed-location, spec:validation.diagnostic-rendering.table-cell-location

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.branch-names-every-end

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.branch-names-every-end

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.chain-end-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.chain-end-named

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.closed-chain-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.closed-chain-named

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.dependency-unread

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.dependency-unread

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.end-and-loop-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.end-and-loop-named

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.live-replacement-warns

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.live-replacement-warns

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.replaced-ruling-warns

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.replaced-ruling-warns

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.replacement-below-ready-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.replacement-below-ready-named

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.superseded-subject-silent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.superseded-subject-silent

    Packs: pack:self-hosting-v1

Distance 6

  • spec:carrier.step-keys.conflicting-example-key-withheld

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.step-keys.conflicting-example-key-withheld

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

  • spec:carrier.step-keys.gherkin-keyed-step-stays-bound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.step-keys.gherkin-keyed-step-stays-bound

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

  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.step-keys.key-equal-to-a-skeleton-withheld

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

  • spec:carrier.step-keys.malformed-marker-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.step-keys.malformed-marker-refused

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

  • spec:carrier.step-keys.renamed-key-breaks

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.step-keys.renamed-key-breaks

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

  • spec:carrier.step-keys.repeated-key-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.step-keys.repeated-key-refused

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

  • spec:carrier.step-keys.reworded-keyed-step-stays-bound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.step-keys.reworded-keyed-step-stays-bound

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

  • spec:carrier.step-keys.reworded-unkeyed-step-breaks

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.step-keys.reworded-unkeyed-step-breaks

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

  • spec:carrier.step-keys.two-keys-on-one-step-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.step-keys.two-keys-on-one-step-refused

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

  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.step-keys.typescript-keyed-step-imports-keyed

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

  • spec:consumers.binding-language-views.bound-spec-page

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.binding-language-views.bound-spec-page

    Packs: pack:self-hosting-v1

  • spec:consumers.binding-language-views.pack-member-table

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.binding-language-views.pack-member-table

    Packs: pack:self-hosting-v1

  • spec:consumers.census-page

    Implementing units

    • impl:protocol.census-page · src/projections/census.ts:21
    • impl:protocol.census-page-cli · src/cli/census-command.ts:66

    Referencing units

    None.

    Enabled verifiers: test:protocol.census-page

    Packs: pack:self-hosting-v1

  • spec:consumers.derived-readiness-banner.dishonest-divergence

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.derived-readiness-banner.dishonest-divergence

    Packs: pack:self-hosting-v1

  • spec:consumers.derived-readiness-banner.honest-headroom

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.derived-readiness-banner.honest-headroom

    Packs: pack:self-hosting-v1

  • spec:consumers.mermaid-view

    Implementing units

    • impl:protocol.mermaid-view · src/projections/mermaid.ts:14
    • impl:protocol.mermaid-view-cli · src/cli/mermaid-command.ts:82

    Referencing units

    None.

    Enabled verifiers: test:protocol.mermaid-view

    Packs: pack:self-hosting-v1

  • spec:consumers.obsidian-vault

    Implementing units

    • impl:protocol.vault-command · src/cli/vault-command.ts:191
    • impl:protocol.vault-notes · src/projections/vault/notes.ts:45
    • impl:protocol.vault-sync · src/projections/vault/sync.ts:98

    Referencing units

    None.

    Enabled verifiers: spec:consumers.obsidian-vault.changed-note-refused, spec:consumers.obsidian-vault.failed-extraction-keeps-notes, spec:consumers.obsidian-vault.failed-extraction-recovered, spec:consumers.obsidian-vault.fresh-vault, spec:consumers.obsidian-vault.hidden-file-refused, spec:consumers.obsidian-vault.interrupted-run-recovered, spec:consumers.obsidian-vault.person-notes-survive, spec:consumers.obsidian-vault.unknown-note-refused, spec:consumers.obsidian-vault.vault-in-build-path-refused

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.bases.views-match-sources

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.bases.views-match-sources

    Packs: pack:obsidian-vault-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.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.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.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

    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.wholesale-view-rewrite.build-invalidates-view

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.wholesale-view-rewrite.build-invalidates-view

    Packs: pack:self-hosting-v1

  • spec:consumers.wholesale-view-rewrite.failed-run-view-removed

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.wholesale-view-rewrite.failed-run-view-removed

    Packs: pack:self-hosting-v1

  • spec:consumers.wholesale-view-rewrite.late-stale-page

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.wholesale-view-rewrite.late-stale-page

    Packs: pack:self-hosting-v1

  • spec:consumers.wholesale-view-rewrite.stale-page-removed

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.wholesale-view-rewrite.stale-page-removed

    Packs: pack:self-hosting-v1

  • spec:decisions.roadmap-priority

    Implementing units

    None.

    Referencing units

    • impl:protocol.pack-aggregate · src/model/pack.ts:23
    • impl:protocol.pack-member-order · src/extract/derive.ts:153

    Enabled verifiers: None

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

  • spec:extraction.executable-contracts

    Implementing units

    • impl:protocol.example-space · src/graph/example-space.ts:117
    • impl:protocol.executable-contracts · src/codegen/contracts.ts:647

    Referencing units

    None.

    Enabled verifiers: spec:carrier.step-keys.conflicting-example-key-withheld, spec:carrier.step-keys.key-equal-to-a-skeleton-withheld, spec:carrier.step-keys.reworded-keyed-step-stays-bound, spec:carrier.step-keys.reworded-unkeyed-step-breaks, spec:extraction.executable-contracts.case-colliding-path, spec:extraction.executable-contracts.concreteness-refusal, spec:extraction.executable-contracts.multi-entry-example

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

  • spec:extraction.runnable-modules

    Implementing units

    • component:protocol.codegen · src/codegen/contracts.ts:633
    • component:protocol.testing · src/testing/index.ts:38
    • impl:protocol.example-testing-helpers · src/testing/index.ts:50
    • impl:protocol.runnable-modules · src/codegen/contracts.ts:658

    Referencing units

    None.

    Enabled verifiers: test:protocol.runnable-modules, test:protocol.runnable-modules-generation, test:protocol.runnable-modules-types

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

  • spec:protocol.role-vocabulary

    Implementing units

    • impl:protocol.role-vocabulary · test/self-hosting-graph.test.ts:143

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:protocol.significant-units-review

    Implementing units

    • impl:protocol.structural-self-binding · test/self-hosting-oracle/structural-edges.ts:76

    Referencing units

    None.

    Enabled verifiers: test:protocol.structural-self-binding

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

  • spec:validation.architecture-constraints

    Implementing units

    • impl:protocol.architecture-walk-recipe · test/architecture-recipes.test.ts:10

    Referencing units

    None.

    Enabled verifiers: spec:validation.architecture-constraints.forbidden-layer-pair, spec:validation.architecture-constraints.isolated-context-as-rule, spec:validation.architecture-constraints.unstated-layer-unclassified

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

  • spec:validation.corpus-rules.copies-contain-changes

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.copies-contain-changes

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.error-finding-fails

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.error-finding-fails

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.malformed-finding-fails

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.malformed-finding-fails

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.params-edit-starts-a-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.params-edit-starts-a-cycle

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

  • spec:validation.corpus-rules.rules-edit-starts-a-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.rules-edit-starts-a-cycle

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

  • spec:validation.corpus-rules.unreadable-params-fail-one-file

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.unreadable-params-fail-one-file

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

  • spec:validation.corpus-rules.warning-finding-informs

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.warning-finding-informs

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.diagnostic-rendering.composed-location

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.diagnostic-rendering.composed-location

    Packs: pack:self-hosting-v1

  • spec:validation.diagnostic-rendering.table-cell-location

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.diagnostic-rendering.table-cell-location

    Packs: pack:self-hosting-v1

Distance 7

  • spec:consumers.design-diff

    Implementing units

    • impl:protocol.design-diff-recipe · test/iteration-recipes.test.ts:27

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-diff-recipe, test:protocol.roadmap-priority

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

  • spec:consumers.obsidian-vault.changed-note-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.changed-note-refused

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.failed-extraction-keeps-notes

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.failed-extraction-keeps-notes

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.failed-extraction-recovered

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.failed-extraction-recovered

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.fresh-vault

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.fresh-vault

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.hidden-file-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.hidden-file-refused

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.interrupted-run-recovered

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.interrupted-run-recovered

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.person-notes-survive

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.person-notes-survive

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.unknown-note-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.unknown-note-refused

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.vault-in-build-path-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.vault-in-build-path-refused

    Packs: pack:obsidian-vault-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.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.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.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.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.structural-mermaid

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:decisions.adopted-registrars-committed

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.roadmap-over-plans

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:decisions.vault-owned-folder

    Implementing units

    None.

    Referencing units

    • impl:protocol.vault-command · src/cli/vault-command.ts:191
    • impl:protocol.vault-sync · src/projections/vault/sync.ts:98

    Enabled verifiers: None

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:extraction.example-runner

    Implementing units

    • component:protocol.adapters · src/adapters/vitest.ts:23
    • component:protocol.runner · src/runner/index.ts:99
    • impl:protocol.example-runner · src/runner/index.ts:108
    • impl:protocol.example-runner-adapter · src/adapters/vitest.ts:32

    Referencing units

    None.

    Enabled verifiers: spec:extraction.example-runner.red-step-naming, spec:extraction.example-runner.step-order, test:protocol.example-runner-cleanup

    Packs: pack:self-hosting-v1

  • spec:extraction.executable-contracts.case-colliding-path

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.executable-contracts.case-colliding-path

    Packs: pack:self-hosting-v1

  • spec:extraction.executable-contracts.concreteness-refusal

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.executable-contracts.concreteness-refusal

    Packs: pack:self-hosting-v1

  • spec:extraction.executable-contracts.multi-entry-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.executable-contracts.multi-entry-example

    Packs: pack:self-hosting-v1

  • spec:model.pack-aggregate

    Implementing units

    • impl:protocol.pack-aggregate · src/model/pack.ts:23

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-builder, test:protocol.roadmap-priority

    Packs: pack:self-hosting-v1

  • spec:validation.architecture-constraints.forbidden-layer-pair

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.forbidden-layer-pair

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.architecture-constraints.isolated-context-as-rule

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.isolated-context-as-rule

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.architecture-constraints.unstated-layer-unclassified

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.unstated-layer-unclassified

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

Distance 8

  • spec:decisions.pack-reified

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:extraction.example-runner.red-step-naming

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.example-runner.red-step-naming

    Packs: pack:self-hosting-v1

  • spec:extraction.example-runner.step-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.example-runner.step-order

    Packs: pack:self-hosting-v1

  • spec:validation.pack-coherence

    Implementing units

    • impl:protocol.pack-coherence · src/validate/validators.ts:1102

    Referencing units

    None.

    Enabled verifiers: spec:validation.pack-coherence.incoherent-aggregate

    Packs: pack:self-hosting-v1

Distance 9

  • spec:validation.pack-coherence.incoherent-aggregate

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-coherence.incoherent-aggregate

    Packs: pack:self-hosting-v1

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingA Spec id written in prose is a checked mention
spec:decisions.checked-mentions · resolves
declareda term address joins the address law that decision rulesNone
decidedBy · outgoingspec:decisions.shipped-projections-frozen
spec:decisions.shipped-projections-frozen · resolves
declaredterm keys stay off the frozen projections, which read the definition unchangedNone
dependsOn · outgoingspec:extraction.entry-locations
spec:extraction.entry-locations · resolves
declaredadds a row per Model term to the location tableNone
dependsOn · outgoingspec:model.rule-keys
spec:model.rule-keys · resolves
declaredthe term-key design follows the rule-entry address patternNone
dependsOn · outgoingspec:model.stable-ids
spec:model.stable-ids · resolves
declareda term address extends the Spec entry-address grammarNone
refines · outgoingspec:model.spec-sections
spec:model.spec-sections · resolves
declaredextends entry addresses to the terms a Model section definesNone
dependsOn · incomingspec:carrier.markdown-body-grammar
spec:carrier.markdown-body-grammar · resolves
declareda Model definition may open with a term key markerNone
dependsOn · incomingAddress resolution and dependency cycles stay executable graph recipes
spec:consumers.agent-surface.address-and-cycle-recipes · resolves
declareda term address resolves through the Spec's term keysNone
dependsOn · incomingspec:consumers.agent-surface.register-recipes
spec:consumers.agent-surface.register-recipes · resolves
declaredentry search and the mention audit read term addressesNone
dependsOn · incomingspec:consumers.obsidian-vault.notes
spec:consumers.obsidian-vault.notes · resolves
declareda term note exists for a Model term that carries a key and so an addressNone
dependsOn · incomingspec:consumers.spec-studio.glossary-page
spec:consumers.spec-studio.glossary-page · resolves
declareda keyed term's address links it to its definitionNone
dependsOn · incomingspec:consumers.spec-studio.spec-page
spec:consumers.spec-studio.spec-page · resolves
declareda keyed term's address names the element a glossary row links toNone
dependsOn · incomingCapability adoption counts where each capability is used and where it could apply
spec:consumers.upgrade-kit.capability-adoption · resolves
declaredterm keys are counted where Model terms areNone
dependsOn · incomingspec:validation.prose-mentions
spec:validation.prose-mentions · resolves
declareda term address resolves through the Spec's term keysNone
refines · incomingA keyed term is reified and its address resolves
spec:model.term-addresses.keyed-term-resolves · resolves
declaredNoneNone
refines · incomingA term marker whose key is off the grammar refuses its carrier
spec:model.term-addresses.malformed-term-marker-refused · resolves
declaredNoneNone
refines · incomingA term key repeated in one Spec refuses its carrier
spec:model.term-addresses.repeated-term-key-refused · resolves
declaredNoneNone
refines · incomingA keyed TypeScript term keeps its address through import to Markdown
spec:model.term-addresses.typescript-term-imports-keyed · resolves
declaredNoneNone
refines · incomingAn address that names a term key no term carries is an error
spec:model.term-addresses.unknown-term-key-refused · resolves
declaredNoneNone
verifies · incomingA keyed term is reified and its address resolves
spec:model.term-addresses.keyed-term-resolves · resolves
declaredNonetermMarker, termAddress, termLocations, termReaders
verifies · incomingA term marker whose key is off the grammar refuses its carrier
spec:model.term-addresses.malformed-term-marker-refused · resolves
declaredNonetermMarker, markerRefusals
verifies · incomingA term key repeated in one Spec refuses its carrier
spec:model.term-addresses.repeated-term-key-refused · resolves
declaredNoneuniqueTermKeys, markerRefusals
verifies · incomingA keyed TypeScript term keeps its address through import to Markdown
spec:model.term-addresses.typescript-term-imports-keyed · resolves
declaredNonetermMarker, termAddress
verifies · incomingAn address that names a term key no term carries is an error
spec:model.term-addresses.unknown-term-key-refused · resolves
declaredNoneauthoredKey, termAddress, termReaders

Bindings

Implementation binding: present

  • impl:protocol.address-and-cycle-recipes · asserts realization of the shipped address resolution and dependency cycle recipes · test/recipes.test.ts:3568
  • impl:protocol.entry-locations · builds the carrier entry location table · src/extract/derive.ts:78 · role extractor · component component:protocol.extract · layer application · context protocol
  • impl:protocol.key-markers · normalizes step and term markers across the three carriers · src/extract/key-markers.ts:136 · role codec · component component:protocol.extract · layer application · context protocol
  • impl:protocol.open-section-order · preserves authored open-section and model-term order and Pack field order · src/extract/serialize.ts:105 · role codec · component component:protocol.extract · layer application · context protocol
  • impl:protocol.prose-mentions · checks that prose mentions resolve and warns once per unbacked Spec pair · src/validate/validators.ts:1370 · role validator · component component:protocol.validate · layer domain · context protocol
  • impl:protocol.register-recipes · asserts realization of the shipped register recipes · test/recipes.test.ts:2057
  • impl:protocol.sdp-import-markdown-emit · emits the Markdown document twin for an imported Spec · src/import/emit-markdown.ts:253 · role codec · component component:protocol.import · layer application · context protocol
  • impl:protocol.spec-sections · typed Spec section shapes · src/model/sections.ts:138 · role contract · component component:protocol.model · layer domain · context protocol
  • impl:protocol.stable-ids · stable ID grammar parser · src/ids.ts:173 · role codec · component component:protocol.model · layer domain · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

35. A keyed term is reified and its address resolves

spec:model.term-addresses.keyed-term-resolves

A keyed term is reified and its address resolves

spec:model.term-addresses.keyed-term-resolvesExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/model/term-addresses.keyed-term-resolves.sdp.md

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

Intent
outcome
Execute the term marker and the term address on one keyed term beside an unkeyed one, and show that address resolution and entry search find the term at the line the location table records.
Behavior

Examples

Given a {carrier: "Markdown"} Spec carrier {specId: "spec:probe.subject"} whose Model terms read {terms: "- **step key** — [#stepKey] the key a step carries in its marker; - **slot** — one typed placeholder in a step"}
Given a second Spec that names {address: "spec:probe.subject#term.stepKey"} in its narrative and declares dependsOn on the first
When the extractor reifies both carriers and the graph is validated
Then the first carrier is reified: {reified: true}
Then the first extraction finding's message contains {extractMessage: ""}
Then the graph holds the term keys {keys: "stepKey"}
Then the report holds {mentionErrors: 0} prose-mention errors
Then address resolution resolves the address to the marker-free definition at its recorded term location: {resolved: true}
Then entry search for the addressed term's words finds it at that same address and line: {found: true}
Verification

Verifier bindings

  • test:protocol.term-addresses.keyed-term-resolves · anchored · test anchor binding present · test/self-hosting-term-addresses.test.ts:16
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:model.term-addresses.keyed-term-resolves
The diagram as text
  • spec:model.term-addresses.keyed-term-resolves: A keyed term is reified and its address resolves · declared Spec
  • spec:model.term-addresses: A Model term may carry a key that addresses it · declared Spec
  • test:protocol.term-addresses.keyed-term-resolves: test:protocol.term-addresses.keyed-term-resolves · anchored test binding · binding present · test/self-hosting-term-addresses.test.ts:16
  • spec:model.term-addresses.keyed-term-resolves refines spec:model.term-addresses · declared
  • spec:model.term-addresses.keyed-term-resolves verifies spec:model.term-addresses · declared
  • test:protocol.term-addresses.keyed-term-resolves verifies spec:model.term-addresses.keyed-term-resolves · 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:model.term-addresses.keyed-term-resolves
  • E2: verifies · declared
The diagram as text
  • spec:model.term-addresses: A Model term may carry a key that addresses it
  • spec:model.term-addresses.keyed-term-resolves: A keyed term is reified and its address resolves
  • spec:model.term-addresses.keyed-term-resolves refines spec:model.term-addresses · declared
  • spec:model.term-addresses.keyed-term-resolves verifies spec:model.term-addresses · 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 Model term may carry a key that addresses it
spec:model.term-addresses · resolves
declaredNoneNone
verifies · outgoingA Model term may carry a key that addresses it
spec:model.term-addresses · resolves
declaredNonetermMarker, termAddress, termLocations, termReaders

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.term-addresses.keyed-term-resolves · anchored · test/self-hosting-term-addresses.test.ts:16 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

36. A term marker whose key is off the grammar refuses its carrier

spec:model.term-addresses.malformed-term-marker-refused

A term marker whose key is off the grammar refuses its carrier

spec:model.term-addresses.malformed-term-marker-refusedExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/model/term-addresses.malformed-term-marker-refused.sdp.md

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

Intent
outcome
Execute the marker refusal on a definition that opens with a marker whose key is not lower-camel ASCII.
Behavior

Examples

Given a {carrier: "Markdown"} Spec carrier {specId: "spec:probe.subject"} whose Model terms read {terms: "- **step key** — [#step-key] the key a step carries in its marker"}
Given a second Spec that names {address: "spec:probe.subject#term.stepKey"} in its narrative and declares dependsOn on the first
When the extractor reifies both carriers and the graph is validated
Then the first carrier is reified: {reified: false}
Then the first extraction finding's message contains {extractMessage: "term key markers must be [#<lower-camel ASCII key>] followed by one space and text"}
Then the graph holds the term keys {keys: ""}
Then the report holds {mentionErrors: 1} prose-mention errors
Verification

Verifier bindings

  • test:protocol.term-addresses.malformed-term-marker-refused · anchored · test anchor binding present · test/self-hosting-term-addresses.test.ts:63
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:model.term-addresses.malformed-term-marker-refused
The diagram as text
  • spec:model.term-addresses.malformed-term-marker-refused: A term marker whose key is off the grammar refuses its carrier · declared Spec
  • spec:model.term-addresses: A Model term may carry a key that addresses it · declared Spec
  • test:protocol.term-addresses.malformed-term-marker-refused: test:protocol.term-addresses.malformed-term-marker-refused · anchored test binding · binding present · test/self-hosting-term-addresses.test.ts:63
  • spec:model.term-addresses.malformed-term-marker-refused refines spec:model.term-addresses · declared
  • spec:model.term-addresses.malformed-term-marker-refused verifies spec:model.term-addresses · declared
  • test:protocol.term-addresses.malformed-term-marker-refused verifies spec:model.term-addresses.malformed-term-marker-refused · 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:model.term-addresses.malformed-term-marker-refused
  • E2: verifies · declared
The diagram as text
  • spec:model.term-addresses: A Model term may carry a key that addresses it
  • spec:model.term-addresses.malformed-term-marker-refused: A term marker whose key is off the grammar refuses its carrier
  • spec:model.term-addresses.malformed-term-marker-refused refines spec:model.term-addresses · declared
  • spec:model.term-addresses.malformed-term-marker-refused verifies spec:model.term-addresses · 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 Model term may carry a key that addresses it
spec:model.term-addresses · resolves
declaredNoneNone
verifies · outgoingA Model term may carry a key that addresses it
spec:model.term-addresses · resolves
declaredNonetermMarker, markerRefusals

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.term-addresses.malformed-term-marker-refused · anchored · test/self-hosting-term-addresses.test.ts:63 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

37. A term key repeated in one Spec refuses its carrier

spec:model.term-addresses.repeated-term-key-refused

A term key repeated in one Spec refuses its carrier

spec:model.term-addresses.repeated-term-key-refusedExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/model/term-addresses.repeated-term-key-refused.sdp.md

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

Intent
outcome
Execute the uniqueness refusal, and show that the address then names a missing Spec.
Behavior

Examples

Given a {carrier: "Markdown"} Spec carrier {specId: "spec:probe.subject"} whose Model terms read {terms: "- **step key** — [#stepKey] the key a step carries in its marker; - **term key** — [#stepKey] the key a Model term carries in its marker"}
Given a second Spec that names {address: "spec:probe.subject#term.stepKey"} in its narrative and declares dependsOn on the first
When the extractor reifies both carriers and the graph is validated
Then the first carrier is reified: {reified: false}
Then the first extraction finding's message contains {extractMessage: "is repeated; term keys must be unique within a Spec"}
Then the graph holds the term keys {keys: ""}
Then the report holds {mentionErrors: 1} prose-mention errors
Verification

Verifier bindings

  • test:protocol.term-addresses.repeated-term-key-refused · anchored · test anchor binding present · test/self-hosting-term-addresses.test.ts:110
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:model.term-addresses.repeated-term-key-refused
The diagram as text
  • spec:model.term-addresses.repeated-term-key-refused: A term key repeated in one Spec refuses its carrier · declared Spec
  • spec:model.term-addresses: A Model term may carry a key that addresses it · declared Spec
  • test:protocol.term-addresses.repeated-term-key-refused: test:protocol.term-addresses.repeated-term-key-refused · anchored test binding · binding present · test/self-hosting-term-addresses.test.ts:110
  • spec:model.term-addresses.repeated-term-key-refused refines spec:model.term-addresses · declared
  • spec:model.term-addresses.repeated-term-key-refused verifies spec:model.term-addresses · declared
  • test:protocol.term-addresses.repeated-term-key-refused verifies spec:model.term-addresses.repeated-term-key-refused · 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:model.term-addresses.repeated-term-key-refused
  • E2: verifies · declared
The diagram as text
  • spec:model.term-addresses: A Model term may carry a key that addresses it
  • spec:model.term-addresses.repeated-term-key-refused: A term key repeated in one Spec refuses its carrier
  • spec:model.term-addresses.repeated-term-key-refused refines spec:model.term-addresses · declared
  • spec:model.term-addresses.repeated-term-key-refused verifies spec:model.term-addresses · 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 Model term may carry a key that addresses it
spec:model.term-addresses · resolves
declaredNoneNone
verifies · outgoingA Model term may carry a key that addresses it
spec:model.term-addresses · resolves
declaredNoneuniqueTermKeys, markerRefusals

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.term-addresses.repeated-term-key-refused · anchored · test/self-hosting-term-addresses.test.ts:110 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

38. A keyed TypeScript term keeps its address through import to Markdown

spec:model.term-addresses.typescript-term-imports-keyed

A keyed TypeScript term keeps its address through import to Markdown

spec:model.term-addresses.typescript-term-imports-keyedExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/model/term-addresses.typescript-term-imports-keyed.sdp.md

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

Intent
outcome
Execute the term marker in the TypeScript carrier: a keyed definition string is reified with its key, its address resolves, and importing the carrier to Markdown writes the marker and extracts to the same term keys and definitions.
Behavior

Examples

Given a {carrier: "TypeScript"} Spec carrier {specId: "spec:probe.subject"} whose Model terms read {terms: "- **step key** — [#stepKey] the key a step carries in its marker"}
Given a second Spec that names {address: "spec:probe.subject#term.stepKey"} in its narrative and declares dependsOn on the first
When the extractor reifies both carriers and the graph is validated
Then the first carrier is reified: {reified: true}
Then the first extraction finding's message contains {extractMessage: ""}
Then the graph holds the term keys {keys: "stepKey"}
Then the report holds {mentionErrors: 0} prose-mention errors
Then the first carrier imported to Markdown writes the entry {importedEntry: "- **step key** — [#stepKey] the key a step carries in its marker"} and keeps its term keys and definitions: {keptOnImport: true}
Verification

Verifier bindings

  • test:protocol.term-addresses.typescript-term-imports-keyed · anchored · test anchor binding present · test/self-hosting-term-addresses.test.ts:157
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:model.term-addresses.typescript-term-imports-keyed
The diagram as text
  • spec:model.term-addresses.typescript-term-imports-keyed: A keyed TypeScript term keeps its address through import to Markdown · declared Spec
  • spec:model.term-addresses: A Model term may carry a key that addresses it · declared Spec
  • test:protocol.term-addresses.typescript-term-imports-keyed: test:protocol.term-addresses.typescript-term-imports-keyed · anchored test binding · binding present · test/self-hosting-term-addresses.test.ts:157
  • spec:model.term-addresses.typescript-term-imports-keyed refines spec:model.term-addresses · declared
  • spec:model.term-addresses.typescript-term-imports-keyed verifies spec:model.term-addresses · declared
  • test:protocol.term-addresses.typescript-term-imports-keyed verifies spec:model.term-addresses.typescript-term-imports-keyed · 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:model.term-addresses.typescript-term-imports-keyed
  • E2: verifies · declared
The diagram as text
  • spec:model.term-addresses: A Model term may carry a key that addresses it
  • spec:model.term-addresses.typescript-term-imports-keyed: A keyed TypeScript term keeps its address through import to Markdown
  • spec:model.term-addresses.typescript-term-imports-keyed refines spec:model.term-addresses · declared
  • spec:model.term-addresses.typescript-term-imports-keyed verifies spec:model.term-addresses · 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 Model term may carry a key that addresses it
spec:model.term-addresses · resolves
declaredNoneNone
verifies · outgoingA Model term may carry a key that addresses it
spec:model.term-addresses · resolves
declaredNonetermMarker, termAddress

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.term-addresses.typescript-term-imports-keyed · anchored · test/self-hosting-term-addresses.test.ts:157 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

39. An address that names a term key no term carries is an error

spec:model.term-addresses.unknown-term-key-refused

An address that names a term key no term carries is an error

spec:model.term-addresses.unknown-term-key-refusedExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/model/term-addresses.unknown-term-key-refused.sdp.md

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

Intent
outcome
Execute the missing-entry error on a term address whose key the target no longer carries, after the key was renamed and the address was not.
Behavior

Examples

Given a {carrier: "Markdown"} Spec carrier {specId: "spec:probe.subject"} whose Model terms read {terms: "- **step key** — [#stepLabel] the key a step carries in its marker"}
Given a second Spec that names {address: "spec:probe.subject#term.stepKey"} in its narrative and declares dependsOn on the first
When the extractor reifies both carriers and the graph is validated
Then the first carrier is reified: {reified: true}
Then the first extraction finding's message contains {extractMessage: ""}
Then the graph holds the term keys {keys: "stepLabel"}
Then the report holds {mentionErrors: 1} prose-mention errors
Then the mention audit lists the address as unresolved with reason {auditReason: "entry"}
Verification

Verifier bindings

  • test:protocol.term-addresses.unknown-term-key-refused · anchored · test anchor binding present · test/self-hosting-term-addresses.test.ts:204
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:model.term-addresses.unknown-term-key-refused
The diagram as text
  • spec:model.term-addresses.unknown-term-key-refused: An address that names a term key no term carries is an error · declared Spec
  • spec:model.term-addresses: A Model term may carry a key that addresses it · declared Spec
  • test:protocol.term-addresses.unknown-term-key-refused: test:protocol.term-addresses.unknown-term-key-refused · anchored test binding · binding present · test/self-hosting-term-addresses.test.ts:204
  • spec:model.term-addresses.unknown-term-key-refused refines spec:model.term-addresses · declared
  • spec:model.term-addresses.unknown-term-key-refused verifies spec:model.term-addresses · declared
  • test:protocol.term-addresses.unknown-term-key-refused verifies spec:model.term-addresses.unknown-term-key-refused · 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:model.term-addresses.unknown-term-key-refused
  • E2: verifies · declared
The diagram as text
  • spec:model.term-addresses: A Model term may carry a key that addresses it
  • spec:model.term-addresses.unknown-term-key-refused: An address that names a term key no term carries is an error
  • spec:model.term-addresses.unknown-term-key-refused refines spec:model.term-addresses · declared
  • spec:model.term-addresses.unknown-term-key-refused verifies spec:model.term-addresses · 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 Model term may carry a key that addresses it
spec:model.term-addresses · resolves
declaredNoneNone
verifies · outgoingA Model term may carry a key that addresses it
spec:model.term-addresses · resolves
declaredNoneauthoredKey, termAddress, termReaders

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.term-addresses.unknown-term-key-refused · anchored · test/self-hosting-term-addresses.test.ts:204 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

40. A Spec id written in prose is a checked mention

spec:decisions.checked-mentions

A Spec id written in prose is a checked mention

spec:decisions.checked-mentionsDecision Record · featureready floor ready

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

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

Findings: no errors, no warnings

specs/decisions/checked-mentions.sdp.md

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

Intent
outcome
Make a Spec id written in prose resolve, and make one keyed entry of an open section, one keyed open question, one keyed entry of the primary behavior owner, or one keyed Model term addressable, so a reference below the Spec level can be checked.
Decision
context
Specs name other Specs, and single entries of them, in prose. Referential integrity reads edges and Pack references only. A prose id that does not resolve passes validation, a mention that no relation backs hides a dependent from blast radius, and finding every Spec that repeats an entry is a text search. The first adopter corpus carried its design as keyed entries, and most of its prose mentions had no declared relation.
decision
A Spec id in narrative or section text, outside gwt and gwt-vocabulary fences, is a mention. A mention that does not resolve is a conformance error. A mention of another Spec that shares no declared relation with the mentioning Spec, in either direction, is one warning per mentioning Spec and target Spec pair, whatever the number of locations; an address on the mentioning Spec's own id is checked for its entry and never warned. An entry address is a Spec id followed by #, the section name design, ui, question, rule, or term, a dot, and the entry's lower-camel ASCII key, as in spec:<id>#design.<key> or spec:<id>#question.<key>. A design or ui address resolves when the Spec exists and that section holds the key as its own key, other than description; a question address resolves when the Spec exists and one of its open questions carries that key; a term address resolves when the Spec exists and one of its Model terms carries that key. The # sub-part is reserved for the entry address in every namespace: a Spec's own id, a relation target, a Pack member or model reference, an anchor id or target, and the specId and ref builders all refuse it. A mention mints no edge, and the reader gains no join.
rationale
  • The warning asks for a relation that already exists, so linkage keeps one home. A relation in either direction backs a mention because blast radius walks its one hop both ways, so a reverse edge already surfaces the dependent. One warning per pair keeps the report readable where a Spec names one neighbor in many bullets, and the mention audit keeps every location.
  • This applies the content-only sections ruling rather than contradicting it. A mention mints no edge, so no consumer branches on a reference union, and the warning names the double-linkage drift the earlier ruling left legal and silent. The id grammar already parses and formats a # sub-part; this record gives it its only meaning, and the dot inside the sub-part is the one grammar change.
  • The owner ruled that an open question may carry an optional key in its marker, as in - [blocking #aggregateReach] text, addressed as spec:<id>#question.aggregateReach. The key grammar is the Design key grammar, a key is unique among one Spec's open questions, and an unkeyed question stays lawful. A register that cites a question by its position breaks silently when a question above it moves or closes, and the first adopter's register had drifted in such citations; a key breaks loudly where it is renamed.
  • The owner ruled that the address carries the section, because open-section keys are unique within a section and not within a Spec, so spec:<id>#design.shared and spec:<id>#ui.shared stay distinct when one carrier holds both; that # is refused in every identity, because neither this corpus nor the first adopter's carries one, and one meaning per sub-part keeps resolution a lookup instead of a precedence rule; and that one lower-camel key grammar serves every carrier, so an address is typeable from memory and a lawful TypeScript key outside it is simply unaddressable.
  • A Model term carries an authored key in a marker that opens its definition, as a rule carries its own, addressed through the segment term. A key derived from the term would break every address whenever the term is reworded, and the segment names the kind of entry, as question and rule do. The ratified glossary stays a document, so its terms gain no address; a term gains one where a Spec defines it.
alternatives
  • A new edge type for mentions costs the schema, the edge contract, the census, the Mermaid view, and every recipe that filters edges. The warning reaches the same dependents through relations that exist.
  • Leaving the check to each adopter's own lint fixes one corpus and no other.
  • A positional address for an unkeyed bullet, such as the third flow of a Workflow, was refused. Positions move with every edit above them, so such an address would break silently where a key breaks loudly.
  • Refusing a key that appears under both Design and UI would shorten the address and make one section's keys depend on the other's. Refused by the owner.
  • Letting an identity with # outrank an address would retain the earlier identity grammar and make every address resolution a two-step lookup for a case no corpus has. Refused by the owner.
  • Warning only on a missing forward relation would turn a parent's mention of its own child into a finding the child's refines edge already answers. Refused by the owner.
consequences
  • Keyed Design and UI entries, keyed open questions, keyed entries of the primary behavior owner and keyed Model terms are addressable, a rule address resolving when the Spec's behavior.ruleKeys carries the key and a term address when its model.termKeys does. Unkeyed entries have no address; a reference to one stays a Spec-level mention, and a sequence that must be addressed is authored as keyed entries.
  • The key description names the leading prose of a design or ui section and is never an entry there, so a design or ui address ending in .description never resolves. A question key is a value on the question, not a property beside section prose, so description is an ordinary question key. A TypeScript key outside the lower-camel ASCII grammar is lawful and has no address.
  • A renamed or removed open-section key, question key, rule key or term key fails validation in every Spec that addresses it.
  • Blast radius and delta review scope include a mentioning Spec once a declared relation backs its mention.
  • A family pattern written in id form reads as an unresolved mention, so such a pattern is written as plain words.
  • No reference check detects two Specs that restate one shape in their own words. The check narrows that defect class and never closes it.
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.checked-mentions

Arrows: refines (declared).

Requirement drawing for spec:decisions.checked-mentionsIntended Specsspec:decisions.checked-mentionsA Spec id written in proseis a checked mention…decisions.checked-mentionsdeclared SpecOutside the selected setspec:model.stable-idsStable IDs are theProtocol's durable join key…model.stable-idsdeclared Spec
The diagram as text
  • spec:decisions.checked-mentions: A Spec id written in prose is a checked mention · declared Spec
  • spec:model.stable-ids: Stable IDs are the Protocol's durable join key · declared Spec
  • spec:decisions.checked-mentions refines spec:model.stable-ids · 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.checked-mentions
Relations of spec:decisions.checked-mentionsdependsOn · declareddependsOn · declaredrefines · declareddecidedBy · declareddecidedBy · declareddecidedBy · declareddecidedBy · declareddecidedBy · declaredOutgoing refinesspec:model.stable-idsStable IDs are theProtocol's durable join key…model.stable-idsOutgoing dependsOnspec:decisions.content-only-sectionsSections carry contentwhile relations carry links…decisions.content-only-sectionsSubjectspec:decisions.checked-mentionsA Spec id written in proseis a checked mention…decisions.checked-mentionsIncoming dependsOnspec:consumers.agent-surface.address-and-cycle-recipesAddress resolution anddependency cycles stayexecutable graph recipes…consumers.agent-surface.address-and-cycle-recipesIncoming decidedByspec:model.open-question-keysAn open question may carrya key that addresses it…model.open-question-keysspec:model.rule-keysA rule or flow entry maycarry a key that addressesit…model.rule-keysspec:model.term-addressesA Model term may carry akey that addresses it…model.term-addressesspec:validation.prose-mentionsEvery Spec id written inprose resolves…validation.prose-mentions
The diagram as text
  • spec:consumers.agent-surface.address-and-cycle-recipes: Address resolution and dependency cycles stay executable graph recipes
  • spec:decisions.checked-mentions: A Spec id written in prose is a checked mention
  • spec:decisions.content-only-sections: Sections carry content while relations carry links
  • spec:model.open-question-keys: An open question may carry a key that addresses it
  • spec:model.rule-keys: A rule or flow entry may carry a key that addresses it
  • spec:model.stable-ids: Stable IDs are the Protocol's durable join key
  • spec:model.term-addresses: A Model term may carry a key that addresses it
  • spec:validation.prose-mentions: Every Spec id written in prose resolves
  • spec:decisions.checked-mentions dependsOn spec:decisions.content-only-sections · declared
  • spec:decisions.checked-mentions refines spec:model.stable-ids · declared
  • spec:model.open-question-keys decidedBy spec:decisions.checked-mentions · declared
  • spec:model.rule-keys decidedBy spec:decisions.checked-mentions · declared — rule addresses join the address law it rules
  • spec:model.stable-ids decidedBy spec:decisions.checked-mentions · declared
  • spec:model.term-addresses decidedBy spec:decisions.checked-mentions · declared — a term address joins the address law that decision rules
  • spec:validation.prose-mentions decidedBy spec:decisions.checked-mentions · declared
  • spec:consumers.agent-surface.address-and-cycle-recipes dependsOn spec:decisions.checked-mentions · 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:model.stable-ids · stated ready, floor ready
  • dependsOn · spec:decisions.content-only-sections · stated ready, floor ready

Rested on by

Distance 1

  • spec:consumers.agent-surface.address-and-cycle-recipes

    Implementing units

    • impl:protocol.address-and-cycle-recipes · test/recipes.test.ts:3568

    Referencing units

    None.

    Enabled verifiers: spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing, spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run, spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run, test:protocol.address-and-cycle-recipes

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

  • spec:model.open-question-keys

    Implementing units

    • impl:protocol.open-question-keys · src/extract/markdown-body-owner-behavior.ts:38
    • impl:protocol.open-section-order · src/extract/serialize.ts:105
    • impl:protocol.prose-mentions · src/validate/validators.ts:1370
    • impl:protocol.register-recipes · test/recipes.test.ts:2057
    • impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253
    • impl:protocol.stable-ids · src/ids.ts:173
    • impl:protocol.static-reification · src/extract/reify.ts:2139

    Referencing units

    None.

    Enabled verifiers: spec:model.open-question-keys.keyed-question-resolves, spec:model.open-question-keys.renamed-key-breaks, spec:model.open-question-keys.repeated-key-refused

    Packs: pack:self-hosting-v1

  • spec:model.rule-keys

    Implementing units

    • impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597
    • impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8
    • impl:protocol.rule-exercises · src/validate/validators.ts:1479

    Referencing units

    None.

    Enabled verifiers: test:protocol.authoring-grammar, test:protocol.authoring-grammar-recipes

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

  • spec:model.stable-ids

    Implementing units

    • impl:protocol.stable-ids · src/ids.ts:173

    Referencing units

    None.

    Enabled verifiers: spec:model.stable-ids.malformed-refusal, spec:model.stable-ids.namespaced-round-trip, spec:model.stable-ids.unsectioned-address-refused

    Packs: pack:self-hosting-v1

  • spec:model.term-addresses

    Implementing units

    • impl:protocol.address-and-cycle-recipes · test/recipes.test.ts:3568
    • impl:protocol.entry-locations · src/extract/derive.ts:78
    • impl:protocol.key-markers · src/extract/key-markers.ts:136
    • impl:protocol.open-section-order · src/extract/serialize.ts:105
    • impl:protocol.prose-mentions · src/validate/validators.ts:1370
    • impl:protocol.register-recipes · test/recipes.test.ts:2057
    • impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253
    • impl:protocol.spec-sections · src/model/sections.ts:138
    • impl:protocol.stable-ids · src/ids.ts:173

    Referencing units

    None.

    Enabled verifiers: spec:model.term-addresses.keyed-term-resolves, spec:model.term-addresses.malformed-term-marker-refused, spec:model.term-addresses.repeated-term-key-refused, spec:model.term-addresses.typescript-term-imports-keyed, spec:model.term-addresses.unknown-term-key-refused, test:protocol.keyed-content

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

  • spec:validation.prose-mentions

    Implementing units

    • impl:protocol.entry-address-resolution · src/graph/entry-address.ts:6
    • impl:protocol.prose-mentions · src/validate/validators.ts:1370

    Referencing units

    None.

    Enabled verifiers: test:protocol.entry-locations, test:protocol.prose-mentions

    Packs: pack:self-hosting-v1

Distance 2

  • spec:carrier.envelope-contract

    Implementing units

    • impl:protocol.envelope-contract · src/extract/markdown-frontmatter.ts:33
    • impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33

    Referencing units

    None.

    Enabled verifiers: test:protocol.envelope-contract

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring

    Implementing units

    • impl:protocol.gherkin-authoring · src/extract/gherkin.ts:1323
    • impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6

    Referencing units

    None.

    Enabled verifiers: spec:carrier.gherkin-authoring.authored-fact-refused, spec:carrier.gherkin-authoring.contract-parity, spec:carrier.gherkin-authoring.description-location-refused, spec:carrier.gherkin-authoring.duplicate-surface-refused, spec:carrier.gherkin-authoring.example-space-extraction, spec:carrier.gherkin-authoring.malformed-relation-refused, spec:carrier.gherkin-authoring.missing-id-refused, spec:carrier.gherkin-authoring.multi-finding-bounded, spec:carrier.gherkin-authoring.parent-child-extraction, spec:carrier.gherkin-authoring.step-less-scenario-refused, spec:carrier.gherkin-authoring.unbound-ready-refused, spec:carrier.gherkin-authoring.unknown-tag-refused, spec:carrier.gherkin-authoring.unsupported-construct-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar

    Implementing units

    • impl:protocol.markdown-body-grammar · src/extract/markdown-body.ts:120
    • impl:protocol.markdown-content · src/extract/markdown-body-content.ts:7

    Referencing units

    None.

    Enabled verifiers: spec:carrier.markdown-body-grammar.continuation-line-refused, spec:carrier.markdown-body-grammar.foreign-fence-refused, spec:carrier.markdown-body-grammar.h3-refused, spec:carrier.markdown-body-grammar.integer-term-refused, spec:carrier.markdown-body-grammar.keyed-bullet-refused, spec:carrier.markdown-body-grammar.ordered-list-refused, spec:carrier.markdown-body-grammar.plain-bullet-refused, spec:carrier.markdown-body-grammar.raw-html-refused, spec:carrier.markdown-body-grammar.repeated-field-refused, spec:carrier.markdown-body-grammar.second-primary-owner-refused, spec:carrier.markdown-body-grammar.shared-description-refused, spec:carrier.markdown-body-grammar.table-refused, spec:carrier.markdown-body-grammar.trailing-prose-refused, spec:carrier.markdown-body-grammar.unrecognized-heading-refused, spec:validation.kind-evidence.second-entry-untargeted

    Packs: pack:self-hosting-v1

  • spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing

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

  • spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run

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

  • spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run

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

  • spec:consumers.agent-surface.register-recipes

    Implementing units

    • impl:protocol.register-recipes · test/recipes.test.ts:2057

    Referencing units

    None.

    Enabled verifiers: test:protocol.register-recipes

    Packs: pack:self-hosting-v1

  • spec:consumers.authoring-on-ramp

    Implementing units

    • impl:protocol.authoring-on-ramp · test/skills.test.ts:76
    • impl:protocol.spec-scaffolder · src/cli/new-spec-command.ts:348

    Referencing units

    None.

    Enabled verifiers: test:protocol.authoring-on-ramp

    Packs: pack:self-hosting-v1

  • spec:consumers.design-slice

    Implementing units

    • impl:protocol.design-slice-recipe · test/self-hosting-design-slice.test.ts:148

    Referencing units

    • impl:protocol.studio-slice-answer · src/projections/studio/slice-answer.ts:1

    Enabled verifiers: spec:consumers.design-slice.chain, spec:consumers.design-slice.component-absent, spec:consumers.design-slice.component-differing, spec:consumers.design-slice.component-matching, spec:consumers.design-slice.component-unreadable, spec:consumers.design-slice.component-unrelated, spec:consumers.design-slice.decision-backlink, spec:consumers.design-slice.dependency-cycle, spec:consumers.design-slice.folded-example, spec:consumers.design-slice.independent-example, spec:consumers.design-slice.outside-components, spec:consumers.design-slice.outside-holding, spec:consumers.design-slice.outside-satisfied, spec:consumers.design-slice.outside-unbound, test:protocol.design-slice

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

  • spec:consumers.intent-composition.proposal

    Implementing units

    • impl:protocol.proposal-schema-and-recipe · test/iteration-recipes.test.ts:1510
    • impl:protocol.studio-proposal-contract · src/studio-elements/proposal.ts:1

    Referencing units

    None.

    Enabled verifiers: test:protocol.proposal-schema-and-recipe

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

  • spec:consumers.obsidian-vault.notes

    Implementing units

    • impl:protocol.vault-notes · src/projections/vault/notes.ts:45
    • impl:protocol.vault-sections · src/projections/vault/sections.ts:10
    • impl:protocol.vault-text · src/projections/vault/text.ts:30

    Referencing units

    None.

    Enabled verifiers: spec:consumers.obsidian-vault.notes.case-collision-refused, spec:consumers.obsidian-vault.notes.entry-address-link, spec:consumers.obsidian-vault.notes.term-address-link, spec:consumers.obsidian-vault.notes.unresolved-mention-stays, test:protocol.vault-priority

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.readiness-planner

    Implementing units

    • impl:protocol.statement-queue-recipe · test/self-hosting-readiness-planner.test.ts:74

    Referencing units

    None.

    Enabled verifiers: spec:consumers.readiness-planner.cycle-shares-a-round, spec:consumers.readiness-planner.decision-first, spec:consumers.readiness-planner.dependency-order, spec:consumers.readiness-planner.owner-question-holds

    Packs: pack:adopter-speed-v1, pack:self-hosting-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.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: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.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

  • 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.upgrade-kit.capability-adoption

    Implementing units

    • impl:protocol.capability-adoption-recipe · test/upgrade-kit.test.ts:514

    Referencing units

    None.

    Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus

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

  • spec:consumers.upgrade-kit.rule-key-proposal

    Implementing units

    • impl:protocol.rule-key-proposal-recipe · test/upgrade-kit.test.ts:742

    Referencing units

    None.

    Enabled verifiers: spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable, spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean

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

  • spec:decisions.question-key-rendering

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:extraction.entry-citations

    Implementing units

    • impl:protocol.entry-address-resolution · src/graph/entry-address.ts:6
    • impl:protocol.entry-citation-reader · src/reader/entry-citations.ts:19
    • impl:protocol.entry-citation-recipe · test/recipes.test.ts:7008
    • impl:protocol.entry-citation-scan · src/extract/entry-citations.ts:6

    Referencing units

    None.

    Enabled verifiers: spec:extraction.entry-citations.code-comment-cites-declaration, spec:extraction.entry-citations.test-title-cites-declaration, spec:extraction.entry-citations.unanchored-file-unread, spec:extraction.entry-citations.unresolved-citation

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

  • spec:extraction.entry-locations

    Implementing units

    • impl:protocol.entry-location-recipes · test/recipes.test.ts:5979
    • impl:protocol.entry-locations · src/extract/derive.ts:78
    • impl:protocol.reader · src/reader/reader.ts:687

    Referencing units

    • impl:protocol.pack-design · src/reader/reader.ts:499

    Enabled verifiers: test:protocol.entry-locations

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

  • spec:model.open-question-fields

    Implementing units

    • impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597
    • impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8

    Referencing units

    None.

    Enabled verifiers: spec:model.open-question-fields.dropped-list-warns, test:protocol.authoring-grammar, test:protocol.authoring-grammar-recipes

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

  • spec:model.open-question-keys.keyed-question-resolves

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.open-question-keys.keyed-question-resolves

    Packs: pack:self-hosting-v1

  • spec:model.open-question-keys.renamed-key-breaks

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.open-question-keys.renamed-key-breaks

    Packs: pack:self-hosting-v1

  • spec:model.open-question-keys.repeated-key-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.open-question-keys.repeated-key-refused

    Packs: pack:self-hosting-v1

  • spec:model.stable-ids.malformed-refusal

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.stable-ids.malformed-refusal

    Packs: pack:self-hosting-v1

  • spec:model.stable-ids.namespaced-round-trip

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.stable-ids.namespaced-round-trip

    Packs: pack:self-hosting-v1

  • spec:model.stable-ids.unsectioned-address-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.stable-ids.unsectioned-address-refused

    Packs: pack:self-hosting-v1

  • spec:model.term-addresses.keyed-term-resolves

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.term-addresses.keyed-term-resolves

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

  • spec:model.term-addresses.malformed-term-marker-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.term-addresses.malformed-term-marker-refused

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

  • spec:model.term-addresses.repeated-term-key-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.term-addresses.repeated-term-key-refused

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

  • spec:model.term-addresses.typescript-term-imports-keyed

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.term-addresses.typescript-term-imports-keyed

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

  • spec:model.term-addresses.unknown-term-key-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.term-addresses.unknown-term-key-refused

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

Distance 3

  • spec:carrier.gherkin-authoring.authored-fact-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.authored-fact-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.contract-parity

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.contract-parity

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.description-location-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.description-location-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.duplicate-surface-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.duplicate-surface-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.example-space-extraction

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.example-space-extraction

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.malformed-relation-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.malformed-relation-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.missing-id-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.missing-id-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.multi-finding-bounded

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.multi-finding-bounded

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.parent-child-extraction

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.parent-child-extraction

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.step-less-scenario-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.step-less-scenario-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.unbound-ready-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.unbound-ready-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.unknown-tag-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.unknown-tag-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.gherkin-authoring.unsupported-construct-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-authoring.unsupported-construct-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.inline-code-spans

    Implementing units

    • impl:protocol.inline-code-spans · src/extract/markdown-inline-code.ts:4

    Referencing units

    None.

    Enabled verifiers: spec:carrier.inline-code-spans.description, spec:carrier.inline-code-spans.list, spec:carrier.inline-code-spans.narrative, spec:carrier.inline-code-spans.pack

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.continuation-line-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.continuation-line-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.foreign-fence-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.foreign-fence-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.h3-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.h3-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.integer-term-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.integer-term-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.keyed-bullet-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.keyed-bullet-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.ordered-list-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.ordered-list-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.plain-bullet-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.plain-bullet-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.raw-html-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.raw-html-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.repeated-field-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.repeated-field-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.second-primary-owner-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.second-primary-owner-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.shared-description-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.shared-description-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.table-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.table-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.trailing-prose-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.trailing-prose-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-body-grammar.unrecognized-heading-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-body-grammar.unrecognized-heading-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-parser

    Implementing units

    • impl:protocol.markdown-parser · src/extract/markdown.ts:37
    • impl:protocol.static-reification · src/extract/reify.ts:2139

    Referencing units

    None.

    Enabled verifiers: spec:carrier.markdown-parser.bounded-parity, test:protocol.markdown-parser

    Packs: pack:self-hosting-v1

  • spec:carrier.prose-ownership-rule

    Implementing units

    • impl:protocol.markdown-body-grammar · src/extract/markdown-body.ts:120

    Referencing units

    None.

    Enabled verifiers: test:protocol.prose-ownership

    Packs: pack:self-hosting-v1

  • spec:consumers.adopter-on-ramp

    Implementing units

    • impl:protocol.adopter-help · src/cli/help.ts:167
    • impl:protocol.adopter-on-ramp · test/skills.test.ts:712

    Referencing units

    None.

    Enabled verifiers: test:protocol.adopter-on-ramp, test:protocol.shipped-protocol-corpus

    Packs: pack:self-hosting-v1

  • spec:consumers.agent-surface.design-recipes

    Implementing units

    • impl:protocol.design-recipes · test/recipes.test.ts:4769

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-recipes

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

  • spec:consumers.delivery-session-on-ramp

    Implementing units

    • impl:protocol.delivery-session-on-ramp · test/skills.test.ts:83

    Referencing units

    None.

    Enabled verifiers: test:protocol.delivery-session-on-ramp

    Packs: pack:self-hosting-v1

  • spec:consumers.design-review

    Implementing units

    • impl:protocol.design-review · src/projections/design-review.ts:44
    • impl:protocol.design-review-codec · src/projections/design-review-markdown.ts:3

    Referencing units

    None.

    Enabled verifiers: spec:consumers.design-review.pure-projection

    Packs: pack:self-hosting-v1

  • spec:consumers.design-slice.chain

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.chain

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

  • spec:consumers.design-slice.component-absent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-absent

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

  • spec:consumers.design-slice.component-differing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-differing

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

  • spec:consumers.design-slice.component-matching

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-matching

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

  • spec:consumers.design-slice.component-unreadable

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-unreadable

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

  • spec:consumers.design-slice.component-unrelated

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-unrelated

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

  • spec:consumers.design-slice.decision-backlink

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.decision-backlink

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

  • spec:consumers.design-slice.dependency-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.dependency-cycle

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

  • spec:consumers.design-slice.folded-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.folded-example

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

  • spec:consumers.design-slice.independent-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.independent-example

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

  • spec:consumers.design-slice.outside-components

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-components

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

  • spec:consumers.design-slice.outside-holding

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-holding

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

  • spec:consumers.design-slice.outside-satisfied

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-satisfied

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

  • spec:consumers.design-slice.outside-unbound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-unbound

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

  • spec:consumers.graph-first-planning

    Implementing units

    • impl:protocol.graph-first-planning · test/skills.test.ts:290

    Referencing units

    None.

    Enabled verifiers: test:protocol.graph-first-planning

    Packs: pack:self-hosting-v1

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

    Implementing units

    • impl:protocol.proposal-memo-recipe · test/recipes.test.ts:7298
    • impl:protocol.studio-proposal-memo · src/studio-elements/memo.ts:13

    Referencing units

    None.

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

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

  • spec:consumers.obsidian-vault.iteration

    Implementing units

    • impl:protocol.vault-sync · src/projections/vault/sync.ts:98
    • impl:protocol.vault-text · src/projections/vault/text.ts:30
    • impl:protocol.vault-watch · src/cli/vault-command.ts:219

    Referencing units

    None.

    Enabled verifiers: spec:consumers.obsidian-vault.iteration.watch-rewrites-changed-notes, spec:consumers.obsidian-vault.iteration.watch-source-anchor

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.notes.case-collision-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.case-collision-refused

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.notes.entry-address-link

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.entry-address-link

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.notes.term-address-link

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.term-address-link

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.notes.unresolved-mention-stays

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.unresolved-mention-stays

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.pack-design

    Implementing units

    • impl:protocol.pack-design · src/reader/reader.ts:499

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-design

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

  • spec:consumers.readiness-planner.cycle-shares-a-round

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.cycle-shares-a-round

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

  • spec:consumers.readiness-planner.decision-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.decision-first

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

  • spec:consumers.readiness-planner.dependency-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.dependency-order

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

  • spec:consumers.readiness-planner.owner-question-holds

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.owner-question-holds

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

  • spec:consumers.roadmap

    Implementing units

    • impl:protocol.roadmap-recipe · test/roadmap.test.ts:20

    Referencing units

    None.

    Enabled verifiers: spec:consumers.roadmap.blocking-part, spec:consumers.roadmap.buildable-part, spec:consumers.roadmap.built-work, spec:consumers.roadmap.design-part, spec:consumers.roadmap.drifting-part, spec:consumers.roadmap.missing-evidence, spec:consumers.roadmap.outside-parent, spec:consumers.roadmap.statement-order, spec:consumers.roadmap.statement-part, test:protocol.roadmap-recipe

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-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.shipped-protocol-corpus

    Implementing units

    • impl:protocol.shipped-protocol-corpus · test/package-smoke.test.ts:252

    Referencing units

    None.

    Enabled verifiers: test:protocol.shipped-protocol-corpus

    Packs: 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.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.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.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.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.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.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.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.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.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.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:consumers.upgrade-kit

    Implementing units

    • impl:protocol.upgrade-guide · test/upgrade-kit.test.ts:87

    Referencing units

    None.

    Enabled verifiers: test:protocol.upgrade-guide

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

  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus

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

  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.rule-key-proposal.collision-and-unkeyable

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

  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.rule-key-proposal.proposal-applies-clean

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

  • spec:consumers.validate-watch

    Implementing units

    • impl:protocol.validate-watch · src/cli/validate-watch.ts:591

    Referencing units

    None.

    Enabled verifiers: test:protocol.validate-watch, test:protocol.validate-watch-rules

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

  • spec:consumers.vault-on-ramp

    Implementing units

    • impl:protocol.vault-on-ramp · test/skills.test.ts:1995

    Referencing units

    None.

    Enabled verifiers: test:protocol.vault-on-ramp

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:decisions.envelope-grammar-posture

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:extraction.entry-citations.code-comment-cites-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.entry-citations.code-comment-cites-declaration

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

  • spec:extraction.entry-citations.test-title-cites-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.entry-citations.test-title-cites-declaration

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

  • spec:extraction.entry-citations.unanchored-file-unread

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.entry-citations.unanchored-file-unread

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

  • spec:extraction.entry-citations.unresolved-citation

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.entry-citations.unresolved-citation

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

  • spec:model.open-question-fields.dropped-list-warns

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.open-question-fields.dropped-list-warns

    Packs: pack:self-hosting-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

  • spec:validation.external-registers

    Implementing units

    • impl:protocol.external-registers-recipe · test/external-registers.test.ts:9

    Referencing units

    None.

    Enabled verifiers: spec:validation.external-registers.uncited-on-request, spec:validation.external-registers.unknown-and-retired

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

  • spec:validation.superseded-decision-signal

    Implementing units

    • impl:protocol.superseded-decision-signal · src/validate/validators.ts:1817

    Referencing units

    None.

    Enabled verifiers: spec:validation.superseded-decision-signal.branch-names-every-end, spec:validation.superseded-decision-signal.chain-end-named, spec:validation.superseded-decision-signal.closed-chain-named, spec:validation.superseded-decision-signal.dependency-unread, spec:validation.superseded-decision-signal.end-and-loop-named, spec:validation.superseded-decision-signal.live-replacement-warns, spec:validation.superseded-decision-signal.replaced-ruling-warns, spec:validation.superseded-decision-signal.replacement-below-ready-named, spec:validation.superseded-decision-signal.superseded-subject-silent

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

Distance 4

  • spec:carrier.inline-code-spans.description

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.inline-code-spans.description

    Packs: pack:self-hosting-v1

  • spec:carrier.inline-code-spans.list

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.inline-code-spans.list

    Packs: pack:self-hosting-v1

  • spec:carrier.inline-code-spans.narrative

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.inline-code-spans.narrative

    Packs: pack:self-hosting-v1

  • spec:carrier.inline-code-spans.pack

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.inline-code-spans.pack

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-authoring

    Implementing units

    • impl:protocol.markdown-parser · src/extract/markdown.ts:37

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-authoring

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-pack-authoring

    Implementing units

    • impl:protocol.markdown-pack-authoring · src/extract/markdown-pack.ts:117
    • impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33
    • impl:protocol.static-reification · src/extract/reify.ts:2139

    Referencing units

    None.

    Enabled verifiers: spec:carrier.markdown-pack-authoring.markdown-ts-parity, spec:carrier.markdown-pack-authoring.spec-envelope-refused, test:protocol.roadmap-priority

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-parser.bounded-parity

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-parser.bounded-parity

    Packs: pack:self-hosting-v1

  • spec:consumers.agent-surface.answer-shapes

    Implementing units

    • impl:protocol.answer-shape-recipes · test/recipes.test.ts:6214

    Referencing units

    • impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597
    • impl:protocol.reader · src/reader/reader.ts:687

    Enabled verifiers: test:protocol.answer-shape-recipes

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

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

    Implementing units

    • impl:protocol.example-space-coverage-recipe · test/studio-s1.test.ts:856
    • impl:protocol.example-space-decoding · src/notation/example-space.ts:473

    Referencing units

    None.

    Enabled verifiers: spec:consumers.agent-surface.example-space-coverage.number-not-enumerable, spec:consumers.agent-surface.example-space-coverage.uncovered-literal

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

  • spec:consumers.binding-language-views

    Implementing units

    • impl:protocol.binding-language-index-table · src/projections/design-review-pages.ts:201
    • impl:protocol.binding-language-spec-page · src/projections/design-review-context.ts:95

    Referencing units

    None.

    Enabled verifiers: spec:consumers.binding-language-views.bound-spec-page, spec:consumers.binding-language-views.pack-member-table

    Packs: pack:self-hosting-v1

  • 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.context-bundle

    Implementing units

    • impl:protocol.context-bundle-recipe · test/iteration-recipes.test.ts:765

    Referencing units

    None.

    Enabled verifiers: spec:consumers.context-bundle.oversized-member-named, spec:consumers.context-bundle.parts-cover-the-pack, test:protocol.context-bundle-recipe

    Packs: pack:adopter-speed-v1, pack:design-iteration-v1, pack:design-management-v1, pack:self-hosting-v1

  • spec:consumers.derived-readiness-banner

    Implementing units

    • impl:protocol.derived-readiness-banner · src/projections/design-review-context.ts:18

    Referencing units

    None.

    Enabled verifiers: spec:consumers.derived-readiness-banner.dishonest-divergence, spec:consumers.derived-readiness-banner.honest-headroom, test:protocol.derived-readiness-banner.idea-floor-unmet

    Packs: pack:self-hosting-v1

  • spec:consumers.design-review.pack-design-page

    Implementing units

    • impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120

    Referencing units

    • impl:protocol.pack-design-sections · src/projections/design-review-pack-sections.ts:19

    Enabled verifiers: test:protocol.pack-design-page

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

  • spec:consumers.design-review.pure-projection

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-review.pure-projection

    Packs: 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.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.obsidian-vault.bases

    Implementing units

    • impl:protocol.vault-bases · src/projections/vault/bases.ts:43
    • impl:protocol.vault-notes · src/projections/vault/notes.ts:45

    Referencing units

    None.

    Enabled verifiers: spec:consumers.obsidian-vault.bases.views-match-sources

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.iteration.watch-rewrites-changed-notes

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.iteration.watch-rewrites-changed-notes

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.iteration.watch-source-anchor

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.iteration.watch-source-anchor

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.projections-model.roadmap-views

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:consumers.review-perspectives

    Implementing units

    • impl:protocol.perspective-filter-recipe · test/iteration-recipes.test.ts:753

    Referencing units

    None.

    Enabled verifiers: test:protocol.perspective-filter-recipe

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

  • spec:consumers.roadmap.blocking-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.blocking-part

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

  • spec:consumers.roadmap.buildable-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.buildable-part

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

  • spec:consumers.roadmap.built-work

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.built-work

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

  • spec:consumers.roadmap.design-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.design-part

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

  • spec:consumers.roadmap.drifting-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.drifting-part

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

  • spec:consumers.roadmap.missing-evidence

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.missing-evidence

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

  • spec:consumers.roadmap.outside-parent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.outside-parent

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

  • spec:consumers.roadmap.statement-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.statement-order

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

  • spec:consumers.roadmap.statement-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.statement-part

    Packs: pack:roadmaps-and-slices-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.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

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

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

    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.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.wholesale-view-rewrite

    Implementing units

    • impl:protocol.build-pipeline-emit · src/cli/build-command.ts:251
    • impl:protocol.wholesale-view-rewrite · src/cli/validate-view-command.ts:128

    Referencing units

    None.

    Enabled verifiers: spec:consumers.wholesale-view-rewrite.build-invalidates-view, spec:consumers.wholesale-view-rewrite.failed-run-view-removed, spec:consumers.wholesale-view-rewrite.late-stale-page, spec:consumers.wholesale-view-rewrite.stale-page-removed

    Packs: pack:self-hosting-v1

  • spec:decisions.authored-entry-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.pack-design-page

    Implementing units

    None.

    Referencing units

    • impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120

    Enabled verifiers: None

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

  • spec:decisions.prose-ownership

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:extraction.contract-declarations

    Implementing units

    • impl:protocol.pack-design · src/reader/reader.ts:499
    • impl:protocol.register-recipes · test/recipes.test.ts:2057

    Referencing units

    None.

    Enabled verifiers: test:protocol.register-recipes

    Packs: pack:self-hosting-v1

  • spec:model.design-maturity

    Implementing units

    • impl:protocol.pack-design · src/reader/reader.ts:499

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-design

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

  • spec:protocol.delivery-record-cleanup

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:validation.corpus-rules

    Implementing units

    • impl:protocol.corpus-rule-runner · src/cli/corpus-rules.ts:65
    • impl:protocol.corpus-rules · src/cli/validate-view-command.ts:79
    • impl:protocol.validate-watch · src/cli/validate-watch.ts:591

    Referencing units

    None.

    Enabled verifiers: spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run, spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run, spec:validation.corpus-rules.copies-contain-changes, spec:validation.corpus-rules.error-finding-fails, spec:validation.corpus-rules.malformed-finding-fails, spec:validation.corpus-rules.params-edit-starts-a-cycle, spec:validation.corpus-rules.rules-edit-starts-a-cycle, spec:validation.corpus-rules.unreadable-params-fail-one-file, spec:validation.corpus-rules.warning-finding-informs

    Packs: pack:adopter-speed-v1, pack:corpus-checks-v1, pack:design-management-v1, pack:self-hosting-v1

  • spec:validation.diagnostic-rendering

    Implementing units

    • impl:protocol.diagnostic-rendering-cli · src/cli/output.ts:23
    • impl:protocol.diagnostic-rendering-design-review · src/projections/design-review-context.ts:208
    • impl:protocol.validate-summary · src/cli/validate-view-command.ts:23
    • impl:protocol.validation-contracts · src/validate/contracts.ts:5

    Referencing units

    None.

    Enabled verifiers: spec:validation.diagnostic-rendering.composed-location, spec:validation.diagnostic-rendering.table-cell-location

    Packs: pack:self-hosting-v1

  • spec:validation.duplicate-ids

    Implementing units

    • impl:protocol.duplicate-id-exclusion · src/extract/index.ts:93
    • impl:protocol.duplicate-ids · src/validate/validators.ts:263

    Referencing units

    None.

    Enabled verifiers: spec:validation.duplicate-ids.dual-carrier

    Packs: pack:self-hosting-v1

  • spec:validation.external-registers.uncited-on-request

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.external-registers.uncited-on-request

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

  • spec:validation.external-registers.unknown-and-retired

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.external-registers.unknown-and-retired

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

  • spec:validation.superseded-decision-signal.branch-names-every-end

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.branch-names-every-end

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.chain-end-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.chain-end-named

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.closed-chain-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.closed-chain-named

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.dependency-unread

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.dependency-unread

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.end-and-loop-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.end-and-loop-named

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.live-replacement-warns

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.live-replacement-warns

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.replaced-ruling-warns

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.replaced-ruling-warns

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.replacement-below-ready-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.replacement-below-ready-named

    Packs: pack:self-hosting-v1

  • spec:validation.superseded-decision-signal.superseded-subject-silent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.superseded-decision-signal.superseded-subject-silent

    Packs: pack:self-hosting-v1

Distance 5

  • spec:carrier.markdown-pack-authoring.markdown-ts-parity

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-pack-authoring.markdown-ts-parity

    Packs: pack:self-hosting-v1

  • spec:carrier.markdown-pack-authoring.spec-envelope-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.markdown-pack-authoring.spec-envelope-refused

    Packs: pack:self-hosting-v1

  • spec:carrier.sdp-import

    Implementing units

    • component:protocol.import · src/import/import.ts:45
    • impl:protocol.import-fidelity · src/import/markdown-fidelity.ts:102
    • impl:protocol.sdp-import · src/cli/import-command.ts:71
    • impl:protocol.sdp-import-core · src/import/import.ts:58
    • impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253
    • impl:protocol.sdp-import-publish · src/cli/import-publish.ts:23
    • impl:protocol.sdp-import-scan · src/cli/import-scan.ts:62

    Referencing units

    None.

    Enabled verifiers: spec:carrier.sdp-import.round-trip

    Packs: pack:self-hosting-v1

  • spec:carrier.slot-notation

    Implementing units

    • component:protocol.notation · src/notation/slots.ts:261
    • impl:protocol.slot-notation · src/notation/slots.ts:269

    Referencing units

    None.

    Enabled verifiers: spec:carrier.slot-notation.one-literal-binding, spec:carrier.slot-notation.refused-guess, spec:carrier.slot-notation.typed-declaration

    Packs: pack:self-hosting-v1

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

    Implementing units

    None.

    Referencing units

    None.

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

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

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

    Implementing units

    None.

    Referencing units

    None.

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

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

  • spec:consumers.binding-language-views.bound-spec-page

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.binding-language-views.bound-spec-page

    Packs: pack:self-hosting-v1

  • spec:consumers.binding-language-views.pack-member-table

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.binding-language-views.pack-member-table

    Packs: pack:self-hosting-v1

  • spec:consumers.census-page

    Implementing units

    • impl:protocol.census-page · src/projections/census.ts:21
    • impl:protocol.census-page-cli · src/cli/census-command.ts:66

    Referencing units

    None.

    Enabled verifiers: test:protocol.census-page

    Packs: pack:self-hosting-v1

  • 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.context-bundle.oversized-member-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.context-bundle.oversized-member-named

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

  • spec:consumers.context-bundle.parts-cover-the-pack

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.context-bundle.parts-cover-the-pack

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

  • spec:consumers.derived-readiness-banner.dishonest-divergence

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.derived-readiness-banner.dishonest-divergence

    Packs: pack:self-hosting-v1

  • spec:consumers.derived-readiness-banner.honest-headroom

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.derived-readiness-banner.honest-headroom

    Packs: pack:self-hosting-v1

  • spec:consumers.gherkin-view

    Implementing units

    • impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6
    • impl:protocol.gherkin-view · src/projections/gherkin-view.ts:19
    • impl:protocol.gherkin-view-cli · src/cli/gherkin-command.ts:66

    Referencing units

    None.

    Enabled verifiers: test:protocol.gherkin-view

    Packs: pack:self-hosting-v1

  • spec:consumers.mermaid-view

    Implementing units

    • impl:protocol.mermaid-view · src/projections/mermaid.ts:14
    • impl:protocol.mermaid-view-cli · src/cli/mermaid-command.ts:82

    Referencing units

    None.

    Enabled verifiers: test:protocol.mermaid-view

    Packs: pack:self-hosting-v1

  • spec:consumers.obsidian-vault

    Implementing units

    • impl:protocol.vault-command · src/cli/vault-command.ts:191
    • impl:protocol.vault-notes · src/projections/vault/notes.ts:45
    • impl:protocol.vault-sync · src/projections/vault/sync.ts:98

    Referencing units

    None.

    Enabled verifiers: spec:consumers.obsidian-vault.changed-note-refused, spec:consumers.obsidian-vault.failed-extraction-keeps-notes, spec:consumers.obsidian-vault.failed-extraction-recovered, spec:consumers.obsidian-vault.fresh-vault, spec:consumers.obsidian-vault.hidden-file-refused, spec:consumers.obsidian-vault.interrupted-run-recovered, spec:consumers.obsidian-vault.person-notes-survive, spec:consumers.obsidian-vault.unknown-note-refused, spec:consumers.obsidian-vault.vault-in-build-path-refused

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.bases.views-match-sources

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.bases.views-match-sources

    Packs: pack:obsidian-vault-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.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.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.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

    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.wholesale-view-rewrite.build-invalidates-view

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.wholesale-view-rewrite.build-invalidates-view

    Packs: pack:self-hosting-v1

  • spec:consumers.wholesale-view-rewrite.failed-run-view-removed

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.wholesale-view-rewrite.failed-run-view-removed

    Packs: pack:self-hosting-v1

  • spec:consumers.wholesale-view-rewrite.late-stale-page

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.wholesale-view-rewrite.late-stale-page

    Packs: pack:self-hosting-v1

  • spec:consumers.wholesale-view-rewrite.stale-page-removed

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.wholesale-view-rewrite.stale-page-removed

    Packs: pack:self-hosting-v1

  • spec:decisions.carrier-ruling

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.carrier-universality

    Implementing units

    None.

    Referencing units

    • impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.sdp-ts-extension

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:extraction.pack-member-order

    Implementing units

    • impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33
    • impl:protocol.open-section-order · src/extract/serialize.ts:105
    • impl:protocol.pack-coherence · src/validate/validators.ts:1102
    • impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120
    • impl:protocol.pack-member-order · src/extract/derive.ts:153
    • impl:protocol.reader · src/reader/reader.ts:687

    Referencing units

    None.

    Enabled verifiers: spec:extraction.pack-member-order.manifest-order-kept, test:protocol.roadmap-priority

    Packs: pack:self-hosting-v1

  • spec:model.enrichment-lifecycle

    Implementing units

    • impl:protocol.slimming-recipe · test/curation-recipes.test.ts:26

    Referencing units

    None.

    Enabled verifiers: test:protocol.slimming-recipe

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

  • spec:model.relation-reasons

    Implementing units

    • impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597
    • impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8

    Referencing units

    None.

    Enabled verifiers: test:protocol.authoring-grammar, test:protocol.authoring-grammar-recipes

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

  • spec:protocol.self-hosting

    Implementing units

    • impl:protocol.self-hosting · test/self-hosting-graph.test.ts:136

    Referencing units

    None.

    Enabled verifiers: test:protocol.self-hosting

    Packs: pack:self-hosting-v1

  • spec:validation.architecture-constraints

    Implementing units

    • impl:protocol.architecture-walk-recipe · test/architecture-recipes.test.ts:10

    Referencing units

    None.

    Enabled verifiers: spec:validation.architecture-constraints.forbidden-layer-pair, spec:validation.architecture-constraints.isolated-context-as-rule, spec:validation.architecture-constraints.unstated-layer-unclassified

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

  • spec:validation.corpus-rules.copies-contain-changes

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.copies-contain-changes

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.error-finding-fails

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.error-finding-fails

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.malformed-finding-fails

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.malformed-finding-fails

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.corpus-rules.params-edit-starts-a-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.params-edit-starts-a-cycle

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

  • spec:validation.corpus-rules.rules-edit-starts-a-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.rules-edit-starts-a-cycle

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

  • spec:validation.corpus-rules.unreadable-params-fail-one-file

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.unreadable-params-fail-one-file

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

  • spec:validation.corpus-rules.warning-finding-informs

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.corpus-rules.warning-finding-informs

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.diagnostic-rendering.composed-location

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.diagnostic-rendering.composed-location

    Packs: pack:self-hosting-v1

  • spec:validation.diagnostic-rendering.table-cell-location

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.diagnostic-rendering.table-cell-location

    Packs: pack:self-hosting-v1

  • spec:validation.duplicate-ids.dual-carrier

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.duplicate-ids.dual-carrier

    Packs: pack:self-hosting-v1

Distance 6

  • spec:carrier.sdp-import.feature-adapter

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:carrier.sdp-import.round-trip

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.sdp-import.round-trip

    Packs: pack:self-hosting-v1

  • spec:carrier.slot-notation.one-literal-binding

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.slot-notation.one-literal-binding

    Packs: pack:self-hosting-v1

  • spec:carrier.slot-notation.refused-guess

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.slot-notation.refused-guess

    Packs: pack:self-hosting-v1

  • spec:carrier.slot-notation.typed-declaration

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.slot-notation.typed-declaration

    Packs: pack:self-hosting-v1

  • spec:carrier.step-keys

    Implementing units

    • impl:protocol.example-runner · src/runner/index.ts:108
    • impl:protocol.example-space-decoding · src/notation/example-space.ts:473
    • impl:protocol.executable-contracts · src/codegen/contracts.ts:647
    • impl:protocol.key-markers · src/extract/key-markers.ts:136
    • impl:protocol.open-section-order · src/extract/serialize.ts:105
    • impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253
    • impl:protocol.spec-sections · src/model/sections.ts:138

    Referencing units

    None.

    Enabled verifiers: spec:carrier.step-keys.conflicting-example-key-withheld, spec:carrier.step-keys.gherkin-keyed-step-stays-bound, spec:carrier.step-keys.key-equal-to-a-skeleton-withheld, spec:carrier.step-keys.malformed-marker-refused, spec:carrier.step-keys.renamed-key-breaks, spec:carrier.step-keys.repeated-key-refused, spec:carrier.step-keys.reworded-keyed-step-stays-bound, spec:carrier.step-keys.reworded-unkeyed-step-breaks, spec:carrier.step-keys.two-keys-on-one-step-refused, spec:carrier.step-keys.typescript-keyed-step-imports-keyed, test:protocol.keyed-content

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

  • spec:consumers.obsidian-vault.changed-note-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.changed-note-refused

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.failed-extraction-keeps-notes

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.failed-extraction-keeps-notes

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.failed-extraction-recovered

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.failed-extraction-recovered

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.fresh-vault

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.fresh-vault

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.hidden-file-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.hidden-file-refused

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.interrupted-run-recovered

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.interrupted-run-recovered

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.person-notes-survive

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.person-notes-survive

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.unknown-note-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.unknown-note-refused

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:consumers.obsidian-vault.vault-in-build-path-refused

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.consumers.obsidian-vault.vault-in-build-path-refused

    Packs: pack:obsidian-vault-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.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.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.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.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.structural-mermaid

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:decisions.adopt-the-nouns

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.concept-docs-dissolve

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.executable-meta-model

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.gherkin-carrier-option

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.pack-markdown-carrier

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.plain-language-references

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.protocol-naming

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.sdp-gherkin-extension

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.vault-owned-folder

    Implementing units

    None.

    Referencing units

    • impl:protocol.vault-command · src/cli/vault-command.ts:191
    • impl:protocol.vault-sync · src/projections/vault/sync.ts:98

    Enabled verifiers: None

    Packs: pack:obsidian-vault-v1, pack:self-hosting-v1

  • spec:extraction.pack-member-order.manifest-order-kept

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-member-order

    Packs: pack:self-hosting-v1

  • spec:protocol.capability-epics

    Implementing units

    • impl:protocol.capability-epics · test/recipes.test.ts:8173

    Referencing units

    None.

    Enabled verifiers: test:protocol.capability-epics

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

  • spec:protocol.structural-self-binding

    Implementing units

    • impl:protocol.structural-self-binding · test/self-hosting-oracle/structural-edges.ts:76

    Referencing units

    None.

    Enabled verifiers: test:protocol.structural-self-binding

    Packs: pack:self-hosting-v1

  • spec:validation.architecture-constraints.forbidden-layer-pair

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.forbidden-layer-pair

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.architecture-constraints.isolated-context-as-rule

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.isolated-context-as-rule

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

  • spec:validation.architecture-constraints.unstated-layer-unclassified

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.validation.architecture-constraints.unstated-layer-unclassified

    Packs: pack:corpus-checks-v1, pack:self-hosting-v1

Distance 7

Distance 8

  • spec:consumers.design-diff

    Implementing units

    • impl:protocol.design-diff-recipe · test/iteration-recipes.test.ts:27

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-diff-recipe, test:protocol.roadmap-priority

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

  • spec:decisions.adopted-registrars-committed

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:decisions.roadmap-over-plans

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:extraction.example-runner

    Implementing units

    • component:protocol.adapters · src/adapters/vitest.ts:23
    • component:protocol.runner · src/runner/index.ts:99
    • impl:protocol.example-runner · src/runner/index.ts:108
    • impl:protocol.example-runner-adapter · src/adapters/vitest.ts:32

    Referencing units

    None.

    Enabled verifiers: spec:extraction.example-runner.red-step-naming, spec:extraction.example-runner.step-order, test:protocol.example-runner-cleanup

    Packs: pack:self-hosting-v1

  • spec:extraction.executable-contracts.case-colliding-path

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.executable-contracts.case-colliding-path

    Packs: pack:self-hosting-v1

  • spec:extraction.executable-contracts.concreteness-refusal

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.executable-contracts.concreteness-refusal

    Packs: pack:self-hosting-v1

  • spec:extraction.executable-contracts.multi-entry-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.executable-contracts.multi-entry-example

    Packs: pack:self-hosting-v1

  • spec:model.pack-aggregate

    Implementing units

    • impl:protocol.pack-aggregate · src/model/pack.ts:23

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-builder, test:protocol.roadmap-priority

    Packs: pack:self-hosting-v1

Distance 9

  • spec:decisions.pack-reified

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

    Packs: pack:self-hosting-v1

  • spec:extraction.example-runner.red-step-naming

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.example-runner.red-step-naming

    Packs: pack:self-hosting-v1

  • spec:extraction.example-runner.step-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.example-runner.step-order

    Packs: pack:self-hosting-v1

  • spec:validation.pack-coherence

    Implementing units

    • impl:protocol.pack-coherence · src/validate/validators.ts:1102

    Referencing units

    None.

    Enabled verifiers: spec:validation.pack-coherence.incoherent-aggregate

    Packs: pack:self-hosting-v1

Distance 10

  • spec:validation.pack-coherence.incoherent-aggregate

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.pack-coherence.incoherent-aggregate

    Packs: pack:self-hosting-v1

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:decisions.content-only-sections
spec:decisions.content-only-sections · resolves
declaredNoneNone
refines · outgoingspec:model.stable-ids
spec:model.stable-ids · resolves
declaredNoneNone
decidedBy · incomingspec:model.open-question-keys
spec:model.open-question-keys · resolves
declaredNoneNone
decidedBy · incomingspec:model.rule-keys
spec:model.rule-keys · resolves
declaredrule addresses join the address law it rulesNone
decidedBy · incomingspec:model.stable-ids
spec:model.stable-ids · resolves
declaredNoneNone
decidedBy · incomingA Model term may carry a key that addresses it
spec:model.term-addresses · resolves
declareda term address joins the address law that decision rulesNone
decidedBy · incomingspec:validation.prose-mentions
spec:validation.prose-mentions · resolves
declaredNoneNone
dependsOn · incomingAddress resolution and dependency cycles stay executable graph recipes
spec:consumers.agent-surface.address-and-cycle-recipes · 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.

41. The graph records where anchored source cites an entry address

spec:extraction.entry-citations

The graph records where anchored source cites an entry address

spec:extraction.entry-citationsUse Case / Behavior · storyready floor ready

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

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

Findings: no errors, no warnings

specs/extraction/entry-citations.sdp.md

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

A test that checks a pinned declaration names the entry in its own text, often as the test's title, and the graph does not see that link: a reader of the declaration finds the suite's file through its anchor but not the assertion. The first adopter's type test names each comparison by the address of the Design entry it binds (libar-platform/tests/types/pinned.test-d.ts), and a reader of its pages could not find the comparison for one declaration. The extractor already reads every anchored source file for its anchors, so it records where such a file writes an entry address, and a page or a recipe shows the line that checks a declaration.

A citation is where text names an entry, read by the machine from comments and strings. It carries the inferred claim and confers nothing, and it sits in a table beside the location table, as a position does. A citation is inferred location data in the graph. It adds no node or edge, confers no delivery fact, moves no readiness floor, feeds no Protocol validator and records no test verdict.

Intent
problem
A test that checks one pinned declaration names its entry address only in its own text, so no view links the declaration to the line that checks it, and a reader holding the declaration cannot find its assertion.
outcome
Record each entry address an anchored source file cites, with its file and line, as an inferred citation that confers nothing, so a view can show the test line that checks a pinned declaration.
Behavior
rule.anchoredFilesOnly line 30 · specs/extraction/entry-citations.sdp.md:30
The extractor reads citations from each source file it reads for anchors that carries at least one anchor, of either form and any namespace, after the same exclusions; a file that carries no anchor, a carrier and any other file is not read for citations.

spec:extraction.entry-citations.code-comment-cites-declaration · enabled, spec:extraction.entry-citations.test-title-cites-declaration · enabled, spec:extraction.entry-citations.unanchored-file-unread · enabled

rule.citationToken line 31 · specs/extraction/entry-citations.sdp.md:31
A citation is a token the prose-mention scan would read as a mention, found anywhere in such a file's text, in a comment, a string or a template literal, that holds #; a token followed by ${, directly or after the trailing punctuation the mention scan strips, is the prefix of a computed address and records no citation, whether or not the prefix parses as an entry address; a bare Spec id is not a citation.

spec:extraction.entry-citations.test-title-cites-declaration · enabled

rule.citationRow line 32 · specs/extraction/entry-citations.sdp.md:32
Each citation records the address as written, the file's root-relative path and the 1-based line the token starts on; one address written twice on one line is one row.

spec:extraction.entry-citations.test-title-cites-declaration · enabled

rule.citationTable line 33 · specs/extraction/entry-citations.sdp.md:33
The citations ride in a table of their own beside the location table, sorted and deterministic as the graph is, and Primitive and Pack nodes stay free of them.

no example exercises it

rule.inferredClaim line 34 · specs/extraction/entry-citations.sdp.md:34
The table's definition gives every citation the inferred claim, and every reader row of a citation carries it, so no consumer reads a citation as an authored binding.

no example exercises it

rule.confersNothing line 35 · specs/extraction/entry-citations.sdp.md:35
A citation mints no node or edge, confers no delivery fact, moves no readiness floor, feeds no Protocol validator and records no verdict on the citing file; removing every citation changes no node, edge, fact, floor or finding.

no example exercises it

rule.readerRows line 36 · specs/extraction/entry-citations.sdp.md:36
The reader resolves each citation by the rules address resolution applies, and the Spec context carries the citations whose address names that Spec as its entry citations, each with the entry it names, whether it resolves and why not, the citing file and line, the anchors recorded at that file and those of them that are test anchors verifying the Spec.

spec:extraction.entry-citations.test-title-cites-declaration · enabled, spec:extraction.entry-citations.unresolved-citation · enabled

rule.declarationLines line 37 · specs/extraction/entry-citations.sdp.md:37
Those rows let a view show, beside each pinned declaration of a Spec, the anchored lines that cite it, with no join of its own; a row reads as a test line only when a test: anchor at its file verifies the cited Spec, directly or through an example that verifies it, every other row stays a citation with its file and line, and no row says what a test asserts or whether it passed.

spec:extraction.entry-citations.code-comment-cites-declaration · enabled, spec:extraction.entry-citations.test-title-cites-declaration · enabled

rule.citationRecipe line 38 · specs/extraction/entry-citations.sdp.md:38
Entry citations, recipe 51, lists for a Pack, a list of Specs or the corpus each pinned declaration and every other cited entry with the lines that cite it, and every citation that does not resolve, and answers each citation that does not resolve, and only those, as a finding, so a corpus may name the shipped file as a rules file.

spec:extraction.entry-citations.unresolved-citation · enabled

rule.unresolvedReports line 39 · specs/extraction/entry-citations.sdp.md:39
An unresolved citation stays in the table and reports only through the reader's rows and the recipe's answer, never as a Protocol finding: whether it fails a gate is the corpus's choice of rules file.

spec:extraction.entry-citations.unresolved-citation · enabled

0 unkeyed rules.

Verifying examples

A code file's comment cites a declaration without reading as a test line · spec:extraction.entry-citations.code-comment-cites-declaration · ready floor ready

Executable Spec

Given a probe corpus whose Spec pins the declaration {declaration: "spec:probe.one#design.typeOne"}
Given a source file that {anchored: "carries a code anchor referencing the Spec"} and names the address {address: "spec:probe.one#design.typeOne"} on line {line: 9}
When the graph is derived
Then the Spec context lists {citations: 1} entry citations
Then the citation {recorded: "resolves"}
Then the citing line reads as a test line: {testLine: false}

Open example

A test title in an anchored file cites a pinned declaration · spec:extraction.entry-citations.test-title-cites-declaration · ready floor ready

Executable Spec

Given a probe corpus whose Spec pins the declaration {declaration: "spec:probe.one#design.typeOne"}
Given a source file that {anchored: "carries a test anchor verifying the Spec"} and names the address {address: "spec:probe.one#design.typeOne"} on line {line: 9}
When the graph is derived
Then the Spec context lists {citations: 1} entry citations
Then the citation {recorded: "resolves"}
Then the citing line reads as a test line: {testLine: true}
Then the shipped entry-citations file named as a rules file exits {exitCode: 0}

Open example

A file that carries no anchor is not read for citations · spec:extraction.entry-citations.unanchored-file-unread · ready floor ready

Executable Spec

Given a probe corpus whose Spec pins the declaration {declaration: "spec:probe.one#design.typeOne"}
Given a source file that {anchored: "carries no anchor"} and names the address {address: "spec:probe.one#design.typeOne"} on line {line: 9}
When the graph is derived
Then the Spec context lists {citations: 0} entry citations
Then the citation {recorded: "is not recorded"}

Open example

A citation of an entry its Spec lacks reports through the recipe, never as a Protocol finding · spec:extraction.entry-citations.unresolved-citation · ready floor ready

Executable Spec

Given a probe corpus whose Spec pins the declaration {declaration: "spec:probe.one#design.typeOne"}
Given a source file that {anchored: "carries a test anchor verifying the Spec"} and names the address {address: "spec:probe.one#design.typeTwo"} on line {line: 9}
When the graph is derived
Then the Spec context lists {citations: 1} entry citations
Then the citation {recorded: "does not resolve"}
Then the shipped entry-citations file named as a rules file exits {exitCode: 1}

Open example

Example space

Given a probe corpus whose Spec pins the declaration {declaration:string}
Given a source file that {anchored:"carries a test anchor verifying the Spec"|"carries a code anchor referencing the Spec"|"carries no anchor"} and names the address {address:string} on line {line:number}
When the graph is derived
Then the Spec context lists {citations:number} entry citations
Then the citation {recorded:"resolves"|"does not resolve"|"is not recorded"}
Then the citing line reads as a test line: {testLine:boolean}
Then the shipped entry-citations file named as a rules file exits {exitCode:number}
Design
citationTable line 42 · specs/extraction/entry-citations.sdp.md:42
citations?: readonly { address: string; file: string; line: number }[] on the graph schema beside locations, rows sorted by file, then line, then address, in code-unit order; an absent table reads as empty, and the field is additive, so the schema version's minor part rises.

no citation recorded

citationAddress line 43 · specs/extraction/entry-citations.sdp.md:43
address is the token as the prose-mention scan cuts it, its trailing punctuation removed; the sections it may name are the package's exported ENTRY_ADDRESS_SECTIONS, so an address section the grammar gains is read with no change here.

no citation recorded

readerCitation line 44 · specs/extraction/entry-citations.sdp.md:44
entryCitations: readonly { address: string; entry: string | null; resolves: boolean; reason: "malformed" | "section" | "entry" | null; file: string; line: number; anchors: readonly string[]; testAnchors: readonly string[]; claim: "inferred" }[] on the Spec context, for every row whose address's Spec part, the text before its #, is this Spec's id, where entry is the location-table entry the address names, such as design.<key> or rule[<i>], or null when it does not resolve, reason is address resolution's reason for a miss, anchors lists the ids of the anchors recorded at file in code-unit order, and testAnchors lists those of them that are test: anchors verifying this Spec, directly or through an example that verifies it; rows sort by address, then file, then line.

no citation recorded

citationsRecipe line 45 · specs/extraction/entry-citations.sdp.md:45
recipe 51, entry citations, takes at most one scope, params.pack or params.specs, the whole corpus with neither, and params.severity, "error" by default or "warning"; both scopes, an id that does not resolve or another severity returns { diagnostics: [{ parameter, problem }] } and no findings.
citationsAnswer line 46 · specs/extraction/entry-citations.sdp.md:46
{ scope, totals: { citations, citedEntries, declarations, citedDeclarations, unresolved }, entries, unresolved, findings }, where scope is { corpus: true }, { pack } or { specs }, and the totals count within the scope: the citations whose Spec part names a Spec in it, the entry rows that some citation names, the pinned declarations, those an anchored line cites, and the unresolved rows.

no citation recorded

entryRow line 47 · specs/extraction/entry-citations.sdp.md:47
{ address, spec, pinned, line, citedBy: [{ file, line, anchors, testAnchors }] }, one per pinned declaration in scope and per other entry in scope that a citation names, sorted by address; line is the entry's own recorded line or null, citedBy sorts by file, then line, and an uncited pinned declaration has an empty citedBy.

no citation recorded

unresolvedRow line 48 · specs/extraction/entry-citations.sdp.md:48
{ address, reason, file, line }, one per citation that does not resolve whose Spec part names a Spec in scope, or every such citation with no scope, reason being address resolution's, spec for an absent Spec; rows sort by file, then line, then address.

no citation recorded

citationFinding line 49 · specs/extraction/entry-citations.sdp.md:49
{ validatorId: "unresolved-citation", subjectId, severity, message, file, line } for each unresolved row, in that order, where subjectId is the address, file and line the citing site, and message reads <address> cited at <file>:<line> does not resolve: <why>, <why> as address resolution's finding words it.

no citation recorded

Verification

Verifier bindings

Example space

  • declaration · string · declared by a probe corpus whose Spec pins the declaration {declaration}
  • anchored · "carries a test anchor verifying the Spec" | "carries a code anchor referencing the Spec" | "carries no anchor" · declared by a source file that {anchored} and names the address {address} on line {line}
  • address · string · declared by a source file that {anchored} and names the address {address} on line {line}
  • line · number · declared by a source file that {anchored} and names the address {address} on line {line}

Bound points

Exampledeclarationanchoredaddressline
spec:extraction.entry-citations.code-comment-cites-declaration"spec:probe.one#design.typeOne""carries a code anchor referencing the Spec""spec:probe.one#design.typeOne"9
spec:extraction.entry-citations.test-title-cites-declaration"spec:probe.one#design.typeOne""carries a test anchor verifying the Spec""spec:probe.one#design.typeOne"9
spec:extraction.entry-citations.unanchored-file-unread"spec:probe.one#design.typeOne""carries no anchor""spec:probe.one#design.typeOne"9
spec:extraction.entry-citations.unresolved-citation"spec:probe.one#design.typeOne""carries a test anchor verifying the Spec""spec:probe.one#design.typeTwo"9

Oracle binding: present · oracle:protocol.entry-citations · test/entry-citations.test.ts:36

Coverage

declaration: "spec:probe.one#design.typeOne" · spec:extraction.entry-citations.code-comment-cites-declaration, spec:extraction.entry-citations.test-title-cites-declaration, spec:extraction.entry-citations.unanchored-file-unread, spec:extraction.entry-citations.unresolved-citation · not enumerable

address: "spec:probe.one#design.typeOne" · spec:extraction.entry-citations.code-comment-cites-declaration, spec:extraction.entry-citations.test-title-cites-declaration, spec:extraction.entry-citations.unanchored-file-unread; "spec:probe.one#design.typeTwo" · spec:extraction.entry-citations.unresolved-citation · not enumerable

line: 9 · spec:extraction.entry-citations.code-comment-cites-declaration, spec:extraction.entry-citations.test-title-cites-declaration, spec:extraction.entry-citations.unanchored-file-unread, spec:extraction.entry-citations.unresolved-citation · not enumerable

Unbound

  • declaration: None
  • anchored: None
  • address: None
  • line: None
Design view

Requirement drawing

Requirement drawing for spec:extraction.entry-citations
Requirement drawing for spec:extraction.entry-citationssatisfies · anchoredverifies · anchoredrefines, verifies · declaredmodels · anchoredrefines · declaredIntended Specsspec:extraction.entry-citationsThe graph records whereanchored source cites anentry address…extraction.entry-citationsdeclared SpecDeclared verifying examples4 verifying examples · declared, folded4 verifying examples ·declaredSatisfying or referencingunits4 satisfying units · anchored, folded4 satisfying units ·anchoredTest or oracle bindings4 test bindings · anchored, folded4 test bindings · anchoredoracle:protocol.entry-citationsoracle:protocol.entry-citations…protocol.entry-citationsanchored oracle bindingOutside the selected setspec:extraction.derive-graphCarrier reification derivesthe one graph…extraction.derive-graphdeclared Spec
The diagram as text
  • spec:extraction.entry-citations: The graph records where anchored source cites an entry address · declared Spec
  • spec:extraction.entry-citations.code-comment-cites-declaration: A code file's comment cites a declaration without reading as a test line · declared Spec
  • spec:extraction.entry-citations.test-title-cites-declaration: A test title in an anchored file cites a pinned declaration · declared Spec
  • spec:extraction.entry-citations.unanchored-file-unread: A file that carries no anchor is not read for citations · declared Spec
  • spec:extraction.entry-citations.unresolved-citation: A citation of an entry its Spec lacks reports through the recipe, never as a Protocol finding · declared Spec
  • spec:extraction.derive-graph: Carrier reification derives the one graph · declared Spec
  • impl:protocol.entry-address-resolution: resolves entry addresses for prose validation and citation readers · anchored code · src/graph/entry-address.ts:6
  • impl:protocol.entry-citation-reader: resolves citations and joins file anchors with direct and example-based test verification · anchored code · src/reader/entry-citations.ts:19
  • impl:protocol.entry-citation-recipe: asserts realization of Entry citations in docs/agent-surface/recipes.md · anchored code · test/recipes.test.ts:7008
  • impl:protocol.entry-citation-scan: records prose-mention tokens with addresses in anchored source files · anchored code · src/extract/entry-citations.ts:6
  • oracle:protocol.entry-citations: oracle:protocol.entry-citations · anchored oracle binding · test/entry-citations.test.ts:36
  • test:protocol.entry-citations.code-comment-cites-declaration: test:protocol.entry-citations.code-comment-cites-declaration · anchored test binding · binding present · test/entry-citations.test.ts:196
  • test:protocol.entry-citations.test-title-cites-declaration: test:protocol.entry-citations.test-title-cites-declaration · anchored test binding · binding present · test/entry-citations.test.ts:191
  • test:protocol.entry-citations.unanchored-file-unread: test:protocol.entry-citations.unanchored-file-unread · anchored test binding · binding present · test/entry-citations.test.ts:201
  • test:protocol.entry-citations.unresolved-citation: test:protocol.entry-citations.unresolved-citation · anchored test binding · binding present · test/entry-citations.test.ts:206
  • spec:extraction.entry-citations refines spec:extraction.derive-graph · declared
  • spec:extraction.entry-citations.code-comment-cites-declaration refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.code-comment-cites-declaration verifies spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.test-title-cites-declaration refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.test-title-cites-declaration verifies spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unanchored-file-unread refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unanchored-file-unread verifies spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unresolved-citation refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unresolved-citation verifies spec:extraction.entry-citations · declared
  • impl:protocol.entry-address-resolution satisfies spec:extraction.entry-citations · anchored
  • impl:protocol.entry-citation-reader satisfies spec:extraction.entry-citations · anchored
  • impl:protocol.entry-citation-recipe satisfies spec:extraction.entry-citations · anchored
  • impl:protocol.entry-citation-scan satisfies spec:extraction.entry-citations · anchored
  • oracle:protocol.entry-citations models spec:extraction.entry-citations · anchored
  • test:protocol.entry-citations.code-comment-cites-declaration verifies spec:extraction.entry-citations.code-comment-cites-declaration · anchored
  • test:protocol.entry-citations.test-title-cites-declaration verifies spec:extraction.entry-citations.test-title-cites-declaration · anchored
  • test:protocol.entry-citations.unanchored-file-unread verifies spec:extraction.entry-citations.unanchored-file-unread · anchored
  • test:protocol.entry-citations.unresolved-citation verifies spec:extraction.entry-citations.unresolved-citation · 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.extract · the carrier and source pipeline · src/extract/index.ts:192 · 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.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocol

    Uses

    • 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

    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.entry-address-resolution · resolves entry addresses for prose validation and citation readers · src/graph/entry-address.ts:6

    Component: component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocol

    Uses

    None.

  • impl:protocol.entry-citation-reader · resolves citations and joins file anchors with direct and example-based test verification · src/reader/entry-citations.ts:19

    Component: component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol

    Uses

    None.

  • impl:protocol.entry-citation-recipe · asserts realization of Entry citations in docs/agent-surface/recipes.md · test/recipes.test.ts:7008

    Uses

    None.

  • impl:protocol.entry-citation-scan · records prose-mention tokens with addresses in anchored source files · src/extract/entry-citations.ts:6

    Component: component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · 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:extraction.entry-citations
  • E6: verifies · declared (4 unit edges)
Relations of spec:extraction.entry-citationsrefines · declaredconstrainedBy · declareddependsOn · declareddependsOn · declaredrefines · declaredE6Outgoing refinesspec:extraction.derive-graphCarrier reification derivesthe one graph…derive-graphOutgoing dependsOnspec:extraction.entry-citations.fold.Outgoing.dependsOn4 Outgoing dependsOn, folded…entry-citations.fold.Outgoing.dependsOnOutgoing constrainedByspec:extraction.determinismCommitted source derivesbyte-identical output…determinismSubjectspec:extraction.entry-citationsThe graph records whereanchored source cites anentry address…entry-citationsIncoming refinesspec:extraction.entry-citations.fold.Incoming.refines4 Incoming refines, folded…entry-citations.fold.Incoming.refinesIncoming dependsOnspec:extraction.entry-citations.fold.Incoming.dependsOn4 Incoming dependsOn, folded…entry-citations.fold.Incoming.dependsOn
The diagram as text
  • spec:consumers.spec-studio.cited-line-text: A pinned declaration shows the words of each test line that cites it
  • spec:consumers.spec-studio.registers: The corpus's registers are pages a reviewer opens from a link
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order
  • spec:consumers.upgrade-kit.capability-adoption: Capability adoption counts where each capability is used and where it could apply
  • spec:extraction.claim-taxonomy: Graph claims retain their epistemic source
  • spec:extraction.derive-graph: Carrier reification derives the one graph
  • spec:extraction.determinism: Committed source derives byte-identical output
  • spec:extraction.entry-citations: The graph records where anchored source cites an entry address
  • spec:extraction.entry-citations.code-comment-cites-declaration: A code file's comment cites a declaration without reading as a test line
  • spec:extraction.entry-citations.test-title-cites-declaration: A test title in an anchored file cites a pinned declaration
  • spec:extraction.entry-citations.unanchored-file-unread: A file that carries no anchor is not read for citations
  • spec:extraction.entry-citations.unresolved-citation: A citation of an entry its Spec lacks reports through the recipe, never as a Protocol finding
  • spec:extraction.entry-locations: The graph records where each addressable entry is written
  • spec:model.anchors: Source anchors bind code without carrying intent
  • spec:validation.prose-mentions: Every Spec id written in prose resolves
  • spec:extraction.entry-citations constrainedBy spec:extraction.determinism · declared
  • spec:extraction.entry-citations dependsOn spec:extraction.claim-taxonomy · declared — every citation carries the inferred claim
  • spec:extraction.entry-citations dependsOn spec:extraction.entry-locations · declared — the citation table is the location table's sibling, and a resolving citation names an entry it locates
  • spec:extraction.entry-citations dependsOn spec:model.anchors · declared — only a source file that carries an anchor is read for citations
  • spec:extraction.entry-citations dependsOn spec:validation.prose-mentions · declared — a citation is a token the prose-mention scan would read, and resolves by the same address rules
  • spec:extraction.entry-citations refines spec:extraction.derive-graph · declared
  • spec:consumers.spec-studio.cited-line-text dependsOn spec:extraction.entry-citations · declared — the words belong to a citation the graph already records by file and line
  • 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.spec-page dependsOn spec:extraction.entry-citations · declared — the design section shows the source lines that cite each entry
  • spec:consumers.upgrade-kit.capability-adoption dependsOn spec:extraction.entry-citations · declared — a pinned declaration counts as cited when an anchored line cites it
  • spec:extraction.entry-citations.code-comment-cites-declaration refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.test-title-cites-declaration refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unanchored-file-unread refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unresolved-citation refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.code-comment-cites-declaration verifies spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.test-title-cites-declaration verifies spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unanchored-file-unread verifies spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unresolved-citation verifies spec:extraction.entry-citations · 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:extraction.derive-graph · stated ready, floor ready
  • dependsOn · spec:extraction.claim-taxonomy · stated ready, floor ready
  • dependsOn · spec:extraction.entry-locations · stated ready, floor ready
  • dependsOn · spec:model.anchors · stated ready, floor ready
  • dependsOn · spec:validation.prose-mentions · stated ready, floor ready
  • constrainedBy · spec:extraction.determinism · stated ready, floor ready

Rested on by

Distance 1

Distance 2

  • 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.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.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.upgrade-kit.capability-adoption.counts-a-corpus

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus

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

Distance 3

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

Relations

Relation and directionOther endClaimReasonExercised keys
constrainedBy · outgoingspec:extraction.determinism
spec:extraction.determinism · resolves
declaredNoneNone
dependsOn · outgoingspec:extraction.claim-taxonomy
spec:extraction.claim-taxonomy · resolves
declaredevery citation carries the inferred claimNone
dependsOn · outgoingspec:extraction.entry-locations
spec:extraction.entry-locations · resolves
declaredthe citation table is the location table's sibling, and a resolving citation names an entry it locatesNone
dependsOn · outgoingspec:model.anchors
spec:model.anchors · resolves
declaredonly a source file that carries an anchor is read for citationsNone
dependsOn · outgoingspec:validation.prose-mentions
spec:validation.prose-mentions · resolves
declareda citation is a token the prose-mention scan would read, and resolves by the same address rulesNone
refines · outgoingspec:extraction.derive-graph
spec:extraction.derive-graph · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.spec-studio.cited-line-text
spec:consumers.spec-studio.cited-line-text · resolves
declaredthe words belong to a citation the graph already records by file and lineNone
dependsOn · incomingspec:consumers.spec-studio.registers
spec:consumers.spec-studio.registers · resolves
declaredeach declaration shows the source lines that cite its addressNone
dependsOn · incomingspec:consumers.spec-studio.spec-page
spec:consumers.spec-studio.spec-page · resolves
declaredthe design section shows the source lines that cite each entryNone
dependsOn · incomingCapability adoption counts where each capability is used and where it could apply
spec:consumers.upgrade-kit.capability-adoption · resolves
declareda pinned declaration counts as cited when an anchored line cites itNone
refines · incomingA code file's comment cites a declaration without reading as a test line
spec:extraction.entry-citations.code-comment-cites-declaration · resolves
declaredNoneNone
refines · incomingA test title in an anchored file cites a pinned declaration
spec:extraction.entry-citations.test-title-cites-declaration · resolves
declaredNoneNone
refines · incomingA file that carries no anchor is not read for citations
spec:extraction.entry-citations.unanchored-file-unread · resolves
declaredNoneNone
refines · incomingA citation of an entry its Spec lacks reports through the recipe, never as a Protocol finding
spec:extraction.entry-citations.unresolved-citation · resolves
declaredNoneNone
verifies · incomingA code file's comment cites a declaration without reading as a test line
spec:extraction.entry-citations.code-comment-cites-declaration · resolves
declaredNoneanchoredFilesOnly, declarationLines
verifies · incomingA test title in an anchored file cites a pinned declaration
spec:extraction.entry-citations.test-title-cites-declaration · resolves
declaredNoneanchoredFilesOnly, citationToken, citationRow, readerRows, declarationLines
verifies · incomingA file that carries no anchor is not read for citations
spec:extraction.entry-citations.unanchored-file-unread · resolves
declaredNoneanchoredFilesOnly
verifies · incomingA citation of an entry its Spec lacks reports through the recipe, never as a Protocol finding
spec:extraction.entry-citations.unresolved-citation · resolves
declaredNonereaderRows, citationRecipe, unresolvedReports

Bindings

Implementation binding: present

  • impl:protocol.entry-address-resolution · resolves entry addresses for prose validation and citation readers · src/graph/entry-address.ts:6 · role reader · component component:protocol.graph · layer domain · context protocol
  • impl:protocol.entry-citation-reader · resolves citations and joins file anchors with direct and example-based test verification · src/reader/entry-citations.ts:19 · role reader · component component:protocol.reader · layer application · context protocol
  • impl:protocol.entry-citation-recipe · asserts realization of Entry citations in docs/agent-surface/recipes.md · test/recipes.test.ts:7008
  • impl:protocol.entry-citation-scan · records prose-mention tokens with addresses in anchored source files · src/extract/entry-citations.ts:6 · role extractor · component component:protocol.extract · layer application · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.entry-citations · test/entry-citations.test.ts:36

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

42. A code file's comment cites a declaration without reading as a test line

spec:extraction.entry-citations.code-comment-cites-declaration

A code file's comment cites a declaration without reading as a test line

spec:extraction.entry-citations.code-comment-cites-declarationExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/extraction/entry-citations.code-comment-cites-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 test-line rule on a source file that carries a code anchor and names a pinned declaration's address in a comment.
assumptions
  • The world writes the probe corpus of the test-title example and a source file whose comment-form code anchor references that Spec and whose line comment, on the line the step names, holds the address. It derives the graph and reads the Spec context's entry citations, the row's resolves, its anchors, which name the code anchor, and its testAnchors, which are empty.
Behavior

Examples

Given a probe corpus whose Spec pins the declaration {declaration: "spec:probe.one#design.typeOne"}
Given a source file that {anchored: "carries a code anchor referencing the Spec"} and names the address {address: "spec:probe.one#design.typeOne"} on line {line: 9}
When the graph is derived
Then the Spec context lists {citations: 1} entry citations
Then the citation {recorded: "resolves"}
Then the citing line reads as a test line: {testLine: false}
Verification

Verifier bindings

  • test:protocol.entry-citations.code-comment-cites-declaration · anchored · test anchor binding present · test/entry-citations.test.ts:196
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:extraction.entry-citations.code-comment-cites-declaration
The diagram as text
  • spec:extraction.entry-citations.code-comment-cites-declaration: A code file's comment cites a declaration without reading as a test line · declared Spec
  • spec:extraction.entry-citations: The graph records where anchored source cites an entry address · declared Spec
  • test:protocol.entry-citations.code-comment-cites-declaration: test:protocol.entry-citations.code-comment-cites-declaration · anchored test binding · binding present · test/entry-citations.test.ts:196
  • spec:extraction.entry-citations.code-comment-cites-declaration refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.code-comment-cites-declaration verifies spec:extraction.entry-citations · declared
  • test:protocol.entry-citations.code-comment-cites-declaration verifies spec:extraction.entry-citations.code-comment-cites-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:extraction.entry-citations.code-comment-cites-declaration
  • E2: verifies · declared
The diagram as text
  • spec:extraction.entry-citations: The graph records where anchored source cites an entry address
  • spec:extraction.entry-citations.code-comment-cites-declaration: A code file's comment cites a declaration without reading as a test line
  • spec:extraction.entry-citations.code-comment-cites-declaration refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.code-comment-cites-declaration verifies spec:extraction.entry-citations · 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 graph records where anchored source cites an entry address
spec:extraction.entry-citations · resolves
declaredNoneNone
verifies · outgoingThe graph records where anchored source cites an entry address
spec:extraction.entry-citations · resolves
declaredNoneanchoredFilesOnly, declarationLines

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.entry-citations.code-comment-cites-declaration · anchored · test/entry-citations.test.ts:196 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

43. A test title in an anchored file cites a pinned declaration

spec:extraction.entry-citations.test-title-cites-declaration

A test title in an anchored file cites a pinned declaration

spec:extraction.entry-citations.test-title-cites-declarationExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/extraction/entry-citations.test-title-cites-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 citation record on a test file that carries a test anchor and names a pinned declaration's address as a test title.
assumptions
  • The world writes a probe corpus of one story-altitude behavior Spec stating idea with an Intent outcome and one Design entry, typeOne, whose value opens with the code span type One = string. It writes a test file that carries a constant-form test anchor verifying that Spec and, on the line the step names, calls test with the address as its title. It derives the graph, reads the Spec context's entry citations, the row's resolves and whether its testAnchors names the file's anchor, then runs sdp validate on the probe root with dist/recipes/51-entry-citations.js named by --rules.
Behavior

Examples

Given a probe corpus whose Spec pins the declaration {declaration: "spec:probe.one#design.typeOne"}
Given a source file that {anchored: "carries a test anchor verifying the Spec"} and names the address {address: "spec:probe.one#design.typeOne"} on line {line: 9}
When the graph is derived
Then the Spec context lists {citations: 1} entry citations
Then the citation {recorded: "resolves"}
Then the citing line reads as a test line: {testLine: true}
Then the shipped entry-citations file named as a rules file exits {exitCode: 0}
Verification

Verifier bindings

  • test:protocol.entry-citations.test-title-cites-declaration · anchored · test anchor binding present · test/entry-citations.test.ts:191
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:extraction.entry-citations.test-title-cites-declaration
The diagram as text
  • spec:extraction.entry-citations.test-title-cites-declaration: A test title in an anchored file cites a pinned declaration · declared Spec
  • spec:extraction.entry-citations: The graph records where anchored source cites an entry address · declared Spec
  • test:protocol.entry-citations.test-title-cites-declaration: test:protocol.entry-citations.test-title-cites-declaration · anchored test binding · binding present · test/entry-citations.test.ts:191
  • spec:extraction.entry-citations.test-title-cites-declaration refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.test-title-cites-declaration verifies spec:extraction.entry-citations · declared
  • test:protocol.entry-citations.test-title-cites-declaration verifies spec:extraction.entry-citations.test-title-cites-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:extraction.entry-citations.test-title-cites-declaration
  • E2: verifies · declared
The diagram as text
  • spec:extraction.entry-citations: The graph records where anchored source cites an entry address
  • spec:extraction.entry-citations.test-title-cites-declaration: A test title in an anchored file cites a pinned declaration
  • spec:extraction.entry-citations.test-title-cites-declaration refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.test-title-cites-declaration verifies spec:extraction.entry-citations · 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 graph records where anchored source cites an entry address
spec:extraction.entry-citations · resolves
declaredNoneNone
verifies · outgoingThe graph records where anchored source cites an entry address
spec:extraction.entry-citations · resolves
declaredNoneanchoredFilesOnly, citationToken, citationRow, readerRows, declarationLines

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.entry-citations.test-title-cites-declaration · anchored · test/entry-citations.test.ts:191 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

44. A file that carries no anchor is not read for citations

spec:extraction.entry-citations.unanchored-file-unread

A file that carries no anchor is not read for citations

spec:extraction.entry-citations.unanchored-file-unreadExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/extraction/entry-citations.unanchored-file-unread.sdp.md

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

Intent
outcome
Execute the anchored-file rule on a test file with no anchor that names a pinned declaration's address.
assumptions
  • The world writes the probe corpus of the test-title example and the same test file without its test anchor, derives the graph and reads the Spec context's entry citations.
Behavior

Examples

Given a probe corpus whose Spec pins the declaration {declaration: "spec:probe.one#design.typeOne"}
Given a source file that {anchored: "carries no anchor"} and names the address {address: "spec:probe.one#design.typeOne"} on line {line: 9}
When the graph is derived
Then the Spec context lists {citations: 0} entry citations
Then the citation {recorded: "is not recorded"}
Verification

Verifier bindings

  • test:protocol.entry-citations.unanchored-file-unread · anchored · test anchor binding present · test/entry-citations.test.ts:201
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:extraction.entry-citations.unanchored-file-unread
The diagram as text
  • spec:extraction.entry-citations.unanchored-file-unread: A file that carries no anchor is not read for citations · declared Spec
  • spec:extraction.entry-citations: The graph records where anchored source cites an entry address · declared Spec
  • test:protocol.entry-citations.unanchored-file-unread: test:protocol.entry-citations.unanchored-file-unread · anchored test binding · binding present · test/entry-citations.test.ts:201
  • spec:extraction.entry-citations.unanchored-file-unread refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unanchored-file-unread verifies spec:extraction.entry-citations · declared
  • test:protocol.entry-citations.unanchored-file-unread verifies spec:extraction.entry-citations.unanchored-file-unread · 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:extraction.entry-citations.unanchored-file-unread
  • E2: verifies · declared
The diagram as text
  • spec:extraction.entry-citations: The graph records where anchored source cites an entry address
  • spec:extraction.entry-citations.unanchored-file-unread: A file that carries no anchor is not read for citations
  • spec:extraction.entry-citations.unanchored-file-unread refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unanchored-file-unread verifies spec:extraction.entry-citations · 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 graph records where anchored source cites an entry address
spec:extraction.entry-citations · resolves
declaredNoneNone
verifies · outgoingThe graph records where anchored source cites an entry address
spec:extraction.entry-citations · resolves
declaredNoneanchoredFilesOnly

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.entry-citations.unanchored-file-unread · anchored · test/entry-citations.test.ts:201 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

45. A citation of an entry its Spec lacks reports through the recipe, never as a Protocol finding

spec:extraction.entry-citations.unresolved-citation

A citation of an entry its Spec lacks reports through the recipe, never as a Protocol finding

spec:extraction.entry-citations.unresolved-citationExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/extraction/entry-citations.unresolved-citation.sdp.md

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

Intent
outcome
Execute the unresolved path on an anchored test file that names a Design key its Spec does not carry.
assumptions
  • The world writes the probe corpus and anchored test file of the test-title example, the title naming the address below. It derives the graph and reads the Spec context's entry citations, checks that the validation report holds no finding about the citation, then runs the shipped entry-citations file as a rules file as that example does.
Behavior

Examples

Given a probe corpus whose Spec pins the declaration {declaration: "spec:probe.one#design.typeOne"}
Given a source file that {anchored: "carries a test anchor verifying the Spec"} and names the address {address: "spec:probe.one#design.typeTwo"} on line {line: 9}
When the graph is derived
Then the Spec context lists {citations: 1} entry citations
Then the citation {recorded: "does not resolve"}
Then the shipped entry-citations file named as a rules file exits {exitCode: 1}
Verification

Verifier bindings

  • test:protocol.entry-citations.unresolved-citation · anchored · test anchor binding present · test/entry-citations.test.ts:206
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:extraction.entry-citations.unresolved-citation
The diagram as text
  • spec:extraction.entry-citations.unresolved-citation: A citation of an entry its Spec lacks reports through the recipe, never as a Protocol finding · declared Spec
  • spec:extraction.entry-citations: The graph records where anchored source cites an entry address · declared Spec
  • test:protocol.entry-citations.unresolved-citation: test:protocol.entry-citations.unresolved-citation · anchored test binding · binding present · test/entry-citations.test.ts:206
  • spec:extraction.entry-citations.unresolved-citation refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unresolved-citation verifies spec:extraction.entry-citations · declared
  • test:protocol.entry-citations.unresolved-citation verifies spec:extraction.entry-citations.unresolved-citation · 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:extraction.entry-citations.unresolved-citation
  • E2: verifies · declared
The diagram as text
  • spec:extraction.entry-citations: The graph records where anchored source cites an entry address
  • spec:extraction.entry-citations.unresolved-citation: A citation of an entry its Spec lacks reports through the recipe, never as a Protocol finding
  • spec:extraction.entry-citations.unresolved-citation refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unresolved-citation verifies spec:extraction.entry-citations · 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 graph records where anchored source cites an entry address
spec:extraction.entry-citations · resolves
declaredNoneNone
verifies · outgoingThe graph records where anchored source cites an entry address
spec:extraction.entry-citations · resolves
declaredNonereaderRows, citationRecipe, unresolvedReports

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.entry-citations.unresolved-citation · anchored · test/entry-citations.test.ts:206 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

46. A context bundle is composed per invocation within a stated budget

spec:consumers.context-bundle

A context bundle is composed per invocation within a stated budget

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

Packs: pack:adopter-speed-v1, pack:design-iteration-v1, pack:design-management-v1, pack:self-hosting-v1

Design: 17 design entries · 7 pinned declarations · 1 decision

Findings: no errors, no warnings

specs/consumers/context-bundle.sdp.md

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

The original design precomputed graph slices for different reading scopes and a prompt bundle for one Spec. The Protocol keeps context bundle for the reading material of one design pass, composed on demand.

The first adopter's design passes assemble the same reading material by hand: the Pack design, member questions, dependency footing, pinned declarations and carrying Spec text where the graph answer falls short. Its perspectives read the same Pack for different concerns. The agent front door composes a bundle on each invocation; the bundle is never a committed answer in the graph's name. It builds on Pack design.

At an adopter's scale a bundle is mostly structure, so its shape is compact. Each member and each example row names its carrier file once. A cut entry without an entry address keeps only its line, since its row and its place in the bundle already name it. A question, a pinned value or a member example's steps appears in one place. Pinned declarations stay whole by default, because a builder and a test author hold to them. A caller whose scope still does not fit may let the bundle cut them to their entry addresses, and then reads each one in its Spec when the pass needs it. A partial bundle stays refused, because a bundle missing members would read as the whole scope.

A scope can hold more design than one budget allows after every cut, as the first adopter's largest Packs do. A caller then reads the bundle in parts: the same bundle, split between members into ordered parts that each fit the budget, whose members together are the whole scope. In parts a cut is taken only when an item, a member or the boundary, does not fit a part by itself, so a part keeps the design a single bundle would have cut. A repeated header that exceeds the budget alone is named as one oversized item; otherwise each item that exceeds the budget alone is named. No part is returned in either case.

Intent
actor
An agent starting one design pass over a Pack or an ordered list of Specs.
problem
Each pass assembles the same reading material by running the same recipes and joining their answers by hand, and nothing bounds what it hands the model.
outcome
Give an agent the reading material for one design pass in one composed slice of the graph within a stated budget, so no session hand-assembles it.
Behavior
rule line 27 · specs/consumers/context-bundle.sdp.md:27
A bundle is a catalog recipe that takes its scope and its budget as recipe parameters; it adds no entrance and no query verb.
rule line 28 · specs/consumers/context-bundle.sdp.md:28
A bundle is composed from the graph on each invocation by the reader every recipe uses; nothing is precomputed, saved or committed, and two invocations over the same graph with the same parameters compose the same bundle.
rule line 29 · specs/consumers/context-bundle.sdp.md:29
A bundle takes one scope: pack, a Pack id, or specs, an ordered list of Spec ids. For specs the members are the listed Specs in the given order and the boundary is each member's one-hop neighbors through the four typed relations both ways, with verifies and supersedes apart, as the Pack boundary is built. Both scopes or neither is a diagnostic result. A changeset fills specs from the impacted Spec ids changed-file impact reports, and a Pack's open questions are read from the Pack bundle, not from a third scope.
rule line 30 · specs/consumers/context-bundle.sdp.md:30
With pack, a bundle may take members, an ordered subset of the Pack's member ids, which the perspective filter returns; it keeps the Pack's framing and boundary, lists only those members in that order, and states that it is a subset, so one filter implementation serves both recipes.
rule line 31 · specs/consumers/context-bundle.sdp.md:31
A bundle for a Pack carries the Pack design assembly, its members in authored order with their design columns and its boundary, then each member's open questions with their addresses and lines, its dependency footing, its pinned declarations and its examples.
rule line 32 · specs/consumers/context-bundle.sdp.md:32
The budget is a hard limit on a successful bundle, counted in UTF-16 code units, the length a recipe body reads, of the compact JSON.stringify of the value the recipe returns, its scope, budget and left-out statement included; sdp q --json prints a longer indented form, and the budget never measures printed text. The bundle also reports a token estimate labeled as an estimate, so no model's tokenizer binds the Protocol.
rule.oneCopy line 33 · specs/consumers/context-bundle.sdp.md:33
A bundle carries a member's open questions only in its questions, a pinned declaration's value only in its member's Design section, and an example's steps only in its own member row when the example is a member of the bundle; an example outside the bundle keeps its steps in the row of each member it refines or verifies.

no example exercises it

rule.cutOrder line 34 · specs/consumers/context-bundle.sdp.md:34
When the scope exceeds the budget, the bundle cuts in a fixed order and stops at the first cut after which it fits: boundary rows down to their ids, footing rows down to their ids, member narrative, example step text, non-blocking question text, remaining section values other than pinned declarations, then, only when the caller allows it, pinned declarations down to their entry addresses. It never cuts member ids, the stated rung, the floor reached, the stated next rung, blocking questions or entry addresses, and it cuts nothing else.

no example exercises it

rule.declarationAddresses line 35 · specs/consumers/context-bundle.sdp.md:35
A caller allows the last cut by passing declarations: "addresses"; without it, or with declarations: "whole", pinned declarations stay whole, and any other value is a diagnostic result.

no example exercises it

rule line 36 · specs/consumers/context-bundle.sdp.md:36
Without part, when the protected content alone exceeds the budget after every permitted cut, the recipe returns a budget-exceeded result as data and no partial bundle: the requested scope, the budget, and the minimum count the protected content needs in the same unit; sdp q exits 0, because the result is the body's return and not a refusal.
rule line 37 · specs/consumers/context-bundle.sdp.md:37
A bundle gives the file and line of an entry or a binding in place of a source excerpt, because the reader never reads source.
rule line 38 · specs/consumers/context-bundle.sdp.md:38
A bundle states its scope, its budget and what it left out to stay within the budget, so a reader knows what to read in the Specs themselves.
rule line 39 · specs/consumers/context-bundle.sdp.md:39
A bundle carries facts from the graph and no instructions of its own; the brief that tells an agent what to look for stays the corpus's own text.
rule.parts line 40 · specs/consumers/context-bundle.sdp.md:40
With part, the 1-based index of the part to return, a bundle comes in ordered parts, each within the budget, and the members of its parts, read in part order, are the bundle's members in order, each once.

spec:consumers.context-bundle.parts-cover-the-pack · enabled

rule.partBoundaries line 41 · specs/consumers/context-bundle.sdp.md:41
A part boundary falls between items and never inside one: the boundary is the first item and each member is one item, in the scope's order, and each part holds the longest run of items after the part before it that fits the budget.

spec:consumers.context-bundle.parts-cover-the-pack · enabled

rule.partCuts line 42 · specs/consumers/context-bundle.sdp.md:42
In parts the bundle tries the cut order one cut at a time, starting from no cut, splits the scope at each stage and takes the first stage at which every part fits the budget, each part measured whole in the shape it returns: its repeated fields, its leftOut, the boundary in part 1 and the final part.of; every part takes that stage's cuts and lists them in leftOut.

spec:consumers.context-bundle.parts-cover-the-pack · enabled

rule.partHeader line 43 · specs/consumers/context-bundle.sdp.md:43
Every part repeats the scope, the budget, the declaration mode, the cuts taken, its own place among the parts and, for a Pack scope, the Pack's id, title and framing, so each part reads on its own; only the first part carries the boundary.

spec:consumers.context-bundle.parts-cover-the-pack · enabled

rule.sameParts line 44 · specs/consumers/context-bundle.sdp.md:44
The split depends on the graph and on every parameter but part, so a caller that asks for each part in turn over one graph reads one bundle.

spec:consumers.context-bundle.parts-cover-the-pack · enabled

rule.oversizedItem line 45 · specs/consumers/context-bundle.sdp.md:45
When the repeated part header alone exceeds the budget after every permitted cut, the recipe names "header" as its one oversized item and returns no part. Otherwise, when an item alone exceeds the budget after every permitted cut, the recipe names each such item with its length and returns no part. In both cases sdp q exits 0.

spec:consumers.context-bundle.oversized-member-named · enabled

10 unkeyed rules.

Verifying examples

A member larger than the budget is named, and no part is returned · spec:consumers.context-bundle.oversized-member-named · ready floor ready

Executable Spec

Given a probe Pack of three members whose bundle exceeds the budget {budget: 10000} {sizes: "and one member carries a blocking question longer than the budget"}
When each part of its context bundle is requested in turn
Then the answer names the oversized items {oversizedItems: "spec:probe.two"}

Open example

A Pack too large for one bundle reads whole in parts · spec:consumers.context-bundle.parts-cover-the-pack · ready floor ready

Executable Spec

Given a probe Pack of three members whose bundle exceeds the budget {budget: 10000} {sizes: "while each member fits a part alone"}
When each part of its context bundle is requested in turn
Then the bundle comes in {parts: 3} parts, each within the budget
Then the members of the parts, in part order, are the Pack's members in authored order, each once: {complete: true}

Open example

Example space

Given a probe Pack of three members whose bundle exceeds the budget {budget:number} {sizes:"while each member fits a part alone"|"and one member carries a blocking question longer than the budget"}
When each part of its context bundle is requested in turn
Then the bundle comes in {parts:number} parts, each within the budget
Then the members of the parts, in part order, are the Pack's members in authored order, each once: {complete:boolean}
Then the answer names the oversized items {oversizedItems:string}
Design
bundleRecipe line 49 · specs/consumers/context-bundle.sdp.md:49
recipe 36, the context bundle, takes exactly one scope, params.pack or params.specs, an optional params.members beside pack, params.budget, 100,000 code units by default, params.declarations, "whole" by default or "addresses", and an optional params.part; a missing, doubled or unknown scope, another declarations value, or a part that is not a positive integer returns { diagnostics } and no bundle.
bundleShape line 50 · specs/consumers/context-bundle.sdp.md:50
{ scope, budget, declarations, used, tokenEstimate: { value, method }, leftOut, pack, members, boundary }, where declarations is the mode in force, pack is { id, title, framing } for a Pack scope and null otherwise, and tokenEstimate.method reads UTF-16 code units divided by four, an estimate.

no citation recorded

memberShape line 51 · specs/consumers/context-bundle.sdp.md:51
{ id, file, title, specKind, altitude, statedReadiness, floorReached, statedNextRung, holds, narrative, sections, questions, footing, declarations, examples, design, decisions, implementedBy, referencedBy, verifiers }, with file the member's carrier path; sections as the graph holds them, without intent.openQuestions; questions one row per open question in authored order, { index, question, blocking, key, address, line } with its fields, key absent and address null when it has none; footing as dependency footing (recipe 21) reports it; declarations the keys of the member's pinned declarations in Design order; design the counts of entries, declarations, open questions and blocking questions; decisions the decisions its design columns name; implementedBy and referencedBy as { id, claim, file, line, role, component }; and verifiers as { id, claim, enabled, file, line }. holds lists the member's stated-next-rung failures as the reader returns them, each with its clauseId and description, and with targets on a typed-dependency failure.

no citation recorded

exampleRow line 52 · specs/consumers/context-bundle.sdp.md:52
{ id, member, file, statedReadiness, enabled, steps } lists one example that refines or verifies the member, in id order, with member true and steps null when the example is itself a member of the bundle, its steps then sitting in its own member row.

no citation recorded

pointer line 53 · specs/consumers/context-bundle.sdp.md:53
{ line } replaces a cut entry that has no entry address, line being the line the location table records for it, or null when it records none; the entry's Spec and file are those of the row that holds it, and its place in the bundle names its path. A cut entry whose text names other entry addresses becomes a list of them, led by its own address when it has one and otherwise ended by its pointer.

no citation recorded

boundaryRows line 54 · specs/consumers/context-bundle.sdp.md:54
a Pack scope's boundary is the Pack design's; a Spec-list scope's boundary is every Spec outside the list one authored relation away from a listed Spec, in the same row shape.
footingCut line 55 · specs/consumers/context-bundle.sdp.md:55
{ refines, dependsOn, constrainedBy, decidedBy } replaces a member's footing at the footing cut, each a list of target ids in code-unit order, with a type that has no target left out.

no citation recorded

narrativeCut line 56 · specs/consumers/context-bundle.sdp.md:56
The narrative cut replaces a member's narrative with the entry addresses written in it, in order of first appearance and joined by single spaces, or with null when it holds none.
exampleCut line 57 · specs/consumers/context-bundle.sdp.md:57
The example cut replaces each entry of a member's behavior.examples, and its behavior.exampleSpace, with its pointer, and each example row's steps that are not null with the pointer of that example's behavior.examples.
questionCut line 58 · specs/consumers/context-bundle.sdp.md:58
The question cut replaces each non-blocking question in questions with its address, or with its pointer when it has no key, and with { pointer, links } when it has links, pointer being that address or pointer; blocking questions stay whole.
sectionCut line 59 · specs/consumers/context-bundle.sdp.md:59
The section cut replaces each section entry other than a pinned declaration with its entry address when it has one, and otherwise with its pointer.
declarationCut line 60 · specs/consumers/context-bundle.sdp.md:60
The declaration cut, taken only under declarations: "addresses", replaces each pinned declaration in its member's Design section with its entry address, or with its pointer when its key has none; the member's declarations keeps the keys.
leftOutLines line 61 · specs/consumers/context-bundle.sdp.md:61
One fixed line per cut taken, in cut order, makes up leftOut: Boundary details; ids kept per direction., Footing details; ids kept per relation type., Member narrative., Example step text, including member sections and example-space vocabulary., Non-blocking question text; addresses and links kept., Section entry values other than pinned declarations; addresses and lines kept. and Pinned declaration text; entry addresses kept.
budgetExceeded line 62 · specs/consumers/context-bundle.sdp.md:62
{ scope, budget, declarations, budgetExceeded: true, protectedLength, leftOut } is the whole result when the protected content alone exceeds the budget after every permitted cut, with protectedLength in the budget's unit.

no citation recorded

partShape line 63 · specs/consumers/context-bundle.sdp.md:63
a part is the bundle shape with part: { index, of } after declarations, where of is the number of parts; its members hold its run of members, its boundary holds the scope's boundary in part 1 and is null in every later part, and its used and tokenEstimate measure the part.
partDiagnostic line 64 · specs/consumers/context-bundle.sdp.md:64
a part above the number of parts returns { diagnostics: [{ scope: "part", problem: "The bundle has <of> parts." }] }, in the { scope, problem } row the recipe's other diagnostics use.
partsExceeded line 65 · specs/consumers/context-bundle.sdp.md:65
{ scope, budget, declarations, part: { index, of: null }, budgetExceeded: true, oversized: [{ item, length }], leftOut } is the whole result when an item exceeds the budget alone after every permitted cut, where item is "header" alone when the repeated header exceeds the budget, and otherwise a member id or "boundary", in scope order. For "header", length counts the code units of a part with part: { index: 1, of: 1 }, no members and a null boundary after every permitted cut; otherwise it counts a part that holds that item alone.

no citation recorded

Verification

Verifier bindings

  • spec:consumers.context-bundle.oversized-member-named · A member larger than the budget is named, and no part is returned · declared · example enabled · specs/consumers/context-bundle.oversized-member-named.sdp.md
  • spec:consumers.context-bundle.parts-cover-the-pack · A Pack too large for one bundle reads whole in parts · declared · example enabled · specs/consumers/context-bundle.parts-cover-the-pack.sdp.md
  • test:protocol.context-bundle-recipe · anchored · test anchor binding present · test/iteration-recipes.test.ts:772

Example space

  • budget · number · declared by a probe Pack of three members whose bundle exceeds the budget {budget} {sizes}
  • sizes · "while each member fits a part alone" | "and one member carries a blocking question longer than the budget" · declared by a probe Pack of three members whose bundle exceeds the budget {budget} {sizes}

Bound points

Examplebudgetsizes
spec:consumers.context-bundle.oversized-member-named10000"and one member carries a blocking question longer than the budget"
spec:consumers.context-bundle.parts-cover-the-pack10000"while each member fits a part alone"

Oracle binding: present · oracle:protocol.context-bundle-parts · test/self-hosting-bundle-parts.test.ts:55

Coverage

budget: 10000 · spec:consumers.context-bundle.oversized-member-named, spec:consumers.context-bundle.parts-cover-the-pack · not enumerable

sizes
Declared valueExamples
"while each member fits a part alone"spec:consumers.context-bundle.parts-cover-the-pack
"and one member carries a blocking question longer than the budget"spec:consumers.context-bundle.oversized-member-named

Unbound

  • budget: None
  • sizes: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.context-bundle
  • E8: refines, verifies · declared
The diagram as text
  • spec:consumers.context-bundle: A context bundle is composed per invocation within a stated budget · declared Spec
  • spec:consumers.context-bundle.oversized-member-named: A member larger than the budget is named, and no part is returned · declared Spec
  • spec:consumers.context-bundle.parts-cover-the-pack: A Pack too large for one bundle reads whole in parts · declared Spec
  • spec:consumers.agent-surface: Agents script a visible typed graph · declared Spec
  • impl:protocol.context-bundle-recipe: realizes the context bundle in the shipped recipe catalog · anchored code · test/iteration-recipes.test.ts:765
  • oracle:protocol.context-bundle-parts: oracle:protocol.context-bundle-parts · anchored oracle binding · test/self-hosting-bundle-parts.test.ts:55
  • test:protocol.context-bundle-recipe: test:protocol.context-bundle-recipe · anchored test binding · binding present · test/iteration-recipes.test.ts:772
  • test:protocol.context-bundle.oversized-member-named: test:protocol.context-bundle.oversized-member-named · anchored test binding · binding present · test/self-hosting-bundle-parts.test.ts:148
  • test:protocol.context-bundle.parts-cover-the-pack: test:protocol.context-bundle.parts-cover-the-pack · anchored test binding · binding present · test/self-hosting-bundle-parts.test.ts:115
  • spec:consumers.context-bundle refines spec:consumers.agent-surface · declared
  • spec:consumers.context-bundle.oversized-member-named refines spec:consumers.context-bundle · declared
  • spec:consumers.context-bundle.oversized-member-named verifies spec:consumers.context-bundle · declared
  • spec:consumers.context-bundle.parts-cover-the-pack refines spec:consumers.context-bundle · declared
  • spec:consumers.context-bundle.parts-cover-the-pack verifies spec:consumers.context-bundle · declared
  • impl:protocol.context-bundle-recipe satisfies spec:consumers.context-bundle · anchored
  • oracle:protocol.context-bundle-parts models spec:consumers.context-bundle · anchored
  • test:protocol.context-bundle-recipe verifies spec:consumers.context-bundle · anchored
  • test:protocol.context-bundle.oversized-member-named verifies spec:consumers.context-bundle.oversized-member-named · anchored
  • test:protocol.context-bundle.parts-cover-the-pack verifies spec:consumers.context-bundle.parts-cover-the-pack · 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.agent-front-door

    The front door is two entrances over one seam: the package exports the reader constructor, and the CLI carries a single evaluation sink that derives the graph in process, injects that same reader, and prints the body's pre-shaped return.

Runtime
  • impl:protocol.context-bundle-recipe · realizes the context bundle in the shipped recipe catalog · test/iteration-recipes.test.ts:765

    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.context-bundle
Relations of spec:consumers.context-bundlerefines · declareddependsOn · declareddecidedBy · declaredrefines · declaredverifies · declareddependsOn · declareddependsOn · declaredOutgoing refinesspec:consumers.agent-surfaceAgents script a visibletyped graph…consumers.agent-surfaceOutgoing dependsOnspec:consumers.agent-surface.design-recipesDesign work reads itsanswers from catalog recipes…consumers.agent-surface.design-recipesOutgoing decidedByspec:decisions.agent-front-doorThe agent front door is oneevaluation sink over theexported reader…decisions.agent-front-doorSubjectspec:consumers.context-bundleA context bundle iscomposed per invocationwithin a stated budget…consumers.context-bundleIncoming refinesspec:consumers.context-bundle.fold.Incoming.refines2 Incoming refines, folded…consumers.context-bundle.fold.Incoming.refinesIncoming dependsOnspec:consumers.delivery-session-on-rampDelivery sessions routework from current graphstate…consumers.delivery-session-on-rampspec:consumers.design-sliceA slice reads a Pack as onedesign, with thearchitecture it touches andwhat each member needs next…consumers.design-slice
The diagram as text
  • spec:consumers.agent-surface: Agents script a visible typed graph
  • spec:consumers.agent-surface.design-recipes: Design work reads its answers from catalog recipes
  • spec:consumers.context-bundle: A context bundle is composed per invocation within a stated budget
  • spec:consumers.context-bundle.oversized-member-named: A member larger than the budget is named, and no part is returned
  • spec:consumers.context-bundle.parts-cover-the-pack: A Pack too large for one bundle reads whole in parts
  • spec:consumers.delivery-session-on-ramp: Delivery sessions route work from current graph state
  • spec:consumers.design-slice: A slice reads a Pack as one design, with the architecture it touches and what each member needs next
  • spec:decisions.agent-front-door: The agent front door is one evaluation sink over the exported reader
  • spec:consumers.context-bundle decidedBy spec:decisions.agent-front-door · declared
  • spec:consumers.context-bundle dependsOn spec:consumers.agent-surface.design-recipes · declared
  • spec:consumers.context-bundle refines spec:consumers.agent-surface · declared
  • spec:consumers.delivery-session-on-ramp dependsOn spec:consumers.context-bundle · declared — the design loop composes each pass's reading material as a context bundle
  • spec:consumers.design-slice dependsOn spec:consumers.context-bundle · declared — a slice takes its scope as the bundle does, and builds a Spec list's boundary the same way
  • spec:consumers.context-bundle.oversized-member-named refines spec:consumers.context-bundle · declared
  • spec:consumers.context-bundle.parts-cover-the-pack refines spec:consumers.context-bundle · declared
  • spec:consumers.context-bundle.oversized-member-named verifies spec:consumers.context-bundle · declared
  • spec:consumers.context-bundle.parts-cover-the-pack verifies spec:consumers.context-bundle · 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 · stated ready, floor ready
  • dependsOn · spec:consumers.agent-surface.design-recipes · stated ready, floor ready
  • decidedBy · spec:decisions.agent-front-door · stated ready, floor ready

Rested on by

Distance 1

  • spec:consumers.context-bundle.oversized-member-named

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.context-bundle.oversized-member-named

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

  • spec:consumers.context-bundle.parts-cover-the-pack

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.context-bundle.parts-cover-the-pack

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

  • spec:consumers.delivery-session-on-ramp

    Implementing units

    • impl:protocol.delivery-session-on-ramp · test/skills.test.ts:83

    Referencing units

    None.

    Enabled verifiers: test:protocol.delivery-session-on-ramp

    Packs: pack:self-hosting-v1

  • spec:consumers.design-slice

    Implementing units

    • impl:protocol.design-slice-recipe · test/self-hosting-design-slice.test.ts:148

    Referencing units

    • impl:protocol.studio-slice-answer · src/projections/studio/slice-answer.ts:1

    Enabled verifiers: spec:consumers.design-slice.chain, spec:consumers.design-slice.component-absent, spec:consumers.design-slice.component-differing, spec:consumers.design-slice.component-matching, spec:consumers.design-slice.component-unreadable, spec:consumers.design-slice.component-unrelated, spec:consumers.design-slice.decision-backlink, spec:consumers.design-slice.dependency-cycle, spec:consumers.design-slice.folded-example, spec:consumers.design-slice.independent-example, spec:consumers.design-slice.outside-components, spec:consumers.design-slice.outside-holding, spec:consumers.design-slice.outside-satisfied, spec:consumers.design-slice.outside-unbound, test:protocol.design-slice

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

Distance 2

  • spec:consumers.design-slice.chain

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.chain

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

  • spec:consumers.design-slice.component-absent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-absent

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

  • spec:consumers.design-slice.component-differing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-differing

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

  • spec:consumers.design-slice.component-matching

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-matching

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

  • spec:consumers.design-slice.component-unreadable

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-unreadable

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

  • spec:consumers.design-slice.component-unrelated

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-unrelated

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

  • spec:consumers.design-slice.decision-backlink

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.decision-backlink

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

  • spec:consumers.design-slice.dependency-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.dependency-cycle

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

  • spec:consumers.design-slice.folded-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.folded-example

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

  • spec:consumers.design-slice.independent-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.independent-example

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

  • spec:consumers.design-slice.outside-components

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-components

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

  • spec:consumers.design-slice.outside-holding

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-holding

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

  • spec:consumers.design-slice.outside-satisfied

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-satisfied

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

  • spec:consumers.design-slice.outside-unbound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-unbound

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

  • spec:consumers.graph-first-planning

    Implementing units

    • impl:protocol.graph-first-planning · test/skills.test.ts:290

    Referencing units

    None.

    Enabled verifiers: test:protocol.graph-first-planning

    Packs: pack:self-hosting-v1

  • spec:consumers.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.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.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

Distance 4

  • spec:consumers.projections-model.roadmap-views

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:consumers.readiness-planner.cycle-shares-a-round

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.cycle-shares-a-round

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

  • spec:consumers.readiness-planner.decision-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.decision-first

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

  • spec:consumers.readiness-planner.dependency-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.dependency-order

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

  • spec:consumers.readiness-planner.owner-question-holds

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.owner-question-holds

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

  • spec:consumers.roadmap.blocking-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.blocking-part

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

  • spec:consumers.roadmap.buildable-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.buildable-part

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

  • spec:consumers.roadmap.built-work

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.built-work

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

  • spec:consumers.roadmap.design-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.design-part

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

  • spec:consumers.roadmap.drifting-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.drifting-part

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-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.roadmap.missing-evidence

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.missing-evidence

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

  • spec:consumers.roadmap.outside-parent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.outside-parent

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

  • spec:consumers.roadmap.statement-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.statement-order

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

  • spec:consumers.roadmap.statement-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.statement-part

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-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.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.upgrade-kit

    Implementing units

    • impl:protocol.upgrade-guide · test/upgrade-kit.test.ts:87

    Referencing units

    None.

    Enabled verifiers: test:protocol.upgrade-guide

    Packs: pack:adopter-speed-v1, pack:self-hosting-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 5

Distance 6

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingspec:decisions.agent-front-door
spec:decisions.agent-front-door · resolves
declaredNoneNone
dependsOn · outgoingspec:consumers.agent-surface.design-recipes
spec:consumers.agent-surface.design-recipes · resolves
declaredNoneNone
refines · outgoingspec:consumers.agent-surface
spec:consumers.agent-surface · resolves
declaredNoneNone
dependsOn · incomingspec:consumers.delivery-session-on-ramp
spec:consumers.delivery-session-on-ramp · resolves
declaredthe design loop composes each pass's reading material as a context bundleNone
dependsOn · incomingspec:consumers.design-slice
spec:consumers.design-slice · resolves
declareda slice takes its scope as the bundle does, and builds a Spec list's boundary the same wayNone
refines · incomingA member larger than the budget is named, and no part is returned
spec:consumers.context-bundle.oversized-member-named · resolves
declaredNoneNone
refines · incomingA Pack too large for one bundle reads whole in parts
spec:consumers.context-bundle.parts-cover-the-pack · resolves
declaredNoneNone
verifies · incomingA member larger than the budget is named, and no part is returned
spec:consumers.context-bundle.oversized-member-named · resolves
declaredNoneoversizedItem
verifies · incomingA Pack too large for one bundle reads whole in parts
spec:consumers.context-bundle.parts-cover-the-pack · resolves
declaredNoneparts, partBoundaries, partCuts, partHeader, sameParts

Bindings

Implementation binding: present

  • impl:protocol.context-bundle-recipe · realizes the context bundle in the shipped recipe catalog · test/iteration-recipes.test.ts:765 · role projection

Design reference: none

Verifier binding: present

  • spec:consumers.context-bundle.oversized-member-named · A member larger than the budget is named, and no part is returned · declared · specs/consumers/context-bundle.oversized-member-named.sdp.md · example enabled
  • spec:consumers.context-bundle.parts-cover-the-pack · A Pack too large for one bundle reads whole in parts · declared · specs/consumers/context-bundle.parts-cover-the-pack.sdp.md · example enabled
  • test:protocol.context-bundle-recipe · anchored · test/iteration-recipes.test.ts:772 · test anchor

Expected-outcome oracle: present

  • oracle:protocol.context-bundle-parts · test/self-hosting-bundle-parts.test.ts:55

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

47. A member larger than the budget is named, and no part is returned

spec:consumers.context-bundle.oversized-member-named

A member larger than the budget is named, and no part is returned

spec:consumers.context-bundle.oversized-member-namedExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/context-bundle.oversized-member-named.sdp.md

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

Intent
outcome
Execute the oversized-item rule on a probe Pack whose second member carries a blocking question longer than the budget, which no cut reduces.
assumptions
  • The world writes the probe Pack of the parts example, with short narratives, and gives its second member a blocking open question of 12,000 letters. It runs the shipped context bundle file through sdp q --json with the Pack, the budget and part: 1, and reads the budget-exceeded result's oversized items, joined by a comma and a space.
Behavior

Examples

Given a probe Pack of three members whose bundle exceeds the budget {budget: 10000} {sizes: "and one member carries a blocking question longer than the budget"}
When each part of its context bundle is requested in turn
Then the answer names the oversized items {oversizedItems: "spec:probe.two"}
Verification

Verifier bindings

  • test:protocol.context-bundle.oversized-member-named · anchored · test anchor binding present · test/self-hosting-bundle-parts.test.ts:148
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.context-bundle.oversized-member-named
The diagram as text
  • spec:consumers.context-bundle.oversized-member-named: A member larger than the budget is named, and no part is returned · declared Spec
  • spec:consumers.context-bundle: A context bundle is composed per invocation within a stated budget · declared Spec
  • test:protocol.context-bundle.oversized-member-named: test:protocol.context-bundle.oversized-member-named · anchored test binding · binding present · test/self-hosting-bundle-parts.test.ts:148
  • spec:consumers.context-bundle.oversized-member-named refines spec:consumers.context-bundle · declared
  • spec:consumers.context-bundle.oversized-member-named verifies spec:consumers.context-bundle · declared
  • test:protocol.context-bundle.oversized-member-named verifies spec:consumers.context-bundle.oversized-member-named · 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.context-bundle.oversized-member-named
  • E2: verifies · declared
The diagram as text
  • spec:consumers.context-bundle: A context bundle is composed per invocation within a stated budget
  • spec:consumers.context-bundle.oversized-member-named: A member larger than the budget is named, and no part is returned
  • spec:consumers.context-bundle.oversized-member-named refines spec:consumers.context-bundle · declared
  • spec:consumers.context-bundle.oversized-member-named verifies spec:consumers.context-bundle · 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 context bundle is composed per invocation within a stated budget
spec:consumers.context-bundle · resolves
declaredNoneNone
verifies · outgoingA context bundle is composed per invocation within a stated budget
spec:consumers.context-bundle · resolves
declaredNoneoversizedItem

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.context-bundle.oversized-member-named · anchored · test/self-hosting-bundle-parts.test.ts:148 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

48. A Pack too large for one bundle reads whole in parts

spec:consumers.context-bundle.parts-cover-the-pack

A Pack too large for one bundle reads whole in parts

spec:consumers.context-bundle.parts-cover-the-packExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/context-bundle.parts-cover-the-pack.sdp.md

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

Intent
outcome
Execute the parts rules on a probe Pack whose members together exceed the budget while each fits a part alone.
assumptions
  • The world writes a probe Pack of three story-altitude behavior Specs stating idea, each with an Intent outcome and a narrative of 6,000 letters, none related to a Spec outside the Pack. It runs the shipped context bundle file through sdp q --json with the Pack, the budget and part: 1, reads part.of, then asks for every other part in turn. It checks that each part's used is at most the budget, that no part's leftOut names a cut, that every part repeats the scope and the Pack, and that only part 1 carries a boundary.
Behavior

Examples

Given a probe Pack of three members whose bundle exceeds the budget {budget: 10000} {sizes: "while each member fits a part alone"}
When each part of its context bundle is requested in turn
Then the bundle comes in {parts: 3} parts, each within the budget
Then the members of the parts, in part order, are the Pack's members in authored order, each once: {complete: true}
Verification

Verifier bindings

  • test:protocol.context-bundle.parts-cover-the-pack · anchored · test anchor binding present · test/self-hosting-bundle-parts.test.ts:115
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.context-bundle.parts-cover-the-pack
The diagram as text
  • spec:consumers.context-bundle.parts-cover-the-pack: A Pack too large for one bundle reads whole in parts · declared Spec
  • spec:consumers.context-bundle: A context bundle is composed per invocation within a stated budget · declared Spec
  • test:protocol.context-bundle.parts-cover-the-pack: test:protocol.context-bundle.parts-cover-the-pack · anchored test binding · binding present · test/self-hosting-bundle-parts.test.ts:115
  • spec:consumers.context-bundle.parts-cover-the-pack refines spec:consumers.context-bundle · declared
  • spec:consumers.context-bundle.parts-cover-the-pack verifies spec:consumers.context-bundle · declared
  • test:protocol.context-bundle.parts-cover-the-pack verifies spec:consumers.context-bundle.parts-cover-the-pack · 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.context-bundle.parts-cover-the-pack
  • E2: verifies · declared
The diagram as text
  • spec:consumers.context-bundle: A context bundle is composed per invocation within a stated budget
  • spec:consumers.context-bundle.parts-cover-the-pack: A Pack too large for one bundle reads whole in parts
  • spec:consumers.context-bundle.parts-cover-the-pack refines spec:consumers.context-bundle · declared
  • spec:consumers.context-bundle.parts-cover-the-pack verifies spec:consumers.context-bundle · 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 context bundle is composed per invocation within a stated budget
spec:consumers.context-bundle · resolves
declaredNoneNone
verifies · outgoingA context bundle is composed per invocation within a stated budget
spec:consumers.context-bundle · resolves
declaredNoneparts, partBoundaries, partCuts, partHeader, sameParts

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.context-bundle.parts-cover-the-pack · anchored · test/self-hosting-bundle-parts.test.ts:115 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

49. The readiness planner orders the statements a person can make

spec:consumers.readiness-planner

The readiness planner orders the statements a person can make

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

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

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

Findings: no errors, no warnings

specs/consumers/readiness-planner.sdp.md

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

A corpus designed ahead of its code reaches the point where its floors allow far more than its authors have stated, and every statement waits on one person. The statements rest on each other: a Spec reviewed before what it rests on may need review again once that changes. The planner lists the waiting statements so that a Spec others rest on comes first, and lists apart the open questions only the owner settles, with what each holds. It states nothing. A rung stays a person's edit of a carrier, and the order is advice a person may set aside.

The order reads the four relations the ready floor reads. One pairing would make every decision rest on the Spec it shapes: a decision refines the Spec whose question it settles, and that Spec names the decision through decidedBy. A parent that names its own part through dependsOn or constrainedBy pairs the same way. In each pair the named Spec is what the other rests on, so the refines half orders nothing.

Intent
actor
The owner of a corpus, or an agent preparing the owner's review, with more waiting statements than a session can make.
problem
No page orders the statements a person may make, so the owner either states rungs in an order that has to be undone or rebuilds the dependency order by hand with promotion preflight and dependency footing.
outcome
Order the Specs whose floor allows a higher rung than their author stated, the Specs they rest on first, so a person makes those statements in an order that holds while tooling states nothing.
Behavior
rule.waiting line 32 · specs/consumers/readiness-planner.sdp.md:32
A waiting statement is a Spec whose floor reaches a rung above the rung it states; the queue lists every such Spec once, with the rung its floor allows, and no other Spec.

spec:consumers.readiness-planner.dependency-order · enabled, spec:consumers.readiness-planner.owner-question-holds · enabled

rule.restsOn line 33 · specs/consumers/readiness-planner.sdp.md:33
A waiting Spec rests on each other waiting Spec it names by dependsOn, constrainedBy, decidedBy or refines, the four relations the ready floor reads; no Spec rests on itself.

spec:consumers.readiness-planner.dependency-order · enabled

rule.refinesYields line 34 · specs/consumers/readiness-planner.sdp.md:34
A refines from a Spec to a Spec that names it by dependsOn, constrainedBy or decidedBy orders nothing, so a decision comes before the Spec it shapes and a part before the parent that rests on it.

spec:consumers.readiness-planner.decision-first · enabled

rule.rounds line 35 · specs/consumers/readiness-planner.sdp.md:35
A waiting Spec that rests on no waiting Spec is in round 1, the statements a person can make first; any other waiting Spec is in the round after the latest round among the waiting Specs it rests on.

spec:consumers.readiness-planner.decision-first · enabled, spec:consumers.readiness-planner.dependency-order · enabled

rule.order line 36 · specs/consumers/readiness-planner.sdp.md:36
The queue lists the waiting Specs by round, and within a round by id in code-unit order, numbering each by its place, so each comes after every waiting Spec it rests on unless the two share a cycle.

spec:consumers.readiness-planner.cycle-shares-a-round · enabled, spec:consumers.readiness-planner.dependency-order · enabled

rule.cycles line 37 · specs/consumers/readiness-planner.sdp.md:37
Waiting Specs that reach each other through those rests-on links form a cycle; its members share one round, the round after the latest round among the waiting Specs outside the cycle that any member rests on, or round 1 when there is none, and the planner lists each cycle with one closed path through it and refuses nothing.

spec:consumers.readiness-planner.cycle-shares-a-round · enabled

rule.ownerQuestions line 38 · specs/consumers/readiness-planner.sdp.md:38
Apart from the statements, the planner lists each open question whose decider names the person the caller gives, the owner by default, blocking questions first, each with the Specs it holds: a blocking question holds its own Spec below defined, and it holds every Spec whose ready the typed-dependency clause refuses because the question's own Spec states below defined.

spec:consumers.readiness-planner.owner-question-holds · enabled

rule.undecided line 39 · specs/consumers/readiness-planner.sdp.md:39
The planner counts the open questions that carry no decider, and how many of them block, so an empty list of the owner's questions never reads as nothing waiting on the owner.

no example exercises it

rule.statesNothing line 40 · specs/consumers/readiness-planner.sdp.md:40
The planner is a catalog recipe that reads the graph and states, records and gates nothing; each statement it lists stays a person's edit of the carrier, and a Spec stated out of its order is never a finding.

no example exercises it

0 unkeyed rules.

Verifying examples

Waiting Specs that rest on each other share a round and report a cycle · spec:consumers.readiness-planner.cycle-shares-a-round · ready floor ready

Executable Spec

Given a probe corpus in which {corpus: "two waiting Specs depend on each other"}
When the statement queue runs over the probe corpus
Then the queue lists {queue: "spec:probe.a, spec:probe.b"} in that order
Then round 1 holds {firstRound: "spec:probe.a, spec:probe.b"}
Then the queue reports {cycles: 1} cycles

Open example

A waiting decision comes before the Spec it shapes · spec:consumers.readiness-planner.decision-first · ready floor ready

Executable Spec

Given a probe corpus in which {corpus: "a waiting Spec names a waiting decision that refines it"}
When the statement queue runs over the probe corpus
Then the queue lists {queue: "spec:probe.decision, spec:probe.shaped"} in that order
Then round 1 holds {firstRound: "spec:probe.decision"}
Then the queue reports {cycles: 0} cycles

Open example

The Spec another rests on comes first in the queue · spec:consumers.readiness-planner.dependency-order · ready floor ready

Executable Spec

Given a probe corpus in which {corpus: "one waiting Spec depends on another"}
When the statement queue runs over the probe corpus
Then the queue lists {queue: "spec:probe.base, spec:probe.dependent"} in that order
Then round 1 holds {firstRound: "spec:probe.base"}
Then the queue reports {cycles: 0} cycles

Open example

An owner's blocking question lists the Specs it holds · spec:consumers.readiness-planner.owner-question-holds · ready floor ready

Executable Spec

Given a probe corpus in which {corpus: "a Spec carries a blocking question its owner decides and another Spec depends on it"}
When the statement queue runs over the probe corpus
Then the queue lists {queue: ""} in that order
Then the owner's questions hold {held: "spec:probe.subject, spec:probe.dependent"}

Open example

Example space

Given a probe corpus in which {corpus:"one waiting Spec depends on another"|"a waiting Spec names a waiting decision that refines it"|"two waiting Specs depend on each other"|"a Spec carries a blocking question its owner decides and another Spec depends on it"}
When the statement queue runs over the probe corpus
Then the queue lists {queue:string} in that order
Then round 1 holds {firstRound:string}
Then the queue reports {cycles:number} cycles
Then the owner's questions hold {held:string}
Design
queueRecipe line 43 · specs/consumers/readiness-planner.sdp.md:43
recipe 46, the statement queue, takes params.decider, a token on the decider field's grammar, "owner" by default; another value returns { diagnostics: [{ parameter, problem }] } and no queue.
queueAnswer line 44 · specs/consumers/readiness-planner.sdp.md:44
{ decider, totals: { waiting, firstRound, rounds, cycles, questions, blockingQuestions, withoutDecider, blockingWithoutDecider }, statements, cycles, questions }, where firstRound counts the round 1 statements, rounds the highest round, questions and blockingQuestions the listed questions, and the last two the open questions that carry no decider.

no citation recorded

statementRow line 45 · specs/consumers/readiness-planner.sdp.md:45
{ place, round, id, title, specKind, packs, statedReadiness, floorReached, restsOn }, where place counts from 1 in queue order, packs lists the Spec's Pack ids in code-unit order, floorReached is the rung its floor allows, and restsOn lists the waiting Specs it rests on, sorted by id.

no citation recorded

cycleRow line 46 · specs/consumers/readiness-planner.sdp.md:46
{ members, cycle }, members sorted by id and cycle the shortest closed path from the first member through the members, found by a breadth-first walk over the ordering relations with targets in code-unit order, as dependency cycles finds its path; rows sort by first member.

no citation recorded

questionRow line 47 · specs/consumers/readiness-planner.sdp.md:47
{ address, spec, index, question, blocking, decider, holds }, where address is the question's entry address or null when it carries no key, index its authored position from 0, and holds its own Spec followed by the Specs it holds below ready, in code-unit order, empty for a non-blocking question.

no citation recorded

questionOrder line 48 · specs/consumers/readiness-planner.sdp.md:48
blocking questions first, then the question that holds more Specs first, then by Spec id and authored position.
Verification

Verifier bindings

Example space

  • corpus · "one waiting Spec depends on another" | "a waiting Spec names a waiting decision that refines it" | "two waiting Specs depend on each other" | "a Spec carries a blocking question its owner decides and another Spec depends on it" · declared by a probe corpus in which {corpus}

Bound points

Examplecorpus
spec:consumers.readiness-planner.cycle-shares-a-round"two waiting Specs depend on each other"
spec:consumers.readiness-planner.decision-first"a waiting Spec names a waiting decision that refines it"
spec:consumers.readiness-planner.dependency-order"one waiting Spec depends on another"
spec:consumers.readiness-planner.owner-question-holds"a Spec carries a blocking question its owner decides and another Spec depends on it"

Oracle binding: present · oracle:protocol.readiness-planner · test/self-hosting-readiness-planner.test.ts:81

Coverage

corpus
Declared valueExamples
"one waiting Spec depends on another"spec:consumers.readiness-planner.dependency-order
"a waiting Spec names a waiting decision that refines it"spec:consumers.readiness-planner.decision-first
"two waiting Specs depend on each other"spec:consumers.readiness-planner.cycle-shares-a-round
"a Spec carries a blocking question its owner decides and another Spec depends on it"spec:consumers.readiness-planner.owner-question-holds

Unbound

  • corpus: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.readiness-planner
Requirement drawing for spec:consumers.readiness-plannerverifies · anchoredrefines, verifies · declaredsatisfies · anchoredmodels · anchoredrefines · declaredIntended Specsspec:consumers.readiness-plannerThe readiness plannerorders the statements aperson can make…consumers.readiness-plannerdeclared SpecDeclared verifying examples4 verifying examples · declared, folded4 verifying examples ·declaredSatisfying or referencingunitsimpl:protocol.statement-queue-reciperealizes the statementqueue in the shipped recipecatalog…protocol.statement-queue-recipeanchored codeTest or oracle bindings4 test bindings · anchored, folded4 test bindings · anchoredoracle:protocol.readiness-planneroracle:protocol.readiness-planner…protocol.readiness-planneranchored oracle bindingOutside the selected setspec:consumers.graph-first-planningThe next body of work isplanned from the graph, notfrom a prose index…consumers.graph-first-planningdeclared Spec
The diagram as text
  • spec:consumers.readiness-planner: The readiness planner orders the statements a person can make · declared Spec
  • spec:consumers.readiness-planner.cycle-shares-a-round: Waiting Specs that rest on each other share a round and report a cycle · declared Spec
  • spec:consumers.readiness-planner.decision-first: A waiting decision comes before the Spec it shapes · declared Spec
  • spec:consumers.readiness-planner.dependency-order: The Spec another rests on comes first in the queue · declared Spec
  • spec:consumers.readiness-planner.owner-question-holds: An owner's blocking question lists the Specs it holds · declared Spec
  • spec:consumers.graph-first-planning: The next body of work is planned from the graph, not from a prose index · declared Spec
  • impl:protocol.statement-queue-recipe: realizes the statement queue in the shipped recipe catalog · anchored code · test/self-hosting-readiness-planner.test.ts:74
  • oracle:protocol.readiness-planner: oracle:protocol.readiness-planner · anchored oracle binding · test/self-hosting-readiness-planner.test.ts:81
  • test:protocol.readiness-planner.cycle-shares-a-round: test:protocol.readiness-planner.cycle-shares-a-round · anchored test binding · binding present · test/self-hosting-readiness-planner.test.ts:236
  • test:protocol.readiness-planner.decision-first: test:protocol.readiness-planner.decision-first · anchored test binding · binding present · test/self-hosting-readiness-planner.test.ts:220
  • test:protocol.readiness-planner.dependency-order: test:protocol.readiness-planner.dependency-order · anchored test binding · binding present · test/self-hosting-readiness-planner.test.ts:204
  • test:protocol.readiness-planner.owner-question-holds: test:protocol.readiness-planner.owner-question-holds · anchored test binding · binding present · test/self-hosting-readiness-planner.test.ts:252
  • spec:consumers.readiness-planner refines spec:consumers.graph-first-planning · declared — the planner is an advisory planning recipe that orders nothing the Protocol enforces
  • spec:consumers.readiness-planner.cycle-shares-a-round refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.cycle-shares-a-round verifies spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.decision-first refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.decision-first verifies spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.dependency-order refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.dependency-order verifies spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.owner-question-holds refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.owner-question-holds verifies spec:consumers.readiness-planner · declared
  • impl:protocol.statement-queue-recipe satisfies spec:consumers.readiness-planner · anchored
  • oracle:protocol.readiness-planner models spec:consumers.readiness-planner · anchored
  • test:protocol.readiness-planner.cycle-shares-a-round verifies spec:consumers.readiness-planner.cycle-shares-a-round · anchored
  • test:protocol.readiness-planner.decision-first verifies spec:consumers.readiness-planner.decision-first · anchored
  • test:protocol.readiness-planner.dependency-order verifies spec:consumers.readiness-planner.dependency-order · anchored
  • test:protocol.readiness-planner.owner-question-holds verifies spec:consumers.readiness-planner.owner-question-holds · 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
  • impl:protocol.statement-queue-recipe · realizes the statement queue in the shipped recipe catalog · test/self-hosting-readiness-planner.test.ts:74

    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.readiness-planner
Relations of spec:consumers.readiness-plannerdependsOn · declaredrefines · declareddependsOn · declaredrefines · declaredverifies · declareddependsOn · declareddependsOn · declaredOutgoing refinesspec:consumers.graph-first-planningThe next body of work isplanned from the graph, notfrom a prose index…graph-first-planningOutgoing dependsOnspec:consumers.readiness-planner.fold.Outgoing.dependsOn4 Outgoing dependsOn, folded…readiness-planner.fold.Outgoing.dependsOnSubjectspec:consumers.readiness-plannerThe readiness plannerorders the statements aperson can make…readiness-plannerIncoming refinesspec:consumers.readiness-planner.fold.Incoming.refines4 Incoming refines, folded…readiness-planner.fold.Incoming.refinesIncoming dependsOnspec:consumers.design-sliceA slice reads a Pack as onedesign, with thearchitecture it touches andwhat each member needs next…design-slicespec:consumers.roadmapA roadmap orders the nextbodies of work, and thegraph says what each stillneeds…roadmapspec:consumers.spec-studio.owner-queueThe owner queue page ordersthe statements andquestions only a person cansettle…spec-studio.owner-queue
The diagram as text
  • spec:consumers.agent-surface.address-and-cycle-recipes: Address resolution and dependency cycles stay executable graph recipes
  • spec:consumers.design-slice: A slice reads a Pack as one design, with the architecture it touches and what each member needs next
  • spec:consumers.graph-first-planning: The next body of work is planned from the graph, not from a prose index
  • spec:consumers.readiness-planner: The readiness planner orders the statements a person can make
  • spec:consumers.readiness-planner.cycle-shares-a-round: Waiting Specs that rest on each other share a round and report a cycle
  • spec:consumers.readiness-planner.decision-first: A waiting decision comes before the Spec it shapes
  • spec:consumers.readiness-planner.dependency-order: The Spec another rests on comes first in the queue
  • spec:consumers.readiness-planner.owner-question-holds: An owner's blocking question lists the Specs it holds
  • spec:consumers.roadmap: A roadmap orders the next bodies of work, and the graph says what each still needs
  • spec:consumers.spec-studio.owner-queue: The owner queue page orders the statements and questions only a person can settle
  • spec:model.open-question-fields: An open question may name who decides it, its links, a provisional reading and a re-entry trigger
  • spec:validation.next-rung-floor: The floor names what blocks the floor's next rung
  • spec:validation.typed-dependency-floor: A ready Spec rests only on settled dependencies
  • spec:consumers.readiness-planner dependsOn spec:consumers.agent-surface.address-and-cycle-recipes · declared — a cycle among waiting Specs reports in the shape dependency cycles reports
  • spec:consumers.readiness-planner dependsOn spec:model.open-question-fields · declared — the owner's questions are selected by their decider field
  • spec:consumers.readiness-planner dependsOn spec:validation.next-rung-floor · declared — the rung each Spec's floor allows, and the targets that hold a rung, come from the one floor evaluator
  • spec:consumers.readiness-planner dependsOn spec:validation.typed-dependency-floor · declared — the order reads the four typed relations the ready floor reads
  • spec:consumers.readiness-planner refines spec:consumers.graph-first-planning · declared — the planner is an advisory planning recipe that orders nothing the Protocol enforces
  • spec:consumers.design-slice dependsOn spec:consumers.readiness-planner · declared — members rest on each other as the statement queue reads the four typed relations, and a cycle reports in its shape
  • spec:consumers.roadmap dependsOn spec:consumers.readiness-planner · declared — the statements waiting on a person follow the statement queue's order
  • spec:consumers.spec-studio.owner-queue dependsOn spec:consumers.readiness-planner · declared — the page renders the statement queue the planner orders
  • spec:consumers.readiness-planner.cycle-shares-a-round refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.decision-first refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.dependency-order refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.owner-question-holds refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.cycle-shares-a-round verifies spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.decision-first verifies spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.dependency-order verifies spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.owner-question-holds verifies spec:consumers.readiness-planner · 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.graph-first-planning · stated ready, floor ready
  • dependsOn · spec:consumers.agent-surface.address-and-cycle-recipes · stated ready, floor ready
  • dependsOn · spec:model.open-question-fields · stated ready, floor ready
  • dependsOn · spec:validation.next-rung-floor · stated ready, floor ready
  • dependsOn · spec:validation.typed-dependency-floor · stated ready, floor ready

Rested on by

Distance 1

  • spec:consumers.design-slice

    Implementing units

    • impl:protocol.design-slice-recipe · test/self-hosting-design-slice.test.ts:148

    Referencing units

    • impl:protocol.studio-slice-answer · src/projections/studio/slice-answer.ts:1

    Enabled verifiers: spec:consumers.design-slice.chain, spec:consumers.design-slice.component-absent, spec:consumers.design-slice.component-differing, spec:consumers.design-slice.component-matching, spec:consumers.design-slice.component-unreadable, spec:consumers.design-slice.component-unrelated, spec:consumers.design-slice.decision-backlink, spec:consumers.design-slice.dependency-cycle, spec:consumers.design-slice.folded-example, spec:consumers.design-slice.independent-example, spec:consumers.design-slice.outside-components, spec:consumers.design-slice.outside-holding, spec:consumers.design-slice.outside-satisfied, spec:consumers.design-slice.outside-unbound, test:protocol.design-slice

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

  • spec:consumers.readiness-planner.cycle-shares-a-round

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.cycle-shares-a-round

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

  • spec:consumers.readiness-planner.decision-first

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.decision-first

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

  • spec:consumers.readiness-planner.dependency-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.dependency-order

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

  • spec:consumers.readiness-planner.owner-question-holds

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.readiness-planner.owner-question-holds

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

  • spec:consumers.roadmap

    Implementing units

    • impl:protocol.roadmap-recipe · test/roadmap.test.ts:20

    Referencing units

    None.

    Enabled verifiers: spec:consumers.roadmap.blocking-part, spec:consumers.roadmap.buildable-part, spec:consumers.roadmap.built-work, spec:consumers.roadmap.design-part, spec:consumers.roadmap.drifting-part, spec:consumers.roadmap.missing-evidence, spec:consumers.roadmap.outside-parent, spec:consumers.roadmap.statement-order, spec:consumers.roadmap.statement-part, test:protocol.roadmap-recipe

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-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

Distance 2

  • spec:consumers.design-slice.chain

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.chain

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

  • spec:consumers.design-slice.component-absent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-absent

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

  • spec:consumers.design-slice.component-differing

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-differing

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

  • spec:consumers.design-slice.component-matching

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-matching

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

  • spec:consumers.design-slice.component-unreadable

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-unreadable

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

  • spec:consumers.design-slice.component-unrelated

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.component-unrelated

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

  • spec:consumers.design-slice.decision-backlink

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.decision-backlink

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

  • spec:consumers.design-slice.dependency-cycle

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.dependency-cycle

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

  • spec:consumers.design-slice.folded-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.folded-example

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

  • spec:consumers.design-slice.independent-example

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.independent-example

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

  • spec:consumers.design-slice.outside-components

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-components

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

  • spec:consumers.design-slice.outside-holding

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-holding

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

  • spec:consumers.design-slice.outside-satisfied

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-satisfied

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

  • spec:consumers.design-slice.outside-unbound

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.design-slice.outside-unbound

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

  • spec:consumers.projections-model.roadmap-views

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: None

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

  • spec:consumers.roadmap.blocking-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.blocking-part

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

  • spec:consumers.roadmap.buildable-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.buildable-part

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

  • spec:consumers.roadmap.built-work

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.built-work

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

  • spec:consumers.roadmap.design-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.design-part

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

  • spec:consumers.roadmap.drifting-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.drifting-part

    Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-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.roadmap.missing-evidence

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.missing-evidence

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

  • spec:consumers.roadmap.outside-parent

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.outside-parent

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

  • spec:consumers.roadmap.statement-order

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.statement-order

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

  • spec:consumers.roadmap.statement-part

    Implementing units

    None.

    Referencing units

    None.

    Enabled verifiers: test:protocol.roadmap.statement-part

    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.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.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.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.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.upgrade-kit

    Implementing units

    • impl:protocol.upgrade-guide · test/upgrade-kit.test.ts:87

    Referencing units

    None.

    Enabled verifiers: test:protocol.upgrade-guide

    Packs: pack:adopter-speed-v1, pack:self-hosting-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 3

Distance 4

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingAddress resolution and dependency cycles stay executable graph recipes
spec:consumers.agent-surface.address-and-cycle-recipes · resolves
declareda cycle among waiting Specs reports in the shape dependency cycles reportsNone
dependsOn · outgoingspec:model.open-question-fields
spec:model.open-question-fields · resolves
declaredthe owner's questions are selected by their decider fieldNone
dependsOn · outgoingspec:validation.next-rung-floor
spec:validation.next-rung-floor · resolves
declaredthe rung each Spec's floor allows, and the targets that hold a rung, come from the one floor evaluatorNone
dependsOn · outgoingspec:validation.typed-dependency-floor
spec:validation.typed-dependency-floor · resolves
declaredthe order reads the four typed relations the ready floor readsNone
refines · outgoingspec:consumers.graph-first-planning
spec:consumers.graph-first-planning · resolves
declaredthe planner is an advisory planning recipe that orders nothing the Protocol enforcesNone
dependsOn · incomingspec:consumers.design-slice
spec:consumers.design-slice · resolves
declaredmembers rest on each other as the statement queue reads the four typed relations, and a cycle reports in its shapeNone
dependsOn · incomingspec:consumers.roadmap
spec:consumers.roadmap · resolves
declaredthe statements waiting on a person follow the statement queue's orderNone
dependsOn · incomingspec:consumers.spec-studio.owner-queue
spec:consumers.spec-studio.owner-queue · resolves
declaredthe page renders the statement queue the planner ordersNone
refines · incomingWaiting Specs that rest on each other share a round and report a cycle
spec:consumers.readiness-planner.cycle-shares-a-round · resolves
declaredNoneNone
refines · incomingA waiting decision comes before the Spec it shapes
spec:consumers.readiness-planner.decision-first · resolves
declaredNoneNone
refines · incomingThe Spec another rests on comes first in the queue
spec:consumers.readiness-planner.dependency-order · resolves
declaredNoneNone
refines · incomingAn owner's blocking question lists the Specs it holds
spec:consumers.readiness-planner.owner-question-holds · resolves
declaredNoneNone
verifies · incomingWaiting Specs that rest on each other share a round and report a cycle
spec:consumers.readiness-planner.cycle-shares-a-round · resolves
declaredNonecycles, order
verifies · incomingA waiting decision comes before the Spec it shapes
spec:consumers.readiness-planner.decision-first · resolves
declaredNonerefinesYields, rounds
verifies · incomingThe Spec another rests on comes first in the queue
spec:consumers.readiness-planner.dependency-order · resolves
declaredNonewaiting, restsOn, rounds, order
verifies · incomingAn owner's blocking question lists the Specs it holds
spec:consumers.readiness-planner.owner-question-holds · resolves
declaredNoneownerQuestions, waiting

Bindings

Implementation binding: present

  • impl:protocol.statement-queue-recipe · realizes the statement queue in the shipped recipe catalog · test/self-hosting-readiness-planner.test.ts:74 · role projection

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.readiness-planner · test/self-hosting-readiness-planner.test.ts:81

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

50. Waiting Specs that rest on each other share a round and report a cycle

spec:consumers.readiness-planner.cycle-shares-a-round

Waiting Specs that rest on each other share a round and report a cycle

spec:consumers.readiness-planner.cycle-shares-a-roundExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/readiness-planner.cycle-shares-a-round.sdp.md

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

Intent
outcome
Execute the cycle rule on two waiting Specs that depend on each other.
assumptions
  • The world writes a probe corpus of two story-altitude behavior Specs, each stating defined with an Intent outcome and one rule and each declaring dependsOn on the other, so both floors reach ready. The Specs carry the ids the queue names, and the world reads the queue as the dependency-order example does.
Behavior

Examples

Given a probe corpus in which {corpus: "two waiting Specs depend on each other"}
When the statement queue runs over the probe corpus
Then the queue lists {queue: "spec:probe.a, spec:probe.b"} in that order
Then round 1 holds {firstRound: "spec:probe.a, spec:probe.b"}
Then the queue reports {cycles: 1} cycles
Verification

Verifier bindings

  • test:protocol.readiness-planner.cycle-shares-a-round · anchored · test anchor binding present · test/self-hosting-readiness-planner.test.ts:236
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.readiness-planner.cycle-shares-a-round
The diagram as text
  • spec:consumers.readiness-planner.cycle-shares-a-round: Waiting Specs that rest on each other share a round and report a cycle · declared Spec
  • spec:consumers.readiness-planner: The readiness planner orders the statements a person can make · declared Spec
  • test:protocol.readiness-planner.cycle-shares-a-round: test:protocol.readiness-planner.cycle-shares-a-round · anchored test binding · binding present · test/self-hosting-readiness-planner.test.ts:236
  • spec:consumers.readiness-planner.cycle-shares-a-round refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.cycle-shares-a-round verifies spec:consumers.readiness-planner · declared
  • test:protocol.readiness-planner.cycle-shares-a-round verifies spec:consumers.readiness-planner.cycle-shares-a-round · 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.readiness-planner.cycle-shares-a-round
  • E2: verifies · declared
The diagram as text
  • spec:consumers.readiness-planner: The readiness planner orders the statements a person can make
  • spec:consumers.readiness-planner.cycle-shares-a-round: Waiting Specs that rest on each other share a round and report a cycle
  • spec:consumers.readiness-planner.cycle-shares-a-round refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.cycle-shares-a-round verifies spec:consumers.readiness-planner · 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 readiness planner orders the statements a person can make
spec:consumers.readiness-planner · resolves
declaredNoneNone
verifies · outgoingThe readiness planner orders the statements a person can make
spec:consumers.readiness-planner · resolves
declaredNonecycles, order

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.readiness-planner.cycle-shares-a-round · anchored · test/self-hosting-readiness-planner.test.ts:236 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

51. A waiting decision comes before the Spec it shapes

spec:consumers.readiness-planner.decision-first

A waiting decision comes before the Spec it shapes

spec:consumers.readiness-planner.decision-firstExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/readiness-planner.decision-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 yielding rule on a waiting decision that refines the waiting Spec naming it through decidedBy.
assumptions
  • The world writes a probe corpus of a story-altitude behavior Spec stating defined with an Intent outcome and one rule, and a decision stating defined with its context and choice. The decision refines the behavior Spec, and the behavior Spec names the decision through decidedBy, so both floors reach ready. The Specs carry the ids the queue names, and the world reads the queue as the dependency-order example does.
Behavior

Examples

Given a probe corpus in which {corpus: "a waiting Spec names a waiting decision that refines it"}
When the statement queue runs over the probe corpus
Then the queue lists {queue: "spec:probe.decision, spec:probe.shaped"} in that order
Then round 1 holds {firstRound: "spec:probe.decision"}
Then the queue reports {cycles: 0} cycles
Verification

Verifier bindings

  • test:protocol.readiness-planner.decision-first · anchored · test anchor binding present · test/self-hosting-readiness-planner.test.ts:220
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.readiness-planner.decision-first
The diagram as text
  • spec:consumers.readiness-planner.decision-first: A waiting decision comes before the Spec it shapes · declared Spec
  • spec:consumers.readiness-planner: The readiness planner orders the statements a person can make · declared Spec
  • test:protocol.readiness-planner.decision-first: test:protocol.readiness-planner.decision-first · anchored test binding · binding present · test/self-hosting-readiness-planner.test.ts:220
  • spec:consumers.readiness-planner.decision-first refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.decision-first verifies spec:consumers.readiness-planner · declared
  • test:protocol.readiness-planner.decision-first verifies spec:consumers.readiness-planner.decision-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.readiness-planner.decision-first
  • E2: verifies · declared
The diagram as text
  • spec:consumers.readiness-planner: The readiness planner orders the statements a person can make
  • spec:consumers.readiness-planner.decision-first: A waiting decision comes before the Spec it shapes
  • spec:consumers.readiness-planner.decision-first refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.decision-first verifies spec:consumers.readiness-planner · 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 readiness planner orders the statements a person can make
spec:consumers.readiness-planner · resolves
declaredNoneNone
verifies · outgoingThe readiness planner orders the statements a person can make
spec:consumers.readiness-planner · resolves
declaredNonerefinesYields, rounds

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.readiness-planner.decision-first · anchored · test/self-hosting-readiness-planner.test.ts:220 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

52. The Spec another rests on comes first in the queue

spec:consumers.readiness-planner.dependency-order

The Spec another rests on comes first in the queue

spec:consumers.readiness-planner.dependency-orderExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/readiness-planner.dependency-order.sdp.md

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

Intent
outcome
Execute the order on two waiting Specs, one depending on the other.
assumptions
  • The world writes a probe corpus of two story-altitude behavior Specs, a base and a dependent, each stating defined with an Intent outcome and one rule, plus a decision stating ready with its context and choice. The decision refines the base, the base names it through decidedBy, and the dependent declares dependsOn on the base, so both behavior Specs' floors reach ready and the decision waits on nothing. The Specs carry the ids the queue names. The world runs the shipped statement queue file through sdp q --json on the probe root; a list reads as ids joined by a comma and a space.
Behavior

Examples

Given a probe corpus in which {corpus: "one waiting Spec depends on another"}
When the statement queue runs over the probe corpus
Then the queue lists {queue: "spec:probe.base, spec:probe.dependent"} in that order
Then round 1 holds {firstRound: "spec:probe.base"}
Then the queue reports {cycles: 0} cycles
Verification

Verifier bindings

  • test:protocol.readiness-planner.dependency-order · anchored · test anchor binding present · test/self-hosting-readiness-planner.test.ts:204
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.readiness-planner.dependency-order
The diagram as text
  • spec:consumers.readiness-planner.dependency-order: The Spec another rests on comes first in the queue · declared Spec
  • spec:consumers.readiness-planner: The readiness planner orders the statements a person can make · declared Spec
  • test:protocol.readiness-planner.dependency-order: test:protocol.readiness-planner.dependency-order · anchored test binding · binding present · test/self-hosting-readiness-planner.test.ts:204
  • spec:consumers.readiness-planner.dependency-order refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.dependency-order verifies spec:consumers.readiness-planner · declared
  • test:protocol.readiness-planner.dependency-order verifies spec:consumers.readiness-planner.dependency-order · 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.readiness-planner.dependency-order
  • E2: verifies · declared
The diagram as text
  • spec:consumers.readiness-planner: The readiness planner orders the statements a person can make
  • spec:consumers.readiness-planner.dependency-order: The Spec another rests on comes first in the queue
  • spec:consumers.readiness-planner.dependency-order refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.dependency-order verifies spec:consumers.readiness-planner · 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 readiness planner orders the statements a person can make
spec:consumers.readiness-planner · resolves
declaredNoneNone
verifies · outgoingThe readiness planner orders the statements a person can make
spec:consumers.readiness-planner · resolves
declaredNonewaiting, restsOn, rounds, order

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.readiness-planner.dependency-order · anchored · test/self-hosting-readiness-planner.test.ts:204 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

53. An owner's blocking question lists the Specs it holds

spec:consumers.readiness-planner.owner-question-holds

An owner's blocking question lists the Specs it holds

spec:consumers.readiness-planner.owner-question-holdsExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/readiness-planner.owner-question-holds.sdp.md

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

Intent
outcome
Execute the owner's-question list on a blocking question that holds its own Spec and a Spec depending on it.
assumptions
  • The world writes a probe corpus of two story-altitude behavior Specs, each with an Intent outcome and one rule. The subject states scoped, carries one blocking open question whose decider is owner, and refines the dependent; the dependent states defined and declares dependsOn on the subject. Neither floor reaches above its stated rung, so the queue is empty. The Specs carry the ids the list names, and the world reads the queue as the dependency-order example does, the held Specs being the one listed question's holds.
Behavior

Examples

Given a probe corpus in which {corpus: "a Spec carries a blocking question its owner decides and another Spec depends on it"}
When the statement queue runs over the probe corpus
Then the queue lists {queue: ""} in that order
Then the owner's questions hold {held: "spec:probe.subject, spec:probe.dependent"}
Verification

Verifier bindings

  • test:protocol.readiness-planner.owner-question-holds · anchored · test anchor binding present · test/self-hosting-readiness-planner.test.ts:252
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.readiness-planner.owner-question-holds
The diagram as text
  • spec:consumers.readiness-planner.owner-question-holds: An owner's blocking question lists the Specs it holds · declared Spec
  • spec:consumers.readiness-planner: The readiness planner orders the statements a person can make · declared Spec
  • test:protocol.readiness-planner.owner-question-holds: test:protocol.readiness-planner.owner-question-holds · anchored test binding · binding present · test/self-hosting-readiness-planner.test.ts:252
  • spec:consumers.readiness-planner.owner-question-holds refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.owner-question-holds verifies spec:consumers.readiness-planner · declared
  • test:protocol.readiness-planner.owner-question-holds verifies spec:consumers.readiness-planner.owner-question-holds · 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.readiness-planner.owner-question-holds
  • E2: verifies · declared
The diagram as text
  • spec:consumers.readiness-planner: The readiness planner orders the statements a person can make
  • spec:consumers.readiness-planner.owner-question-holds: An owner's blocking question lists the Specs it holds
  • spec:consumers.readiness-planner.owner-question-holds refines spec:consumers.readiness-planner · declared
  • spec:consumers.readiness-planner.owner-question-holds verifies spec:consumers.readiness-planner · 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 readiness planner orders the statements a person can make
spec:consumers.readiness-planner · resolves
declaredNoneNone
verifies · outgoingThe readiness planner orders the statements a person can make
spec:consumers.readiness-planner · resolves
declaredNoneownerQuestions, waiting

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.readiness-planner.owner-question-holds · anchored · test/self-hosting-readiness-planner.test.ts:252 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

54. The upgrade kit shows a corpus what it could adopt

spec:consumers.upgrade-kit

The upgrade kit shows a corpus what it could adopt

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

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

Design: 2 design entries · 1 pinned declaration · no decisions

Findings: no errors, no warnings

specs/consumers/upgrade-kit.sdp.md

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

An adopter learns what its corpus does not use yet only by writing its own queries, as the first adopter's survey did when it counted rule keys, question fields, relation reasons and exercises lists one at a time. The kit answers that survey with a recipe and turns the one capability a machine can apply without an author's judgment, a key for each rule, into a change proposal. Every other capability it reports asks for intent only an author has, so the kit reports where each could apply and proposes nothing for it.

Intent
actor
An adopter moving a corpus onto a newer Protocol commit, or the agent working for it.
problem
An adopter cannot see which capabilities its corpus already uses and where each could apply, so it hand-rolls the survey for every release and applies each new capability by hand.
outcome
Report, per Spec and Pack, the Protocol capabilities a corpus uses and where each could apply, and propose the edits as a change proposal an agent applies, never editing a carrier itself.
Behavior
rule.reportsAndProposes line 30 · specs/consumers/upgrade-kit.sdp.md:30
The kit reports and proposes and never edits: its recipes read the graph and return data, and a change reaches a carrier only as an agent's or a person's edit, applied after the proposal check and recorded by git.

no example exercises it

rule.statesNoRung line 31 · specs/consumers/upgrade-kit.sdp.md:31
The kit states no rung, authors no fact and scores nothing: a capability it reports as unused is a place it could apply, never a finding, a gate or a quota.

no example exercises it

rule.upgradeGuide line 32 · specs/consumers/upgrade-kit.sdp.md:32
The package ships an upgrade guide for an adopter moving its corpus onto a newer commit: it measures the corpus with capability adoption, keys its rules with the rule-key proposal, and, for each capability the report lists, names the Spec that carries its law, with capability adoption as the recipe that measures it.

no example exercises it

rule.guideTeaches line 33 · specs/consumers/upgrade-kit.sdp.md:33
The guide teaches and states no law: each section names the Spec that carries what it teaches, and no section repeats that Spec's rules.

no example exercises it

0 unkeyed rules.

Design
guideFile line 36 · specs/consumers/upgrade-kit.sdp.md:36
docs/agent-surface/upgrade-guide.md, shipped in the package beside the recipe catalog, listed in the package's files and named by sdp --help among the shipped on-ramps.

no citation recorded

guideSections line 37 · specs/consumers/upgrade-kit.sdp.md:37
in this order: re-pin the package and check sdp --version; measure the corpus with capability adoption (recipe 47); organize features in epics, reading the capability map (recipe 52) and citing spec:consumers.capability-map; Model upcoming work in the graph; keep review history in git and pull requests, a roadmap Pack read with recipes 53 and 55 and intended design proposed as a change proposal checked by recipe 38, citing spec:consumers.roadmap, with the guidance Unresolved intended design lives in open questions. Review disposition and acceptance remain in git and the pull request; neither becomes a graph field.; key the rules with the rule-key proposal (recipe 48), check the proposal with the proposal check (recipe 38) and apply it through an agent's edit; for every capability in recipe 47's answer, one subsection citing its carriedBy Spec and recipe 47 as the measurement, naming a further recipe only when the subsection teaches a distinct next action with it and otherwise sending the reader to the carrying Spec; move rules files onto shipped recipes, recipes 25, 26, 42, 50 and 51 and the recipes binding; read large Packs in parts and order the waiting statements, recipes 36 and 46; publish every root with sdp generate; and pass a recipe's subject as --params data, the recipe-caller guidance the README carries.
Verification

Verifier bindings

  • test:protocol.upgrade-guide · anchored · test anchor binding present · test/upgrade-kit.test.ts:94
Design view

Requirement drawing

Requirement drawing for spec:consumers.upgrade-kit
The diagram as text
  • spec:consumers.upgrade-kit: The upgrade kit shows a corpus what it could adopt · declared Spec
  • spec:consumers.upgrade-kit.capability-adoption: Capability adoption counts where each capability is used and where it could apply · declared Spec
  • spec:consumers.upgrade-kit.rule-key-proposal: The rule-key proposal keys every unkeyed rule as a change proposal · declared Spec
  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus: Capability adoption counts keyed rules and reasoned relations · declared Spec
  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable: Two rules that coin one key stay apart, and a rule with no ASCII word stays unkeyed · declared Spec
  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean: A rule-key proposal passes the proposal check and validates once applied · declared Spec
  • spec:consumers.authoring-on-ramp: Authors move one Spec from intent to reviewed evidence · declared Spec
  • impl:protocol.capability-adoption-recipe: realizes capability adoption in the shipped recipe catalog · anchored code · test/upgrade-kit.test.ts:514
  • impl:protocol.rule-key-proposal-recipe: realizes the rule-key proposal in the shipped recipe catalog · anchored code · test/upgrade-kit.test.ts:742
  • impl:protocol.upgrade-guide: realizes the shipped upgrade guide document · anchored code · test/upgrade-kit.test.ts:87
  • oracle:protocol.capability-adoption: oracle:protocol.capability-adoption · anchored oracle binding · test/upgrade-kit.test.ts:322
  • oracle:protocol.rule-key-proposal: oracle:protocol.rule-key-proposal · anchored oracle binding · test/upgrade-kit.test.ts:398
  • test:protocol.capability-adoption.counts-a-corpus: test:protocol.capability-adoption.counts-a-corpus · anchored test binding · binding present · test/upgrade-kit.test.ts:345
  • test:protocol.rule-key-proposal.collision-and-unkeyable: test:protocol.rule-key-proposal.collision-and-unkeyable · anchored test binding · binding present · test/upgrade-kit.test.ts:483
  • test:protocol.rule-key-proposal.proposal-applies-clean: test:protocol.rule-key-proposal.proposal-applies-clean · anchored test binding · binding present · test/upgrade-kit.test.ts:466
  • test:protocol.upgrade-guide: test:protocol.upgrade-guide · anchored test binding · binding present · test/upgrade-kit.test.ts:94
  • spec:consumers.upgrade-kit refines spec:consumers.authoring-on-ramp · declared — the kit moves a whole corpus onto the capabilities the on-ramp teaches one Spec at a time
  • spec:consumers.upgrade-kit.capability-adoption refines spec:consumers.upgrade-kit · declared
  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus refines spec:consumers.upgrade-kit.capability-adoption · declared
  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus verifies spec:consumers.upgrade-kit.capability-adoption · declared
  • spec:consumers.upgrade-kit.rule-key-proposal refines spec:consumers.upgrade-kit · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable refines spec:consumers.upgrade-kit.rule-key-proposal · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable verifies spec:consumers.upgrade-kit.rule-key-proposal · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean refines spec:consumers.upgrade-kit.rule-key-proposal · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean verifies spec:consumers.upgrade-kit.rule-key-proposal · declared
  • impl:protocol.capability-adoption-recipe satisfies spec:consumers.upgrade-kit.capability-adoption · anchored
  • impl:protocol.rule-key-proposal-recipe satisfies spec:consumers.upgrade-kit.rule-key-proposal · anchored
  • impl:protocol.upgrade-guide satisfies spec:consumers.upgrade-kit · anchored
  • oracle:protocol.capability-adoption models spec:consumers.upgrade-kit.capability-adoption · anchored
  • oracle:protocol.rule-key-proposal models spec:consumers.upgrade-kit.rule-key-proposal · anchored
  • test:protocol.capability-adoption.counts-a-corpus verifies spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · anchored
  • test:protocol.rule-key-proposal.collision-and-unkeyable verifies spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · anchored
  • test:protocol.rule-key-proposal.proposal-applies-clean verifies spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · anchored
  • test:protocol.upgrade-guide verifies spec:consumers.upgrade-kit · 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
  • impl:protocol.upgrade-guide · realizes the shipped upgrade guide document · test/upgrade-kit.test.ts:87

    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.upgrade-kit
Relations of spec:consumers.upgrade-kitrefines · declareddependsOn · declareddependsOn · declareddependsOn · declareddependsOn · declaredrefines · declaredrefines · declaredOutgoing refinesspec:consumers.authoring-on-rampAuthors move one Spec fromintent to reviewed evidence…authoring-on-rampOutgoing dependsOnspec:consumers.capability-mapThe capability map readsevery epic and itsrefinement descendants…capability-mapspec:consumers.edit-modelViews compose scoped intentinstead of patchingcanonical source…edit-modelspec:consumers.intent-compositionComposed intent hands offon one proposal shape…intent-compositionspec:consumers.roadmapA roadmap orders the nextbodies of work, and thegraph says what each stillneeds…roadmapSubjectspec:consumers.upgrade-kitThe upgrade kit shows acorpus what it could adopt…upgrade-kitIncoming refinesspec:consumers.upgrade-kit.capability-adoptionCapability adoption countswhere each capability isused and where it couldapply…upgrade-kit.capability-adoptionspec:consumers.upgrade-kit.rule-key-proposalThe rule-key proposal keysevery unkeyed rule as achange proposal…upgrade-kit.rule-key-proposal
The diagram as text
  • spec:consumers.authoring-on-ramp: Authors move one Spec from intent to reviewed evidence
  • spec:consumers.capability-map: The capability map reads every epic and its refinement descendants
  • 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.roadmap: A roadmap orders the next bodies of work, and the graph says what each still needs
  • spec:consumers.upgrade-kit: The upgrade kit shows a corpus what it could adopt
  • spec:consumers.upgrade-kit.capability-adoption: Capability adoption counts where each capability is used and where it could apply
  • spec:consumers.upgrade-kit.rule-key-proposal: The rule-key proposal keys every unkeyed rule as a change proposal
  • spec:consumers.upgrade-kit dependsOn spec:consumers.capability-map · declared — the guide teaches epic organization through the capability map
  • spec:consumers.upgrade-kit dependsOn spec:consumers.edit-model · declared — a carrier changes only through an agent's or a person's edit, recorded by git
  • spec:consumers.upgrade-kit dependsOn spec:consumers.intent-composition · declared — a proposed upgrade hands off on the one change-proposal shape and is applied after its check
  • spec:consumers.upgrade-kit dependsOn spec:consumers.roadmap · declared — the guide teaches advisory priority and the roadmap memo as planning records
  • spec:consumers.upgrade-kit refines spec:consumers.authoring-on-ramp · declared — the kit moves a whole corpus onto the capabilities the on-ramp teaches one Spec at a time
  • spec:consumers.upgrade-kit.capability-adoption refines spec:consumers.upgrade-kit · declared
  • spec:consumers.upgrade-kit.rule-key-proposal refines spec:consumers.upgrade-kit · 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.authoring-on-ramp · stated ready, floor ready
  • dependsOn · spec:consumers.capability-map · stated ready, floor ready
  • dependsOn · spec:consumers.edit-model · stated ready, floor ready
  • dependsOn · spec:consumers.intent-composition · stated ready, floor ready
  • dependsOn · spec:consumers.roadmap · stated ready, floor ready

Rested on by

Distance 1

Distance 2

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:consumers.capability-map
spec:consumers.capability-map · resolves
declaredthe guide teaches epic organization through the capability mapNone
dependsOn · outgoingspec:consumers.edit-model
spec:consumers.edit-model · resolves
declareda carrier changes only through an agent's or a person's edit, recorded by gitNone
dependsOn · outgoingspec:consumers.intent-composition
spec:consumers.intent-composition · resolves
declareda proposed upgrade hands off on the one change-proposal shape and is applied after its checkNone
dependsOn · outgoingspec:consumers.roadmap
spec:consumers.roadmap · resolves
declaredthe guide teaches advisory priority and the roadmap memo as planning recordsNone
refines · outgoingspec:consumers.authoring-on-ramp
spec:consumers.authoring-on-ramp · resolves
declaredthe kit moves a whole corpus onto the capabilities the on-ramp teaches one Spec at a timeNone
refines · incomingCapability adoption counts where each capability is used and where it could apply
spec:consumers.upgrade-kit.capability-adoption · resolves
declaredNoneNone
refines · incomingThe rule-key proposal keys every unkeyed rule as a change proposal
spec:consumers.upgrade-kit.rule-key-proposal · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.upgrade-guide · realizes the shipped upgrade guide document · test/upgrade-kit.test.ts:87

Design reference: none

Verifier binding: present

  • test:protocol.upgrade-guide · anchored · test/upgrade-kit.test.ts:94 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

55. Capability adoption counts where each capability is used and where it could apply

spec:consumers.upgrade-kit.capability-adoption

Capability adoption counts where each capability is used and where it could apply

spec:consumers.upgrade-kit.capability-adoptionUse Case / Behavior · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/upgrade-kit.capability-adoption.sdp.md

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

Intent
problem
An adopter learns which authoring capabilities its corpus uses, and where each could apply, only by writing a query per capability.
outcome
Report, for the whole corpus, each Pack and each Spec, how many places use each capability and how many places it could apply, from the graph alone.
Behavior
rule.capabilityRows line 37 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:37
Capability adoption, recipe 47, reports one row per capability with the places that use it and the places it could apply, counted from the graph, each row naming the Spec that carries the capability's law.

spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · enabled

rule.corpusTotals line 38 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:38
Beside the rows it reports the corpus's size and its readiness statements: Specs, Packs, examples, decisions, anchored component units, the Specs stated ready and the Specs whose floor allows ready.

no example exercises it

rule.perPackAndSpec line 39 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:39
It counts each capability's places within each Pack's members and, on request, within each Spec, a place two members share counted once, so an adopter sees where each capability could apply.

no example exercises it

rule.outsideTheGraph line 40 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:40
A capability the graph does not hold, such as the perspectives a corpus keeps as files, is counted only from data the caller passes, and its row reads null otherwise; the recipe reads no file.

spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · enabled

rule.countsOnly line 41 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:41
A count is a place a capability could apply, never a score, a ranking or a finding, and the answer carries no findings.

no example exercises it

0 unkeyed rules.

Verifying examples

Capability adoption counts keyed rules and reasoned relations · spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · ready floor ready

Executable Spec

Given a probe corpus with {rules: 3} rule entries of which {keyed: 1} carry a key, and {relations: 2} authored relations of which {reasons: 1} carry a reason
When capability adoption runs over it without perspectives
Then the rule-key row reads {ruleKeys: "1 of 3"}
Then the relation-reason row reads {relationReasons: "1 of 2"}
Then the perspectives row reads {perspectives: "null of null"}

Open example

Example space

Given a probe corpus with {rules:number} rule entries of which {keyed:number} carry a key, and {relations:number} authored relations of which {reasons:number} carry a reason
When capability adoption runs over it without perspectives
Then the rule-key row reads {ruleKeys:string}
Then the relation-reason row reads {relationReasons:string}
Then the perspectives row reads {perspectives:string}
Design
adoptionRecipe line 44 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:44
recipe 47, capability adoption, takes params.detail, false by default, true for every Spec row or a list of Spec ids for those rows, and params.perspectives, the list of perspective objects the corpus keeps, absent by default; another detail value returns { diagnostics: [{ parameter, problem }] }.
adoptionAnswer line 45 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:45
{ totals, capabilities, packs, specs, leftOut }, where totals is { specs, packs, examples, decisions, componentUnits, statedReady, floorReady }, capabilities holds one row per capability in the order below, packs one row per Pack in id order, specs the Spec rows detail asks for, empty by default, and leftOut holds the one line Spec rows; pass detail: true or a list of Spec ids. whenever a Spec row is left out, and is empty otherwise.

no citation recorded

capabilityRow line 46 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:46
{ capability, inUse, applicable, carriedBy }, where inUse counts the places that use the capability, applicable the places it could apply, and carriedBy is the id of the Spec that carries its law; a count the graph cannot give is null.

no citation recorded

capabilityList line 47 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:47
each row as capability (carriedBy): places used, of places it could apply. ruleKeys (spec:model.rule-keys): rule and flow entries that carry a key, of all rule and flow entries; questionKeys (spec:model.open-question-keys): open questions that carry a key, of all open questions; questionFields (spec:model.open-question-fields): open questions that carry decider, links, provisional or trigger, of all open questions; relationReasons (spec:model.relation-reasons): authored relations that carry a reason, of all authored relations; exercises (spec:model.rule-keys): declared verifies edges from an example that carry exercises, of all such edges; pinnedDeclarations (spec:extraction.contract-declarations): keyed Design entries whose value opens with a code span, of every keyed Design entry other than description; componentDesigns (spec:model.planned-architecture): components that have a component design, of the distinct components a component design or a component: anchor names; stepKeys (spec:carrier.step-keys): keyed example steps, of all example steps; termKeys (spec:model.term-addresses): keyed Model terms, of all Model terms; entryCitations (spec:extraction.entry-citations): pinned declarations an anchored line cites, of all pinned declarations; perspectives (spec:consumers.review-perspectives): the perspective objects passed, of null.
packRow line 48 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:48
{ id, members, capabilities }, where capabilities maps each capability but perspectives to { inUse, applicable } summed over the Pack's resolving members, except componentDesigns, which counts once each the components a member names as a component design or a component: anchor names when it satisfies a member, inUse being those that have a component design anywhere in the corpus.

no citation recorded

specRow line 49 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:49
{ id, packs, inUse, couldApply }, where inUse maps each capability the Spec uses to its count and couldApply maps each capability with places left to applicable minus inUse, both leaving out perspectives and every zero, and componentDesigns counts as a Pack row does for that Spec alone; rows sort by id.

no citation recorded

Verification

Verifier bindings

Example space

  • rules · number · declared by a probe corpus with {rules} rule entries of which {keyed} carry a key, and {relations} authored relations of which {reasons} carry a reason
  • keyed · number · declared by a probe corpus with {rules} rule entries of which {keyed} carry a key, and {relations} authored relations of which {reasons} carry a reason
  • relations · number · declared by a probe corpus with {rules} rule entries of which {keyed} carry a key, and {relations} authored relations of which {reasons} carry a reason
  • reasons · number · declared by a probe corpus with {rules} rule entries of which {keyed} carry a key, and {relations} authored relations of which {reasons} carry a reason

Bound points

Oracle binding: present · oracle:protocol.capability-adoption · test/upgrade-kit.test.ts:322

Coverage

rules: 3 · spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · not enumerable

keyed: 1 · spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · not enumerable

relations: 2 · spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · not enumerable

reasons: 1 · spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · not enumerable

Unbound

  • rules: None
  • keyed: None
  • relations: None
  • reasons: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.upgrade-kit.capability-adoption
The diagram as text
  • spec:consumers.upgrade-kit.capability-adoption: Capability adoption counts where each capability is used and where it could apply · declared Spec
  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus: Capability adoption counts keyed rules and reasoned relations · declared Spec
  • spec:consumers.upgrade-kit: The upgrade kit shows a corpus what it could adopt · declared Spec
  • impl:protocol.capability-adoption-recipe: realizes capability adoption in the shipped recipe catalog · anchored code · test/upgrade-kit.test.ts:514
  • oracle:protocol.capability-adoption: oracle:protocol.capability-adoption · anchored oracle binding · test/upgrade-kit.test.ts:322
  • test:protocol.capability-adoption.counts-a-corpus: test:protocol.capability-adoption.counts-a-corpus · anchored test binding · binding present · test/upgrade-kit.test.ts:345
  • spec:consumers.upgrade-kit.capability-adoption refines spec:consumers.upgrade-kit · declared
  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus refines spec:consumers.upgrade-kit.capability-adoption · declared
  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus verifies spec:consumers.upgrade-kit.capability-adoption · declared
  • impl:protocol.capability-adoption-recipe satisfies spec:consumers.upgrade-kit.capability-adoption · anchored
  • oracle:protocol.capability-adoption models spec:consumers.upgrade-kit.capability-adoption · anchored
  • test:protocol.capability-adoption.counts-a-corpus verifies spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · 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
  • impl:protocol.capability-adoption-recipe · realizes capability adoption in the shipped recipe catalog · test/upgrade-kit.test.ts:514

    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.upgrade-kit.capability-adoption
  • E4: verifies · declared
The diagram as text
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:consumers.review-perspectives: A Pack is read from a named perspective
  • spec:consumers.upgrade-kit: The upgrade kit shows a corpus what it could adopt
  • spec:consumers.upgrade-kit.capability-adoption: Capability adoption counts where each capability is used and where it could apply
  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus: Capability adoption counts keyed rules and reasoned relations
  • 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: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.planned-architecture: Components are designed ahead of their code
  • 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.upgrade-kit.capability-adoption dependsOn spec:carrier.step-keys · declared — step keys are counted where example steps are
  • spec:consumers.upgrade-kit.capability-adoption dependsOn spec:consumers.review-perspectives · declared — perspectives are counted from the objects the caller passes
  • spec:consumers.upgrade-kit.capability-adoption dependsOn spec:extraction.contract-declarations · declared — pinned declarations are counted where keyed Design entries are
  • spec:consumers.upgrade-kit.capability-adoption dependsOn spec:extraction.entry-citations · declared — a pinned declaration counts as cited when an anchored line cites it
  • spec:consumers.upgrade-kit.capability-adoption dependsOn spec:model.open-question-fields · declared — question keys and fields are counted where open questions are
  • spec:consumers.upgrade-kit.capability-adoption dependsOn spec:model.open-question-keys · declared — question keys are counted where open questions are
  • spec:consumers.upgrade-kit.capability-adoption dependsOn spec:model.planned-architecture · declared — component designs are selected by the convention that Spec states
  • spec:consumers.upgrade-kit.capability-adoption dependsOn spec:model.relation-reasons · declared — relation reasons are counted where authored relations are
  • spec:consumers.upgrade-kit.capability-adoption dependsOn spec:model.rule-keys · declared — rule keys and `exercises` are two of the capabilities it counts
  • spec:consumers.upgrade-kit.capability-adoption dependsOn spec:model.term-addresses · declared — term keys are counted where Model terms are
  • spec:consumers.upgrade-kit.capability-adoption refines spec:consumers.upgrade-kit · declared
  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus refines spec:consumers.upgrade-kit.capability-adoption · declared
  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus verifies spec:consumers.upgrade-kit.capability-adoption · 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.upgrade-kit · stated ready, floor ready
  • dependsOn · spec:carrier.step-keys · stated ready, floor ready
  • dependsOn · spec:consumers.review-perspectives · stated ready, floor ready
  • dependsOn · spec:extraction.contract-declarations · stated ready, floor ready
  • dependsOn · spec:extraction.entry-citations · 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.planned-architecture · 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

Rested on by

Distance 1

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declaredstep keys are counted where example steps areNone
dependsOn · outgoingspec:consumers.review-perspectives
spec:consumers.review-perspectives · resolves
declaredperspectives are counted from the objects the caller passesNone
dependsOn · outgoingspec:extraction.contract-declarations
spec:extraction.contract-declarations · resolves
declaredpinned declarations are counted where keyed Design entries areNone
dependsOn · outgoingThe graph records where anchored source cites an entry address
spec:extraction.entry-citations · resolves
declareda pinned declaration counts as cited when an anchored line cites itNone
dependsOn · outgoingspec:model.open-question-fields
spec:model.open-question-fields · resolves
declaredquestion keys and fields are counted where open questions areNone
dependsOn · outgoingspec:model.open-question-keys
spec:model.open-question-keys · resolves
declaredquestion keys are counted where open questions areNone
dependsOn · outgoingspec:model.planned-architecture
spec:model.planned-architecture · resolves
declaredcomponent designs are selected by the convention that Spec statesNone
dependsOn · outgoingspec:model.relation-reasons
spec:model.relation-reasons · resolves
declaredrelation reasons are counted where authored relations areNone
dependsOn · outgoingspec:model.rule-keys
spec:model.rule-keys · resolves
declaredrule keys and exercises are two of the capabilities it countsNone
dependsOn · outgoingA Model term may carry a key that addresses it
spec:model.term-addresses · resolves
declaredterm keys are counted where Model terms areNone
refines · outgoingThe upgrade kit shows a corpus what it could adopt
spec:consumers.upgrade-kit · resolves
declaredNoneNone
refines · incomingCapability adoption counts keyed rules and reasoned relations
spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · resolves
declaredNoneNone
verifies · incomingCapability adoption counts keyed rules and reasoned relations
spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · resolves
declaredNonecapabilityRows, outsideTheGraph

Bindings

Implementation binding: present

  • impl:protocol.capability-adoption-recipe · realizes capability adoption in the shipped recipe catalog · test/upgrade-kit.test.ts:514 · role projection

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.capability-adoption · test/upgrade-kit.test.ts:322

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

56. Capability adoption counts keyed rules and reasoned relations

spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus

Capability adoption counts keyed rules and reasoned relations

spec:consumers.upgrade-kit.capability-adoption.counts-a-corpusExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/upgrade-kit.capability-adoption.counts-a-corpus.sdp.md

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

Intent
outcome
Execute the capability rows on a probe corpus with known counts of keyed rules and reasoned relations, and no perspectives passed.
assumptions
  • The world writes a probe corpus of two story-altitude behavior Specs stating idea, each with an Intent outcome. The first carries three rules, one of them keyed, and declares dependsOn on the second with a reason; the second carries no rule and declares refines on the first with no reason. It runs the shipped capability adoption file through sdp q --json with no parameters; a row reads <inUse> of <applicable>, and null when a count is null.
Behavior

Examples

Given a probe corpus with {rules: 3} rule entries of which {keyed: 1} carry a key, and {relations: 2} authored relations of which {reasons: 1} carry a reason
When capability adoption runs over it without perspectives
Then the rule-key row reads {ruleKeys: "1 of 3"}
Then the relation-reason row reads {relationReasons: "1 of 2"}
Then the perspectives row reads {perspectives: "null of null"}
Verification

Verifier bindings

  • test:protocol.capability-adoption.counts-a-corpus · anchored · test anchor binding present · test/upgrade-kit.test.ts:345
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
The diagram as text
  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus: Capability adoption counts keyed rules and reasoned relations · declared Spec
  • spec:consumers.upgrade-kit.capability-adoption: Capability adoption counts where each capability is used and where it could apply · declared Spec
  • test:protocol.capability-adoption.counts-a-corpus: test:protocol.capability-adoption.counts-a-corpus · anchored test binding · binding present · test/upgrade-kit.test.ts:345
  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus refines spec:consumers.upgrade-kit.capability-adoption · declared
  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus verifies spec:consumers.upgrade-kit.capability-adoption · declared
  • test:protocol.capability-adoption.counts-a-corpus verifies spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · 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.upgrade-kit.capability-adoption.counts-a-corpus
  • E2: verifies · declared
The diagram as text
  • spec:consumers.upgrade-kit.capability-adoption: Capability adoption counts where each capability is used and where it could apply
  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus: Capability adoption counts keyed rules and reasoned relations
  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus refines spec:consumers.upgrade-kit.capability-adoption · declared
  • spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus verifies spec:consumers.upgrade-kit.capability-adoption · 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 · outgoingCapability adoption counts where each capability is used and where it could apply
spec:consumers.upgrade-kit.capability-adoption · resolves
declaredNoneNone
verifies · outgoingCapability adoption counts where each capability is used and where it could apply
spec:consumers.upgrade-kit.capability-adoption · resolves
declaredNonecapabilityRows, outsideTheGraph

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.capability-adoption.counts-a-corpus · anchored · test/upgrade-kit.test.ts:345 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

57. The rule-key proposal keys every unkeyed rule as a change proposal

spec:consumers.upgrade-kit.rule-key-proposal

The rule-key proposal keys every unkeyed rule as a change proposal

spec:consumers.upgrade-kit.rule-key-proposalUse Case / Behavior · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/upgrade-kit.rule-key-proposal.sdp.md

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

A key is the one capability a machine can add without an author's judgment: it addresses a rule and changes nothing the rule says. The proposal coins each key from the words of its rule, so the same corpus gives the same keys, and a person reads and may rename a key before an agent applies the change. A key coined from words is plainer than one an author would choose, which is why it travels as a proposal a person reviews rather than as an edit.

Intent
problem
Keying every rule of a large corpus by hand is slow and uneven, and an agent asked to do it in one pass edits carriers with no reviewable record of what it intends.
outcome
Write one change proposal that adds a key to each unkeyed rule and flow entry in a scope, so an agent applies it after the proposal check and the corpus validates with no error.
Behavior
rule.proposesKeys line 25 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:25
The rule-key proposal, recipe 48, writes one change proposal that adds a key to each unkeyed rule and flow entry in its scope, in the shape the change-proposal contract states, and edits nothing.

spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · enabled

rule.keepsText line 26 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:26
Each change adds only the key marker to its entry and keeps the entry's text, so keying a rule changes no rule's meaning and no frozen projection's text.

spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · enabled

rule.coinedKey line 27 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:27
Each key is coined from its entry's text by fixed steps, so the same graph and parameters give the same keys.

spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · enabled, spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · enabled

rule.uniqueKey line 28 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:28
A coined key is lower camel on the rule-key grammar, unique among the rule and flow keys of its Spec, the keys it already carries and the keys coined before it, and never a name the carrier refuses as a key.

spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · enabled

rule.unkeyable line 29 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:29
An entry whose text yields no word to coin from is listed apart, with its Spec, entry and line, and gets no change; the recipe never invents a key from nothing.

spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · enabled

rule.applyAfterCheck line 30 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:30
An agent reads the proposal check per change: a change whose scope moved since the named commit goes to a person, and the remaining changes are applied as ordinary carrier edits, so one moved scope never holds back the whole proposal. A person may rename a coined key before it is applied. The proposal check grants no approval and edits nothing; conformance and honesty checks remain the only gate.

spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · enabled

0 unkeyed rules.

Verifying examples

Two rules that coin one key stay apart, and a rule with no ASCII word stays unkeyed · spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · ready floor ready

Executable Spec

Given a probe Spec whose unkeyed rules read {rules: "A part fits the budget. / Every part fits the budget again. / Ο κανόνας ισχύει."}
When the rule-key proposal runs for it at a commit and the proposal check reads it against the graph of that commit
Then the proposal adds the keys {keys: "partFitsBudget, partFitsBudget2"}
Then the proposal leaves {unkeyable: 1} entries unkeyed
Then the proposal check reports {moved: 0} moved changes and {problems: 0} schema problems

Open example

A rule-key proposal passes the proposal check and validates once applied · spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · ready floor ready

Executable Spec

Given a probe Spec whose unkeyed rules read {rules: "The bundle is composed on each invocation. / Each part fits the budget."}
When the rule-key proposal runs for it at a commit and the proposal check reads it against the graph of that commit
Then the proposal adds the keys {keys: "bundleComposedInvocation, partFitsBudget"}
Then the proposal leaves {unkeyable: 0} entries unkeyed
Then the proposal check reports {moved: 0} moved changes and {problems: 0} schema problems
Then the probe validates with {errors: 0} errors once an agent applies the proposal

Open example

Example space

Given a probe Spec whose unkeyed rules read {rules:string}
When the rule-key proposal runs for it at a commit and the proposal check reads it against the graph of that commit
Then the proposal adds the keys {keys:string}
Then the proposal leaves {unkeyable:number} entries unkeyed
Then the proposal check reports {moved:number} moved changes and {problems:number} schema problems
Then the probe validates with {errors:number} errors once an agent applies the proposal
Design
proposalRecipe line 33 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:33
recipe 48, the rule-key proposal, takes params.commit, the commit whose graph it reads, required, and at most one scope, params.pack or params.specs, the whole corpus with neither; a missing commit, both scopes, or an id that does not resolve returns { diagnostics: [{ parameter, problem }] } and no proposal.
proposalAnswer line 34 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:34
{ scope, totals: { specs, entries, keyed, proposed, unkeyable }, proposal, unkeyable }, where scope is { corpus: true }, { pack } or { specs }, entries counts the rule and flow entries in scope, keyed those that already carry a key, proposal is the change-proposal document, or null when no entry needs a key, and unkeyable lists the entries no key could be coined for.

no citation recorded

proposalDocument line 35 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:35
{ "schema": "sdp-proposal/1", "base": "<commit>", "reason": "Key every rule and flow entry in <scope> so a review, a register row or an example can cite it.", "changes": [change] }, with <scope> the Pack id, the Spec ids joined by a comma and a space, or the corpus.

no citation recorded

keyChange line 36 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:36
{ "scope": ["<spec id>"], "request": "<request>", "text": "[#<key>] <entry text>", "reason": "Gives the entry the address <spec id>#rule.<key>." }, one per unkeyed entry, by Spec in scope order, then its rules before its flows, each in authored order; text is the entry's text as its carrier writes it once keyed, after its rule: or flow: label where it has one.

no citation recorded

keyRequest line 37 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:37
Add the key marker [#<key>] and one space at the start of the text of <entry> of <spec id>, at <file> line <line>, after its rule: or flow: label where it has one., with <entry> the location table's rule[<i>] or flow[<i>] and , at <file> alone when the line is not located.

no citation recorded

keyCoining line 38 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:38
decompose the text and drop combining marks; drop the bracketed groups that open it, such as [extension]; drop an 's or ’s not followed by an ASCII letter, digit or underscore, then any remaining apostrophe; split the rest into words at every character other than an ASCII letter or digit and at each change from a lowercase letter or digit to an uppercase letter; lowercase each word; drop the stop words, unless that leaves no word; drop the leading words that do not open with a letter and every repeat of a word kept before it; join the first three words left in lower camel case, the first all lowercase and each later one with its first letter uppercased.
stopWords line 39 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:39
a, an, the, and, or, but, nor, so, then, than, if, when, while, where, of, to, in, on, at, by, for, with, from, into, onto, as, per, via, over, under, about, is, are, was, were, be, been, being, do, does, did, has, have, had, can, could, may, might, must, shall, should, will, would, it, its, this, that, these, those, there, their, they, them, which, who, whom, whose, what, each, every, any, also, only and own.

no citation recorded

keyCollision line 40 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:40
a coined key already taken in its Spec, or equal to a key the carrier refuses, takes the smallest suffix from 2 up that makes it unique.
unkeyableRow line 41 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:41
{ spec, entry, file, line, reason: "no word to coin a key from" }, with entry the location table's rule[<i>] or flow[<i>] and line null when not located.

no citation recorded

Verification

Verifier bindings

Example space

  • rules · string · declared by a probe Spec whose unkeyed rules read {rules}

Bound points

Examplerules
spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable"A part fits the budget. / Every part fits the budget again. / Ο κανόνας ισχύει."
spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean"The bundle is composed on each invocation. / Each part fits the budget."

Oracle binding: present · oracle:protocol.rule-key-proposal · test/upgrade-kit.test.ts:398

Coverage

rules: "A part fits the budget. / Every part fits the budget again. / Ο κανόνας ισχύει." · spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable; "The bundle is composed on each invocation. / Each part fits the budget." · spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · not enumerable

Unbound

  • rules: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.upgrade-kit.rule-key-proposal
Requirement drawing for spec:consumers.upgrade-kit.rule-key-proposalsatisfies · anchoredmodels · anchoredrefines · declaredrefines, verifies · declaredrefines, verifies · declaredverifies · anchoredverifies · anchoredIntended Specsspec:consumers.upgrade-kit.rule-key-proposalThe rule-key proposal keysevery unkeyed rule as achange proposal…consumers.upgrade-kit.rule-key-proposaldeclared SpecDeclared verifying examplesspec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyableTwo rules that coin one keystay apart, and a rule withno ASCII word stays unkeyed…consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyabledeclared Specspec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-cleanA rule-key proposal passesthe proposal check andvalidates once applied…consumers.upgrade-kit.rule-key-proposal.proposal-applies-cleandeclared SpecSatisfying or referencingunitsimpl:protocol.rule-key-proposal-reciperealizes the rule-keyproposal in the shippedrecipe catalog…protocol.rule-key-proposal-recipeanchored codeTest or oracle bindingsoracle:protocol.rule-key-proposaloracle:protocol.rule-key-proposal…protocol.rule-key-proposalanchored oracle bindingtest:protocol.rule-key-proposal.collision-and-unkeyabletest:protocol.rule-key-proposal.collision-and-unkeyable…protocol.rule-key-proposal.collision-and-unkeyableanchored test binding ·binding presenttest:protocol.rule-key-proposal.proposal-applies-cleantest:protocol.rule-key-proposal.proposal-applies-clean…protocol.rule-key-proposal.proposal-applies-cleananchored test binding ·binding presentOutside the selected setspec:consumers.upgrade-kitThe upgrade kit shows acorpus what it could adopt…consumers.upgrade-kitdeclared Spec
The diagram as text
  • spec:consumers.upgrade-kit.rule-key-proposal: The rule-key proposal keys every unkeyed rule as a change proposal · declared Spec
  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable: Two rules that coin one key stay apart, and a rule with no ASCII word stays unkeyed · declared Spec
  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean: A rule-key proposal passes the proposal check and validates once applied · declared Spec
  • spec:consumers.upgrade-kit: The upgrade kit shows a corpus what it could adopt · declared Spec
  • impl:protocol.rule-key-proposal-recipe: realizes the rule-key proposal in the shipped recipe catalog · anchored code · test/upgrade-kit.test.ts:742
  • oracle:protocol.rule-key-proposal: oracle:protocol.rule-key-proposal · anchored oracle binding · test/upgrade-kit.test.ts:398
  • test:protocol.rule-key-proposal.collision-and-unkeyable: test:protocol.rule-key-proposal.collision-and-unkeyable · anchored test binding · binding present · test/upgrade-kit.test.ts:483
  • test:protocol.rule-key-proposal.proposal-applies-clean: test:protocol.rule-key-proposal.proposal-applies-clean · anchored test binding · binding present · test/upgrade-kit.test.ts:466
  • spec:consumers.upgrade-kit.rule-key-proposal refines spec:consumers.upgrade-kit · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable refines spec:consumers.upgrade-kit.rule-key-proposal · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable verifies spec:consumers.upgrade-kit.rule-key-proposal · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean refines spec:consumers.upgrade-kit.rule-key-proposal · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean verifies spec:consumers.upgrade-kit.rule-key-proposal · declared
  • impl:protocol.rule-key-proposal-recipe satisfies spec:consumers.upgrade-kit.rule-key-proposal · anchored
  • oracle:protocol.rule-key-proposal models spec:consumers.upgrade-kit.rule-key-proposal · anchored
  • test:protocol.rule-key-proposal.collision-and-unkeyable verifies spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · anchored
  • test:protocol.rule-key-proposal.proposal-applies-clean verifies spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · 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
  • impl:protocol.rule-key-proposal-recipe · realizes the rule-key proposal in the shipped recipe catalog · test/upgrade-kit.test.ts:742

    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.upgrade-kit.rule-key-proposal
Relations of spec:consumers.upgrade-kit.rule-key-proposaldependsOn · declaredrefines · declareddependsOn · declareddependsOn · declaredrefines · declaredverifies · declaredrefines · declaredverifies · declaredOutgoing refinesspec:consumers.upgrade-kitThe upgrade kit shows acorpus what it could adopt…consumers.upgrade-kitOutgoing dependsOnspec:consumers.intent-composition.proposalA change proposal isaddressed, based andchecked before it lands…consumers.intent-composition.proposalspec:extraction.entry-locationsThe graph records whereeach addressable entry iswritten…extraction.entry-locationsspec:model.rule-keysA rule or flow entry maycarry a key that addressesit…model.rule-keysSubjectspec:consumers.upgrade-kit.rule-key-proposalThe rule-key proposal keysevery unkeyed rule as achange proposal…consumers.upgrade-kit.rule-key-proposalIncoming refinesspec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyableTwo rules that coin one keystay apart, and a rule withno ASCII word stays unkeyed…consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyablespec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-cleanA rule-key proposal passesthe proposal check andvalidates once applied…consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean
The diagram as text
  • spec:consumers.intent-composition.proposal: A change proposal is addressed, based and checked before it lands
  • spec:consumers.upgrade-kit: The upgrade kit shows a corpus what it could adopt
  • spec:consumers.upgrade-kit.rule-key-proposal: The rule-key proposal keys every unkeyed rule as a change proposal
  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable: Two rules that coin one key stay apart, and a rule with no ASCII word stays unkeyed
  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean: A rule-key proposal passes the proposal check and validates once applied
  • spec:extraction.entry-locations: The graph records where each addressable entry is written
  • spec:model.rule-keys: A rule or flow entry may carry a key that addresses it
  • spec:consumers.upgrade-kit.rule-key-proposal dependsOn spec:consumers.intent-composition.proposal · declared — the recipe writes a change proposal in the shape the proposal check reads
  • spec:consumers.upgrade-kit.rule-key-proposal dependsOn spec:extraction.entry-locations · declared — each change names the file and line the location table records for its entry
  • spec:consumers.upgrade-kit.rule-key-proposal dependsOn spec:model.rule-keys · declared — a coined key follows the rule-key grammar and marker
  • spec:consumers.upgrade-kit.rule-key-proposal refines spec:consumers.upgrade-kit · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable refines spec:consumers.upgrade-kit.rule-key-proposal · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean refines spec:consumers.upgrade-kit.rule-key-proposal · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable verifies spec:consumers.upgrade-kit.rule-key-proposal · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean verifies spec:consumers.upgrade-kit.rule-key-proposal · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

  • refines · spec:consumers.upgrade-kit · stated ready, floor ready
  • dependsOn · spec:consumers.intent-composition.proposal · stated ready, floor ready
  • dependsOn · spec:extraction.entry-locations · stated ready, floor ready
  • dependsOn · spec:model.rule-keys · stated ready, floor ready

Rested on by

Distance 1

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingspec:consumers.intent-composition.proposal
spec:consumers.intent-composition.proposal · resolves
declaredthe recipe writes a change proposal in the shape the proposal check readsNone
dependsOn · outgoingspec:extraction.entry-locations
spec:extraction.entry-locations · resolves
declaredeach change names the file and line the location table records for its entryNone
dependsOn · outgoingspec:model.rule-keys
spec:model.rule-keys · resolves
declareda coined key follows the rule-key grammar and markerNone
refines · outgoingThe upgrade kit shows a corpus what it could adopt
spec:consumers.upgrade-kit · resolves
declaredNoneNone
refines · incomingTwo rules that coin one key stay apart, and a rule with no ASCII word stays unkeyed
spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · resolves
declaredNoneNone
refines · incomingA rule-key proposal passes the proposal check and validates once applied
spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · resolves
declaredNoneNone
verifies · incomingTwo rules that coin one key stay apart, and a rule with no ASCII word stays unkeyed
spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · resolves
declaredNonecoinedKey, uniqueKey, unkeyable
verifies · incomingA rule-key proposal passes the proposal check and validates once applied
spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · resolves
declaredNoneproposesKeys, keepsText, coinedKey, applyAfterCheck

Bindings

Implementation binding: present

  • impl:protocol.rule-key-proposal-recipe · realizes the rule-key proposal in the shipped recipe catalog · test/upgrade-kit.test.ts:742 · role projection

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.rule-key-proposal · test/upgrade-kit.test.ts:398

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

58. Two rules that coin one key stay apart, and a rule with no ASCII word stays unkeyed

spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable

Two rules that coin one key stay apart, and a rule with no ASCII word stays unkeyed

spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyableExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/upgrade-kit.rule-key-proposal.collision-and-unkeyable.sdp.md

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

Intent
outcome
Execute the uniqueness and unkeyable rules on a probe Spec whose first two rules coin the same key and whose third holds no ASCII word.
assumptions
  • The world writes the probe corpus of the applies-clean example with the three rules the step lists, the third written in Greek letters, and reads the shipped rule-key proposal file's answer as that example does.
Behavior

Examples

Given a probe Spec whose unkeyed rules read {rules: "A part fits the budget. / Every part fits the budget again. / Ο κανόνας ισχύει."}
When the rule-key proposal runs for it at a commit and the proposal check reads it against the graph of that commit
Then the proposal adds the keys {keys: "partFitsBudget, partFitsBudget2"}
Then the proposal leaves {unkeyable: 1} entries unkeyed
Then the proposal check reports {moved: 0} moved changes and {problems: 0} schema problems
Verification

Verifier bindings

  • test:protocol.rule-key-proposal.collision-and-unkeyable · anchored · test anchor binding present · test/upgrade-kit.test.ts:483
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable
The diagram as text
  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable: Two rules that coin one key stay apart, and a rule with no ASCII word stays unkeyed · declared Spec
  • spec:consumers.upgrade-kit.rule-key-proposal: The rule-key proposal keys every unkeyed rule as a change proposal · declared Spec
  • test:protocol.rule-key-proposal.collision-and-unkeyable: test:protocol.rule-key-proposal.collision-and-unkeyable · anchored test binding · binding present · test/upgrade-kit.test.ts:483
  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable refines spec:consumers.upgrade-kit.rule-key-proposal · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable verifies spec:consumers.upgrade-kit.rule-key-proposal · declared
  • test:protocol.rule-key-proposal.collision-and-unkeyable verifies spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · 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.upgrade-kit.rule-key-proposal.collision-and-unkeyable
  • E2: verifies · declared
The diagram as text
  • spec:consumers.upgrade-kit.rule-key-proposal: The rule-key proposal keys every unkeyed rule as a change proposal
  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable: Two rules that coin one key stay apart, and a rule with no ASCII word stays unkeyed
  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable refines spec:consumers.upgrade-kit.rule-key-proposal · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable verifies spec:consumers.upgrade-kit.rule-key-proposal · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

Rested on by

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingThe rule-key proposal keys every unkeyed rule as a change proposal
spec:consumers.upgrade-kit.rule-key-proposal · resolves
declaredNoneNone
verifies · outgoingThe rule-key proposal keys every unkeyed rule as a change proposal
spec:consumers.upgrade-kit.rule-key-proposal · resolves
declaredNonecoinedKey, uniqueKey, unkeyable

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.rule-key-proposal.collision-and-unkeyable · anchored · test/upgrade-kit.test.ts:483 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

59. A rule-key proposal passes the proposal check and validates once applied

spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean

A rule-key proposal passes the proposal check and validates once applied

spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-cleanExample / Scenario · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/upgrade-kit.rule-key-proposal.proposal-applies-clean.sdp.md

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

Intent
outcome
Execute the proposal end to end on a probe Spec with two unkeyed rules: coin the keys, check the proposal against the base graph, apply it as an agent would, and validate.
assumptions
  • The world writes a probe corpus of one story-altitude behavior Spec stating idea with an Intent outcome and the two rules the step lists, split at / , runs sdp build to write the base graph, and runs the shipped rule-key proposal file through sdp q --json with the Spec in specs and a commit string. It runs the shipped proposal check file with the answer's proposal and the base graph, then applies each change by putting its marker after the rule's label at the line its request names, and runs sdp validate on the probe root. The keys read joined by a comma and a space.
Behavior

Examples

Given a probe Spec whose unkeyed rules read {rules: "The bundle is composed on each invocation. / Each part fits the budget."}
When the rule-key proposal runs for it at a commit and the proposal check reads it against the graph of that commit
Then the proposal adds the keys {keys: "bundleComposedInvocation, partFitsBudget"}
Then the proposal leaves {unkeyable: 0} entries unkeyed
Then the proposal check reports {moved: 0} moved changes and {problems: 0} schema problems
Then the probe validates with {errors: 0} errors once an agent applies the proposal
Verification

Verifier bindings

  • test:protocol.rule-key-proposal.proposal-applies-clean · anchored · test anchor binding present · test/upgrade-kit.test.ts:466
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean
The diagram as text
  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean: A rule-key proposal passes the proposal check and validates once applied · declared Spec
  • spec:consumers.upgrade-kit.rule-key-proposal: The rule-key proposal keys every unkeyed rule as a change proposal · declared Spec
  • test:protocol.rule-key-proposal.proposal-applies-clean: test:protocol.rule-key-proposal.proposal-applies-clean · anchored test binding · binding present · test/upgrade-kit.test.ts:466
  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean refines spec:consumers.upgrade-kit.rule-key-proposal · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean verifies spec:consumers.upgrade-kit.rule-key-proposal · declared
  • test:protocol.rule-key-proposal.proposal-applies-clean verifies spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · 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.upgrade-kit.rule-key-proposal.proposal-applies-clean
  • E2: verifies · declared
The diagram as text
  • spec:consumers.upgrade-kit.rule-key-proposal: The rule-key proposal keys every unkeyed rule as a change proposal
  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean: A rule-key proposal passes the proposal check and validates once applied
  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean refines spec:consumers.upgrade-kit.rule-key-proposal · declared
  • spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean verifies spec:consumers.upgrade-kit.rule-key-proposal · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

Rested on by

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingThe rule-key proposal keys every unkeyed rule as a change proposal
spec:consumers.upgrade-kit.rule-key-proposal · resolves
declaredNoneNone
verifies · outgoingThe rule-key proposal keys every unkeyed rule as a change proposal
spec:consumers.upgrade-kit.rule-key-proposal · resolves
declaredNoneproposesKeys, keepsText, coinedKey, applyAfterCheck

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.rule-key-proposal.proposal-applies-clean · anchored · test/upgrade-kit.test.ts:466 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.