problemsdp 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.pack:adopter-speed-v1specs/adopter-speed.pack.sdp.mdExported from the Spec Studio
pack:adopter-speed-v1
59 members at stated ready and floor ready: full member list.
Outlined diagonal: matches. Right of diagonal: floor above statement. Left of diagonal: statement above floor.
| Stated rung / floor reached | floor none | floor idea | floor scoped | floor defined | floor ready |
|---|---|---|---|---|---|
| stated idea | — | — | — | — | — |
| stated scoped | — | — | — | — | — |
| stated defined | — | — | — | — | — |
| stated ready | — | — | — | — | 59 |
spec:consumers.agent-surface.evaluation-sink · ready floor readyspec:consumers.agent-surface.evaluation-sink.exported-evaluator · ready floor readyspec:consumers.agent-surface.evaluation-sink.recipe-call · ready floor readyspec:consumers.agent-surface.evaluation-sink.unknown-recipe · ready floor readyspec:validation.corpus-rules · ready floor readyspec:validation.corpus-rules.params-edit-starts-a-cycle · ready floor readyspec:validation.corpus-rules.rules-edit-starts-a-cycle · ready floor readyspec:validation.corpus-rules.unreadable-params-fail-one-file · ready floor readyspec:consumers.validate-watch · ready floor readyspec:consumers.agent-surface.address-and-cycle-recipes · ready floor readyspec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing · ready floor readyspec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · ready floor readyspec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · ready floor readyspec:validation.external-registers · ready floor readyspec:validation.external-registers.uncited-on-request · ready floor readyspec:validation.external-registers.unknown-and-retired · ready floor readyspec:consumers.command-line · ready floor readyspec:consumers.command-line.generate-check-failure · ready floor readyspec:consumers.command-line.generate-writes-every-root · ready floor readyspec:consumers.command-line.verb-help-touches-nothing · ready floor readyspec:carrier.step-keys · ready floor readyspec:carrier.step-keys.conflicting-example-key-withheld · ready floor readyspec:carrier.step-keys.gherkin-keyed-step-stays-bound · ready floor readyspec:carrier.step-keys.key-equal-to-a-skeleton-withheld · ready floor readyspec:carrier.step-keys.malformed-marker-refused · ready floor readyspec:carrier.step-keys.renamed-key-breaks · ready floor readyspec:carrier.step-keys.repeated-key-refused · ready floor readyspec:carrier.step-keys.reworded-keyed-step-stays-bound · ready floor readyspec:carrier.step-keys.reworded-unkeyed-step-breaks · ready floor readyspec:carrier.step-keys.two-keys-on-one-step-refused · ready floor readyspec:carrier.step-keys.typescript-keyed-step-imports-keyed · ready floor readyspec:extraction.executable-contracts · ready floor readyspec:extraction.runnable-modules · ready floor readyspec:model.term-addresses · ready floor readyspec:model.term-addresses.keyed-term-resolves · ready floor readyspec:model.term-addresses.malformed-term-marker-refused · ready floor readyspec:model.term-addresses.repeated-term-key-refused · ready floor readyspec:model.term-addresses.typescript-term-imports-keyed · ready floor readyspec:model.term-addresses.unknown-term-key-refused · ready floor readyspec:decisions.checked-mentions · ready floor readyspec:extraction.entry-citations · ready floor readyspec:extraction.entry-citations.code-comment-cites-declaration · ready floor readyspec:extraction.entry-citations.test-title-cites-declaration · ready floor readyspec:extraction.entry-citations.unanchored-file-unread · ready floor readyspec:extraction.entry-citations.unresolved-citation · ready floor readyspec:consumers.context-bundle · ready floor readyspec:consumers.context-bundle.oversized-member-named · ready floor readyspec:consumers.context-bundle.parts-cover-the-pack · ready floor readyspec:consumers.readiness-planner · ready floor readyspec:consumers.readiness-planner.cycle-shares-a-round · ready floor readyspec:consumers.readiness-planner.decision-first · ready floor readyspec:consumers.readiness-planner.dependency-order · ready floor readyspec:consumers.readiness-planner.owner-question-holds · ready floor readyspec:consumers.upgrade-kit · ready floor readyspec:consumers.upgrade-kit.capability-adoption · ready floor readyspec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · ready floor readyspec:consumers.upgrade-kit.rule-key-proposal · ready floor readyspec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · ready floor readyspec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · ready floor readyPreferred syntax: block. Fixed categorical cells; membership appears in comments.
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.
spec:consumers.agent-surface.evaluation-sink
7 design entries · 3 pinned declarations
spec:decisions.agent-front-door · stated readyNone.
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 protocolimpl: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 protocol5 verifiers, 5 enabled · 3 verifying examples, 3 enabled
spec:consumers.agent-surface.evaluation-sink.exported-evaluator
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:consumers.agent-surface.evaluation-sink.recipe-call
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:consumers.agent-surface.evaluation-sink.unknown-recipe
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
11 design entries · 7 pinned declarations
spec:decisions.architectural-annotation · stated readyNone.
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 protocolimpl: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 protocolimpl: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 protocol9 verifiers, 9 enabled · 9 verifying examples, 9 enabled
spec:validation.corpus-rules.params-edit-starts-a-cycle
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:validation.corpus-rules.rules-edit-starts-a-cycle
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:validation.corpus-rules.unreadable-params-fail-one-file
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
No design entries · no pinned declarations
None.
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 protocol2 verifiers, 2 enabled · no verifying examples, 0 enabled
spec:consumers.agent-surface.address-and-cycle-recipes
4 design entries · 3 pinned declarations
None.
impl:protocol.address-and-cycle-recipes · asserts realization of the shipped address resolution and dependency cycle recipes · test/recipes.test.ts:35684 verifiers, 4 enabled · 3 verifying examples, 3 enabled
spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:validation.external-registers
8 design entries · 7 pinned declarations
None.
impl:protocol.external-registers-recipe · asserts realization of the shipped external-registers recipe · test/external-registers.test.ts:92 verifiers, 2 enabled · 2 verifying examples, 2 enabled
spec:validation.external-registers.uncited-on-request
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:validation.external-registers.unknown-and-retired
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
5 design entries · 2 pinned declarations
spec:decisions.shipped-projections-frozen · stated readyNone.
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 protocolimpl: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 protocolimpl: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 protocolimpl: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 protocol3 verifiers, 3 enabled · 3 verifying examples, 3 enabled
spec:consumers.command-line.generate-check-failure
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:consumers.command-line.generate-writes-every-root
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:consumers.command-line.verb-help-touches-nothing
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
9 design entries · 7 pinned declarations
spec:decisions.shipped-projections-frozen · stated readyNone.
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 protocolimpl: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 protocolimpl: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 protocolimpl: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 protocolimpl: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 protocolimpl: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 protocolimpl:protocol.spec-sections · typed Spec section shapes · src/model/sections.ts:138 · role contract · component component:protocol.model · layer domain · context protocol11 verifiers, 11 enabled · 10 verifying examples, 10 enabled
spec:carrier.step-keys.conflicting-example-key-withheld
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:carrier.step-keys.gherkin-keyed-step-stays-bound
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:carrier.step-keys.key-equal-to-a-skeleton-withheld
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:carrier.step-keys.malformed-marker-refused
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:carrier.step-keys.renamed-key-breaks
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:carrier.step-keys.repeated-key-refused
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:carrier.step-keys.reworded-keyed-step-stays-bound
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:carrier.step-keys.reworded-unkeyed-step-breaks
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:carrier.step-keys.two-keys-on-one-step-refused
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:carrier.step-keys.typescript-keyed-step-imports-keyed
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:extraction.executable-contracts
6 design entries · 5 pinned declarations
spec:decisions.point-per-example · stated readyNone.
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 protocolimpl: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 protocol7 verifiers, 7 enabled · 7 verifying examples, 7 enabled
spec:extraction.runnable-modules
7 design entries · 5 pinned declarations
spec:decisions.adopted-registrars-committed · stated readyspec:decisions.anchor-comment-form · stated readyspec:decisions.binding-not-liveness · stated readyspec:decisions.point-per-example · stated readyNone.
component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · role projection · layer application · context protocolcomponent:protocol.testing · the generated registrar runtime · src/testing/index.ts:38 · role adapter · layer adapter · context protocolimpl: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 protocolimpl: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 protocol3 verifiers, 3 enabled · no verifying examples, 0 enabled
10 design entries · 7 pinned declarations
spec:decisions.shipped-projections-frozen · stated readyNone.
impl:protocol.address-and-cycle-recipes · asserts realization of the shipped address resolution and dependency cycle recipes · test/recipes.test.ts:3568impl:protocol.entry-locations · builds the carrier entry location table · src/extract/derive.ts:78 · role extractor · component component:protocol.extract · layer application · context protocolimpl: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 protocolimpl: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 protocolimpl: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 protocolimpl:protocol.register-recipes · asserts realization of the shipped register recipes · test/recipes.test.ts:2057impl: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 protocolimpl:protocol.spec-sections · typed Spec section shapes · src/model/sections.ts:138 · role contract · component component:protocol.model · layer domain · context protocolimpl:protocol.stable-ids · stable ID grammar parser · src/ids.ts:173 · role codec · component component:protocol.model · layer domain · context protocol6 verifiers, 6 enabled · 5 verifying examples, 5 enabled
spec:model.term-addresses.keyed-term-resolves
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:model.term-addresses.malformed-term-marker-refused
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:model.term-addresses.repeated-term-key-refused
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:model.term-addresses.typescript-term-imports-keyed
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:model.term-addresses.unknown-term-key-refused
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:decisions.checked-mentions
No design entries · no pinned declarations
None.
spec:extraction.entry-citations
8 design entries · 7 pinned declarations
None.
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 protocolimpl: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 protocolimpl:protocol.entry-citation-recipe · asserts realization of Entry citations in docs/agent-surface/recipes.md · test/recipes.test.ts:7008impl: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 protocol4 verifiers, 4 enabled · 4 verifying examples, 4 enabled
spec:extraction.entry-citations.code-comment-cites-declaration
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:extraction.entry-citations.test-title-cites-declaration
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:extraction.entry-citations.unanchored-file-unread
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:extraction.entry-citations.unresolved-citation
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
17 design entries · 7 pinned declarations
spec:decisions.agent-front-door · stated readyNone.
impl:protocol.context-bundle-recipe · realizes the context bundle in the shipped recipe catalog · test/iteration-recipes.test.ts:765 · role projection3 verifiers, 3 enabled · 2 verifying examples, 2 enabled
spec:consumers.context-bundle.oversized-member-named
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:consumers.context-bundle.parts-cover-the-pack
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:consumers.readiness-planner
6 design entries · 4 pinned declarations
None.
impl:protocol.statement-queue-recipe · realizes the statement queue in the shipped recipe catalog · test/self-hosting-readiness-planner.test.ts:74 · role projection4 verifiers, 4 enabled · 4 verifying examples, 4 enabled
spec:consumers.readiness-planner.decision-first
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:consumers.readiness-planner.dependency-order
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:consumers.readiness-planner.owner-question-holds
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
2 design entries · 1 pinned declaration
None.
impl:protocol.upgrade-guide · realizes the shipped upgrade guide document · test/upgrade-kit.test.ts:871 verifier, 1 enabled · no verifying examples, 0 enabled
spec:consumers.upgrade-kit.capability-adoption
6 design entries · 4 pinned declarations
None.
impl:protocol.capability-adoption-recipe · realizes capability adoption in the shipped recipe catalog · test/upgrade-kit.test.ts:514 · role projection1 verifier, 1 enabled · 1 verifying example, 1 enabled
spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:consumers.upgrade-kit.rule-key-proposal
9 design entries · 6 pinned declarations
None.
impl:protocol.rule-key-proposal-recipe · realizes the rule-key proposal in the shipped recipe catalog · test/upgrade-kit.test.ts:742 · role projection2 verifiers, 2 enabled · 2 verifying examples, 2 enabled
spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean
No design entries · no pinned declarations
None.
1 verifier, 1 enabled · no verifying examples, 0 enabled
| Spec | Stated rung | Implementation binding | Joined members |
|---|---|---|---|
spec:carrier.slot-notationspec:carrier.slot-notation | ready | present | refines: spec:carrier.step-keys |
spec:consumers.adopter-on-rampspec:consumers.adopter-on-ramp | ready | present | dependsOn: spec:consumers.command-line |
spec:consumers.agent-surfacespec:consumers.agent-surface | ready | present | refines: spec:consumers.agent-surface.evaluation-sink, spec:validation.corpus-rules, spec:consumers.context-bundle dependsOn: spec:validation.corpus-rules |
spec:consumers.agent-surface.design-recipesspec:consumers.agent-surface.design-recipes | ready | present | dependsOn: spec:consumers.context-bundle |
spec:consumers.agent-surface.recipe-parametersspec:consumers.agent-surface.recipe-parameters | ready | present | dependsOn: spec:validation.corpus-rules, spec:consumers.agent-surface.address-and-cycle-recipes, spec:validation.external-registers |
spec:consumers.agent-surface.register-recipesspec:consumers.agent-surface.register-recipes | ready | present | refines: spec:consumers.agent-surface.address-and-cycle-recipes dependsOn: spec:validation.external-registers |
spec:consumers.authoring-on-rampspec:consumers.authoring-on-ramp | ready | present | refines: spec:consumers.validate-watch, spec:consumers.upgrade-kit |
spec:consumers.capability-mapspec:consumers.capability-map | ready | present | dependsOn: spec:consumers.upgrade-kit |
spec:consumers.edit-modelspec:consumers.edit-model | ready | none | dependsOn: spec:consumers.upgrade-kit |
spec:consumers.graph-first-planningspec:consumers.graph-first-planning | ready | present | refines: spec:consumers.readiness-planner |
spec:consumers.intent-compositionspec:consumers.intent-composition | ready | none | dependsOn: spec:consumers.upgrade-kit |
spec:consumers.intent-composition.proposalspec:consumers.intent-composition.proposal | ready | present | dependsOn: spec:consumers.upgrade-kit.rule-key-proposal |
spec:consumers.projections-modelspec:consumers.projections-model | ready | present | refines: spec:consumers.command-line |
spec:consumers.review-perspectivesspec:consumers.review-perspectives | ready | present | dependsOn: spec:consumers.upgrade-kit.capability-adoption |
spec:consumers.roadmapspec:consumers.roadmap | ready | present | dependsOn: spec:consumers.upgrade-kit |
spec:consumers.spec-studio.publisherspec:consumers.spec-studio.publisher | ready | present | dependsOn: spec:consumers.command-line |
spec:consumers.wholesale-view-rewritespec:consumers.wholesale-view-rewrite | ready | present | dependsOn: spec:consumers.command-line |
spec:decisions.adopted-registrars-committedspec:decisions.adopted-registrars-committed | ready | none | decidedBy: spec:extraction.runnable-modules |
spec:decisions.agent-front-doorspec:decisions.agent-front-door | ready | none | decidedBy: spec:consumers.agent-surface.evaluation-sink, spec:consumers.context-bundle |
spec:decisions.anchor-comment-formspec:decisions.anchor-comment-form | ready | none | decidedBy: spec:extraction.runnable-modules |
spec:decisions.architectural-annotationspec:decisions.architectural-annotation | ready | none | decidedBy: spec:validation.corpus-rules |
spec:decisions.binding-not-livenessspec:decisions.binding-not-liveness | ready | none | decidedBy: spec:extraction.runnable-modules |
spec:decisions.content-only-sectionsspec:decisions.content-only-sections | ready | none | dependsOn: spec:decisions.checked-mentions |
spec:decisions.one-validation-pathspec:decisions.one-validation-path | ready | none | dependsOn: spec:consumers.validate-watch |
spec:decisions.point-per-examplespec:decisions.point-per-example | ready | none | decidedBy: spec:extraction.executable-contracts, spec:extraction.runnable-modules |
spec:decisions.shipped-projections-frozenspec:decisions.shipped-projections-frozen | ready | none | decidedBy: spec:consumers.command-line, spec:carrier.step-keys, spec:model.term-addresses |
spec:extraction.build-pipelinespec:extraction.build-pipeline | ready | present | refines: spec:extraction.executable-contracts dependsOn: spec:extraction.runnable-modules |
spec:extraction.claim-taxonomyspec:extraction.claim-taxonomy | ready | present | dependsOn: spec:extraction.entry-citations |
spec:extraction.contract-declarationsspec:extraction.contract-declarations | ready | present | dependsOn: spec:consumers.upgrade-kit.capability-adoption |
spec:extraction.derive-graphspec:extraction.derive-graph | ready | present | refines: spec:extraction.entry-citations |
spec:extraction.determinismspec:extraction.determinism | ready | present | constrainedBy: spec:extraction.entry-citations |
spec:extraction.entry-locationsspec:extraction.entry-locations | ready | present | dependsOn: spec:model.term-addresses, spec:extraction.entry-citations, spec:consumers.upgrade-kit.rule-key-proposal |
spec:extraction.example-runnerspec:extraction.example-runner | ready | present | refines: spec:extraction.runnable-modules |
spec:extraction.excludesspec:extraction.excludes | ready | present | dependsOn: spec:consumers.validate-watch |
spec:extraction.executable-examplesspec:extraction.executable-examples | ready | present | refines: spec:extraction.executable-contracts |
spec:model.anchorsspec:model.anchors | ready | present | dependsOn: spec:extraction.entry-citations |
spec:model.open-question-fieldsspec:model.open-question-fields | ready | present | dependsOn: spec:consumers.readiness-planner, spec:consumers.upgrade-kit.capability-adoption |
spec:model.open-question-keysspec:model.open-question-keys | ready | present | dependsOn: spec:consumers.upgrade-kit.capability-adoption |
spec:model.planned-architecturespec:model.planned-architecture | ready | present | dependsOn: spec:consumers.upgrade-kit.capability-adoption |
spec:model.relation-reasonsspec:model.relation-reasons | ready | present | dependsOn: spec:consumers.upgrade-kit.capability-adoption |
spec:model.rule-keysspec:model.rule-keys | ready | present | dependsOn: 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-sectionsspec:model.spec-sections | ready | present | refines: spec:model.term-addresses |
spec:model.stable-idsspec:model.stable-ids | ready | present | refines: spec:decisions.checked-mentions dependsOn: spec:model.term-addresses |
spec:validation.diagnostic-renderingspec:validation.diagnostic-rendering | ready | present | dependsOn: spec:validation.corpus-rules |
spec:validation.next-rung-floorspec:validation.next-rung-floor | ready | present | dependsOn: spec:consumers.readiness-planner |
spec:validation.prose-mentionsspec:validation.prose-mentions | ready | present | dependsOn: spec:extraction.entry-citations |
spec:validation.two-check-familiesspec:validation.two-check-families | ready | present | constrainedBy: spec:validation.corpus-rules |
spec:validation.typed-dependency-floorspec:validation.typed-dependency-floor | ready | present | dependsOn: spec:consumers.readiness-planner |
| Spec | Stated rung | Implementation binding | Joined members |
|---|---|---|---|
spec:carrier.gherkin-authoringspec:carrier.gherkin-authoring | ready | present | dependsOn: spec:carrier.step-keys |
spec:carrier.markdown-body-grammarspec:carrier.markdown-body-grammar | ready | present | dependsOn: spec:carrier.step-keys, spec:model.term-addresses |
spec:consumers.agent-surface.answer-shapesspec:consumers.agent-surface.answer-shapes | ready | present | dependsOn: spec:consumers.agent-surface.evaluation-sink |
spec:consumers.agent-surface.example-space-coveragespec:consumers.agent-surface.example-space-coverage | ready | present | dependsOn: spec:extraction.executable-contracts |
spec:consumers.agent-surface.register-recipesspec:consumers.agent-surface.register-recipes | ready | present | dependsOn: spec:model.term-addresses |
spec:consumers.delivery-session-on-rampspec:consumers.delivery-session-on-ramp | ready | present | dependsOn: spec:consumers.context-bundle |
spec:consumers.design-slicespec:consumers.design-slice | ready | present | dependsOn: spec:consumers.context-bundle, spec:consumers.readiness-planner |
spec:consumers.engine-provenancespec:consumers.engine-provenance | ready | present | refines: spec:consumers.command-line |
spec:consumers.intent-composition.proposalspec:consumers.intent-composition.proposal | ready | present | dependsOn: spec:consumers.agent-surface.address-and-cycle-recipes |
spec:consumers.obsidian-vault.iterationspec:consumers.obsidian-vault.iteration | ready | present | dependsOn: spec:consumers.validate-watch |
spec:consumers.obsidian-vault.notesspec:consumers.obsidian-vault.notes | ready | present | dependsOn: spec:model.term-addresses |
spec:consumers.roadmapspec:consumers.roadmap | ready | present | dependsOn: spec:consumers.readiness-planner |
spec:consumers.spec-studio.cited-line-textspec:consumers.spec-studio.cited-line-text | scoped | none | dependsOn: spec:extraction.entry-citations |
spec:consumers.spec-studio.data.recipe-answersspec:consumers.spec-studio.data.recipe-answers | ready | present | dependsOn: spec:consumers.agent-surface.evaluation-sink |
spec:consumers.spec-studio.glossary-pagespec:consumers.spec-studio.glossary-page | ready | present | dependsOn: spec:model.term-addresses |
spec:consumers.spec-studio.owner-queuespec:consumers.spec-studio.owner-queue | ready | present | dependsOn: spec:consumers.readiness-planner |
spec:consumers.spec-studio.publisher.watchspec:consumers.spec-studio.publisher.watch | ready | present | dependsOn: spec:consumers.validate-watch |
spec:consumers.spec-studio.register-inputspec:consumers.spec-studio.register-input | scoped | none | dependsOn: spec:validation.external-registers |
spec:consumers.spec-studio.registersspec:consumers.spec-studio.registers | ready | present | dependsOn: spec:extraction.entry-citations |
spec:consumers.spec-studio.spec-pagespec:consumers.spec-studio.spec-page | ready | present | dependsOn: spec:model.term-addresses, spec:extraction.entry-citations |
spec:consumers.spec-studio.verification-panelsspec:consumers.spec-studio.verification-panels | ready | present | dependsOn: spec:extraction.executable-contracts |
spec:decisions.adopted-registrars-committedspec:decisions.adopted-registrars-committed | ready | none | refines: spec:extraction.runnable-modules |
spec:extraction.contract-declarationsspec:extraction.contract-declarations | ready | present | refines: spec:extraction.executable-contracts |
spec:extraction.example-runnerspec:extraction.example-runner | ready | present | dependsOn: spec:extraction.executable-contracts |
spec:extraction.executable-contracts.case-colliding-pathspec:extraction.executable-contracts.case-colliding-path | ready | none | refines: spec:extraction.executable-contracts |
spec:extraction.executable-contracts.concreteness-refusalspec:extraction.executable-contracts.concreteness-refusal | ready | none | refines: spec:extraction.executable-contracts |
spec:extraction.executable-contracts.multi-entry-examplespec:extraction.executable-contracts.multi-entry-example | ready | none | refines: spec:extraction.executable-contracts |
spec:model.open-question-keysspec:model.open-question-keys | ready | present | decidedBy: spec:decisions.checked-mentions |
spec:model.rule-keysspec:model.rule-keys | ready | present | decidedBy: spec:decisions.checked-mentions |
spec:model.stable-idsspec:model.stable-ids | ready | present | decidedBy: spec:decisions.checked-mentions |
spec:validation.architecture-constraintsspec:validation.architecture-constraints | ready | present | refines: spec:validation.corpus-rules dependsOn: spec:validation.corpus-rules |
spec:validation.corpus-rules.copies-contain-changesspec:validation.corpus-rules.copies-contain-changes | ready | none | refines: spec:validation.corpus-rules |
spec:validation.corpus-rules.error-finding-failsspec:validation.corpus-rules.error-finding-fails | ready | none | refines: spec:validation.corpus-rules |
spec:validation.corpus-rules.malformed-finding-failsspec:validation.corpus-rules.malformed-finding-fails | ready | none | refines: spec:validation.corpus-rules |
spec:validation.corpus-rules.warning-finding-informsspec:validation.corpus-rules.warning-finding-informs | ready | none | refines: spec:validation.corpus-rules |
spec:validation.prose-mentionsspec:validation.prose-mentions | ready | present | dependsOn: spec:model.term-addresses decidedBy: spec:decisions.checked-mentions |
| Spec | Stated rung | Implementation binding | Joined members |
|---|---|---|---|
spec:extraction.executable-contracts.case-colliding-pathspec:extraction.executable-contracts.case-colliding-path | ready | none | verifies: spec:extraction.executable-contracts |
spec:extraction.executable-contracts.concreteness-refusalspec:extraction.executable-contracts.concreteness-refusal | ready | none | verifies: spec:extraction.executable-contracts |
spec:extraction.executable-contracts.multi-entry-examplespec:extraction.executable-contracts.multi-entry-example | ready | none | verifies: spec:extraction.executable-contracts |
spec:validation.corpus-rules.copies-contain-changesspec:validation.corpus-rules.copies-contain-changes | ready | none | verifies: spec:validation.corpus-rules |
spec:validation.corpus-rules.error-finding-failsspec:validation.corpus-rules.error-finding-fails | ready | none | verifies: spec:validation.corpus-rules |
spec:validation.corpus-rules.malformed-finding-failsspec:validation.corpus-rules.malformed-finding-fails | ready | none | verifies: spec:validation.corpus-rules |
spec:validation.corpus-rules.warning-finding-informsspec:validation.corpus-rules.warning-finding-informs | ready | none | verifies: spec:validation.corpus-rules |
None.
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.
None.
spec:consumers.agent-surface.evaluation-sink
spec:consumers.agent-surface.evaluation-sinkUse Case / Behavior · storyready floor readyPacks: 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.
problemsdp 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.outcomerule line 19 · specs/consumers/agent-surface.evaluation-sink.sdp.md:19sdp 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:20g, 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:21undefined 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:22report 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:23rule.fifthBinding line 24 · specs/consumers/agent-surface.evaluation-sink.sdp.md:24recipes, 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:25g, 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:26spec:consumers.agent-surface.evaluation-sink.unknown-recipe · enabled
rule.oneEvaluator line 27 · specs/consumers/agent-surface.evaluation-sink.sdp.md:27sdp 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:28recipes, 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.
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}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}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"}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}parseErrorLine line 31 · specs/consumers/agent-surface.evaluation-sink.sdp.md:31sdp 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:32recipes(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:33dist/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:34g, 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:35recipes: 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:36evaluateBody(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:37the 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.specs/consumers/agent-surface.evaluation-sink.exported-evaluator.sdp.mdspecs/consumers/agent-surface.evaluation-sink.recipe-call.sdp.mdspecs/consumers/agent-surface.evaluation-sink.unknown-recipe.sdp.mdtest/cli-q.test.ts:81test/cli-q.test.ts:730call · "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}| Example | call | entrance |
|---|---|---|
| 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
| Declared value | Examples |
|---|---|
"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 |
| Declared value | Examples |
|---|---|
"through sdp q" | spec:consumers.agent-surface.evaluation-sink.recipe-call, spec:consumers.agent-surface.evaluation-sink.unknown-recipe |
"through the exported evaluator over a graph derived once" | spec:consumers.agent-surface.evaluation-sink.exported-evaluator |
call: Noneentrance: Nonesrc/reader/evaluate-body.ts:120src/cli/q-command.ts:212test/reach-examples.test.ts:92test/reach-examples.test.ts:416test/reach-examples.test.ts:404test/reach-examples.test.ts:410test/cli-q.test.ts:81test/cli-q.test.ts:730Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.
spec:decisions.agent-front-doorThe 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.
api:protocol.evaluate-body · evaluates bodies and shipped recipes over one in-memory reader, graph and report · src/reader/evaluate-body.ts:120Component: 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 protocolUses
component:protocol.adapters · external runtime and source adapters · src/adapters/vitest.ts:23 · layer adapter · context protocolcomponent:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocolcomponent:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocolcomponent:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolcomponent:protocol.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocolcomponent:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocolcomponent:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocolcomponent:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocolcomponent:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolcomponent:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocolUses
component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolcomponent:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocolcomponent:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocolcomponent:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolimpl: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:212Component: 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.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
spec:consumers.agent-surface · stated ready, floor readyspec:decisions.agent-front-door · stated ready, floor readyspec:consumers.agent-surface.answer-shapesImplementing units
impl:protocol.answer-shape-recipes · test/recipes.test.ts:6214Referencing units
impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597impl:protocol.reader · src/reader/reader.ts:687Enabled verifiers: test:protocol.answer-shape-recipes
Packs: pack:design-iteration-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.consumers.agent-surface.evaluation-sink.exported-evaluator
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.consumers.agent-surface.evaluation-sink.recipe-call
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.consumers.agent-surface.evaluation-sink.unknown-recipe
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
spec:consumers.spec-studio.data.recipe-answersImplementing units
impl:protocol.studio-recipes · src/projections/studio/recipes.ts:34Referencing units
impl:protocol.studio-register-contracts · src/projections/studio/pages/register-answers.ts:4Enabled verifiers: test:protocol.studio-lenses
Packs: pack:self-hosting-v1, pack:spec-studio-v1
Implementing units
impl:protocol.corpus-rule-runner · src/cli/corpus-rules.ts:65impl:protocol.corpus-rules · src/cli/validate-view-command.ts:79impl:protocol.validate-watch · src/cli/validate-watch.ts:591Referencing 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:consumers.spec-studio.slice-pageImplementing units
impl:protocol.studio-slice-page · src/projections/studio/pages/slice-page.ts:25Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-page
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:validation.architecture-constraintsImplementing units
impl:protocol.architecture-walk-recipe · test/architecture-recipes.test.ts:10Referencing 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-changesImplementing 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-failsImplementing 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-failsImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.validation.corpus-rules.malformed-finding-fails
Packs: pack:corpus-checks-v1, pack:self-hosting-v1
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
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
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-informsImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.validation.corpus-rules.warning-finding-informs
Packs: pack:corpus-checks-v1, pack:self-hosting-v1
Implementing units
impl:protocol.external-registers-recipe · test/external-registers.test.ts:9Referencing 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:consumers.spec-studio.register-inputImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:validation.architecture-constraints.forbidden-layer-pairImplementing 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-ruleImplementing 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-unclassifiedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.validation.architecture-constraints.unstated-layer-unclassified
Packs: pack:corpus-checks-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.external-registers.uncited-on-request
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.external-registers.unknown-and-retired
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| decidedBy · outgoing | spec:decisions.agent-front-doorspec:decisions.agent-front-door · resolves | declared | None | None |
| refines · outgoing | spec:consumers.agent-surfacespec:consumers.agent-surface · resolves | declared | None | None |
| dependsOn · incoming | spec:consumers.agent-surface.answer-shapesspec:consumers.agent-surface.answer-shapes · resolves | declared | a caller runs a shipped body, and wraps it in its own body, through the evaluation sink | None |
| dependsOn · incoming | spec:consumers.spec-studio.data.recipe-answersspec:consumers.spec-studio.data.recipe-answers · resolves | declared | the build composes recipe answers through the same body evaluation sdp q runs | None |
| dependsOn · incoming | Corpus-authored rules run on the one validation pathspec:validation.corpus-rules · resolves | declared | a rules file holds the body the sink evaluates, with the sink's bindings and trust | None |
| refines · incoming | A script holding a graph runs a shipped recipe through the exported evaluatorspec:consumers.agent-surface.evaluation-sink.exported-evaluator · resolves | declared | None | None |
| refines · incoming | A body calls a shipped recipe and returns its answer unchangedspec:consumers.agent-surface.evaluation-sink.recipe-call · resolves | declared | None | None |
| refines · incoming | A call to a recipe the catalog does not hold fails the bodyspec:consumers.agent-surface.evaluation-sink.unknown-recipe · resolves | declared | None | None |
| verifies · incoming | A script holding a graph runs a shipped recipe through the exported evaluatorspec:consumers.agent-surface.evaluation-sink.exported-evaluator · resolves | declared | None | exportedEvaluator, oneEvaluator, recipeCall |
| verifies · incoming | A body calls a shipped recipe and returns its answer unchangedspec:consumers.agent-surface.evaluation-sink.recipe-call · resolves | declared | None | fifthBinding, recipeCall |
| verifies · incoming | A call to a recipe the catalog does not hold fails the bodyspec:consumers.agent-surface.evaluation-sink.unknown-recipe · resolves | declared | None | callRefusals |
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 protocolimpl: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 protocolspecs/consumers/agent-surface.evaluation-sink.exported-evaluator.sdp.md · example enabledspecs/consumers/agent-surface.evaluation-sink.recipe-call.sdp.md · example enabledspecs/consumers/agent-surface.evaluation-sink.unknown-recipe.sdp.md · example enabledtest/cli-q.test.ts:81 · test anchortest/cli-q.test.ts:730 · test anchororacle:protocol.consumers.agent-surface.evaluation-sink · test/reach-examples.test.ts:92Runtime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.agent-surface.evaluation-sink.exported-evaluator
spec:consumers.agent-surface.evaluation-sink.exported-evaluatorExample / Scenario · storyready floor readyPacks: 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.
outcomeevaluateBody over a graph the script derived once, and compare its answer with the recipe's shipped file evaluated over the same graph.assumptionsextract. 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.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}test/reach-examples.test.ts:416test/reach-examples.test.ts:416Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | The evaluation sink runs one body and prints its returnspec:consumers.agent-surface.evaluation-sink · resolves | declared | None | None |
| verifies · outgoing | The evaluation sink runs one body and prints its returnspec:consumers.agent-surface.evaluation-sink · resolves | declared | None | exportedEvaluator, oneEvaluator, recipeCall |
test/reach-examples.test.ts:416 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.agent-surface.evaluation-sink.recipe-call
spec:consumers.agent-surface.evaluation-sink.recipe-callExample / Scenario · storyready floor readyPacks: 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.
outcomesdp q and compare its answer with the answer of the recipe's shipped file over the same graph.assumptionsidea 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.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}test/reach-examples.test.ts:404test/reach-examples.test.ts:404Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | The evaluation sink runs one body and prints its returnspec:consumers.agent-surface.evaluation-sink · resolves | declared | None | None |
| verifies · outgoing | The evaluation sink runs one body and prints its returnspec:consumers.agent-surface.evaluation-sink · resolves | declared | None | fifthBinding, recipeCall |
test/reach-examples.test.ts:404 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.agent-surface.evaluation-sink.unknown-recipe
spec:consumers.agent-surface.evaluation-sink.unknown-recipeExample / Scenario · storyready floor readyPacks: 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.
outcomesdp q and read the rejection.assumptionssdp 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: .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"}test/reach-examples.test.ts:410test/reach-examples.test.ts:410Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | The evaluation sink runs one body and prints its returnspec:consumers.agent-surface.evaluation-sink · resolves | declared | None | None |
| verifies · outgoing | The evaluation sink runs one body and prints its returnspec:consumers.agent-surface.evaluation-sink · resolves | declared | None | callRefusals |
test/reach-examples.test.ts:410 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:validation.corpus-rules
spec:validation.corpus-rulesUse Case / Behavior · featureready floor readyPacks: 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.
problemoutcomerule line 38 · specs/validation/corpus-rules.sdp.md:38g, 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:39params 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:1475rule.operatorNamed line 40 · specs/validation/corpus-rules.sdp.md:40sdp 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:41spec:validation.corpus-rules.copies-contain-changes · enabled
rule.copiesPerFile line 42 · specs/validation/corpus-rules.sdp.md:42params, 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:43params 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:44rule line 45 · specs/validation/corpus-rules.sdp.md:45rule line 46 · specs/validation/corpus-rules.sdp.md:46rule.exitCode line 47 · specs/validation/corpus-rules.sdp.md:47error 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:48sdp 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:49findings 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:50sdp 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--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:52findings 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:536 unkeyed rules.
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"}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"}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)"}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)"}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}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
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}rulesFlag line 56 · specs/validation/corpus-rules.sdp.md:56sdp 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:58sdp 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:1474corpusFinding 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--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:63corpus 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:64corpus 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--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
specs/consumers/agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run.sdp.mdspecs/consumers/agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run.sdp.mdspec: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.mdspec: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.mdspec: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.mdspecs/validation/corpus-rules.params-edit-starts-a-cycle.sdp.mdspecs/validation/corpus-rules.rules-edit-starts-a-cycle.sdp.mdspecs/validation/corpus-rules.unreadable-params-fail-one-file.sdp.mdspec: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.mdfirst · "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}| Example | first |
|---|---|
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
| Declared value | Examples |
|---|---|
"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 |
first: Nonetest/architecture-recipes.test.ts:10src/cli/corpus-rules.ts:65src/cli/validate-view-command.ts:79test/external-registers.test.ts:9src/cli/validate-watch.ts:591test/reach-examples.test.ts:247test/self-hosting-external-registers.test.ts:29test/reach-examples.test.ts:430test/reach-examples.test.ts:438test/self-hosting-external-registers.test.ts:128test/self-hosting-external-registers.test.ts:122test/self-hosting-corpus-checks.test.ts:346test/self-hosting-corpus-checks.test.ts:353test/self-hosting-corpus-checks.test.ts:360test/self-hosting-corpus-checks.test.ts:318test/self-hosting-corpus-checks.test.ts:325test/self-hosting-corpus-checks.test.ts:332test/reach-examples.test.ts:454test/reach-examples.test.ts:448test/reach-examples.test.ts:460test/self-hosting-corpus-checks.test.ts:339Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.
spec:decisions.architectural-annotationArchitectural 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.
component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocolUses
component:protocol.adapters · external runtime and source adapters · src/adapters/vitest.ts:23 · layer adapter · context protocolcomponent:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocolcomponent:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocolcomponent:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolcomponent:protocol.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocolcomponent:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocolcomponent:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocolcomponent:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocolcomponent:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolimpl:protocol.corpus-rule-runner · runs selected corpus rules and separates their failures · src/cli/corpus-rules.ts:65Component: 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:79Component: 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:591Component: 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.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Shown as text: this drawing exceeds the height budget of 2000 pixels after folding.
spec:consumers.agent-surface · stated ready, floor readyspec:consumers.agent-surface · stated ready, floor readyspec:consumers.agent-surface.recipe-parameters · stated ready, floor readyspec:validation.diagnostic-rendering · stated ready, floor readyspec:validation.two-check-families · stated ready, floor readyspec:decisions.architectural-annotation · stated ready, floor readyspec:validation.architecture-constraintsImplementing units
impl:protocol.architecture-walk-recipe · test/architecture-recipes.test.ts:10Referencing 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-changesImplementing 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-failsImplementing 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-failsImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.validation.corpus-rules.malformed-finding-fails
Packs: pack:corpus-checks-v1, pack:self-hosting-v1
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
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
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-informsImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.validation.corpus-rules.warning-finding-informs
Packs: pack:corpus-checks-v1, pack:self-hosting-v1
Implementing units
impl:protocol.external-registers-recipe · test/external-registers.test.ts:9Referencing 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:consumers.spec-studio.register-inputImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:validation.architecture-constraints.forbidden-layer-pairImplementing 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-ruleImplementing 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-unclassifiedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.validation.architecture-constraints.unstated-layer-unclassified
Packs: pack:corpus-checks-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.external-registers.uncited-on-request
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.external-registers.unknown-and-retired
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| constrainedBy · outgoing | spec:validation.two-check-familiesspec:validation.two-check-families · resolves | declared | None | None |
| decidedBy · outgoing | spec:decisions.architectural-annotationspec:decisions.architectural-annotation · resolves | declared | architecture checks remain the corpus's own rules | None |
| dependsOn · outgoing | spec:consumers.agent-surfacespec:consumers.agent-surface · resolves | declared | None | None |
| dependsOn · outgoing | The evaluation sink runs one body and prints its returnspec:consumers.agent-surface.evaluation-sink · resolves | declared | a rules file holds the body the sink evaluates, with the sink's bindings and trust | None |
| dependsOn · outgoing | spec:consumers.agent-surface.recipe-parametersspec:consumers.agent-surface.recipe-parameters · resolves | declared | validate takes --params in the sink's grammar | None |
| dependsOn · outgoing | Validation re-runs while an author edits carriersspec:consumers.validate-watch · resolves | declared | the watch loop reruns the named rules in each cycle | None |
| dependsOn · outgoing | spec:validation.diagnostic-renderingspec:validation.diagnostic-rendering · resolves | declared | corpus findings use the shared diagnostic currency | None |
| refines · outgoing | spec:consumers.agent-surfacespec:consumers.agent-surface · resolves | declared | a corpus scripts the graph through the evaluation sink to report its own findings | None |
| dependsOn · incoming | spec:validation.architecture-constraintsspec:validation.architecture-constraints · resolves | declared | None | None |
| dependsOn · incoming | A corpus checks the register tokens its prose citesspec:validation.external-registers · resolves | declared | the recipe answers with findings and runs as a rules file | None |
| refines · incoming | spec:validation.architecture-constraintsspec:validation.architecture-constraints · resolves | declared | the architecture walk is a corpus-selected rule over anchored structure | None |
| refines · incoming | spec:validation.corpus-rules.copies-contain-changesspec:validation.corpus-rules.copies-contain-changes · resolves | declared | None | None |
| refines · incoming | spec:validation.corpus-rules.error-finding-failsspec:validation.corpus-rules.error-finding-fails · resolves | declared | None | None |
| refines · incoming | spec:validation.corpus-rules.malformed-finding-failsspec:validation.corpus-rules.malformed-finding-fails · resolves | declared | None | None |
| refines · incoming | Editing a parameter file starts a cycle that reads the new parametersspec:validation.corpus-rules.params-edit-starts-a-cycle · resolves | declared | None | None |
| refines · incoming | Rewriting a rules file under node_modules starts a cycle that runs the new bodyspec:validation.corpus-rules.rules-edit-starts-a-cycle · resolves | declared | None | None |
| refines · incoming | A parameter file that stops being JSON fails only its own rules file, and the watcher runs onspec:validation.corpus-rules.unreadable-params-fail-one-file · resolves | declared | None | None |
| refines · incoming | spec:validation.corpus-rules.warning-finding-informsspec:validation.corpus-rules.warning-finding-informs · resolves | declared | None | None |
| refines · incoming | A corpus checks the register tokens its prose citesspec:validation.external-registers · resolves | declared | external-register checks run as corpus-selected rules | None |
| verifies · incoming | The shipped dependency-cycles file fails a rules run on a cyclespec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · resolves | declared | None | recipesAsRules |
| verifies · incoming | The shipped address-resolution file fails a rules run on an address that names no entryspec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · resolves | declared | None | recipesAsRules |
| verifies · incoming | spec:validation.corpus-rules.copies-contain-changesspec:validation.corpus-rules.copies-contain-changes · resolves | declared | None | copiesPerFile, namedOrder |
| verifies · incoming | spec:validation.corpus-rules.error-finding-failsspec:validation.corpus-rules.error-finding-fails · resolves | declared | None | exitCode |
| verifies · incoming | spec:validation.corpus-rules.malformed-finding-failsspec:validation.corpus-rules.malformed-finding-fails · resolves | declared | None | brokenRuleFails |
| verifies · incoming | Editing a parameter file starts a cycle that reads the new parametersspec:validation.corpus-rules.params-edit-starts-a-cycle · resolves | declared | None | watchedParams |
| verifies · incoming | Rewriting a rules file under node_modules starts a cycle that runs the new bodyspec:validation.corpus-rules.rules-edit-starts-a-cycle · resolves | declared | None | watchReruns |
| verifies · incoming | A parameter file that stops being JSON fails only its own rules file, and the watcher runs onspec:validation.corpus-rules.unreadable-params-fail-one-file · resolves | declared | None | watchedParams |
| verifies · incoming | spec:validation.corpus-rules.warning-finding-informsspec:validation.corpus-rules.warning-finding-informs · resolves | declared | None | exitCode |
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 protocolimpl: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 protocolimpl: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 protocolspecs/consumers/agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run.sdp.md · example enabledspecs/consumers/agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run.sdp.md · example enabledspec: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 enabledspec: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 enabledspec: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 enabledspecs/validation/corpus-rules.params-edit-starts-a-cycle.sdp.md · example enabledspecs/validation/corpus-rules.rules-edit-starts-a-cycle.sdp.md · example enabledspecs/validation/corpus-rules.unreadable-params-fail-one-file.sdp.md · example enabledspec: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 enabledoracle:protocol.corpus-rules-watch · test/reach-examples.test.ts:247Runtime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:validation.corpus-rules.params-edit-starts-a-cycle
spec:validation.corpus-rules.params-edit-starts-a-cycleExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptions{ "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.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)"}test/reach-examples.test.ts:454test/reach-examples.test.ts:454Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | Corpus-authored rules run on the one validation pathspec:validation.corpus-rules · resolves | declared | None | None |
| verifies · outgoing | Corpus-authored rules run on the one validation pathspec:validation.corpus-rules · resolves | declared | None | watchedParams |
test/reach-examples.test.ts:454 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:validation.corpus-rules.rules-edit-starts-a-cycle
spec:validation.corpus-rules.rules-edit-starts-a-cycleExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionsnode_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.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)"}test/reach-examples.test.ts:448test/reach-examples.test.ts:448Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | Corpus-authored rules run on the one validation pathspec:validation.corpus-rules · resolves | declared | None | None |
| verifies · outgoing | Corpus-authored rules run on the one validation pathspec:validation.corpus-rules · resolves | declared | None | watchReruns |
test/reach-examples.test.ts:448 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:validation.corpus-rules.unreadable-params-fail-one-file
spec:validation.corpus-rules.unreadable-params-fail-one-fileExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionscorpus 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.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}test/reach-examples.test.ts:460test/reach-examples.test.ts:460Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | Corpus-authored rules run on the one validation pathspec:validation.corpus-rules · resolves | declared | None | None |
| verifies · outgoing | Corpus-authored rules run on the one validation pathspec:validation.corpus-rules · resolves | declared | None | watchedParams |
test/reach-examples.test.ts:460 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.validate-watch
spec:consumers.validate-watchUse Case / Behavior · storyready floor readyPacks: 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.
problemsdp validate by hand after every save.outcomesdp 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.rule line 19 · specs/consumers/validate-watch.sdp.md:19sdp 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.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:21rule.operatorStop line 22 · specs/consumers/validate-watch.sdp.md:22sdp 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:23sdp 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.
test/cli.test.ts:1670test/corpus-rules.test.ts:343src/cli/validate-watch.ts:591test/cli.test.ts:1670test/corpus-rules.test.ts:343Copyable 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.
No decision record named.
component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocolUses
component:protocol.adapters · external runtime and source adapters · src/adapters/vitest.ts:23 · layer adapter · context protocolcomponent:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocolcomponent:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocolcomponent:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolcomponent:protocol.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocolcomponent:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocolcomponent:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocolcomponent:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocolcomponent:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolimpl:protocol.validate-watch · watches carrier directories and coalesces events into a pending validation rerun · src/cli/validate-watch.ts:591Component: 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.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
spec:consumers.authoring-on-ramp · stated ready, floor readyspec:decisions.one-validation-path · stated ready, floor readyspec:extraction.excludes · stated ready, floor readyspec:consumers.obsidian-vault.iterationImplementing units
impl:protocol.vault-sync · src/projections/vault/sync.ts:98impl:protocol.vault-text · src/projections/vault/text.ts:30impl:protocol.vault-watch · src/cli/vault-command.ts:219Referencing 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.spec-studio.publisher.watchImplementing units
impl:protocol.studio-watch · src/cli/studio-command.ts:122Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.publisher.watch.matches-plain-run
Packs: pack:self-hosting-v1, pack:spec-studio-v1
Implementing units
impl:protocol.corpus-rule-runner · src/cli/corpus-rules.ts:65impl:protocol.corpus-rules · src/cli/validate-view-command.ts:79impl:protocol.validate-watch · src/cli/validate-watch.ts:591Referencing 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:consumers.obsidian-vault.iteration.watch-rewrites-changed-notesImplementing 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-anchorImplementing 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-runImplementing 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-rampImplementing units
impl:protocol.vault-on-ramp · test/skills.test.ts:1995Referencing units
None.
Enabled verifiers: test:protocol.vault-on-ramp
Packs: pack:obsidian-vault-v1, pack:self-hosting-v1
spec:validation.architecture-constraintsImplementing units
impl:protocol.architecture-walk-recipe · test/architecture-recipes.test.ts:10Referencing 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-changesImplementing 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-failsImplementing 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-failsImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.validation.corpus-rules.malformed-finding-fails
Packs: pack:corpus-checks-v1, pack:self-hosting-v1
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
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
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-informsImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.validation.corpus-rules.warning-finding-informs
Packs: pack:corpus-checks-v1, pack:self-hosting-v1
Implementing units
impl:protocol.external-registers-recipe · test/external-registers.test.ts:9Referencing 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:consumers.spec-studio.register-inputImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:validation.architecture-constraints.forbidden-layer-pairImplementing 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-ruleImplementing 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-unclassifiedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.validation.architecture-constraints.unstated-layer-unclassified
Packs: pack:corpus-checks-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.external-registers.uncited-on-request
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.external-registers.unknown-and-retired
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | spec:decisions.one-validation-pathspec:decisions.one-validation-path · resolves | declared | None | None |
| dependsOn · outgoing | spec:extraction.excludesspec:extraction.excludes · resolves | declared | None | None |
| refines · outgoing | spec:consumers.authoring-on-rampspec:consumers.authoring-on-ramp · resolves | declared | None | None |
| dependsOn · incoming | spec:consumers.obsidian-vault.iterationspec:consumers.obsidian-vault.iteration · resolves | declared | the vault's watch runs the same loop over carriers and anchored source files | None |
| dependsOn · incoming | spec:consumers.spec-studio.publisher.watchspec:consumers.spec-studio.publisher.watch · resolves | declared | the watch reruns on the carrier events validate's watch follows | None |
| dependsOn · incoming | Corpus-authored rules run on the one validation pathspec:validation.corpus-rules · resolves | declared | the watch loop reruns the named rules in each cycle | None |
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 protocoltest/cli.test.ts:1670 · test anchortest/corpus-rules.test.ts:343 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.agent-surface.address-and-cycle-recipes
spec:consumers.agent-surface.address-and-cycle-recipesUse Case / Behavior · storyready floor readyPacks: 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.
problemdependsOn chain no one has traced.outcomedependsOn cycle with catalog recipes, so neither is rebuilt by hand.rule line 28 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:28params.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:29design 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:30severity 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:31rule line 32 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:32rule.addressFindings line 33 · specs/consumers/agent-surface.address-and-cycle-recipes.sdp.md:33findings 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:34findings 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:35params.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:36findings, 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.
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: ""}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"}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"}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}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{ totals, rows, findings } and dependency cycles returns { totals, cycles, findings }; each recipe's accepted names gain severity, after its existing ones.specs/consumers/agent-surface.address-and-cycle-recipes.chain-reports-nothing.sdp.mdspecs/consumers/agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run.sdp.mdspecs/consumers/agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run.sdp.mdtest/recipes.test.ts:3577corpus · "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}| Example | corpus | addresses | recipe | invocation |
|---|---|---|---|---|
| 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
| Declared value | Examples |
|---|---|
"two Specs depend on each other through dependsOn" | spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run |
"one Spec depends on another" | spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing, spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run |
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
| Declared value | Examples |
|---|---|
"address resolution" | spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run |
"dependency cycles" | spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing, spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run |
| Declared value | Examples |
|---|---|
"through sdp q" | spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing |
"as a rules file named by sdp validate --rules" | 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 |
corpus: Noneaddresses: Nonerecipe: Noneinvocation: Nonetest/recipes.test.ts:3568test/reach-examples.test.ts:174test/recipes.test.ts:3577test/reach-examples.test.ts:422test/reach-examples.test.ts:430test/reach-examples.test.ts:438Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.
No decision record named.
impl:protocol.address-and-cycle-recipes · asserts realization of the shipped address resolution and dependency cycle recipes · test/recipes.test.ts:3568Uses
None.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
spec:consumers.agent-surface.register-recipes · stated ready, floor readyspec:consumers.agent-surface.recipe-parameters · stated ready, floor readyspec:model.rule-keys · stated ready, floor readyImplementing 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
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
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.intent-composition.proposalImplementing units
impl:protocol.proposal-schema-and-recipe · test/iteration-recipes.test.ts:1510impl:protocol.studio-proposal-contract · src/studio-elements/proposal.ts:1Referencing units
None.
Enabled verifiers: test:protocol.proposal-schema-and-recipe
Packs: pack:design-iteration-v1, pack:design-management-v1, pack:self-hosting-v1
Implementing units
impl:protocol.statement-queue-recipe · test/self-hosting-readiness-planner.test.ts:74Referencing 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.delivery-session-on-rampImplementing units
impl:protocol.delivery-session-on-ramp · test/skills.test.ts:83Referencing units
None.
Enabled verifiers: test:protocol.delivery-session-on-ramp
Packs: pack:self-hosting-v1
spec:consumers.design-sliceImplementing units
impl:protocol.design-slice-recipe · test/self-hosting-design-slice.test.ts:148Referencing units
impl:protocol.studio-slice-answer · src/projections/studio/slice-answer.ts:1Enabled 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.memoImplementing units
impl:protocol.proposal-memo-recipe · test/recipes.test.ts:7298impl:protocol.studio-proposal-memo · src/studio-elements/memo.ts:13Referencing units
None.
Enabled verifiers: spec:consumers.intent-composition.proposal.memo.shared
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.obsidian-vault.iterationImplementing units
impl:protocol.vault-sync · src/projections/vault/sync.ts:98impl:protocol.vault-text · src/projections/vault/text.ts:30impl:protocol.vault-watch · src/cli/vault-command.ts:219Referencing 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
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.decision-first
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.dependency-order
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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.roadmapImplementing units
impl:protocol.roadmap-recipe · test/roadmap.test.ts:20Referencing 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-panelImplementing units
impl:protocol.studio-compose · src/studio-elements/compose.ts:13impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-intent-panel · src/studio-elements/intent-panel.ts:51impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17Referencing 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-queueImplementing units
impl:protocol.studio-owner-queue · src/projections/studio/pages/queue-page.ts:9Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.owner-queue.dependency-first
Packs: pack:self-hosting-v1, pack:spec-studio-v1
Implementing units
impl:protocol.rule-key-proposal-recipe · test/upgrade-kit.test.ts:742Referencing 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-plansImplementing units
impl:protocol.roadmap-practice · test/check-self-hosting-gates.test.ts:52Referencing units
None.
Enabled verifiers: test:protocol.roadmap-practice
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.design-slice.chainImplementing 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-absentImplementing 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-differingImplementing 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-matchingImplementing 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-unreadableImplementing 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-unrelatedImplementing 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-backlinkImplementing 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-cycleImplementing 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-exampleImplementing 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-exampleImplementing 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-componentsImplementing 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-holdingImplementing 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-satisfiedImplementing 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-unboundImplementing 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-planningImplementing units
impl:protocol.graph-first-planning · test/skills.test.ts:290Referencing units
None.
Enabled verifiers: test:protocol.graph-first-planning
Packs: pack:self-hosting-v1
spec:consumers.intent-composition.proposal.memo.sharedImplementing 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-notesImplementing 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-anchorImplementing 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-viewsImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.roadmap.blocking-partImplementing 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-partImplementing 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-workImplementing 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-partImplementing 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-partImplementing 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.memoImplementing units
impl:protocol.roadmap-memo-recipe · test/roadmap.test.ts:27impl:protocol.studio-roadmap-page · src/projections/studio/pages/roadmap-page.ts:168Referencing 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-evidenceImplementing 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-parentImplementing 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-orderImplementing 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-partImplementing 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.componentsImplementing units
component:protocol.studio-elements · src/studio-elements/index.ts:13impl:protocol.studio-compose · src/studio-elements/compose.ts:13impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74Referencing units
None.
Enabled verifiers: test:protocol.studio-intent-handoff
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.diagram-kinds.dependencyImplementing units
impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10Referencing 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-architectureImplementing units
impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219Referencing 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-intentsImplementing 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-firstImplementing 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-pageImplementing units
impl:protocol.studio-roadmap-page · src/projections/studio/pages/roadmap-page.ts:168Referencing units
None.
Enabled verifiers: test:protocol.studio-roadmap-page
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.slice-pageImplementing units
impl:protocol.studio-slice-page · src/projections/studio/pages/slice-page.ts:25Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-page
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.verification-panelsImplementing units
impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74Referencing 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-rampImplementing units
impl:protocol.studio-on-ramp · test/skills.test.ts:1693Referencing units
None.
Enabled verifiers: test:protocol.studio-on-ramp
Packs: pack:self-hosting-v1, pack:spec-studio-v1
Implementing units
impl:protocol.upgrade-guide · test/upgrade-kit.test.ts:87Referencing units
None.
Enabled verifiers: test:protocol.upgrade-guide
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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-rampImplementing units
impl:protocol.vault-on-ramp · test/skills.test.ts:1995Referencing units
None.
Enabled verifiers: test:protocol.vault-on-ramp
Packs: pack:obsidian-vault-v1, pack:self-hosting-v1
spec:protocol.delivery-record-cleanupImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:consumers.spec-studio.diagramsImplementing units
impl:protocol.studio-architecture-diagrams · src/projections/studio/diagrams/architecture.ts:4impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-diagram-model · src/projections/studio/diagrams/model.ts:1impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73impl:protocol.studio-relation-diagrams · src/projections/studio/diagrams/bands.ts:10Referencing 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-elementsImplementing units
component:protocol.studio-elements · src/studio-elements/index.ts:13impl:protocol.studio-copy · src/studio-elements/copy.ts:22impl:protocol.studio-expander · src/studio-elements/expander.ts:16impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-search-form · src/studio-elements/search.ts:18impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30Referencing 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-coverageImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-rule-coverage
Packs: pack:self-hosting-v1, pack:spec-studio-v1
Implementing units
impl:protocol.capability-adoption-recipe · test/upgrade-kit.test.ts:514Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
spec:consumers.spec-studio.diagram-kindsImplementing units
impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10Referencing 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-routingImplementing units
impl:protocol.studio-diagram-routing · src/projections/studio/diagrams/routing.ts:38impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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.legibilityImplementing units
impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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-sourceImplementing units
impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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-contextImplementing 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-layerImplementing 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-boundImplementing 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.architectureImplementing units
impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50Referencing 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-pageImplementing units
impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44Referencing 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
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.spec-studio.capability-map-pageImplementing units
impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing 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-treeImplementing units
impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13Referencing 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-pictureImplementing units
impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7Referencing 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-traceImplementing units
impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8Referencing 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.exportImplementing units
impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-expander · src/studio-elements/expander.ts:16impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68Referencing 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-apartImplementing 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-registerImplementing units
impl:protocol.studio-unit-register · src/projections/studio/pages/architecture-register.ts:7Referencing 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-declarationImplementing 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.coreImplementing units
impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.structural-mermaidImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.spec-studio.export.self-containedImplementing 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-mapImplementing units
impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7Referencing units
None.
Enabled verifiers: test:protocol.studio-architecture-maturity-requirement, test:protocol.studio-panels
Packs: pack:self-hosting-v1, pack:spec-studio-v1
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | spec:consumers.agent-surface.recipe-parametersspec:consumers.agent-surface.recipe-parameters · resolves | declared | address resolution reads its addresses from params | None |
| dependsOn · outgoing | A Spec id written in prose is a checked mentionspec:decisions.checked-mentions · resolves | declared | None | None |
| dependsOn · outgoing | spec:model.rule-keysspec:model.rule-keys · resolves | declared | a rule address resolves through the Spec's rule keys | None |
| dependsOn · outgoing | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | a term address resolves through the Spec's term keys | None |
| refines · outgoing | spec:consumers.agent-surface.register-recipesspec:consumers.agent-surface.register-recipes · resolves | declared | None | None |
| dependsOn · incoming | spec:consumers.intent-composition.proposalspec:consumers.intent-composition.proposal · resolves | declared | the check resolves entry-address scopes through address resolution | None |
| dependsOn · incoming | The readiness planner orders the statements a person can makespec:consumers.readiness-planner · resolves | declared | a cycle among waiting Specs reports in the shape dependency cycles reports | None |
| refines · incoming | A dependency chain with no cycle yields no findingspec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing · resolves | declared | None | None |
| refines · incoming | The shipped dependency-cycles file fails a rules run on a cyclespec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · resolves | declared | None | None |
| refines · incoming | The shipped address-resolution file fails a rules run on an address that names no entryspec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · resolves | declared | None | None |
| verifies · incoming | A dependency chain with no cycle yields no findingspec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing · resolves | declared | None | cycleFindings, answersUnchanged |
| verifies · incoming | The shipped dependency-cycles file fails a rules run on a cyclespec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run · resolves | declared | None | cycleFindings, findingsSeverity |
| verifies · incoming | The shipped address-resolution file fails a rules run on an address that names no entryspec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run · resolves | declared | None | addressFindings, findingsSeverity |
impl:protocol.address-and-cycle-recipes · asserts realization of the shipped address resolution and dependency cycle recipes · test/recipes.test.ts:3568specs/consumers/agent-surface.address-and-cycle-recipes.chain-reports-nothing.sdp.md · example enabledspecs/consumers/agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run.sdp.md · example enabledspecs/consumers/agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run.sdp.md · example enabledtest/recipes.test.ts:3577 · test anchororacle:protocol.consumers.agent-surface.address-and-cycle-recipes · test/reach-examples.test.ts:174Runtime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothing
spec:consumers.agent-surface.address-and-cycle-recipes.chain-reports-nothingExample / Scenario · storyready floor readyPacks: 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.
outcomesdp q over a chain, which reports no set and carries no finding.assumptionssdp 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.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: ""}test/reach-examples.test.ts:422test/reach-examples.test.ts:422Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | Address resolution and dependency cycles stay executable graph recipesspec:consumers.agent-surface.address-and-cycle-recipes · resolves | declared | None | None |
| verifies · outgoing | Address resolution and dependency cycles stay executable graph recipesspec:consumers.agent-surface.address-and-cycle-recipes · resolves | declared | None | cycleFindings, answersUnchanged |
test/reach-examples.test.ts:422 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-run
spec:consumers.agent-surface.address-and-cycle-recipes.cycle-fails-a-rules-runExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionsidea 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.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"}test/reach-examples.test.ts:430test/reach-examples.test.ts:430Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | Address resolution and dependency cycles stay executable graph recipesspec:consumers.agent-surface.address-and-cycle-recipes · resolves | declared | None | None |
| verifies · outgoing | Address resolution and dependency cycles stay executable graph recipesspec:consumers.agent-surface.address-and-cycle-recipes · resolves | declared | None | cycleFindings, findingsSeverity |
| verifies · outgoing | Corpus-authored rules run on the one validation pathspec:validation.corpus-rules · resolves | declared | None | recipesAsRules |
test/reach-examples.test.ts:430 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-run
spec:consumers.agent-surface.address-and-cycle-recipes.unresolved-address-fails-a-rules-runExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionsidea, 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.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"}test/reach-examples.test.ts:438test/reach-examples.test.ts:438Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | Address resolution and dependency cycles stay executable graph recipesspec:consumers.agent-surface.address-and-cycle-recipes · resolves | declared | None | None |
| verifies · outgoing | Address resolution and dependency cycles stay executable graph recipesspec:consumers.agent-surface.address-and-cycle-recipes · resolves | declared | None | addressFindings, findingsSeverity |
| verifies · outgoing | Corpus-authored rules run on the one validation pathspec:validation.corpus-rules · resolves | declared | None | recipesAsRules |
test/reach-examples.test.ts:438 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:validation.external-registers
spec:validation.external-registersUse Case / Behavior · storyready floor readyPacks: 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.
problemoutcomerule.tokensStayProse line 27 · specs/validation/external-registers.sdp.md:27no example exercises it
rule.registerAsData line 28 · specs/validation/external-registers.sdp.md:28--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:29no example exercises it
rule.citation line 30 · specs/validation/external-registers.sdp.md:30spec:validation.external-registers.unknown-and-retired · enabled
rule.unknownToken line 31 · specs/validation/external-registers.sdp.md:31unknown-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:32retired-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:33uncited: 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:34recipes 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:351 unkeyed rule.
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"}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"}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}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:39params.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:40params.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
specs/validation/external-registers.uncited-on-request.sdp.mdspecs/validation/external-registers.unknown-and-retired.sdp.mdcited · 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}| Example | cited | held | retired | uncited |
|---|---|---|---|---|
| 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
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
cited: Noneheld: Noneretired: Noneuncited: Nonetest/external-registers.test.ts:9test/self-hosting-external-registers.test.ts:29test/self-hosting-external-registers.test.ts:128test/self-hosting-external-registers.test.ts:122Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models require exact labels unavailable in requirement syntax.
No decision record named.
impl:protocol.external-registers-recipe · asserts realization of the shipped external-registers recipe · test/external-registers.test.ts:9Uses
None.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
spec:consumers.agent-surface.recipe-parameters · stated ready, floor readyspec:consumers.agent-surface.register-recipes · stated ready, floor readyspec:consumers.spec-studio.register-inputImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.external-registers.uncited-on-request
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.external-registers.unknown-and-retired
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | spec:consumers.agent-surface.recipe-parametersspec:consumers.agent-surface.recipe-parameters · resolves | declared | the register arrives as data through --params register=@PATH | None |
| dependsOn · outgoing | spec:consumers.agent-surface.register-recipesspec:consumers.agent-surface.register-recipes · resolves | declared | the recipe reads the strings entry search walks, with its entry paths and lines | None |
| dependsOn · outgoing | Corpus-authored rules run on the one validation pathspec:validation.corpus-rules · resolves | declared | the recipe answers with findings and runs as a rules file | None |
| refines · outgoing | Corpus-authored rules run on the one validation pathspec:validation.corpus-rules · resolves | declared | external-register checks run as corpus-selected rules | None |
| dependsOn · incoming | spec:consumers.spec-studio.register-inputspec:consumers.spec-studio.register-input · resolves | declared | the input is the register file and pattern the external-registers recipe already reads | None |
| refines · incoming | A held token no Spec cites fails a rules run only when the caller asksspec:validation.external-registers.uncited-on-request · resolves | declared | None | None |
| refines · incoming | A cited token the register lacks or retires fails a rules runspec:validation.external-registers.unknown-and-retired · resolves | declared | None | None |
| verifies · incoming | A held token no Spec cites fails a rules run only when the caller asksspec:validation.external-registers.uncited-on-request · resolves | declared | None | uncitedToken, asRulesFile |
| verifies · incoming | A cited token the register lacks or retires fails a rules runspec:validation.external-registers.unknown-and-retired · resolves | declared | None | registerAsData, citation, unknownToken, retiredToken, asRulesFile |
impl:protocol.external-registers-recipe · asserts realization of the shipped external-registers recipe · test/external-registers.test.ts:9specs/validation/external-registers.uncited-on-request.sdp.md · example enabledspecs/validation/external-registers.unknown-and-retired.sdp.md · example enabledoracle:protocol.external-registers · test/self-hosting-external-registers.test.ts:29Runtime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:validation.external-registers.uncited-on-request
spec:validation.external-registers.uncited-on-requestExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptions{ "tokens": ["E-1", "E-2"] }, and runs the shipped file as that example does, with uncited true.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"}test/self-hosting-external-registers.test.ts:128test/self-hosting-external-registers.test.ts:128Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | A corpus checks the register tokens its prose citesspec:validation.external-registers · resolves | declared | None | None |
| verifies · outgoing | A corpus checks the register tokens its prose citesspec:validation.external-registers · resolves | declared | None | uncitedToken, asRulesFile |
test/self-hosting-external-registers.test.ts:128 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:validation.external-registers.unknown-and-retired
spec:validation.external-registers.unknown-and-retiredExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionsidea, 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.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"}test/self-hosting-external-registers.test.ts:122test/self-hosting-external-registers.test.ts:122Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | A corpus checks the register tokens its prose citesspec:validation.external-registers · resolves | declared | None | None |
| verifies · outgoing | A corpus checks the register tokens its prose citesspec:validation.external-registers · resolves | declared | None | registerAsData, citation, unknownToken, retiredToken, asRulesFile |
test/self-hosting-external-registers.test.ts:122 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.command-line
spec:consumers.command-lineUse Case / Behavior · storyready floor readyPacks: 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.
actorproblem--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--help, and let one verb write every projection root from one graph in one run.rule.verbHelp line 31 · specs/consumers/command-line.sdp.md:31--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:32sdp --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:33sdp 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:34spec:consumers.command-line.generate-writes-every-root · enabled
rule.generateExit line 35 · specs/consumers/command-line.sdp.md:35spec:consumers.command-line.generate-writes-every-root · enabled
rule.generateCheck line 36 · specs/consumers/command-line.sdp.md:36--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.
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"}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: ""}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:"}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}helpVerbs line 39 · specs/consumers/command-line.sdp.md:39build, 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:40Usage: 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:41generated/design-review/, generated/census/, generated/mermaid/, generated/gherkin/ and generated/spec-studio/.generateOutput line 42 · specs/consumers/command-line.sdp.md:42Wrote <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:43sdp 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.specs/consumers/command-line.generate-check-failure.sdp.mdspecs/consumers/command-line.generate-writes-every-root.sdp.mdspecs/consumers/command-line.verb-help-touches-nothing.sdp.mdroots · "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| Example | roots | command |
|---|---|---|
| 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
| Declared value | Examples |
|---|---|
"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 |
| Declared value | Examples |
|---|---|
"sdp generate" | spec:consumers.command-line.generate-writes-every-root |
"sdp generate --check-clean" | spec:consumers.command-line.generate-check-failure |
"sdp view --help" | spec:consumers.command-line.verb-help-touches-nothing |
roots: Nonecommand: Nonesrc/cli/help.ts:167src/cli/sdp.ts:94src/cli/build-args.ts:11src/cli/build-artifacts.ts:182src/cli/sdp.ts:102src/cli/generate-command.ts:34test/self-hosting-command-line.test.ts:69test/self-hosting-command-line.test.ts:186test/self-hosting-command-line.test.ts:180test/self-hosting-command-line.test.ts:192test/cli.test.ts:2371Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.
spec:decisions.shipped-projections-frozenRe-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.
component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocolUses
component:protocol.adapters · external runtime and source adapters · src/adapters/vitest.ts:23 · layer adapter · context protocolcomponent:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocolcomponent:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocolcomponent:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolcomponent:protocol.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocolcomponent:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocolcomponent:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocolcomponent:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocolcomponent:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolimpl: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:167Component: 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:94Component: 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:11Component: 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:34Component: 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.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
spec:consumers.projections-model · stated ready, floor readyspec:consumers.adopter-on-ramp · stated ready, floor readyspec:consumers.spec-studio.publisher · stated ready, floor readyspec:consumers.wholesale-view-rewrite · stated ready, floor readyspec:decisions.shipped-projections-frozen · stated ready, floor readyImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.command-line.generate-check-failure
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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-provenanceImplementing units
impl:protocol.build-artifacts · src/cli/build-artifacts.ts:182impl:protocol.engine-provenance-cli · src/cli/sdp.ts:102Referencing units
None.
Enabled verifiers: test:protocol.engine-provenance
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.spec-studio.sharingImplementing units
impl:protocol.stamp-command · src/cli/stamp-command.ts:8impl:protocol.studio-preview-workflow · test/studio-s4.test.ts:742impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30Referencing 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.sharing.stamp-written-apartImplementing 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.shellImplementing units
impl:protocol.studio-code-spans · src/projections/studio/pages/code-spans.ts:9impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-html · src/projections/studio/pages/html.ts:8impl:protocol.studio-text · src/projections/studio/pages/text.ts:7Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.spec-pageImplementing units
impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44Referencing 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-rampImplementing units
impl:protocol.studio-on-ramp · test/skills.test.ts:1693Referencing units
None.
Enabled verifiers: test:protocol.studio-on-ramp
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.exportImplementing units
impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-expander · src/studio-elements/expander.ts:16impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68Referencing 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-pageImplementing units
impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.navigationImplementing units
impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing 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-queueImplementing units
impl:protocol.studio-owner-queue · src/projections/studio/pages/queue-page.ts:9Referencing 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-pageImplementing units
impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68Referencing 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-elementsImplementing units
component:protocol.studio-elements · src/studio-elements/index.ts:13impl:protocol.studio-copy · src/studio-elements/copy.ts:22impl:protocol.studio-expander · src/studio-elements/expander.ts:16impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-search-form · src/studio-elements/search.ts:18impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30Referencing 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.registersImplementing units
impl:protocol.studio-registers · src/projections/studio/pages/registers-page.ts:47Referencing 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-pageImplementing units
impl:protocol.studio-roadmap-page · src/projections/studio/pages/roadmap-page.ts:168Referencing units
None.
Enabled verifiers: test:protocol.studio-roadmap-page
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.searchImplementing units
impl:protocol.studio-concept-match · src/reader/concept-match.ts:43impl:protocol.studio-search-page · src/projections/studio/pages/search-page.ts:5impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95Referencing 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-declarationImplementing 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.coreImplementing units
impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.verification-panelsImplementing units
impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74Referencing 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.spec-studio.capability-map-pageImplementing units
impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing units
None.
Enabled verifiers: test:protocol.studio-capabilities
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.cited-line-textImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:consumers.spec-studio.diagram-kinds.mermaid-sourceImplementing units
impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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-containedImplementing 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-firstImplementing 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-mapImplementing units
impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7Referencing 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-firstImplementing 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-pageImplementing units
impl:protocol.studio-slice-page · src/projections/studio/pages/slice-page.ts:25Referencing 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-coverageImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-rule-coverage
Packs: pack:self-hosting-v1, pack:spec-studio-v1
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| decidedBy · outgoing | spec:decisions.shipped-projections-frozenspec:decisions.shipped-projections-frozen · resolves | declared | the verb writes the frozen roots unchanged and adds no projection of its own | None |
| dependsOn · outgoing | spec:consumers.adopter-on-rampspec:consumers.adopter-on-ramp · resolves | declared | a verb's help repeats the top-level help that names the shipped on-ramps | None |
| dependsOn · outgoing | spec:consumers.spec-studio.publisherspec:consumers.spec-studio.publisher · resolves | declared | the Studio's page set is one of the roots the verb writes | None |
| dependsOn · outgoing | spec:consumers.wholesale-view-rewritespec:consumers.wholesale-view-rewrite · resolves | declared | each root the verb writes is written and invalidated as every view run's is | None |
| refines · outgoing | spec:consumers.projections-modelspec:consumers.projections-model · resolves | declared | one verb publishes every projection root from one graph | None |
| refines · incoming | A root that fails its check is removed while sdp generate writes the othersspec:consumers.command-line.generate-check-failure · resolves | declared | None | None |
| refines · incoming | One run of sdp generate leaves all five roots currentspec:consumers.command-line.generate-writes-every-root · resolves | declared | None | None |
| refines · incoming | A publisher's --help prints its help and touches no rootspec:consumers.command-line.verb-help-touches-nothing · resolves | declared | None | None |
| refines · incoming | spec:consumers.engine-provenancespec:consumers.engine-provenance · resolves | declared | the version flag is one more answer the command line gives an adopter | None |
| verifies · incoming | A root that fails its check is removed while sdp generate writes the othersspec:consumers.command-line.generate-check-failure · resolves | declared | None | generateCheck |
| verifies · incoming | One run of sdp generate leaves all five roots currentspec:consumers.command-line.generate-writes-every-root · resolves | declared | None | generateVerb, sameBytes, generateExit |
| verifies · incoming | A publisher's --help prints its help and touches no rootspec:consumers.command-line.verb-help-touches-nothing · resolves | declared | None | verbHelp, oneHelpText |
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 protocolimpl: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 protocolimpl: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 protocolimpl: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 protocolspecs/consumers/command-line.generate-check-failure.sdp.md · example enabledspecs/consumers/command-line.generate-writes-every-root.sdp.md · example enabledspecs/consumers/command-line.verb-help-touches-nothing.sdp.md · example enabledoracle:protocol.command-line · test/self-hosting-command-line.test.ts:69Runtime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.command-line.generate-check-failure
spec:consumers.command-line.generate-check-failureExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionssdp 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.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"}test/self-hosting-command-line.test.ts:186test/self-hosting-command-line.test.ts:186Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | Every verb answers --help, and one verb writes every projection rootspec:consumers.command-line · resolves | declared | None | None |
| verifies · outgoing | Every verb answers --help, and one verb writes every projection rootspec:consumers.command-line · resolves | declared | None | generateCheck |
test/self-hosting-command-line.test.ts:186 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.command-line.generate-writes-every-root
spec:consumers.command-line.generate-writes-every-rootExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionsidea, 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.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: ""}test/self-hosting-command-line.test.ts:180test/self-hosting-command-line.test.ts:180Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | Every verb answers --help, and one verb writes every projection rootspec:consumers.command-line · resolves | declared | None | None |
| verifies · outgoing | Every verb answers --help, and one verb writes every projection rootspec:consumers.command-line · resolves | declared | None | generateVerb, sameBytes, generateExit |
test/self-hosting-command-line.test.ts:180 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.command-line.verb-help-touches-nothing
spec:consumers.command-line.verb-help-touches-nothingExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionssdp 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.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:"}test/self-hosting-command-line.test.ts:192test/self-hosting-command-line.test.ts:192Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | Every verb answers --help, and one verb writes every projection rootspec:consumers.command-line · resolves | declared | None | None |
| verifies · outgoing | Every verb answers --help, and one verb writes every projection rootspec:consumers.command-line · resolves | declared | None | verbHelp, oneHelpText |
test/self-hosting-command-line.test.ts:192 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:carrier.step-keys
spec:carrier.step-keysBusiness Rule · storyready floor readyPacks: 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.
problemoutcomeThe 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[#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:24rule.markerRefusals line 25 · specs/carrier/step-keys.sdp.md:25[# and does not continue as a marker is refused at its step; a marker later in the text is plain text.rule.oneKeyOneStep line 26 · specs/carrier/step-keys.sdp.md:26spec: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:27spec: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:28spec: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:29rule.rewordedStaysBound line 30 · specs/carrier/step-keys.sdp.md:30kind, 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:31kind fails the typecheck.spec:carrier.step-keys.reworded-unkeyed-step-breaks · enabled
rule.renamedKey line 32 · specs/carrier/step-keys.sdp.md:32kind fails the typecheck too. A key changes only when an author changes it.rule line 33 · specs/carrier/step-keys.sdp.md:33rule line 34 · specs/carrier/step-keys.sdp.md:344 unkeyed rules.
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: ""}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}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: ""}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"}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}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"}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}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}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"}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}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}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:52behavior.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:53step 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:54step 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:55step "<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:56behavior.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:57contracts/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[#<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:59bindExample(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
specs/carrier/step-keys.conflicting-example-key-withheld.sdp.mdspecs/carrier/step-keys.gherkin-keyed-step-stays-bound.sdp.mdspecs/carrier/step-keys.key-equal-to-a-skeleton-withheld.sdp.mdspecs/carrier/step-keys.malformed-marker-refused.sdp.mdspecs/carrier/step-keys.renamed-key-breaks.sdp.mdspecs/carrier/step-keys.repeated-key-refused.sdp.mdspecs/carrier/step-keys.reworded-keyed-step-stays-bound.sdp.mdspecs/carrier/step-keys.reworded-unkeyed-step-breaks.sdp.mdspecs/carrier/step-keys.two-keys-on-one-step-refused.sdp.mdspecs/carrier/step-keys.typescript-keyed-step-imports-keyed.sdp.mdtest/keyed-content.test.ts:28carrier · "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 againafter · string · declared by the contracts are generated, the step lines are reworded by replacing {before} with {after}, and the contracts are generated again| Example | carrier | vocabulary | example | before | after |
|---|---|---|---|---|---|
| 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
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
carrier: Nonevocabulary: Noneexample: Nonebefore: Noneafter: Nonesrc/runner/index.ts:108src/notation/example-space.ts:473src/codegen/contracts.ts:647src/extract/key-markers.ts:136src/extract/serialize.ts:105src/import/emit-markdown.ts:253src/model/sections.ts:138test/keyed-content.test.ts:28test/self-hosting-step-keys.test.ts:26test/self-hosting-step-keys.test.ts:73test/self-hosting-step-keys.test.ts:120test/self-hosting-step-keys.test.ts:167test/self-hosting-step-keys.test.ts:214test/self-hosting-step-keys.test.ts:261test/self-hosting-step-keys.test.ts:308test/self-hosting-step-keys.test.ts:355test/self-hosting-step-keys.test.ts:402test/self-hosting-step-keys.test.ts:449Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because folds require exact labels unavailable in requirement syntax.
spec:decisions.shipped-projections-frozenRe-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.
component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocolUses
component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolcomponent:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocolcomponent:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocolcomponent:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolcomponent:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocolUses
component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolcomponent:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocolcomponent:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocolcomponent:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolcomponent:protocol.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocolUses
component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocolcomponent:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocolcomponent:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolcomponent:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocolUses
None.
component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocolUses
component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolcomponent:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocolcomponent:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocolcomponent:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolcomponent:protocol.runner · provider-neutral example execution · src/runner/index.ts:99 · layer application · context protocolUses
component:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocolimpl:protocol.example-runner · plans and executes a bound example against the caller's world · src/runner/index.ts:108Component: 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:473Component: 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:647Component: 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:136Component: 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:105Component: 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:253Component: 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:138Component: component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol
Uses
None.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
spec:carrier.slot-notation · stated ready, floor readyspec:decisions.shipped-projections-frozen · stated ready, floor readyspec:carrier.gherkin-authoringImplementing units
impl:protocol.gherkin-authoring · src/extract/gherkin.ts:1323impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6Referencing 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-grammarImplementing units
impl:protocol.markdown-body-grammar · src/extract/markdown-body.ts:120impl:protocol.markdown-content · src/extract/markdown-body-content.ts:7Referencing 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
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
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
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.step-keys.malformed-marker-refused
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.step-keys.renamed-key-breaks
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.step-keys.repeated-key-refused
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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
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
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
Implementing units
impl:protocol.capability-adoption-recipe · test/upgrade-kit.test.ts:514Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
impl:protocol.example-space · src/graph/example-space.ts:117impl:protocol.executable-contracts · src/codegen/contracts.ts:647Referencing 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
Implementing units
component:protocol.codegen · src/codegen/contracts.ts:633component:protocol.testing · src/testing/index.ts:38impl:protocol.example-testing-helpers · src/testing/index.ts:50impl:protocol.runnable-modules · src/codegen/contracts.ts:658Referencing 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:carrier.gherkin-authoring.authored-fact-refusedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.gherkin-authoring.authored-fact-refused
Packs: pack:self-hosting-v1
spec:carrier.gherkin-authoring.contract-parityImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.gherkin-authoring.contract-parity
Packs: pack:self-hosting-v1
spec:carrier.gherkin-authoring.description-location-refusedImplementing 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-refusedImplementing 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-extractionImplementing 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-refusedImplementing 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-refusedImplementing 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-boundedImplementing 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-extractionImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.gherkin-authoring.unsupported-construct-refused
Packs: pack:self-hosting-v1
spec:carrier.inline-code-spansImplementing units
impl:protocol.inline-code-spans · src/extract/markdown-inline-code.ts:4Referencing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.markdown-body-grammar.unrecognized-heading-refused
Packs: pack:self-hosting-v1
spec:carrier.markdown-parserImplementing units
impl:protocol.markdown-parser · src/extract/markdown.ts:37impl:protocol.static-reification · src/extract/reify.ts:2139Referencing units
None.
Enabled verifiers: spec:carrier.markdown-parser.bounded-parity, test:protocol.markdown-parser
Packs: pack:self-hosting-v1
spec:carrier.prose-ownership-ruleImplementing units
impl:protocol.markdown-body-grammar · src/extract/markdown-body.ts:120Referencing units
None.
Enabled verifiers: test:protocol.prose-ownership
Packs: pack:self-hosting-v1
spec:consumers.adopter-on-rampImplementing units
impl:protocol.adopter-help · src/cli/help.ts:167impl:protocol.adopter-on-ramp · test/skills.test.ts:712Referencing 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-coverageImplementing units
impl:protocol.example-space-coverage-recipe · test/studio-s1.test.ts:856impl:protocol.example-space-decoding · src/notation/example-space.ts:473Referencing 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-rampImplementing units
impl:protocol.authoring-on-ramp · test/skills.test.ts:76impl:protocol.spec-scaffolder · src/cli/new-spec-command.ts:348Referencing units
None.
Enabled verifiers: test:protocol.authoring-on-ramp
Packs: pack:self-hosting-v1
spec:consumers.spec-studio.glossary-pageImplementing units
impl:protocol.studio-glossary · src/projections/studio/pages/glossary-page.ts:7Referencing 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-panelsImplementing units
impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74Referencing 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
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-committedImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:extraction.contract-declarationsImplementing units
impl:protocol.pack-design · src/reader/reader.ts:499impl:protocol.register-recipes · test/recipes.test.ts:2057Referencing units
None.
Enabled verifiers: test:protocol.register-recipes
Packs: pack:self-hosting-v1
spec:extraction.example-runnerImplementing units
component:protocol.adapters · src/adapters/vitest.ts:23component:protocol.runner · src/runner/index.ts:99impl:protocol.example-runner · src/runner/index.ts:108impl:protocol.example-runner-adapter · src/adapters/vitest.ts:32Referencing 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-pathImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.executable-contracts.case-colliding-path
Packs: pack:self-hosting-v1
spec:extraction.executable-contracts.concreteness-refusalImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.executable-contracts.concreteness-refusal
Packs: pack:self-hosting-v1
spec:extraction.executable-contracts.multi-entry-exampleImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.executable-contracts.multi-entry-example
Packs: pack:self-hosting-v1
spec:model.open-question-keysImplementing units
impl:protocol.open-question-keys · src/extract/markdown-body-owner-behavior.ts:38impl:protocol.open-section-order · src/extract/serialize.ts:105impl:protocol.prose-mentions · src/validate/validators.ts:1370impl:protocol.register-recipes · test/recipes.test.ts:2057impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253impl:protocol.stable-ids · src/ids.ts:173impl:protocol.static-reification · src/extract/reify.ts:2139Referencing 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:carrier.inline-code-spans.descriptionImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.inline-code-spans.description
Packs: pack:self-hosting-v1
spec:carrier.inline-code-spans.listImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.inline-code-spans.list
Packs: pack:self-hosting-v1
spec:carrier.inline-code-spans.narrativeImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.inline-code-spans.narrative
Packs: pack:self-hosting-v1
spec:carrier.inline-code-spans.packImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.inline-code-spans.pack
Packs: pack:self-hosting-v1
spec:carrier.markdown-authoringImplementing units
impl:protocol.markdown-parser · src/extract/markdown.ts:37Referencing units
None.
Enabled verifiers: test:protocol.markdown-authoring
Packs: pack:self-hosting-v1
spec:carrier.markdown-pack-authoringImplementing units
impl:protocol.markdown-pack-authoring · src/extract/markdown-pack.ts:117impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33impl:protocol.static-reification · src/extract/reify.ts:2139Referencing 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-parityImplementing 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-enumerableImplementing 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-literalImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-coverage-literal
Packs: pack:self-hosting-v1, pack:spec-studio-v1
Implementing units
impl:protocol.adopter-help · src/cli/help.ts:167impl:protocol.agent-surface-cli · src/cli/sdp.ts:94impl:protocol.build-args · src/cli/build-args.ts:11impl:protocol.generate-command · src/cli/generate-command.ts:34Referencing 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-rampImplementing units
impl:protocol.delivery-session-on-ramp · test/skills.test.ts:83Referencing units
None.
Enabled verifiers: test:protocol.delivery-session-on-ramp
Packs: pack:self-hosting-v1
spec:consumers.engine-provenanceImplementing units
impl:protocol.build-artifacts · src/cli/build-artifacts.ts:182impl:protocol.engine-provenance-cli · src/cli/sdp.ts:102Referencing units
None.
Enabled verifiers: test:protocol.engine-provenance
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.graph-first-planningImplementing units
impl:protocol.graph-first-planning · test/skills.test.ts:290Referencing units
None.
Enabled verifiers: test:protocol.graph-first-planning
Packs: pack:self-hosting-v1
spec:consumers.pack-designImplementing units
impl:protocol.pack-design · src/reader/reader.ts:499Referencing units
None.
Enabled verifiers: test:protocol.pack-design
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.shipped-protocol-corpusImplementing units
impl:protocol.shipped-protocol-corpus · test/package-smoke.test.ts:252Referencing units
None.
Enabled verifiers: test:protocol.shipped-protocol-corpus
Packs: pack:self-hosting-v1
spec:consumers.spec-studio.glossary-page.same-word-twiceImplementing 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-panelImplementing units
impl:protocol.studio-compose · src/studio-elements/compose.ts:13impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-intent-panel · src/studio-elements/intent-panel.ts:51impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17Referencing 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.testsImplementing units
impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34Referencing 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.registersImplementing units
impl:protocol.studio-registers · src/projections/studio/pages/registers-page.ts:47Referencing 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-pageImplementing units
impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44Referencing 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-coverageImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-rule-coverage
Packs: pack:self-hosting-v1, pack:spec-studio-v1
Implementing units
impl:protocol.upgrade-guide · test/upgrade-kit.test.ts:87Referencing units
None.
Enabled verifiers: test:protocol.upgrade-guide
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
impl:protocol.validate-watch · src/cli/validate-watch.ts:591Referencing 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-ownershipImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.question-key-renderingImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:extraction.entry-locationsImplementing units
impl:protocol.entry-location-recipes · test/recipes.test.ts:5979impl:protocol.entry-locations · src/extract/derive.ts:78impl:protocol.reader · src/reader/reader.ts:687Referencing units
impl:protocol.pack-design · src/reader/reader.ts:499Enabled verifiers: test:protocol.entry-locations
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:extraction.example-runner.red-step-namingImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.example-runner.red-step-naming
Packs: pack:self-hosting-v1
spec:extraction.example-runner.step-orderImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.example-runner.step-order
Packs: pack:self-hosting-v1
spec:model.enrichment-lifecycleImplementing units
impl:protocol.slimming-recipe · test/curation-recipes.test.ts:26Referencing units
None.
Enabled verifiers: test:protocol.slimming-recipe
Packs: pack:design-iteration-v1, pack:self-hosting-v1
spec:model.open-question-fieldsImplementing units
impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8Referencing 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-resolvesImplementing 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-breaksImplementing 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-refusedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.open-question-keys.repeated-key-refused
Packs: pack:self-hosting-v1
spec:model.rule-keysImplementing units
impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8impl:protocol.rule-exercises · src/validate/validators.ts:1479Referencing 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-idsImplementing units
impl:protocol.duplicate-id-exclusion · src/extract/index.ts:93impl:protocol.duplicate-ids · src/validate/validators.ts:263Referencing units
None.
Enabled verifiers: spec:validation.duplicate-ids.dual-carrier
Packs: pack:self-hosting-v1
spec:carrier.envelope-contractImplementing units
impl:protocol.envelope-contract · src/extract/markdown-frontmatter.ts:33impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33Referencing units
None.
Enabled verifiers: test:protocol.envelope-contract
Packs: pack:self-hosting-v1
spec:carrier.markdown-pack-authoring.markdown-ts-parityImplementing 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-refusedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.markdown-pack-authoring.spec-envelope-refused
Packs: pack:self-hosting-v1
spec:carrier.sdp-importImplementing units
component:protocol.import · src/import/import.ts:45impl:protocol.import-fidelity · src/import/markdown-fidelity.ts:102impl:protocol.sdp-import · src/cli/import-command.ts:71impl:protocol.sdp-import-core · src/import/import.ts:58impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253impl:protocol.sdp-import-publish · src/cli/import-publish.ts:23impl:protocol.sdp-import-scan · src/cli/import-scan.ts:62Referencing units
None.
Enabled verifiers: spec:carrier.sdp-import.round-trip
Packs: pack:self-hosting-v1
spec:carrier.slot-notationImplementing units
component:protocol.notation · src/notation/slots.ts:261impl:protocol.slot-notation · src/notation/slots.ts:269Referencing 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
Implementing units
impl:protocol.address-and-cycle-recipes · test/recipes.test.ts:3568Referencing 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-recipesImplementing units
impl:protocol.design-recipes · test/recipes.test.ts:4769Referencing units
None.
Enabled verifiers: test:protocol.design-recipes
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.agent-surface.register-recipesImplementing units
impl:protocol.register-recipes · test/recipes.test.ts:2057Referencing units
None.
Enabled verifiers: test:protocol.register-recipes
Packs: pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.command-line.generate-check-failure
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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-reviewImplementing units
impl:protocol.design-review · src/projections/design-review.ts:44impl:protocol.design-review-codec · src/projections/design-review-markdown.ts:3Referencing units
None.
Enabled verifiers: spec:consumers.design-review.pure-projection
Packs: pack:self-hosting-v1
spec:consumers.design-review.pack-design-pageImplementing units
impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120Referencing units
impl:protocol.pack-design-sections · src/projections/design-review-pack-sections.ts:19Enabled verifiers: test:protocol.pack-design-page
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.design-sliceImplementing units
impl:protocol.design-slice-recipe · test/self-hosting-design-slice.test.ts:148Referencing units
impl:protocol.studio-slice-answer · src/projections/studio/slice-answer.ts:1Enabled 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-viewImplementing units
impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6impl:protocol.gherkin-view · src/projections/gherkin-view.ts:19impl:protocol.gherkin-view-cli · src/cli/gherkin-command.ts:66Referencing units
None.
Enabled verifiers: test:protocol.gherkin-view
Packs: pack:self-hosting-v1
spec:consumers.obsidian-vault.basesImplementing units
impl:protocol.vault-bases · src/projections/vault/bases.ts:43impl:protocol.vault-notes · src/projections/vault/notes.ts:45Referencing 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.iterationImplementing units
impl:protocol.vault-sync · src/projections/vault/sync.ts:98impl:protocol.vault-text · src/projections/vault/text.ts:30impl:protocol.vault-watch · src/cli/vault-command.ts:219Referencing 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
Implementing units
impl:protocol.statement-queue-recipe · test/self-hosting-readiness-planner.test.ts:74Referencing 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-perspectivesImplementing units
impl:protocol.perspective-filter-recipe · test/iteration-recipes.test.ts:753Referencing units
None.
Enabled verifiers: test:protocol.perspective-filter-recipe
Packs: pack:design-iteration-v1, pack:design-management-v1, pack:self-hosting-v1
spec:consumers.roadmapImplementing units
impl:protocol.roadmap-recipe · test/roadmap.test.ts:20Referencing 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-textImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:consumers.spec-studio.componentsImplementing units
component:protocol.studio-elements · src/studio-elements/index.ts:13impl:protocol.studio-compose · src/studio-elements/compose.ts:13impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74Referencing units
None.
Enabled verifiers: test:protocol.studio-intent-handoff
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.dataImplementing units
impl:protocol.studio-data · src/projections/studio/data.ts:279Referencing units
None.
Enabled verifiers: test:protocol.studio-data
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.exportImplementing units
impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-expander · src/studio-elements/expander.ts:16impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68Referencing 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-intentsImplementing 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-rowImplementing 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-pageImplementing units
impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68Referencing 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.watchImplementing units
impl:protocol.studio-watch · src/cli/studio-command.ts:122Referencing 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-firstImplementing 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.sharingImplementing units
impl:protocol.stamp-command · src/cli/stamp-command.ts:8impl:protocol.studio-preview-workflow · test/studio-s4.test.ts:742impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30Referencing 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-pageImplementing units
impl:protocol.studio-slice-page · src/projections/studio/pages/slice-page.ts:25Referencing 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-declarationImplementing 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.coreImplementing units
impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.studio-on-rampImplementing units
impl:protocol.studio-on-ramp · test/skills.test.ts:1693Referencing units
None.
Enabled verifiers: test:protocol.studio-on-ramp
Packs: pack:self-hosting-v1, pack:spec-studio-v1
Implementing units
impl:protocol.rule-key-proposal-recipe · test/upgrade-kit.test.ts:742Referencing 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-rulingImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.carrier-universalityImplementing units
None.
Referencing units
impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.pack-design-pageImplementing units
None.
Referencing units
impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120Enabled verifiers: None
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:decisions.sdp-ts-extensionImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
Implementing units
impl:protocol.entry-address-resolution · src/graph/entry-address.ts:6impl:protocol.entry-citation-reader · src/reader/entry-citations.ts:19impl:protocol.entry-citation-recipe · test/recipes.test.ts:7008impl:protocol.entry-citation-scan · src/extract/entry-citations.ts:6Referencing 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-orderImplementing units
impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33impl:protocol.open-section-order · src/extract/serialize.ts:105impl:protocol.pack-coherence · src/validate/validators.ts:1102impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120impl:protocol.pack-member-order · src/extract/derive.ts:153impl:protocol.reader · src/reader/reader.ts:687Referencing units
None.
Enabled verifiers: spec:extraction.pack-member-order.manifest-order-kept, test:protocol.roadmap-priority
Packs: pack:self-hosting-v1
spec:model.design-maturityImplementing units
impl:protocol.pack-design · src/reader/reader.ts:499Referencing units
None.
Enabled verifiers: test:protocol.pack-design
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:model.open-question-fields.dropped-list-warnsImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.open-question-fields.dropped-list-warns
Packs: pack:self-hosting-v1
spec:model.relation-reasonsImplementing units
impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8Referencing 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
Implementing units
impl:protocol.address-and-cycle-recipes · test/recipes.test.ts:3568impl:protocol.entry-locations · src/extract/derive.ts:78impl:protocol.key-markers · src/extract/key-markers.ts:136impl:protocol.open-section-order · src/extract/serialize.ts:105impl:protocol.prose-mentions · src/validate/validators.ts:1370impl:protocol.register-recipes · test/recipes.test.ts:2057impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253impl:protocol.spec-sections · src/model/sections.ts:138impl:protocol.stable-ids · src/ids.ts:173Referencing 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-hostingImplementing units
impl:protocol.self-hosting · test/self-hosting-graph.test.ts:136Referencing units
None.
Enabled verifiers: test:protocol.self-hosting
Packs: pack:self-hosting-v1
Implementing units
impl:protocol.corpus-rule-runner · src/cli/corpus-rules.ts:65impl:protocol.corpus-rules · src/cli/validate-view-command.ts:79impl:protocol.validate-watch · src/cli/validate-watch.ts:591Referencing 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-carrierImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.duplicate-ids.dual-carrier
Packs: pack:self-hosting-v1
spec:validation.prose-mentionsImplementing units
impl:protocol.entry-address-resolution · src/graph/entry-address.ts:6impl:protocol.prose-mentions · src/validate/validators.ts:1370Referencing units
None.
Enabled verifiers: test:protocol.entry-locations, test:protocol.prose-mentions
Packs: pack:self-hosting-v1
spec:validation.superseded-decision-signalImplementing units
impl:protocol.superseded-decision-signal · src/validate/validators.ts:1817Referencing 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
spec:carrier.sdp-import.feature-adapterImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:carrier.sdp-import.round-tripImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.sdp-import.round-trip
Packs: pack:self-hosting-v1
spec:carrier.slot-notation.one-literal-bindingImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.slot-notation.one-literal-binding
Packs: pack:self-hosting-v1
spec:carrier.slot-notation.refused-guessImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.slot-notation.refused-guess
Packs: pack:self-hosting-v1
spec:carrier.slot-notation.typed-declarationImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.slot-notation.typed-declaration
Packs: pack:self-hosting-v1
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
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
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-shapesImplementing units
impl:protocol.answer-shape-recipes · test/recipes.test.ts:6214Referencing units
impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597impl:protocol.reader · src/reader/reader.ts:687Enabled verifiers: test:protocol.answer-shape-recipes
Packs: pack:design-iteration-v1, pack:self-hosting-v1
spec:consumers.binding-language-viewsImplementing units
impl:protocol.binding-language-index-table · src/projections/design-review-pages.ts:201impl:protocol.binding-language-spec-page · src/projections/design-review-context.ts:95Referencing 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
Implementing units
impl:protocol.context-bundle-recipe · test/iteration-recipes.test.ts:765Referencing 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-bannerImplementing units
impl:protocol.derived-readiness-banner · src/projections/design-review-context.ts:18Referencing 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-projectionImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-review.pure-projection
Packs: pack:self-hosting-v1
spec:consumers.design-slice.chainImplementing 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-absentImplementing 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-differingImplementing 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-matchingImplementing 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-unreadableImplementing 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-unrelatedImplementing 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-backlinkImplementing 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-cycleImplementing 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-exampleImplementing 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-exampleImplementing 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-componentsImplementing 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-holdingImplementing 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-satisfiedImplementing 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-unboundImplementing 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.proposalImplementing units
impl:protocol.proposal-schema-and-recipe · test/iteration-recipes.test.ts:1510impl:protocol.studio-proposal-contract · src/studio-elements/proposal.ts:1Referencing 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-sourcesImplementing 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-notesImplementing 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-anchorImplementing 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.notesImplementing units
impl:protocol.vault-notes · src/projections/vault/notes.ts:45impl:protocol.vault-sections · src/projections/vault/sections.ts:10impl:protocol.vault-text · src/projections/vault/text.ts:30Referencing 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-viewsImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.decision-first
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.dependency-order
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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-partImplementing 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-partImplementing 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-workImplementing 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-partImplementing 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-partImplementing 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.memoImplementing units
impl:protocol.roadmap-memo-recipe · test/roadmap.test.ts:27impl:protocol.studio-roadmap-page · src/projections/studio/pages/roadmap-page.ts:168Referencing 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-evidenceImplementing 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-parentImplementing 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-orderImplementing 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-partImplementing 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.inputsImplementing units
impl:protocol.studio-base-input · src/cli/studio-inputs.ts:9impl:protocol.studio-command · src/cli/studio-command.ts:106impl:protocol.studio-inputs · src/projections/studio/inputs.ts:1Referencing 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-answersImplementing units
impl:protocol.studio-recipes · src/projections/studio/recipes.ts:34Referencing units
impl:protocol.studio-register-contracts · src/projections/studio/pages/register-answers.ts:4Enabled verifiers: test:protocol.studio-lenses
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.diagram-kinds.dependencyImplementing units
impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10Referencing 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-traceImplementing units
impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8Referencing 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-architectureImplementing units
impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-architecture
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.diagramsImplementing units
impl:protocol.studio-architecture-diagrams · src/projections/studio/diagrams/architecture.ts:4impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-diagram-model · src/projections/studio/diagrams/model.ts:1impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73impl:protocol.studio-relation-diagrams · src/projections/studio/diagrams/bands.ts:10Referencing 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-containedImplementing 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-pageImplementing units
impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.lensesImplementing units
impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34Referencing units
None.
Enabled verifiers: test:protocol.studio-lenses
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.lenses.packsImplementing units
impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing units
None.
Enabled verifiers: test:protocol.studio-lenses
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.owner-queueImplementing units
impl:protocol.studio-owner-queue · src/projections/studio/pages/queue-page.ts:9Referencing 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-mapImplementing units
impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7Referencing 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-elementsImplementing units
component:protocol.studio-elements · src/studio-elements/index.ts:13impl:protocol.studio-copy · src/studio-elements/copy.ts:22impl:protocol.studio-expander · src/studio-elements/expander.ts:16impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-search-form · src/studio-elements/search.ts:18impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30Referencing 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.publisherImplementing units
impl:protocol.build-pipeline-emit · src/cli/build-command.ts:251impl:protocol.studio-command · src/cli/studio-command.ts:106impl:protocol.studio-page-catalog · src/projections/studio/pages/index.ts:21impl:protocol.studio-paths · src/projections/studio/paths.ts:2impl:protocol.studio-publish · src/projections/studio/publish.ts:24Referencing 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-runImplementing 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-pageImplementing units
impl:protocol.studio-roadmap-page · src/projections/studio/pages/roadmap-page.ts:168Referencing units
None.
Enabled verifiers: test:protocol.studio-roadmap-page
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.searchImplementing units
impl:protocol.studio-concept-match · src/reader/concept-match.ts:43impl:protocol.studio-search-page · src/projections/studio/pages/search-page.ts:5impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95Referencing 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-apartImplementing 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.shellImplementing units
impl:protocol.studio-code-spans · src/projections/studio/pages/code-spans.ts:9impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-html · src/projections/studio/pages/html.ts:8impl:protocol.studio-text · src/projections/studio/pages/text.ts:7Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
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
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-rampImplementing units
impl:protocol.vault-on-ramp · test/skills.test.ts:1995Referencing units
None.
Enabled verifiers: test:protocol.vault-on-ramp
Packs: pack:obsidian-vault-v1, pack:self-hosting-v1
spec:consumers.wholesale-view-rewriteImplementing units
impl:protocol.build-pipeline-emit · src/cli/build-command.ts:251impl:protocol.wholesale-view-rewrite · src/cli/validate-view-command.ts:128Referencing 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-nounsImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.authored-entry-orderImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.concept-docs-dissolveImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.envelope-grammar-postureImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.executable-meta-modelImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.gherkin-carrier-optionImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.pack-markdown-carrierImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.plain-language-referencesImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.protocol-namingImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.sdp-gherkin-extensionImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
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
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.entry-citations.unanchored-file-unread
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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-keptImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.pack-member-order
Packs: pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.term-addresses.keyed-term-resolves
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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
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
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-epicsImplementing units
impl:protocol.capability-epics · test/recipes.test.ts:8173Referencing units
None.
Enabled verifiers: test:protocol.capability-epics
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:protocol.roadmap-replaces-plansImplementing units
impl:protocol.roadmap-practice · test/check-self-hosting-gates.test.ts:52Referencing units
None.
Enabled verifiers: test:protocol.roadmap-practice
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:protocol.structural-self-bindingImplementing units
impl:protocol.structural-self-binding · test/self-hosting-oracle/structural-edges.ts:76Referencing units
None.
Enabled verifiers: test:protocol.structural-self-binding
Packs: pack:self-hosting-v1
spec:validation.architecture-constraintsImplementing units
impl:protocol.architecture-walk-recipe · test/architecture-recipes.test.ts:10Referencing 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-changesImplementing 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-failsImplementing 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-failsImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.validation.corpus-rules.malformed-finding-fails
Packs: pack:corpus-checks-v1, pack:self-hosting-v1
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
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
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-informsImplementing 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-renderingImplementing units
impl:protocol.diagnostic-rendering-cli · src/cli/output.ts:23impl:protocol.diagnostic-rendering-design-review · src/projections/design-review-context.ts:208impl:protocol.validate-summary · src/cli/validate-view-command.ts:23impl:protocol.validation-contracts · src/validate/contracts.ts:5Referencing units
None.
Enabled verifiers: spec:validation.diagnostic-rendering.composed-location, spec:validation.diagnostic-rendering.table-cell-location
Packs: pack:self-hosting-v1
Implementing units
impl:protocol.external-registers-recipe · test/external-registers.test.ts:9Referencing 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-endImplementing 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-namedImplementing 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-namedImplementing 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-unreadImplementing 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-namedImplementing 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-warnsImplementing 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-warnsImplementing 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-namedImplementing 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-silentImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.superseded-decision-signal.superseded-subject-silent
Packs: pack:self-hosting-v1
spec:consumers.binding-language-views.bound-spec-pageImplementing 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-tableImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.binding-language-views.pack-member-table
Packs: pack:self-hosting-v1
spec:consumers.census-pageImplementing units
impl:protocol.census-page · src/projections/census.ts:21impl:protocol.census-page-cli · src/cli/census-command.ts:66Referencing units
None.
Enabled verifiers: test:protocol.census-page
Packs: pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.context-bundle.oversized-member-named
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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-divergenceImplementing 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-headroomImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.derived-readiness-banner.honest-headroom
Packs: pack:self-hosting-v1
spec:consumers.intent-composition.proposal.memoImplementing units
impl:protocol.proposal-memo-recipe · test/recipes.test.ts:7298impl:protocol.studio-proposal-memo · src/studio-elements/memo.ts:13Referencing units
None.
Enabled verifiers: spec:consumers.intent-composition.proposal.memo.shared
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.mermaid-viewImplementing units
impl:protocol.mermaid-view · src/projections/mermaid.ts:14impl:protocol.mermaid-view-cli · src/cli/mermaid-command.ts:82Referencing units
None.
Enabled verifiers: test:protocol.mermaid-view
Packs: pack:self-hosting-v1
spec:consumers.obsidian-vaultImplementing units
impl:protocol.vault-command · src/cli/vault-command.ts:191impl:protocol.vault-notes · src/projections/vault/notes.ts:45impl:protocol.vault-sync · src/projections/vault/sync.ts:98Referencing 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-refusedImplementing 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-linkImplementing 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-linkImplementing 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-staysImplementing 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-pageImplementing units
impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing 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-givenImplementing 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-onlyImplementing 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-kindsImplementing units
impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10Referencing 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-routingImplementing units
impl:protocol.studio-diagram-routing · src/projections/studio/diagrams/routing.ts:38impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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.legibilityImplementing units
impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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-sourceImplementing units
impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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-contextImplementing 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-layerImplementing 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-boundImplementing 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-pageImplementing units
impl:protocol.studio-diff · src/projections/studio/pages/diff-page.ts:91Referencing 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.architectureImplementing units
impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50Referencing 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.evidenceImplementing units
impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3Referencing units
None.
Enabled verifiers: test:protocol.studio-lenses
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.navigationImplementing units
impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing 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-firstImplementing 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-inputImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:consumers.spec-studio.runs-pageImplementing units
impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-runs-page · src/projections/studio/pages/runs-page.ts:6Referencing 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-viewImplementing 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-removedImplementing 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-pageImplementing 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-removedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.wholesale-view-rewrite.stale-page-removed
Packs: pack:self-hosting-v1
spec:decisions.roadmap-priorityImplementing units
None.
Referencing units
impl:protocol.pack-aggregate · src/model/pack.ts:23impl:protocol.pack-member-order · src/extract/derive.ts:153Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:protocol.delivery-record-cleanupImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:protocol.role-vocabularyImplementing units
impl:protocol.role-vocabulary · test/self-hosting-graph.test.ts:143Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:protocol.significant-units-reviewImplementing units
impl:protocol.structural-self-binding · test/self-hosting-oracle/structural-edges.ts:76Referencing 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-pairImplementing 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-ruleImplementing 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-unclassifiedImplementing 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-locationImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.diagnostic-rendering.composed-location
Packs: pack:self-hosting-v1
spec:validation.diagnostic-rendering.table-cell-locationImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.diagnostic-rendering.table-cell-location
Packs: pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.external-registers.uncited-on-request
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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:consumers.design-diffImplementing units
impl:protocol.design-diff-recipe · test/iteration-recipes.test.ts:27Referencing 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.sharedImplementing 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-refusedImplementing 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-notesImplementing 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-recoveredImplementing 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-vaultImplementing 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-refusedImplementing 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-recoveredImplementing 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-surviveImplementing 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-refusedImplementing 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-refusedImplementing 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-treeImplementing units
impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13Referencing 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-pictureImplementing units
impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7Referencing 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-entryImplementing 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-apartImplementing 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-registerImplementing units
impl:protocol.studio-unit-register · src/projections/studio/pages/architecture-register.ts:7Referencing 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-evidenceImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.run-external
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.structural-mermaidImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:decisions.roadmap-over-plansImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:decisions.vault-owned-folderImplementing units
None.
Referencing units
impl:protocol.vault-command · src/cli/vault-command.ts:191impl:protocol.vault-sync · src/projections/vault/sync.ts:98Enabled verifiers: None
Packs: pack:obsidian-vault-v1, pack:self-hosting-v1
spec:model.pack-aggregateImplementing units
impl:protocol.pack-aggregate · src/model/pack.ts:23Referencing units
None.
Enabled verifiers: test:protocol.pack-builder, test:protocol.roadmap-priority
Packs: pack:self-hosting-v1
spec:decisions.pack-reifiedImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:validation.pack-coherenceImplementing units
impl:protocol.pack-coherence · src/validate/validators.ts:1102Referencing units
None.
Enabled verifiers: spec:validation.pack-coherence.incoherent-aggregate
Packs: pack:self-hosting-v1
spec:validation.pack-coherence.incoherent-aggregateImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.pack-coherence.incoherent-aggregate
Packs: pack:self-hosting-v1
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| decidedBy · outgoing | spec:decisions.shipped-projections-frozenspec:decisions.shipped-projections-frozen · resolves | declared | keys stay off the frozen projections, which read the step text unchanged | None |
| refines · outgoing | spec:carrier.slot-notationspec:carrier.slot-notation · resolves | declared | a key joins the step text the notation reads, ahead of its slots | None |
| dependsOn · incoming | spec:carrier.gherkin-authoringspec:carrier.gherkin-authoring · resolves | declared | a step may open with a step key marker | None |
| dependsOn · incoming | spec:carrier.markdown-body-grammarspec:carrier.markdown-body-grammar · resolves | declared | a fence step may open with a step key marker | None |
| dependsOn · incoming | Capability adoption counts where each capability is used and where it could applyspec:consumers.upgrade-kit.capability-adoption · resolves | declared | step keys are counted where example steps are | None |
| dependsOn · incoming | The build derives step and space contracts from graph examplesspec:extraction.executable-contracts · resolves | declared | a keyed step's contract key is its step key | None |
| dependsOn · incoming | Derived runnable modules freeze the registrar interfacespec:extraction.runnable-modules · resolves | declared | the registrar binds each step under its contract key | None |
| refines · incoming | An example marker that disagrees with its vocabulary withholds the contractspec:carrier.step-keys.conflicting-example-key-withheld · resolves | declared | None | None |
| refines · incoming | A keyed Gherkin step keeps its binding across a rewordingspec:carrier.step-keys.gherkin-keyed-step-stays-bound · resolves | declared | None | None |
| refines · incoming | A step key equal to another step's skeleton withholds the contractspec:carrier.step-keys.key-equal-to-a-skeleton-withheld · resolves | declared | None | None |
| refines · incoming | A step marker whose key is off the grammar refuses the carrierspec:carrier.step-keys.malformed-marker-refused · resolves | declared | None | None |
| refines · incoming | Renaming a step key breaks the bindingspec:carrier.step-keys.renamed-key-breaks · resolves | declared | None | None |
| refines · incoming | One key on two vocabulary steps refuses the carrierspec:carrier.step-keys.repeated-key-refused · resolves | declared | None | None |
| refines · incoming | A keyed step reworded in its vocabulary and its example keeps its bindingspec:carrier.step-keys.reworded-keyed-step-stays-bound · resolves | declared | None | None |
| refines · incoming | The same rewording without a key breaks the bindingspec:carrier.step-keys.reworded-unkeyed-step-breaks · resolves | declared | None | None |
| refines · incoming | Two keys on one step refuse the carrierspec:carrier.step-keys.two-keys-on-one-step-refused · resolves | declared | None | None |
| refines · incoming | A keyed TypeScript step keeps its key through import to Markdownspec:carrier.step-keys.typescript-keyed-step-imports-keyed · resolves | declared | None | None |
| verifies · incoming | An example marker that disagrees with its vocabulary withholds the contractspec:carrier.step-keys.conflicting-example-key-withheld · resolves | declared | None | vocabularyHome |
| verifies · incoming | A keyed Gherkin step keeps its binding across a rewordingspec:carrier.step-keys.gherkin-keyed-step-stays-bound · resolves | declared | None | stepMarker, vocabularyHome, rewordedStaysBound |
| verifies · incoming | A step key equal to another step's skeleton withholds the contractspec:carrier.step-keys.key-equal-to-a-skeleton-withheld · resolves | declared | None | contractKey |
| verifies · incoming | A step marker whose key is off the grammar refuses the carrierspec:carrier.step-keys.malformed-marker-refused · resolves | declared | None | markerRefusals |
| verifies · incoming | Renaming a step key breaks the bindingspec:carrier.step-keys.renamed-key-breaks · resolves | declared | None | renamedKey |
| verifies · incoming | One key on two vocabulary steps refuses the carrierspec:carrier.step-keys.repeated-key-refused · resolves | declared | None | oneKeyOneStep |
| verifies · incoming | A keyed step reworded in its vocabulary and its example keeps its bindingspec:carrier.step-keys.reworded-keyed-step-stays-bound · resolves | declared | None | stepMarker, vocabularyHome, contractKey, rewordedStaysBound |
| verifies · incoming | The same rewording without a key breaks the bindingspec:carrier.step-keys.reworded-unkeyed-step-breaks · resolves | declared | None | contractKey, unkeyedBreaks |
| verifies · incoming | Two keys on one step refuse the carrierspec:carrier.step-keys.two-keys-on-one-step-refused · resolves | declared | None | oneKeyOneStep |
| verifies · incoming | A keyed TypeScript step keeps its key through import to Markdownspec:carrier.step-keys.typescript-keyed-step-imports-keyed · resolves | declared | None | stepMarker, contractKey |
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 protocolimpl: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 protocolimpl: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 protocolimpl: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 protocolimpl: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 protocolimpl: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 protocolimpl:protocol.spec-sections · typed Spec section shapes · src/model/sections.ts:138 · role contract · component component:protocol.model · layer domain · context protocolspecs/carrier/step-keys.conflicting-example-key-withheld.sdp.md · example enabledspecs/carrier/step-keys.gherkin-keyed-step-stays-bound.sdp.md · example enabledspecs/carrier/step-keys.key-equal-to-a-skeleton-withheld.sdp.md · example enabledspecs/carrier/step-keys.malformed-marker-refused.sdp.md · example enabledspecs/carrier/step-keys.renamed-key-breaks.sdp.md · example enabledspecs/carrier/step-keys.repeated-key-refused.sdp.md · example enabledspecs/carrier/step-keys.reworded-keyed-step-stays-bound.sdp.md · example enabledspecs/carrier/step-keys.reworded-unkeyed-step-breaks.sdp.md · example enabledspecs/carrier/step-keys.two-keys-on-one-step-refused.sdp.md · example enabledspecs/carrier/step-keys.typescript-keyed-step-imports-keyed.sdp.md · example enabledtest/keyed-content.test.ts:28 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:carrier.step-keys.conflicting-example-key-withheld
spec:carrier.step-keys.conflicting-example-key-withheldExample / Scenario · storyready floor readyPacks: 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.
outcomeGiven 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: ""}test/self-hosting-step-keys.test.ts:26test/self-hosting-step-keys.test.ts:26Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | None |
| verifies · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | vocabularyHome |
| verifies · outgoing | The build derives step and space contracts from graph examplesspec:extraction.executable-contracts · resolves | declared | None | keyConflicts |
test/self-hosting-step-keys.test.ts:26 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:carrier.step-keys.gherkin-keyed-step-stays-bound
spec:carrier.step-keys.gherkin-keyed-step-stays-boundExample / Scenario · storyready floor readyPacks: 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.
outcome@example-space pseudo-scenario and the child is an ordinary Scenario.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}test/self-hosting-step-keys.test.ts:73test/self-hosting-step-keys.test.ts:73Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | None |
| verifies · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | stepMarker, vocabularyHome, rewordedStaysBound |
test/self-hosting-step-keys.test.ts:73 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:carrier.step-keys.key-equal-to-a-skeleton-withheld
spec:carrier.step-keys.key-equal-to-a-skeleton-withheldExample / Scenario · storyready floor readyPacks: 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.
outcomeGiven 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: ""}test/self-hosting-step-keys.test.ts:120test/self-hosting-step-keys.test.ts:120Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | None |
| verifies · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | contractKey |
| verifies · outgoing | The build derives step and space contracts from graph examplesspec:extraction.executable-contracts · resolves | declared | None | keyConflicts |
test/self-hosting-step-keys.test.ts:120 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:carrier.step-keys.malformed-marker-refused
spec:carrier.step-keys.malformed-marker-refusedExample / Scenario · storyready floor readyPacks: 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.
outcomeGiven 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"}test/self-hosting-step-keys.test.ts:167test/self-hosting-step-keys.test.ts:167Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | None |
| verifies · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | markerRefusals |
test/self-hosting-step-keys.test.ts:167 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:carrier.step-keys.renamed-key-breaks
spec:carrier.step-keys.renamed-key-breaksExample / Scenario · storyready floor readyPacks: 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.
outcomeGiven 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}test/self-hosting-step-keys.test.ts:214test/self-hosting-step-keys.test.ts:214Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | None |
| verifies · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | renamedKey |
test/self-hosting-step-keys.test.ts:214 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:carrier.step-keys.repeated-key-refused
spec:carrier.step-keys.repeated-key-refusedExample / Scenario · storyready floor readyPacks: 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.
outcomeGiven 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"}test/self-hosting-step-keys.test.ts:261test/self-hosting-step-keys.test.ts:261Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | None |
| verifies · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | oneKeyOneStep |
test/self-hosting-step-keys.test.ts:261 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:carrier.step-keys.reworded-keyed-step-stays-bound
spec:carrier.step-keys.reworded-keyed-step-stays-boundExample / Scenario · storyready floor readyPacks: 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.
outcomeGiven 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}test/self-hosting-step-keys.test.ts:308test/self-hosting-step-keys.test.ts:308Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | None |
| verifies · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | stepMarker, vocabularyHome, contractKey, rewordedStaysBound |
| verifies · outgoing | The build derives step and space contracts from graph examplesspec:extraction.executable-contracts · resolves | declared | None | contractKeys |
test/self-hosting-step-keys.test.ts:308 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:carrier.step-keys.reworded-unkeyed-step-breaks
spec:carrier.step-keys.reworded-unkeyed-step-breaksExample / Scenario · storyready floor readyPacks: 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.
outcomeGiven 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}test/self-hosting-step-keys.test.ts:355test/self-hosting-step-keys.test.ts:355Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | None |
| verifies · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | contractKey, unkeyedBreaks |
| verifies · outgoing | The build derives step and space contracts from graph examplesspec:extraction.executable-contracts · resolves | declared | None | contractKeys |
test/self-hosting-step-keys.test.ts:355 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:carrier.step-keys.two-keys-on-one-step-refused
spec:carrier.step-keys.two-keys-on-one-step-refusedExample / Scenario · storyready floor readyPacks: 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.
outcomeGiven 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"}test/self-hosting-step-keys.test.ts:402test/self-hosting-step-keys.test.ts:402Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | None |
| verifies · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | oneKeyOneStep |
test/self-hosting-step-keys.test.ts:402 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:carrier.step-keys.typescript-keyed-step-imports-keyed
spec:carrier.step-keys.typescript-keyed-step-imports-keyedExample / Scenario · storyready floor readyPacks: 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.
outcomeGiven 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}test/self-hosting-step-keys.test.ts:449test/self-hosting-step-keys.test.ts:449Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | None |
| verifies · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | None | stepMarker, contractKey |
test/self-hosting-step-keys.test.ts:449 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:extraction.executable-contracts
spec:extraction.executable-contractsUse Case / Behavior · featureready floor readyPacks: 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.
outcomerule line 22 · specs/extraction/executable-contracts.sdp.md:22generateContracts derives per-example step contracts and per-parent space contracts solely from the extracted graph.rule line 23 · specs/extraction/executable-contracts.sdp.md:23rule.concreteness line 24 · specs/extraction/executable-contracts.sdp.md:24spec:extraction.executable-contracts.concreteness-refusal · enabled
rule line 25 · specs/extraction/executable-contracts.sdp.md:25contracts/unmatched-vocabulary-step.rule.onePoint line 26 · specs/extraction/executable-contracts.sdp.md:26contracts/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:27spec: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:28rule line 29 · specs/extraction/executable-contracts.sdp.md:29rule.outcomeIdentity line 30 · specs/extraction/executable-contracts.sdp.md:30kind 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:31contracts/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:32spec:extraction.executable-contracts.case-colliding-path · enabled
rule line 33 · specs/extraction/executable-contracts.sdp.md:336 unkeyed rules.
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: ""}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: ""}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}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}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
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}findingIds line 49 · specs/extraction/executable-contracts.sdp.md:49contracts/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:50contracts/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:51export 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:52export 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:54planExample 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.specs/carrier/step-keys.conflicting-example-key-withheld.sdp.mdspecs/carrier/step-keys.key-equal-to-a-skeleton-withheld.sdp.mdspecs/carrier/step-keys.reworded-keyed-step-stays-bound.sdp.mdspecs/carrier/step-keys.reworded-unkeyed-step-breaks.sdp.mdspec: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.mdspec: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.mdspec: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.mddimension · 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 slotbinding · "binds" | "leaves unbound" · declared by a refining example {exampleId} whose used step {binding} that slotentryCount · number · declared by the example carries {entryCount} structured entriestwinId · string · declared by a case-twin example {twinId} whose contract path differs only by letter case| Example | dimension | exampleId | binding | entryCount | twinId |
|---|---|---|---|---|---|
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" | unbound | unbound |
spec:extraction.executable-contracts.multi-entry-example | "n" | "spec:probe.create-order.multi" | "binds" | 2 | unbound |
Oracle binding: none
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
| Declared value | Examples |
|---|---|
"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
dimension: NoneexampleId: Nonebinding: NoneentryCount: spec:extraction.executable-contracts.case-colliding-path, spec:extraction.executable-contracts.concreteness-refusaltwinId: spec:extraction.executable-contracts.concreteness-refusal, spec:extraction.executable-contracts.multi-entry-examplesrc/graph/example-space.ts:117src/codegen/contracts.ts:647src/reader/reader.ts:499test/recipes.test.ts:2057test/self-hosting-extraction.test.ts:593test/self-hosting-extraction.test.ts:575test/self-hosting-extraction.test.ts:584test/recipes.test.ts:2068test/self-hosting-step-keys.test.ts:26test/self-hosting-step-keys.test.ts:120test/self-hosting-step-keys.test.ts:308test/self-hosting-step-keys.test.ts:355Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because folds require exact labels unavailable in requirement syntax.
spec:decisions.point-per-exampleAn example binds exactly one point; table syntax may expand statically into sibling examples and renderers may project siblings as a table.
component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocolUses
component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolcomponent:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocolcomponent:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocolcomponent:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolcomponent:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolUses
component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocolcomponent:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocolimpl:protocol.example-space · resolves example-space vocabulary for contracts and floors · src/graph/example-space.ts:117Component: 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:647Component: component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocol
Uses
None.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Shown as text: this drawing exceeds the height budget of 2000 pixels after folding.
spec:extraction.build-pipeline · stated ready, floor readyspec:extraction.executable-examples · stated ready, floor readyspec:decisions.point-per-example · stated ready, floor readyspec:consumers.agent-surface.example-space-coverageImplementing units
impl:protocol.example-space-coverage-recipe · test/studio-s1.test.ts:856impl:protocol.example-space-decoding · src/notation/example-space.ts:473Referencing 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-panelsImplementing units
impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74Referencing 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-declarationsImplementing units
impl:protocol.pack-design · src/reader/reader.ts:499impl:protocol.register-recipes · test/recipes.test.ts:2057Referencing units
None.
Enabled verifiers: test:protocol.register-recipes
Packs: pack:self-hosting-v1
spec:extraction.example-runnerImplementing units
component:protocol.adapters · src/adapters/vitest.ts:23component:protocol.runner · src/runner/index.ts:99impl:protocol.example-runner · src/runner/index.ts:108impl:protocol.example-runner-adapter · src/adapters/vitest.ts:32Referencing 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-pathImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.executable-contracts.case-colliding-path
Packs: pack:self-hosting-v1
spec:extraction.executable-contracts.concreteness-refusalImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.executable-contracts.concreteness-refusal
Packs: pack:self-hosting-v1
spec:extraction.executable-contracts.multi-entry-exampleImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.executable-contracts.multi-entry-example
Packs: pack:self-hosting-v1
Implementing units
component:protocol.codegen · src/codegen/contracts.ts:633component:protocol.testing · src/testing/index.ts:38impl:protocol.example-testing-helpers · src/testing/index.ts:50impl:protocol.runnable-modules · src/codegen/contracts.ts:658Referencing 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:consumers.agent-surface.example-space-coverage.number-not-enumerableImplementing 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-literalImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-coverage-literal
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.pack-designImplementing units
impl:protocol.pack-design · src/reader/reader.ts:499Referencing units
None.
Enabled verifiers: test:protocol.pack-design
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.spec-studio.lenses.testsImplementing units
impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34Referencing 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.registersImplementing units
impl:protocol.studio-registers · src/projections/studio/pages/registers-page.ts:47Referencing 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-coverageImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-rule-coverage
Packs: pack:self-hosting-v1, pack:spec-studio-v1
Implementing units
impl:protocol.capability-adoption-recipe · test/upgrade-kit.test.ts:514Referencing 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-committedImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:extraction.example-runner.red-step-namingImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.example-runner.red-step-naming
Packs: pack:self-hosting-v1
spec:extraction.example-runner.step-orderImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.example-runner.step-order
Packs: pack:self-hosting-v1
spec:model.enrichment-lifecycleImplementing units
impl:protocol.slimming-recipe · test/curation-recipes.test.ts:26Referencing units
None.
Enabled verifiers: test:protocol.slimming-recipe
Packs: pack:design-iteration-v1, pack:self-hosting-v1
spec:consumers.agent-surface.design-recipesImplementing units
impl:protocol.design-recipes · test/recipes.test.ts:4769Referencing units
None.
Enabled verifiers: test:protocol.design-recipes
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.delivery-session-on-rampImplementing units
impl:protocol.delivery-session-on-ramp · test/skills.test.ts:83Referencing units
None.
Enabled verifiers: test:protocol.delivery-session-on-ramp
Packs: pack:self-hosting-v1
spec:consumers.design-review.pack-design-pageImplementing units
impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120Referencing units
impl:protocol.pack-design-sections · src/projections/design-review-pack-sections.ts:19Enabled verifiers: test:protocol.pack-design-page
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.design-sliceImplementing units
impl:protocol.design-slice-recipe · test/self-hosting-design-slice.test.ts:148Referencing units
impl:protocol.studio-slice-answer · src/projections/studio/slice-answer.ts:1Enabled 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.basesImplementing units
impl:protocol.vault-bases · src/projections/vault/bases.ts:43impl:protocol.vault-notes · src/projections/vault/notes.ts:45Referencing units
None.
Enabled verifiers: spec:consumers.obsidian-vault.bases.views-match-sources
Packs: pack:obsidian-vault-v1, pack:self-hosting-v1
spec:consumers.review-perspectivesImplementing units
impl:protocol.perspective-filter-recipe · test/iteration-recipes.test.ts:753Referencing 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-textImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:consumers.spec-studio.dataImplementing units
impl:protocol.studio-data · src/projections/studio/data.ts:279Referencing units
None.
Enabled verifiers: test:protocol.studio-data
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.lenses.tests.coverage-rowImplementing 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-pageImplementing units
impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68Referencing 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-firstImplementing 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-pageImplementing units
impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44Referencing 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
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-pageImplementing units
None.
Referencing units
impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120Enabled verifiers: None
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:model.design-maturityImplementing units
impl:protocol.pack-design · src/reader/reader.ts:499Referencing units
None.
Enabled verifiers: test:protocol.pack-design
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.agent-surface.answer-shapesImplementing units
impl:protocol.answer-shape-recipes · test/recipes.test.ts:6214Referencing units
impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597impl:protocol.reader · src/reader/reader.ts:687Enabled verifiers: test:protocol.answer-shape-recipes
Packs: pack:design-iteration-v1, pack:self-hosting-v1
Implementing units
impl:protocol.context-bundle-recipe · test/iteration-recipes.test.ts:765Referencing 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.chainImplementing 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-absentImplementing 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-differingImplementing 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-matchingImplementing 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-unreadableImplementing 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-unrelatedImplementing 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-backlinkImplementing 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-cycleImplementing 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-exampleImplementing 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-exampleImplementing 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-componentsImplementing 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-holdingImplementing 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-satisfiedImplementing 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-unboundImplementing 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-planningImplementing units
impl:protocol.graph-first-planning · test/skills.test.ts:290Referencing units
None.
Enabled verifiers: test:protocol.graph-first-planning
Packs: pack:self-hosting-v1
spec:consumers.obsidian-vault.bases.views-match-sourcesImplementing 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.componentsImplementing units
component:protocol.studio-elements · src/studio-elements/index.ts:13impl:protocol.studio-compose · src/studio-elements/compose.ts:13impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74Referencing units
None.
Enabled verifiers: test:protocol.studio-intent-handoff
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.data.inputsImplementing units
impl:protocol.studio-base-input · src/cli/studio-inputs.ts:9impl:protocol.studio-command · src/cli/studio-command.ts:106impl:protocol.studio-inputs · src/projections/studio/inputs.ts:1Referencing 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-answersImplementing units
impl:protocol.studio-recipes · src/projections/studio/recipes.ts:34Referencing units
impl:protocol.studio-register-contracts · src/projections/studio/pages/register-answers.ts:4Enabled verifiers: test:protocol.studio-lenses
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.diagram-kinds.dependencyImplementing units
impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10Referencing 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-traceImplementing units
impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8Referencing 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-architectureImplementing units
impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-architecture
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.diagramsImplementing units
impl:protocol.studio-architecture-diagrams · src/projections/studio/diagrams/architecture.ts:4impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-diagram-model · src/projections/studio/diagrams/model.ts:1impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73impl:protocol.studio-relation-diagrams · src/projections/studio/diagrams/bands.ts:10Referencing 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.exportImplementing units
impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-expander · src/studio-elements/expander.ts:16impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68Referencing 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-pageImplementing units
impl:protocol.studio-glossary · src/projections/studio/pages/glossary-page.ts:7Referencing 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-pageImplementing units
impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.lensesImplementing units
impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34Referencing units
None.
Enabled verifiers: test:protocol.studio-lenses
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.owner-queueImplementing units
impl:protocol.studio-owner-queue · src/projections/studio/pages/queue-page.ts:9Referencing 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-mapImplementing units
impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7Referencing 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.publisherImplementing units
impl:protocol.build-pipeline-emit · src/cli/build-command.ts:251impl:protocol.studio-command · src/cli/studio-command.ts:106impl:protocol.studio-page-catalog · src/projections/studio/pages/index.ts:21impl:protocol.studio-paths · src/projections/studio/paths.ts:2impl:protocol.studio-publish · src/projections/studio/publish.ts:24Referencing 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-pageImplementing units
impl:protocol.studio-roadmap-page · src/projections/studio/pages/roadmap-page.ts:168Referencing units
None.
Enabled verifiers: test:protocol.studio-roadmap-page
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.searchImplementing units
impl:protocol.studio-concept-match · src/reader/concept-match.ts:43impl:protocol.studio-search-page · src/projections/studio/pages/search-page.ts:5impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95Referencing 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.shellImplementing units
impl:protocol.studio-code-spans · src/projections/studio/pages/code-spans.ts:9impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-html · src/projections/studio/pages/html.ts:8impl:protocol.studio-text · src/projections/studio/pages/text.ts:7Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.slice-pageImplementing units
impl:protocol.studio-slice-page · src/projections/studio/pages/slice-page.ts:25Referencing 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-declarationImplementing 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.coreImplementing units
impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
Implementing units
impl:protocol.adopter-help · src/cli/help.ts:167impl:protocol.agent-surface-cli · src/cli/sdp.ts:94impl:protocol.build-args · src/cli/build-args.ts:11impl:protocol.generate-command · src/cli/generate-command.ts:34Referencing 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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.context-bundle.oversized-member-named
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
Implementing units
impl:protocol.statement-queue-recipe · test/self-hosting-readiness-planner.test.ts:74Referencing 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.roadmapImplementing units
impl:protocol.roadmap-recipe · test/roadmap.test.ts:20Referencing 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-pageImplementing units
impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing 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-givenImplementing 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-onlyImplementing 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-kindsImplementing units
impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10Referencing 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-routingImplementing units
impl:protocol.studio-diagram-routing · src/projections/studio/diagrams/routing.ts:38impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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.legibilityImplementing units
impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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-contextImplementing 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-layerImplementing 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-boundImplementing 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-pageImplementing units
impl:protocol.studio-diff · src/projections/studio/pages/diff-page.ts:91Referencing 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-containedImplementing 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-twiceImplementing 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.architectureImplementing units
impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50Referencing 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.evidenceImplementing units
impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3Referencing units
None.
Enabled verifiers: test:protocol.studio-lenses
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.lenses.packsImplementing units
impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing units
None.
Enabled verifiers: test:protocol.studio-lenses
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.navigationImplementing units
impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing 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-firstImplementing 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-elementsImplementing units
component:protocol.studio-elements · src/studio-elements/index.ts:13impl:protocol.studio-copy · src/studio-elements/copy.ts:22impl:protocol.studio-expander · src/studio-elements/expander.ts:16impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-search-form · src/studio-elements/search.ts:18impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30Referencing 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.watchImplementing units
impl:protocol.studio-watch · src/cli/studio-command.ts:122Referencing 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-inputImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:consumers.spec-studio.runs-pageImplementing units
impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-runs-page · src/projections/studio/pages/runs-page.ts:6Referencing 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.sharingImplementing units
impl:protocol.stamp-command · src/cli/stamp-command.ts:8impl:protocol.studio-preview-workflow · test/studio-s4.test.ts:742impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30Referencing 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-rampImplementing units
impl:protocol.studio-on-ramp · test/skills.test.ts:1693Referencing units
None.
Enabled verifiers: test:protocol.studio-on-ramp
Packs: pack:self-hosting-v1, pack:spec-studio-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.command-line.generate-check-failure
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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-provenanceImplementing units
impl:protocol.build-artifacts · src/cli/build-artifacts.ts:182impl:protocol.engine-provenance-cli · src/cli/sdp.ts:102Referencing units
None.
Enabled verifiers: test:protocol.engine-provenance
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.projections-model.roadmap-viewsImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.decision-first
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.dependency-order
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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-partImplementing 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-partImplementing 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-workImplementing 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-partImplementing 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-partImplementing 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.memoImplementing units
impl:protocol.roadmap-memo-recipe · test/roadmap.test.ts:27impl:protocol.studio-roadmap-page · src/projections/studio/pages/roadmap-page.ts:168Referencing 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-evidenceImplementing 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-parentImplementing 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-orderImplementing 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-partImplementing 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-treeImplementing units
impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13Referencing 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-pictureImplementing units
impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7Referencing 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-sourceImplementing units
impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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-entryImplementing 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-apartImplementing 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-registerImplementing units
impl:protocol.studio-unit-register · src/projections/studio/pages/architecture-register.ts:7Referencing 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-runImplementing 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-evidenceImplementing 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-apartImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-stamp-apart
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.structural-mermaidImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:design-management-v1, pack:self-hosting-v1
Implementing units
impl:protocol.upgrade-guide · test/upgrade-kit.test.ts:87Referencing units
None.
Enabled verifiers: test:protocol.upgrade-guide
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
spec:protocol.roadmap-replaces-plansImplementing units
impl:protocol.roadmap-practice · test/check-self-hosting-gates.test.ts:52Referencing units
None.
Enabled verifiers: test:protocol.roadmap-practice
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
Implementing units
impl:protocol.rule-key-proposal-recipe · test/upgrade-kit.test.ts:742Referencing 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.delivery-record-cleanupImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
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
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
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| decidedBy · outgoing | spec:decisions.point-per-examplespec:decisions.point-per-example · resolves | declared | None | None |
| dependsOn · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | a keyed step's contract key is its step key | None |
| refines · outgoing | spec:extraction.build-pipelinespec:extraction.build-pipeline · resolves | declared | None | None |
| refines · outgoing | spec:extraction.executable-examplesspec:extraction.executable-examples · resolves | declared | typed contracts carry the authored steps and example space into execution | None |
| dependsOn · incoming | spec:consumers.agent-surface.example-space-coveragespec:consumers.agent-surface.example-space-coverage · resolves | declared | its decoded slots and bound points reuse the space-contract interpretation | None |
| dependsOn · incoming | spec:consumers.spec-studio.verification-panelsspec:consumers.spec-studio.verification-panels · resolves | declared | None | None |
| dependsOn · incoming | spec:extraction.example-runnerspec:extraction.example-runner · resolves | declared | runs the step contracts the build emits | None |
| dependsOn · incoming | Derived runnable modules freeze the registrar interfacespec:extraction.runnable-modules · resolves | declared | None | None |
| refines · incoming | spec:extraction.contract-declarationsspec:extraction.contract-declarations · resolves | declared | None | None |
| refines · incoming | spec:extraction.executable-contracts.case-colliding-pathspec:extraction.executable-contracts.case-colliding-path · resolves | declared | None | None |
| refines · incoming | spec:extraction.executable-contracts.concreteness-refusalspec:extraction.executable-contracts.concreteness-refusal · resolves | declared | None | None |
| refines · incoming | spec:extraction.executable-contracts.multi-entry-examplespec:extraction.executable-contracts.multi-entry-example · resolves | declared | None | None |
| verifies · incoming | An example marker that disagrees with its vocabulary withholds the contractspec:carrier.step-keys.conflicting-example-key-withheld · resolves | declared | None | keyConflicts |
| verifies · incoming | A step key equal to another step's skeleton withholds the contractspec:carrier.step-keys.key-equal-to-a-skeleton-withheld · resolves | declared | None | keyConflicts |
| verifies · incoming | A keyed step reworded in its vocabulary and its example keeps its bindingspec:carrier.step-keys.reworded-keyed-step-stays-bound · resolves | declared | None | contractKeys |
| verifies · incoming | The same rewording without a key breaks the bindingspec:carrier.step-keys.reworded-unkeyed-step-breaks · resolves | declared | None | contractKeys |
| verifies · incoming | spec:extraction.executable-contracts.case-colliding-pathspec:extraction.executable-contracts.case-colliding-path · resolves | declared | None | caseCollision |
| verifies · incoming | spec:extraction.executable-contracts.concreteness-refusalspec:extraction.executable-contracts.concreteness-refusal · resolves | declared | None | concreteness |
| verifies · incoming | spec:extraction.executable-contracts.multi-entry-examplespec:extraction.executable-contracts.multi-entry-example · resolves | declared | None | onePoint |
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 protocolimpl: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 protocolspecs/carrier/step-keys.conflicting-example-key-withheld.sdp.md · example enabledspecs/carrier/step-keys.key-equal-to-a-skeleton-withheld.sdp.md · example enabledspecs/carrier/step-keys.reworded-keyed-step-stays-bound.sdp.md · example enabledspecs/carrier/step-keys.reworded-unkeyed-step-breaks.sdp.md · example enabledspec: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 enabledspec: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 enabledspec: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 enabledRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:extraction.runnable-modules
spec:extraction.runnable-modulesUse Case / Behavior · featureready floor readyPacks: 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.
problemoutcomevaluerule line 28 · specs/extraction/runnable-modules.sdp.md:28createWorld, 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.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:30generated/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:31rule line 32 · specs/extraction/runnable-modules.sdp.md:32@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:33spec: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:34tsc 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:35invoke 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:36expected(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:37rule line 38 · specs/extraction/runnable-modules.sdp.md:38renderContractStep 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:39unspecified 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:40specTest 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:41assertions 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:42rule line 43 · specs/extraction/runnable-modules.sdp.md:4316 unkeyed rules.
registrar line 46 · specs/extraction/runnable-modules.sdp.md:46export 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:47register 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:48interface 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:49spec: prefix and the suffix .test.generated.ts, retaining the id's dots.registrarManifest line 50 · specs/extraction/runnable-modules.sdp.md:50generated/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:51compareContractOutcome(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:52scenario <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
test/testing.test.ts:58test/codegen.test.ts:22test/runnable-modules.typecheck.ts:5src/codegen/contracts.ts:633src/testing/index.ts:38src/testing/index.ts:50src/codegen/contracts.ts:658test/testing.test.ts:58test/codegen.test.ts:22test/runnable-modules.typecheck.ts:5Copyable 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.
spec:decisions.adopted-registrars-committedA 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-formAn 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-livenessDelivery facts record bindings and enabled verifier existence; coverage gaps and human readiness practice remain explicit without becoming graph facts.
spec:decisions.point-per-exampleAn example binds exactly one point; table syntax may expand statically into sibling examples and renderers may project siblings as a table.
component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocolUses
component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolcomponent:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocolcomponent:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocolcomponent:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolcomponent:protocol.testing · the generated registrar runtime · src/testing/index.ts:38 · layer adapter · context protocolUses
component:protocol.adapters · external runtime and source adapters · src/adapters/vitest.ts:23 · layer adapter · context protocolcomponent:protocol.runner · provider-neutral example execution · src/runner/index.ts:99 · layer application · context protocolimpl:protocol.example-testing-helpers · adapter-lifecycle and oracle-comparison helpers for bound examples · src/testing/index.ts:50Component: 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:658Component: component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocol
Uses
None.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
spec:extraction.example-runner · stated ready, floor readyspec:extraction.build-pipeline · stated ready, floor readyspec:decisions.adopted-registrars-committed · stated ready, floor readyspec:decisions.anchor-comment-form · stated ready, floor readyspec:decisions.binding-not-liveness · stated ready, floor readyspec:decisions.point-per-example · stated ready, floor readyspec:decisions.adopted-registrars-committedImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| decidedBy · outgoing | spec:decisions.adopted-registrars-committedspec:decisions.adopted-registrars-committed · resolves | declared | None | None |
| decidedBy · outgoing | spec:decisions.anchor-comment-formspec:decisions.anchor-comment-form · resolves | declared | None | None |
| decidedBy · outgoing | spec:decisions.binding-not-livenessspec:decisions.binding-not-liveness · resolves | declared | None | None |
| decidedBy · outgoing | spec:decisions.point-per-examplespec:decisions.point-per-example · resolves | declared | None | None |
| dependsOn · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | the registrar binds each step under its contract key | None |
| dependsOn · outgoing | spec:extraction.build-pipelinespec:extraction.build-pipeline · resolves | declared | the build publishes the registrars and their manifest under its staged-publication law | None |
| dependsOn · outgoing | The build derives step and space contracts from graph examplesspec:extraction.executable-contracts · resolves | declared | None | None |
| refines · outgoing | spec:extraction.example-runnerspec:extraction.example-runner · resolves | declared | None | None |
| refines · incoming | spec:decisions.adopted-registrars-committedspec:decisions.adopted-registrars-committed · resolves | declared | None | None |
component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · role projection · layer application · context protocolcomponent:protocol.testing · the generated registrar runtime · src/testing/index.ts:38 · role adapter · layer adapter · context protocolimpl: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 protocolimpl: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 protocoltest/testing.test.ts:58 · test anchortest/codegen.test.ts:22 · test anchortest/runnable-modules.typecheck.ts:5 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:model.term-addresses
spec:model.term-addressesBusiness Rule · storyready floor readyPacks: 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.
problemoutcomespec:<id>#term.<key>, so prose cites a concept as a checked mention and every view links it exactly.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- **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:33spec:model.term-addresses.unknown-term-key-refused · enabled
rule.uniqueTermKeys line 34 · specs/model/term-addresses.sdp.md:34spec:model.term-addresses.repeated-term-key-refused · enabled
rule.markerRefusals line 35 · specs/model/term-addresses.sdp.md:35[# 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:36spec:<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:37rule.termLocations line 38 · specs/model/term-addresses.sdp.md:38term[<i>], with <i> the term's position among the Spec's terms in authored order and key beside a keyed term.rule.termReaders line 39 · specs/model/term-addresses.sdp.md:39term 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:40exercises 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.
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}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 errorsA 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 errorsA 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}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"}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}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:61model.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:62term 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:63term 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:64ENTRY_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:65Mention 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:67term 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:68model 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- **<term>** — [#<key>] <definition>, so a keyed TypeScript term imports keyed.specs/model/term-addresses.keyed-term-resolves.sdp.mdspecs/model/term-addresses.malformed-term-marker-refused.sdp.mdspecs/model/term-addresses.repeated-term-key-refused.sdp.mdspecs/model/term-addresses.typescript-term-imports-keyed.sdp.mdspecs/model/term-addresses.unknown-term-key-refused.sdp.mdtest/keyed-content.test.ts:28carrier · "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| Example | carrier | specId | terms | address |
|---|---|---|---|---|
| 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
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
carrier: NonespecId: Noneterms: Noneaddress: Nonetest/recipes.test.ts:3568src/extract/derive.ts:78src/extract/key-markers.ts:136src/extract/serialize.ts:105src/validate/validators.ts:1370test/recipes.test.ts:2057src/import/emit-markdown.ts:253src/model/sections.ts:138src/ids.ts:173test/keyed-content.test.ts:28test/self-hosting-term-addresses.test.ts:16test/self-hosting-term-addresses.test.ts:63test/self-hosting-term-addresses.test.ts:110test/self-hosting-term-addresses.test.ts:157test/self-hosting-term-addresses.test.ts:204Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because folds require exact labels unavailable in requirement syntax.
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-frozenRe-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.
component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocolUses
component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolcomponent:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocolcomponent:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocolcomponent:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolcomponent:protocol.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocolUses
component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocolcomponent:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocolcomponent:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolcomponent:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocolUses
None.
component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolUses
component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolcomponent:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocolcomponent:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocolimpl:protocol.address-and-cycle-recipes · asserts realization of the shipped address resolution and dependency cycle recipes · test/recipes.test.ts:3568Uses
None.
impl:protocol.entry-locations · builds the carrier entry location table · src/extract/derive.ts:78Component: 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:136Component: 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:105Component: 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:1370Component: 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:2057Uses
None.
impl:protocol.sdp-import-markdown-emit · emits the Markdown document twin for an imported Spec · src/import/emit-markdown.ts:253Component: 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:138Component: 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:173Component: component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol
Uses
None.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
spec:model.spec-sections · stated ready, floor readyspec:extraction.entry-locations · stated ready, floor readyspec:model.rule-keys · stated ready, floor readyspec:model.stable-ids · stated ready, floor readyspec:decisions.shipped-projections-frozen · stated ready, floor readyspec:carrier.markdown-body-grammarImplementing units
impl:protocol.markdown-body-grammar · src/extract/markdown-body.ts:120impl:protocol.markdown-content · src/extract/markdown-body-content.ts:7Referencing 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
Implementing units
impl:protocol.address-and-cycle-recipes · test/recipes.test.ts:3568Referencing 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-recipesImplementing units
impl:protocol.register-recipes · test/recipes.test.ts:2057Referencing units
None.
Enabled verifiers: test:protocol.register-recipes
Packs: pack:self-hosting-v1
spec:consumers.obsidian-vault.notesImplementing units
impl:protocol.vault-notes · src/projections/vault/notes.ts:45impl:protocol.vault-sections · src/projections/vault/sections.ts:10impl:protocol.vault-text · src/projections/vault/text.ts:30Referencing 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-pageImplementing units
impl:protocol.studio-glossary · src/projections/studio/pages/glossary-page.ts:7Referencing 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-pageImplementing units
impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44Referencing 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
Implementing units
impl:protocol.capability-adoption-recipe · test/upgrade-kit.test.ts:514Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.term-addresses.keyed-term-resolves
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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
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
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-mentionsImplementing units
impl:protocol.entry-address-resolution · src/graph/entry-address.ts:6impl:protocol.prose-mentions · src/validate/validators.ts:1370Referencing units
None.
Enabled verifiers: test:protocol.entry-locations, test:protocol.prose-mentions
Packs: pack:self-hosting-v1
spec:carrier.inline-code-spansImplementing units
impl:protocol.inline-code-spans · src/extract/markdown-inline-code.ts:4Referencing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.markdown-body-grammar.unrecognized-heading-refused
Packs: pack:self-hosting-v1
spec:carrier.markdown-parserImplementing units
impl:protocol.markdown-parser · src/extract/markdown.ts:37impl:protocol.static-reification · src/extract/reify.ts:2139Referencing units
None.
Enabled verifiers: spec:carrier.markdown-parser.bounded-parity, test:protocol.markdown-parser
Packs: pack:self-hosting-v1
spec:carrier.prose-ownership-ruleImplementing units
impl:protocol.markdown-body-grammar · src/extract/markdown-body.ts:120Referencing units
None.
Enabled verifiers: test:protocol.prose-ownership
Packs: pack:self-hosting-v1
spec:consumers.adopter-on-rampImplementing units
impl:protocol.adopter-help · src/cli/help.ts:167impl:protocol.adopter-on-ramp · test/skills.test.ts:712Referencing units
None.
Enabled verifiers: test:protocol.adopter-on-ramp, test:protocol.shipped-protocol-corpus
Packs: pack:self-hosting-v1
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
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
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-recipesImplementing units
impl:protocol.design-recipes · test/recipes.test.ts:4769Referencing units
None.
Enabled verifiers: test:protocol.design-recipes
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.intent-composition.proposalImplementing units
impl:protocol.proposal-schema-and-recipe · test/iteration-recipes.test.ts:1510impl:protocol.studio-proposal-contract · src/studio-elements/proposal.ts:1Referencing 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-refusedImplementing 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-linkImplementing 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-linkImplementing 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-staysImplementing 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
Implementing units
impl:protocol.statement-queue-recipe · test/self-hosting-readiness-planner.test.ts:74Referencing 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.memoImplementing units
impl:protocol.roadmap-memo-recipe · test/roadmap.test.ts:27impl:protocol.studio-roadmap-page · src/projections/studio/pages/roadmap-page.ts:168Referencing 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.exportImplementing units
impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-expander · src/studio-elements/expander.ts:16impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68Referencing 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-twiceImplementing 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.registersImplementing units
impl:protocol.studio-registers · src/projections/studio/pages/registers-page.ts:47Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.registers.blocking-first
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.shellImplementing units
impl:protocol.studio-code-spans · src/projections/studio/pages/code-spans.ts:9impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-html · src/projections/studio/pages/html.ts:8impl:protocol.studio-text · src/projections/studio/pages/text.ts:7Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.spec-page.cited-declarationImplementing 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.coreImplementing units
impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.verification-panelsImplementing units
impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74Referencing 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
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-rampImplementing units
impl:protocol.vault-on-ramp · test/skills.test.ts:1995Referencing units
None.
Enabled verifiers: test:protocol.vault-on-ramp
Packs: pack:obsidian-vault-v1, pack:self-hosting-v1
Implementing units
impl:protocol.entry-address-resolution · src/graph/entry-address.ts:6impl:protocol.entry-citation-reader · src/reader/entry-citations.ts:19impl:protocol.entry-citation-recipe · test/recipes.test.ts:7008impl:protocol.entry-citation-scan · src/extract/entry-citations.ts:6Referencing 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-keysImplementing units
impl:protocol.open-question-keys · src/extract/markdown-body-owner-behavior.ts:38impl:protocol.open-section-order · src/extract/serialize.ts:105impl:protocol.prose-mentions · src/validate/validators.ts:1370impl:protocol.register-recipes · test/recipes.test.ts:2057impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253impl:protocol.stable-ids · src/ids.ts:173impl:protocol.static-reification · src/extract/reify.ts:2139Referencing 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
Implementing units
impl:protocol.external-registers-recipe · test/external-registers.test.ts:9Referencing 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:carrier.inline-code-spans.descriptionImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.inline-code-spans.description
Packs: pack:self-hosting-v1
spec:carrier.inline-code-spans.listImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.inline-code-spans.list
Packs: pack:self-hosting-v1
spec:carrier.inline-code-spans.narrativeImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.inline-code-spans.narrative
Packs: pack:self-hosting-v1
spec:carrier.inline-code-spans.packImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.inline-code-spans.pack
Packs: pack:self-hosting-v1
spec:carrier.markdown-authoringImplementing units
impl:protocol.markdown-parser · src/extract/markdown.ts:37Referencing units
None.
Enabled verifiers: test:protocol.markdown-authoring
Packs: pack:self-hosting-v1
spec:carrier.markdown-pack-authoringImplementing units
impl:protocol.markdown-pack-authoring · src/extract/markdown-pack.ts:117impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33impl:protocol.static-reification · src/extract/reify.ts:2139Referencing 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-parityImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.markdown-parser.bounded-parity
Packs: pack:self-hosting-v1
spec:consumers.agent-surface.answer-shapesImplementing units
impl:protocol.answer-shape-recipes · test/recipes.test.ts:6214Referencing units
impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597impl:protocol.reader · src/reader/reader.ts:687Enabled verifiers: test:protocol.answer-shape-recipes
Packs: pack:design-iteration-v1, pack:self-hosting-v1
spec:consumers.agent-surface.example-space-coverageImplementing units
impl:protocol.example-space-coverage-recipe · test/studio-s1.test.ts:856impl:protocol.example-space-decoding · src/notation/example-space.ts:473Referencing 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-rampImplementing units
impl:protocol.authoring-on-ramp · test/skills.test.ts:76impl:protocol.spec-scaffolder · src/cli/new-spec-command.ts:348Referencing units
None.
Enabled verifiers: test:protocol.authoring-on-ramp
Packs: pack:self-hosting-v1
Implementing units
impl:protocol.adopter-help · src/cli/help.ts:167impl:protocol.agent-surface-cli · src/cli/sdp.ts:94impl:protocol.build-args · src/cli/build-args.ts:11impl:protocol.generate-command · src/cli/generate-command.ts:34Referencing 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
Implementing units
impl:protocol.context-bundle-recipe · test/iteration-recipes.test.ts:765Referencing 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-rampImplementing units
impl:protocol.delivery-session-on-ramp · test/skills.test.ts:83Referencing units
None.
Enabled verifiers: test:protocol.delivery-session-on-ramp
Packs: pack:self-hosting-v1
spec:consumers.design-sliceImplementing units
impl:protocol.design-slice-recipe · test/self-hosting-design-slice.test.ts:148Referencing units
impl:protocol.studio-slice-answer · src/projections/studio/slice-answer.ts:1Enabled 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-provenanceImplementing units
impl:protocol.build-artifacts · src/cli/build-artifacts.ts:182impl:protocol.engine-provenance-cli · src/cli/sdp.ts:102Referencing units
None.
Enabled verifiers: test:protocol.engine-provenance
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.intent-composition.proposal.memoImplementing units
impl:protocol.proposal-memo-recipe · test/recipes.test.ts:7298impl:protocol.studio-proposal-memo · src/studio-elements/memo.ts:13Referencing units
None.
Enabled verifiers: spec:consumers.intent-composition.proposal.memo.shared
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.obsidian-vault.iterationImplementing units
impl:protocol.vault-sync · src/projections/vault/sync.ts:98impl:protocol.vault-text · src/projections/vault/text.ts:30impl:protocol.vault-watch · src/cli/vault-command.ts:219Referencing 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
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.decision-first
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.dependency-order
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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.roadmapImplementing units
impl:protocol.roadmap-recipe · test/roadmap.test.ts:20Referencing 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-textImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:consumers.spec-studio.export.self-containedImplementing 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-pageImplementing units
impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.intent-panelImplementing units
impl:protocol.studio-compose · src/studio-elements/compose.ts:13impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-intent-panel · src/studio-elements/intent-panel.ts:51impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17Referencing 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.navigationImplementing units
impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing 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-queueImplementing units
impl:protocol.studio-owner-queue · src/projections/studio/pages/queue-page.ts:9Referencing 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-pageImplementing units
impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68Referencing 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-elementsImplementing units
component:protocol.studio-elements · src/studio-elements/index.ts:13impl:protocol.studio-copy · src/studio-elements/copy.ts:22impl:protocol.studio-expander · src/studio-elements/expander.ts:16impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-search-form · src/studio-elements/search.ts:18impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30Referencing 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-inputImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:consumers.spec-studio.registers.blocking-firstImplementing 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-pageImplementing units
impl:protocol.studio-roadmap-page · src/projections/studio/pages/roadmap-page.ts:168Referencing units
None.
Enabled verifiers: test:protocol.studio-roadmap-page
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.searchImplementing units
impl:protocol.studio-concept-match · src/reader/concept-match.ts:43impl:protocol.studio-search-page · src/projections/studio/pages/search-page.ts:5impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95Referencing 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-coverageImplementing 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-rampImplementing units
impl:protocol.studio-on-ramp · test/skills.test.ts:1693Referencing units
None.
Enabled verifiers: test:protocol.studio-on-ramp
Packs: pack:self-hosting-v1, pack:spec-studio-v1
Implementing units
impl:protocol.rule-key-proposal-recipe · test/upgrade-kit.test.ts:742Referencing 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-ownershipImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.question-key-renderingImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:extraction.contract-declarationsImplementing units
impl:protocol.pack-design · src/reader/reader.ts:499impl:protocol.register-recipes · test/recipes.test.ts:2057Referencing units
None.
Enabled verifiers: test:protocol.register-recipes
Packs: pack:self-hosting-v1
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
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.entry-citations.unanchored-file-unread
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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-locationsImplementing units
impl:protocol.entry-location-recipes · test/recipes.test.ts:5979impl:protocol.entry-locations · src/extract/derive.ts:78impl:protocol.reader · src/reader/reader.ts:687Referencing units
impl:protocol.pack-design · src/reader/reader.ts:499Enabled verifiers: test:protocol.entry-locations
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:model.open-question-fieldsImplementing units
impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8Referencing 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-resolvesImplementing 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-breaksImplementing 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-refusedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.open-question-keys.repeated-key-refused
Packs: pack:self-hosting-v1
spec:model.rule-keysImplementing units
impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8impl:protocol.rule-exercises · src/validate/validators.ts:1479Referencing 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-plansImplementing units
impl:protocol.roadmap-practice · test/check-self-hosting-gates.test.ts:52Referencing units
None.
Enabled verifiers: test:protocol.roadmap-practice
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:validation.duplicate-idsImplementing units
impl:protocol.duplicate-id-exclusion · src/extract/index.ts:93impl:protocol.duplicate-ids · src/validate/validators.ts:263Referencing units
None.
Enabled verifiers: spec:validation.duplicate-ids.dual-carrier
Packs: pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.external-registers.uncited-on-request
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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:carrier.envelope-contractImplementing units
impl:protocol.envelope-contract · src/extract/markdown-frontmatter.ts:33impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33Referencing units
None.
Enabled verifiers: test:protocol.envelope-contract
Packs: pack:self-hosting-v1
spec:carrier.gherkin-authoringImplementing units
impl:protocol.gherkin-authoring · src/extract/gherkin.ts:1323impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6Referencing 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-parityImplementing 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-refusedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.markdown-pack-authoring.spec-envelope-refused
Packs: pack:self-hosting-v1
spec:carrier.sdp-importImplementing units
component:protocol.import · src/import/import.ts:45impl:protocol.import-fidelity · src/import/markdown-fidelity.ts:102impl:protocol.sdp-import · src/cli/import-command.ts:71impl:protocol.sdp-import-core · src/import/import.ts:58impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253impl:protocol.sdp-import-publish · src/cli/import-publish.ts:23impl:protocol.sdp-import-scan · src/cli/import-scan.ts:62Referencing units
None.
Enabled verifiers: spec:carrier.sdp-import.round-trip
Packs: pack:self-hosting-v1
spec:carrier.slot-notationImplementing units
component:protocol.notation · src/notation/slots.ts:261impl:protocol.slot-notation · src/notation/slots.ts:269Referencing 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-enumerableImplementing 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-literalImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-coverage-literal
Packs: pack:self-hosting-v1, pack:spec-studio-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.command-line.generate-check-failure
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.context-bundle.oversized-member-named
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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-reviewImplementing units
impl:protocol.design-review · src/projections/design-review.ts:44impl:protocol.design-review-codec · src/projections/design-review-markdown.ts:3Referencing units
None.
Enabled verifiers: spec:consumers.design-review.pure-projection
Packs: pack:self-hosting-v1
spec:consumers.design-slice.chainImplementing 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-absentImplementing 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-differingImplementing 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-matchingImplementing 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-unreadableImplementing 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-unrelatedImplementing 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-backlinkImplementing 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-cycleImplementing 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-exampleImplementing 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-exampleImplementing 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-componentsImplementing 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-holdingImplementing 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-satisfiedImplementing 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-unboundImplementing 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-viewImplementing units
impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6impl:protocol.gherkin-view · src/projections/gherkin-view.ts:19impl:protocol.gherkin-view-cli · src/cli/gherkin-command.ts:66Referencing units
None.
Enabled verifiers: test:protocol.gherkin-view
Packs: pack:self-hosting-v1
spec:consumers.graph-first-planningImplementing units
impl:protocol.graph-first-planning · test/skills.test.ts:290Referencing units
None.
Enabled verifiers: test:protocol.graph-first-planning
Packs: pack:self-hosting-v1
spec:consumers.intent-composition.proposal.memo.sharedImplementing 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-notesImplementing 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-anchorImplementing 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-designImplementing units
impl:protocol.pack-design · src/reader/reader.ts:499Referencing units
None.
Enabled verifiers: test:protocol.pack-design
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.projections-model.roadmap-viewsImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.roadmap.blocking-partImplementing 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-partImplementing 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-workImplementing 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-partImplementing 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-partImplementing 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-evidenceImplementing 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-parentImplementing 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-orderImplementing 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-partImplementing 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-corpusImplementing units
impl:protocol.shipped-protocol-corpus · test/package-smoke.test.ts:252Referencing units
None.
Enabled verifiers: test:protocol.shipped-protocol-corpus
Packs: pack:self-hosting-v1
spec:consumers.spec-studio.capability-map-pageImplementing units
impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing units
None.
Enabled verifiers: test:protocol.studio-capabilities
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.componentsImplementing units
component:protocol.studio-elements · src/studio-elements/index.ts:13impl:protocol.studio-compose · src/studio-elements/compose.ts:13impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74Referencing units
None.
Enabled verifiers: test:protocol.studio-intent-handoff
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.dataImplementing units
impl:protocol.studio-data · src/projections/studio/data.ts:279Referencing units
None.
Enabled verifiers: test:protocol.studio-data
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.diagram-kinds.dependencyImplementing units
impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10Referencing 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-sourceImplementing units
impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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-architectureImplementing units
impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219Referencing 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-intentsImplementing 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.testsImplementing units
impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34Referencing 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-firstImplementing 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-mapImplementing units
impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7Referencing 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.sharingImplementing units
impl:protocol.stamp-command · src/cli/stamp-command.ts:8impl:protocol.studio-preview-workflow · test/studio-s4.test.ts:742impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30Referencing 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-pageImplementing units
impl:protocol.studio-slice-page · src/projections/studio/pages/slice-page.ts:25Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-page
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
Implementing units
impl:protocol.upgrade-guide · test/upgrade-kit.test.ts:87Referencing units
None.
Enabled verifiers: test:protocol.upgrade-guide
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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
Implementing units
impl:protocol.validate-watch · src/cli/validate-watch.ts:591Referencing 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-rulingImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.carrier-universalityImplementing units
None.
Referencing units
impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.sdp-ts-extensionImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:extraction.pack-member-orderImplementing units
impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33impl:protocol.open-section-order · src/extract/serialize.ts:105impl:protocol.pack-coherence · src/validate/validators.ts:1102impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120impl:protocol.pack-member-order · src/extract/derive.ts:153impl:protocol.reader · src/reader/reader.ts:687Referencing units
None.
Enabled verifiers: spec:extraction.pack-member-order.manifest-order-kept, test:protocol.roadmap-priority
Packs: pack:self-hosting-v1
spec:model.enrichment-lifecycleImplementing units
impl:protocol.slimming-recipe · test/curation-recipes.test.ts:26Referencing units
None.
Enabled verifiers: test:protocol.slimming-recipe
Packs: pack:design-iteration-v1, pack:self-hosting-v1
spec:model.open-question-fields.dropped-list-warnsImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.open-question-fields.dropped-list-warns
Packs: pack:self-hosting-v1
spec:model.relation-reasonsImplementing units
impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8Referencing 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-cleanupImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:protocol.self-hostingImplementing units
impl:protocol.self-hosting · test/self-hosting-graph.test.ts:136Referencing units
None.
Enabled verifiers: test:protocol.self-hosting
Packs: pack:self-hosting-v1
spec:validation.duplicate-ids.dual-carrierImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.duplicate-ids.dual-carrier
Packs: pack:self-hosting-v1
spec:validation.superseded-decision-signalImplementing units
impl:protocol.superseded-decision-signal · src/validate/validators.ts:1817Referencing 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
spec:carrier.gherkin-authoring.authored-fact-refusedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.gherkin-authoring.authored-fact-refused
Packs: pack:self-hosting-v1
spec:carrier.gherkin-authoring.contract-parityImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.gherkin-authoring.contract-parity
Packs: pack:self-hosting-v1
spec:carrier.gherkin-authoring.description-location-refusedImplementing 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-refusedImplementing 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-extractionImplementing 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-refusedImplementing 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-refusedImplementing 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-boundedImplementing 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-extractionImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.gherkin-authoring.unsupported-construct-refused
Packs: pack:self-hosting-v1
spec:carrier.sdp-import.feature-adapterImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:carrier.sdp-import.round-tripImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.sdp-import.round-trip
Packs: pack:self-hosting-v1
spec:carrier.slot-notation.one-literal-bindingImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.slot-notation.one-literal-binding
Packs: pack:self-hosting-v1
spec:carrier.slot-notation.refused-guessImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.slot-notation.refused-guess
Packs: pack:self-hosting-v1
spec:carrier.slot-notation.typed-declarationImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.slot-notation.typed-declaration
Packs: pack:self-hosting-v1
Implementing units
impl:protocol.example-runner · src/runner/index.ts:108impl:protocol.example-space-decoding · src/notation/example-space.ts:473impl:protocol.executable-contracts · src/codegen/contracts.ts:647impl:protocol.key-markers · src/extract/key-markers.ts:136impl:protocol.open-section-order · src/extract/serialize.ts:105impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253impl:protocol.spec-sections · src/model/sections.ts:138Referencing 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-viewsImplementing units
impl:protocol.binding-language-index-table · src/projections/design-review-pages.ts:201impl:protocol.binding-language-spec-page · src/projections/design-review-context.ts:95Referencing 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-bannerImplementing units
impl:protocol.derived-readiness-banner · src/projections/design-review-context.ts:18Referencing 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-pageImplementing units
impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120Referencing units
impl:protocol.pack-design-sections · src/projections/design-review-pack-sections.ts:19Enabled verifiers: test:protocol.pack-design-page
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.design-review.pure-projectionImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-review.pure-projection
Packs: pack:self-hosting-v1
spec:consumers.obsidian-vault.basesImplementing units
impl:protocol.vault-bases · src/projections/vault/bases.ts:43impl:protocol.vault-notes · src/projections/vault/notes.ts:45Referencing units
None.
Enabled verifiers: spec:consumers.obsidian-vault.bases.views-match-sources
Packs: pack:obsidian-vault-v1, pack:self-hosting-v1
spec:consumers.review-perspectivesImplementing units
impl:protocol.perspective-filter-recipe · test/iteration-recipes.test.ts:753Referencing 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.inputsImplementing units
impl:protocol.studio-base-input · src/cli/studio-inputs.ts:9impl:protocol.studio-command · src/cli/studio-command.ts:106impl:protocol.studio-inputs · src/projections/studio/inputs.ts:1Referencing 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-answersImplementing units
impl:protocol.studio-recipes · src/projections/studio/recipes.ts:34Referencing units
impl:protocol.studio-register-contracts · src/projections/studio/pages/register-answers.ts:4Enabled verifiers: test:protocol.studio-lenses
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.diagram-kinds.requirement-traceImplementing units
impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8Referencing 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.diagramsImplementing units
impl:protocol.studio-architecture-diagrams · src/projections/studio/diagrams/architecture.ts:4impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-diagram-model · src/projections/studio/diagrams/model.ts:1impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73impl:protocol.studio-relation-diagrams · src/projections/studio/diagrams/bands.ts:10Referencing 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.lensesImplementing units
impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34Referencing units
None.
Enabled verifiers: test:protocol.studio-lenses
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.lenses.packsImplementing units
impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing units
None.
Enabled verifiers: test:protocol.studio-lenses
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.lenses.tests.coverage-rowImplementing 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.publisherImplementing units
impl:protocol.build-pipeline-emit · src/cli/build-command.ts:251impl:protocol.studio-command · src/cli/studio-command.ts:106impl:protocol.studio-page-catalog · src/projections/studio/pages/index.ts:21impl:protocol.studio-paths · src/projections/studio/paths.ts:2impl:protocol.studio-publish · src/projections/studio/publish.ts:24Referencing 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.watchImplementing units
impl:protocol.studio-watch · src/cli/studio-command.ts:122Referencing 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-apartImplementing 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-rewriteImplementing units
impl:protocol.build-pipeline-emit · src/cli/build-command.ts:251impl:protocol.wholesale-view-rewrite · src/cli/validate-view-command.ts:128Referencing 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-nounsImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.authored-entry-orderImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.concept-docs-dissolveImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.envelope-grammar-postureImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.executable-meta-modelImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.gherkin-carrier-optionImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.pack-design-pageImplementing units
None.
Referencing units
impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120Enabled verifiers: None
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:decisions.pack-markdown-carrierImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.plain-language-referencesImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.protocol-namingImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.sdp-gherkin-extensionImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:extraction.pack-member-order.manifest-order-keptImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.pack-member-order
Packs: pack:self-hosting-v1
spec:model.design-maturityImplementing units
impl:protocol.pack-design · src/reader/reader.ts:499Referencing units
None.
Enabled verifiers: test:protocol.pack-design
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:protocol.capability-epicsImplementing units
impl:protocol.capability-epics · test/recipes.test.ts:8173Referencing units
None.
Enabled verifiers: test:protocol.capability-epics
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:protocol.structural-self-bindingImplementing units
impl:protocol.structural-self-binding · test/self-hosting-oracle/structural-edges.ts:76Referencing units
None.
Enabled verifiers: test:protocol.structural-self-binding
Packs: pack:self-hosting-v1
Implementing units
impl:protocol.corpus-rule-runner · src/cli/corpus-rules.ts:65impl:protocol.corpus-rules · src/cli/validate-view-command.ts:79impl:protocol.validate-watch · src/cli/validate-watch.ts:591Referencing 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-renderingImplementing units
impl:protocol.diagnostic-rendering-cli · src/cli/output.ts:23impl:protocol.diagnostic-rendering-design-review · src/projections/design-review-context.ts:208impl:protocol.validate-summary · src/cli/validate-view-command.ts:23impl:protocol.validation-contracts · src/validate/contracts.ts:5Referencing 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-endImplementing 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-namedImplementing 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-namedImplementing 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-unreadImplementing 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-namedImplementing 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-warnsImplementing 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-warnsImplementing 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-namedImplementing 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-silentImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.superseded-decision-signal.superseded-subject-silent
Packs: pack:self-hosting-v1
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
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
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.step-keys.malformed-marker-refused
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.step-keys.renamed-key-breaks
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.step-keys.repeated-key-refused
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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
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
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-pageImplementing 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-tableImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.binding-language-views.pack-member-table
Packs: pack:self-hosting-v1
spec:consumers.census-pageImplementing units
impl:protocol.census-page · src/projections/census.ts:21impl:protocol.census-page-cli · src/cli/census-command.ts:66Referencing units
None.
Enabled verifiers: test:protocol.census-page
Packs: pack:self-hosting-v1
spec:consumers.derived-readiness-banner.dishonest-divergenceImplementing 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-headroomImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.derived-readiness-banner.honest-headroom
Packs: pack:self-hosting-v1
spec:consumers.mermaid-viewImplementing units
impl:protocol.mermaid-view · src/projections/mermaid.ts:14impl:protocol.mermaid-view-cli · src/cli/mermaid-command.ts:82Referencing units
None.
Enabled verifiers: test:protocol.mermaid-view
Packs: pack:self-hosting-v1
spec:consumers.obsidian-vaultImplementing units
impl:protocol.vault-command · src/cli/vault-command.ts:191impl:protocol.vault-notes · src/projections/vault/notes.ts:45impl:protocol.vault-sync · src/projections/vault/sync.ts:98Referencing 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-sourcesImplementing 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-givenImplementing 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-onlyImplementing 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-kindsImplementing units
impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10Referencing 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-routingImplementing units
impl:protocol.studio-diagram-routing · src/projections/studio/diagrams/routing.ts:38impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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.legibilityImplementing units
impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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-contextImplementing 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-layerImplementing 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-boundImplementing 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-pageImplementing units
impl:protocol.studio-diff · src/projections/studio/pages/diff-page.ts:91Referencing 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.architectureImplementing units
impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50Referencing 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.evidenceImplementing units
impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3Referencing 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-runImplementing 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-pageImplementing units
impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-runs-page · src/projections/studio/pages/runs-page.ts:6Referencing 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-viewImplementing 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-removedImplementing 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-pageImplementing 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-removedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.wholesale-view-rewrite.stale-page-removed
Packs: pack:self-hosting-v1
spec:decisions.roadmap-priorityImplementing units
None.
Referencing units
impl:protocol.pack-aggregate · src/model/pack.ts:23impl:protocol.pack-member-order · src/extract/derive.ts:153Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
Implementing units
impl:protocol.example-space · src/graph/example-space.ts:117impl:protocol.executable-contracts · src/codegen/contracts.ts:647Referencing 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
Implementing units
component:protocol.codegen · src/codegen/contracts.ts:633component:protocol.testing · src/testing/index.ts:38impl:protocol.example-testing-helpers · src/testing/index.ts:50impl:protocol.runnable-modules · src/codegen/contracts.ts:658Referencing 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-vocabularyImplementing units
impl:protocol.role-vocabulary · test/self-hosting-graph.test.ts:143Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:protocol.significant-units-reviewImplementing units
impl:protocol.structural-self-binding · test/self-hosting-oracle/structural-edges.ts:76Referencing units
None.
Enabled verifiers: test:protocol.structural-self-binding
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:validation.architecture-constraintsImplementing units
impl:protocol.architecture-walk-recipe · test/architecture-recipes.test.ts:10Referencing 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-changesImplementing 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-failsImplementing 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-failsImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.validation.corpus-rules.malformed-finding-fails
Packs: pack:corpus-checks-v1, pack:self-hosting-v1
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
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
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-informsImplementing 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-locationImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.diagnostic-rendering.composed-location
Packs: pack:self-hosting-v1
spec:validation.diagnostic-rendering.table-cell-locationImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.diagnostic-rendering.table-cell-location
Packs: pack:self-hosting-v1
spec:consumers.design-diffImplementing units
impl:protocol.design-diff-recipe · test/iteration-recipes.test.ts:27Referencing 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-refusedImplementing 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-notesImplementing 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-recoveredImplementing 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-vaultImplementing 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-refusedImplementing 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-recoveredImplementing 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-surviveImplementing 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-refusedImplementing 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-refusedImplementing 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-treeImplementing units
impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13Referencing 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-pictureImplementing units
impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7Referencing 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-entryImplementing 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-apartImplementing 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-registerImplementing units
impl:protocol.studio-unit-register · src/projections/studio/pages/architecture-register.ts:7Referencing 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-evidenceImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.run-external
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.structural-mermaidImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:decisions.adopted-registrars-committedImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.roadmap-over-plansImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:decisions.vault-owned-folderImplementing units
None.
Referencing units
impl:protocol.vault-command · src/cli/vault-command.ts:191impl:protocol.vault-sync · src/projections/vault/sync.ts:98Enabled verifiers: None
Packs: pack:obsidian-vault-v1, pack:self-hosting-v1
spec:extraction.example-runnerImplementing units
component:protocol.adapters · src/adapters/vitest.ts:23component:protocol.runner · src/runner/index.ts:99impl:protocol.example-runner · src/runner/index.ts:108impl:protocol.example-runner-adapter · src/adapters/vitest.ts:32Referencing 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-pathImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.executable-contracts.case-colliding-path
Packs: pack:self-hosting-v1
spec:extraction.executable-contracts.concreteness-refusalImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.executable-contracts.concreteness-refusal
Packs: pack:self-hosting-v1
spec:extraction.executable-contracts.multi-entry-exampleImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.executable-contracts.multi-entry-example
Packs: pack:self-hosting-v1
spec:model.pack-aggregateImplementing units
impl:protocol.pack-aggregate · src/model/pack.ts:23Referencing units
None.
Enabled verifiers: test:protocol.pack-builder, test:protocol.roadmap-priority
Packs: pack:self-hosting-v1
spec:validation.architecture-constraints.forbidden-layer-pairImplementing 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-ruleImplementing 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-unclassifiedImplementing 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:decisions.pack-reifiedImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:extraction.example-runner.red-step-namingImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.example-runner.red-step-naming
Packs: pack:self-hosting-v1
spec:extraction.example-runner.step-orderImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.example-runner.step-order
Packs: pack:self-hosting-v1
spec:validation.pack-coherenceImplementing units
impl:protocol.pack-coherence · src/validate/validators.ts:1102Referencing units
None.
Enabled verifiers: spec:validation.pack-coherence.incoherent-aggregate
Packs: pack:self-hosting-v1
spec:validation.pack-coherence.incoherent-aggregateImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.pack-coherence.incoherent-aggregate
Packs: pack:self-hosting-v1
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| decidedBy · outgoing | A Spec id written in prose is a checked mentionspec:decisions.checked-mentions · resolves | declared | a term address joins the address law that decision rules | None |
| decidedBy · outgoing | spec:decisions.shipped-projections-frozenspec:decisions.shipped-projections-frozen · resolves | declared | term keys stay off the frozen projections, which read the definition unchanged | None |
| dependsOn · outgoing | spec:extraction.entry-locationsspec:extraction.entry-locations · resolves | declared | adds a row per Model term to the location table | None |
| dependsOn · outgoing | spec:model.rule-keysspec:model.rule-keys · resolves | declared | the term-key design follows the rule-entry address pattern | None |
| dependsOn · outgoing | spec:model.stable-idsspec:model.stable-ids · resolves | declared | a term address extends the Spec entry-address grammar | None |
| refines · outgoing | spec:model.spec-sectionsspec:model.spec-sections · resolves | declared | extends entry addresses to the terms a Model section defines | None |
| dependsOn · incoming | spec:carrier.markdown-body-grammarspec:carrier.markdown-body-grammar · resolves | declared | a Model definition may open with a term key marker | None |
| dependsOn · incoming | Address resolution and dependency cycles stay executable graph recipesspec:consumers.agent-surface.address-and-cycle-recipes · resolves | declared | a term address resolves through the Spec's term keys | None |
| dependsOn · incoming | spec:consumers.agent-surface.register-recipesspec:consumers.agent-surface.register-recipes · resolves | declared | entry search and the mention audit read term addresses | None |
| dependsOn · incoming | spec:consumers.obsidian-vault.notesspec:consumers.obsidian-vault.notes · resolves | declared | a term note exists for a Model term that carries a key and so an address | None |
| dependsOn · incoming | spec:consumers.spec-studio.glossary-pagespec:consumers.spec-studio.glossary-page · resolves | declared | a keyed term's address links it to its definition | None |
| dependsOn · incoming | spec:consumers.spec-studio.spec-pagespec:consumers.spec-studio.spec-page · resolves | declared | a keyed term's address names the element a glossary row links to | None |
| dependsOn · incoming | Capability adoption counts where each capability is used and where it could applyspec:consumers.upgrade-kit.capability-adoption · resolves | declared | term keys are counted where Model terms are | None |
| dependsOn · incoming | spec:validation.prose-mentionsspec:validation.prose-mentions · resolves | declared | a term address resolves through the Spec's term keys | None |
| refines · incoming | A keyed term is reified and its address resolvesspec:model.term-addresses.keyed-term-resolves · resolves | declared | None | None |
| refines · incoming | A term marker whose key is off the grammar refuses its carrierspec:model.term-addresses.malformed-term-marker-refused · resolves | declared | None | None |
| refines · incoming | A term key repeated in one Spec refuses its carrierspec:model.term-addresses.repeated-term-key-refused · resolves | declared | None | None |
| refines · incoming | A keyed TypeScript term keeps its address through import to Markdownspec:model.term-addresses.typescript-term-imports-keyed · resolves | declared | None | None |
| refines · incoming | An address that names a term key no term carries is an errorspec:model.term-addresses.unknown-term-key-refused · resolves | declared | None | None |
| verifies · incoming | A keyed term is reified and its address resolvesspec:model.term-addresses.keyed-term-resolves · resolves | declared | None | termMarker, termAddress, termLocations, termReaders |
| verifies · incoming | A term marker whose key is off the grammar refuses its carrierspec:model.term-addresses.malformed-term-marker-refused · resolves | declared | None | termMarker, markerRefusals |
| verifies · incoming | A term key repeated in one Spec refuses its carrierspec:model.term-addresses.repeated-term-key-refused · resolves | declared | None | uniqueTermKeys, markerRefusals |
| verifies · incoming | A keyed TypeScript term keeps its address through import to Markdownspec:model.term-addresses.typescript-term-imports-keyed · resolves | declared | None | termMarker, termAddress |
| verifies · incoming | An address that names a term key no term carries is an errorspec:model.term-addresses.unknown-term-key-refused · resolves | declared | None | authoredKey, termAddress, termReaders |
impl:protocol.address-and-cycle-recipes · asserts realization of the shipped address resolution and dependency cycle recipes · test/recipes.test.ts:3568impl:protocol.entry-locations · builds the carrier entry location table · src/extract/derive.ts:78 · role extractor · component component:protocol.extract · layer application · context protocolimpl: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 protocolimpl: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 protocolimpl: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 protocolimpl:protocol.register-recipes · asserts realization of the shipped register recipes · test/recipes.test.ts:2057impl: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 protocolimpl:protocol.spec-sections · typed Spec section shapes · src/model/sections.ts:138 · role contract · component component:protocol.model · layer domain · context protocolimpl:protocol.stable-ids · stable ID grammar parser · src/ids.ts:173 · role codec · component component:protocol.model · layer domain · context protocolspecs/model/term-addresses.keyed-term-resolves.sdp.md · example enabledspecs/model/term-addresses.malformed-term-marker-refused.sdp.md · example enabledspecs/model/term-addresses.repeated-term-key-refused.sdp.md · example enabledspecs/model/term-addresses.typescript-term-imports-keyed.sdp.md · example enabledspecs/model/term-addresses.unknown-term-key-refused.sdp.md · example enabledtest/keyed-content.test.ts:28 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:model.term-addresses.keyed-term-resolves
spec:model.term-addresses.keyed-term-resolvesExample / Scenario · storyready floor readyPacks: 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.
outcomeGiven 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}test/self-hosting-term-addresses.test.ts:16test/self-hosting-term-addresses.test.ts:16Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | None | None |
| verifies · outgoing | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | None | termMarker, termAddress, termLocations, termReaders |
test/self-hosting-term-addresses.test.ts:16 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:model.term-addresses.malformed-term-marker-refused
spec:model.term-addresses.malformed-term-marker-refusedExample / Scenario · storyready floor readyPacks: 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.
outcomeGiven 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 errorstest/self-hosting-term-addresses.test.ts:63test/self-hosting-term-addresses.test.ts:63Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | None | None |
| verifies · outgoing | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | None | termMarker, markerRefusals |
test/self-hosting-term-addresses.test.ts:63 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:model.term-addresses.repeated-term-key-refused
spec:model.term-addresses.repeated-term-key-refusedExample / Scenario · storyready floor readyPacks: 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.
outcomeGiven 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 errorstest/self-hosting-term-addresses.test.ts:110test/self-hosting-term-addresses.test.ts:110Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | None | None |
| verifies · outgoing | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | None | uniqueTermKeys, markerRefusals |
test/self-hosting-term-addresses.test.ts:110 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:model.term-addresses.typescript-term-imports-keyed
spec:model.term-addresses.typescript-term-imports-keyedExample / Scenario · storyready floor readyPacks: 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.
outcomeGiven 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}test/self-hosting-term-addresses.test.ts:157test/self-hosting-term-addresses.test.ts:157Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | None | None |
| verifies · outgoing | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | None | termMarker, termAddress |
test/self-hosting-term-addresses.test.ts:157 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:model.term-addresses.unknown-term-key-refused
spec:model.term-addresses.unknown-term-key-refusedExample / Scenario · storyready floor readyPacks: 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.
outcomeGiven 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"}test/self-hosting-term-addresses.test.ts:204test/self-hosting-term-addresses.test.ts:204Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | None | None |
| verifies · outgoing | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | None | authoredKey, termAddress, termReaders |
test/self-hosting-term-addresses.test.ts:204 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:decisions.checked-mentions
spec:decisions.checked-mentionsDecision Record · featureready floor readyPacks: 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.
outcomecontextdecisiongwt 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# sub-part; this record gives it its only meaning, and the dot inside the sub-part is the one grammar change.- [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.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.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# 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.refines edge already answers. Refused by the owner.consequencesrule 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.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.No verifier binding recorded.
Arrows: refines (declared).
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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
spec:model.stable-ids · stated ready, floor readyspec:decisions.content-only-sections · stated ready, floor readyImplementing units
impl:protocol.address-and-cycle-recipes · test/recipes.test.ts:3568Referencing 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-keysImplementing units
impl:protocol.open-question-keys · src/extract/markdown-body-owner-behavior.ts:38impl:protocol.open-section-order · src/extract/serialize.ts:105impl:protocol.prose-mentions · src/validate/validators.ts:1370impl:protocol.register-recipes · test/recipes.test.ts:2057impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253impl:protocol.stable-ids · src/ids.ts:173impl:protocol.static-reification · src/extract/reify.ts:2139Referencing 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-keysImplementing units
impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8impl:protocol.rule-exercises · src/validate/validators.ts:1479Referencing 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-idsImplementing units
impl:protocol.stable-ids · src/ids.ts:173Referencing 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
Implementing units
impl:protocol.address-and-cycle-recipes · test/recipes.test.ts:3568impl:protocol.entry-locations · src/extract/derive.ts:78impl:protocol.key-markers · src/extract/key-markers.ts:136impl:protocol.open-section-order · src/extract/serialize.ts:105impl:protocol.prose-mentions · src/validate/validators.ts:1370impl:protocol.register-recipes · test/recipes.test.ts:2057impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253impl:protocol.spec-sections · src/model/sections.ts:138impl:protocol.stable-ids · src/ids.ts:173Referencing 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-mentionsImplementing units
impl:protocol.entry-address-resolution · src/graph/entry-address.ts:6impl:protocol.prose-mentions · src/validate/validators.ts:1370Referencing units
None.
Enabled verifiers: test:protocol.entry-locations, test:protocol.prose-mentions
Packs: pack:self-hosting-v1
spec:carrier.envelope-contractImplementing units
impl:protocol.envelope-contract · src/extract/markdown-frontmatter.ts:33impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33Referencing units
None.
Enabled verifiers: test:protocol.envelope-contract
Packs: pack:self-hosting-v1
spec:carrier.gherkin-authoringImplementing units
impl:protocol.gherkin-authoring · src/extract/gherkin.ts:1323impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6Referencing 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-grammarImplementing units
impl:protocol.markdown-body-grammar · src/extract/markdown-body.ts:120impl:protocol.markdown-content · src/extract/markdown-body-content.ts:7Referencing 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
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
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
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-recipesImplementing units
impl:protocol.register-recipes · test/recipes.test.ts:2057Referencing units
None.
Enabled verifiers: test:protocol.register-recipes
Packs: pack:self-hosting-v1
spec:consumers.authoring-on-rampImplementing units
impl:protocol.authoring-on-ramp · test/skills.test.ts:76impl:protocol.spec-scaffolder · src/cli/new-spec-command.ts:348Referencing units
None.
Enabled verifiers: test:protocol.authoring-on-ramp
Packs: pack:self-hosting-v1
spec:consumers.design-sliceImplementing units
impl:protocol.design-slice-recipe · test/self-hosting-design-slice.test.ts:148Referencing units
impl:protocol.studio-slice-answer · src/projections/studio/slice-answer.ts:1Enabled 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.proposalImplementing units
impl:protocol.proposal-schema-and-recipe · test/iteration-recipes.test.ts:1510impl:protocol.studio-proposal-contract · src/studio-elements/proposal.ts:1Referencing 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.notesImplementing units
impl:protocol.vault-notes · src/projections/vault/notes.ts:45impl:protocol.vault-sections · src/projections/vault/sections.ts:10impl:protocol.vault-text · src/projections/vault/text.ts:30Referencing 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
Implementing units
impl:protocol.statement-queue-recipe · test/self-hosting-readiness-planner.test.ts:74Referencing 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-pageImplementing units
impl:protocol.studio-glossary · src/projections/studio/pages/glossary-page.ts:7Referencing 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-panelImplementing units
impl:protocol.studio-compose · src/studio-elements/compose.ts:13impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-intent-panel · src/studio-elements/intent-panel.ts:51impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17Referencing 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.testsImplementing units
impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34Referencing 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.shellImplementing units
impl:protocol.studio-code-spans · src/projections/studio/pages/code-spans.ts:9impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-html · src/projections/studio/pages/html.ts:8impl:protocol.studio-text · src/projections/studio/pages/text.ts:7Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.spec-pageImplementing units
impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44Referencing 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.coreImplementing units
impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.verification-panelsImplementing units
impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74Referencing 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
Implementing units
impl:protocol.capability-adoption-recipe · test/upgrade-kit.test.ts:514Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
impl:protocol.rule-key-proposal-recipe · test/upgrade-kit.test.ts:742Referencing 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-renderingImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
Implementing units
impl:protocol.entry-address-resolution · src/graph/entry-address.ts:6impl:protocol.entry-citation-reader · src/reader/entry-citations.ts:19impl:protocol.entry-citation-recipe · test/recipes.test.ts:7008impl:protocol.entry-citation-scan · src/extract/entry-citations.ts:6Referencing 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-locationsImplementing units
impl:protocol.entry-location-recipes · test/recipes.test.ts:5979impl:protocol.entry-locations · src/extract/derive.ts:78impl:protocol.reader · src/reader/reader.ts:687Referencing units
impl:protocol.pack-design · src/reader/reader.ts:499Enabled verifiers: test:protocol.entry-locations
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:model.open-question-fieldsImplementing units
impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8Referencing 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-resolvesImplementing 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-breaksImplementing 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-refusedImplementing 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-refusalImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.stable-ids.malformed-refusal
Packs: pack:self-hosting-v1
spec:model.stable-ids.namespaced-round-tripImplementing 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-refusedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.stable-ids.unsectioned-address-refused
Packs: pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.term-addresses.keyed-term-resolves
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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
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
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:carrier.gherkin-authoring.authored-fact-refusedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.gherkin-authoring.authored-fact-refused
Packs: pack:self-hosting-v1
spec:carrier.gherkin-authoring.contract-parityImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.gherkin-authoring.contract-parity
Packs: pack:self-hosting-v1
spec:carrier.gherkin-authoring.description-location-refusedImplementing 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-refusedImplementing 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-extractionImplementing 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-refusedImplementing 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-refusedImplementing 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-boundedImplementing 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-extractionImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.gherkin-authoring.unsupported-construct-refused
Packs: pack:self-hosting-v1
spec:carrier.inline-code-spansImplementing units
impl:protocol.inline-code-spans · src/extract/markdown-inline-code.ts:4Referencing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing 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-refusedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.markdown-body-grammar.unrecognized-heading-refused
Packs: pack:self-hosting-v1
spec:carrier.markdown-parserImplementing units
impl:protocol.markdown-parser · src/extract/markdown.ts:37impl:protocol.static-reification · src/extract/reify.ts:2139Referencing units
None.
Enabled verifiers: spec:carrier.markdown-parser.bounded-parity, test:protocol.markdown-parser
Packs: pack:self-hosting-v1
spec:carrier.prose-ownership-ruleImplementing units
impl:protocol.markdown-body-grammar · src/extract/markdown-body.ts:120Referencing units
None.
Enabled verifiers: test:protocol.prose-ownership
Packs: pack:self-hosting-v1
spec:consumers.adopter-on-rampImplementing units
impl:protocol.adopter-help · src/cli/help.ts:167impl:protocol.adopter-on-ramp · test/skills.test.ts:712Referencing units
None.
Enabled verifiers: test:protocol.adopter-on-ramp, test:protocol.shipped-protocol-corpus
Packs: pack:self-hosting-v1
spec:consumers.agent-surface.design-recipesImplementing units
impl:protocol.design-recipes · test/recipes.test.ts:4769Referencing units
None.
Enabled verifiers: test:protocol.design-recipes
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.delivery-session-on-rampImplementing units
impl:protocol.delivery-session-on-ramp · test/skills.test.ts:83Referencing units
None.
Enabled verifiers: test:protocol.delivery-session-on-ramp
Packs: pack:self-hosting-v1
spec:consumers.design-reviewImplementing units
impl:protocol.design-review · src/projections/design-review.ts:44impl:protocol.design-review-codec · src/projections/design-review-markdown.ts:3Referencing units
None.
Enabled verifiers: spec:consumers.design-review.pure-projection
Packs: pack:self-hosting-v1
spec:consumers.design-slice.chainImplementing 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-absentImplementing 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-differingImplementing 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-matchingImplementing 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-unreadableImplementing 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-unrelatedImplementing 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-backlinkImplementing 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-cycleImplementing 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-exampleImplementing 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-exampleImplementing 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-componentsImplementing 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-holdingImplementing 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-satisfiedImplementing 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-unboundImplementing 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-planningImplementing units
impl:protocol.graph-first-planning · test/skills.test.ts:290Referencing units
None.
Enabled verifiers: test:protocol.graph-first-planning
Packs: pack:self-hosting-v1
spec:consumers.intent-composition.proposal.memoImplementing units
impl:protocol.proposal-memo-recipe · test/recipes.test.ts:7298impl:protocol.studio-proposal-memo · src/studio-elements/memo.ts:13Referencing units
None.
Enabled verifiers: spec:consumers.intent-composition.proposal.memo.shared
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.obsidian-vault.iterationImplementing units
impl:protocol.vault-sync · src/projections/vault/sync.ts:98impl:protocol.vault-text · src/projections/vault/text.ts:30impl:protocol.vault-watch · src/cli/vault-command.ts:219Referencing 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-refusedImplementing 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-linkImplementing 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-linkImplementing 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-staysImplementing 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-designImplementing units
impl:protocol.pack-design · src/reader/reader.ts:499Referencing units
None.
Enabled verifiers: test:protocol.pack-design
Packs: pack:design-management-v1, pack:self-hosting-v1
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.decision-first
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.dependency-order
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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.roadmapImplementing units
impl:protocol.roadmap-recipe · test/roadmap.test.ts:20Referencing 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.memoImplementing units
impl:protocol.roadmap-memo-recipe · test/roadmap.test.ts:27impl:protocol.studio-roadmap-page · src/projections/studio/pages/roadmap-page.ts:168Referencing 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-corpusImplementing units
impl:protocol.shipped-protocol-corpus · test/package-smoke.test.ts:252Referencing units
None.
Enabled verifiers: test:protocol.shipped-protocol-corpus
Packs: pack:self-hosting-v1
spec:consumers.spec-studio.cited-line-textImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:consumers.spec-studio.componentsImplementing units
component:protocol.studio-elements · src/studio-elements/index.ts:13impl:protocol.studio-compose · src/studio-elements/compose.ts:13impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-intent-panel-element · src/studio-elements/intent-panel-element.ts:14impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68impl:protocol.studio-scenario-editor · src/studio-elements/scenario-editor.ts:17impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74Referencing units
None.
Enabled verifiers: test:protocol.studio-intent-handoff
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.dataImplementing units
impl:protocol.studio-data · src/projections/studio/data.ts:279Referencing units
None.
Enabled verifiers: test:protocol.studio-data
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.diagram-kinds.dependencyImplementing units
impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10Referencing 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-architectureImplementing units
impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-architecture
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.exportImplementing units
impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-expander · src/studio-elements/expander.ts:16impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68Referencing 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-twiceImplementing 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-pageImplementing units
impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing 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-intentsImplementing 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-rowImplementing 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.navigationImplementing units
impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing 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-queueImplementing units
impl:protocol.studio-owner-queue · src/projections/studio/pages/queue-page.ts:9Referencing 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-pageImplementing units
impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68Referencing 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-elementsImplementing units
component:protocol.studio-elements · src/studio-elements/index.ts:13impl:protocol.studio-copy · src/studio-elements/copy.ts:22impl:protocol.studio-expander · src/studio-elements/expander.ts:16impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-search-form · src/studio-elements/search.ts:18impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30Referencing 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.registersImplementing units
impl:protocol.studio-registers · src/projections/studio/pages/registers-page.ts:47Referencing 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-pageImplementing units
impl:protocol.studio-roadmap-page · src/projections/studio/pages/roadmap-page.ts:168Referencing units
None.
Enabled verifiers: test:protocol.studio-roadmap-page
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.searchImplementing units
impl:protocol.studio-concept-match · src/reader/concept-match.ts:43impl:protocol.studio-search-page · src/projections/studio/pages/search-page.ts:5impl:protocol.studio-search-results · src/studio-elements/search-results.ts:95Referencing 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-pageImplementing units
impl:protocol.studio-slice-page · src/projections/studio/pages/slice-page.ts:25Referencing 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-declarationImplementing 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-coverageImplementing 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-rampImplementing units
impl:protocol.studio-on-ramp · test/skills.test.ts:1693Referencing units
None.
Enabled verifiers: test:protocol.studio-on-ramp
Packs: pack:self-hosting-v1, pack:spec-studio-v1
Implementing units
impl:protocol.upgrade-guide · test/upgrade-kit.test.ts:87Referencing units
None.
Enabled verifiers: test:protocol.upgrade-guide
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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
Implementing units
impl:protocol.validate-watch · src/cli/validate-watch.ts:591Referencing 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-rampImplementing units
impl:protocol.vault-on-ramp · test/skills.test.ts:1995Referencing units
None.
Enabled verifiers: test:protocol.vault-on-ramp
Packs: pack:obsidian-vault-v1, pack:self-hosting-v1
spec:decisions.envelope-grammar-postureImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
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
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.entry-citations.unanchored-file-unread
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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-warnsImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.open-question-fields.dropped-list-warns
Packs: pack:self-hosting-v1
spec:protocol.roadmap-replaces-plansImplementing units
impl:protocol.roadmap-practice · test/check-self-hosting-gates.test.ts:52Referencing units
None.
Enabled verifiers: test:protocol.roadmap-practice
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
Implementing units
impl:protocol.external-registers-recipe · test/external-registers.test.ts:9Referencing 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-signalImplementing units
impl:protocol.superseded-decision-signal · src/validate/validators.ts:1817Referencing 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
spec:carrier.inline-code-spans.descriptionImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.inline-code-spans.description
Packs: pack:self-hosting-v1
spec:carrier.inline-code-spans.listImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.inline-code-spans.list
Packs: pack:self-hosting-v1
spec:carrier.inline-code-spans.narrativeImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.inline-code-spans.narrative
Packs: pack:self-hosting-v1
spec:carrier.inline-code-spans.packImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.inline-code-spans.pack
Packs: pack:self-hosting-v1
spec:carrier.markdown-authoringImplementing units
impl:protocol.markdown-parser · src/extract/markdown.ts:37Referencing units
None.
Enabled verifiers: test:protocol.markdown-authoring
Packs: pack:self-hosting-v1
spec:carrier.markdown-pack-authoringImplementing units
impl:protocol.markdown-pack-authoring · src/extract/markdown-pack.ts:117impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33impl:protocol.static-reification · src/extract/reify.ts:2139Referencing 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-parityImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.markdown-parser.bounded-parity
Packs: pack:self-hosting-v1
spec:consumers.agent-surface.answer-shapesImplementing units
impl:protocol.answer-shape-recipes · test/recipes.test.ts:6214Referencing units
impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597impl:protocol.reader · src/reader/reader.ts:687Enabled verifiers: test:protocol.answer-shape-recipes
Packs: pack:design-iteration-v1, pack:self-hosting-v1
spec:consumers.agent-surface.example-space-coverageImplementing units
impl:protocol.example-space-coverage-recipe · test/studio-s1.test.ts:856impl:protocol.example-space-decoding · src/notation/example-space.ts:473Referencing 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-viewsImplementing units
impl:protocol.binding-language-index-table · src/projections/design-review-pages.ts:201impl:protocol.binding-language-spec-page · src/projections/design-review-context.ts:95Referencing 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
Implementing units
impl:protocol.adopter-help · src/cli/help.ts:167impl:protocol.agent-surface-cli · src/cli/sdp.ts:94impl:protocol.build-args · src/cli/build-args.ts:11impl:protocol.generate-command · src/cli/generate-command.ts:34Referencing 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
Implementing units
impl:protocol.context-bundle-recipe · test/iteration-recipes.test.ts:765Referencing 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-bannerImplementing units
impl:protocol.derived-readiness-banner · src/projections/design-review-context.ts:18Referencing 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-pageImplementing units
impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120Referencing units
impl:protocol.pack-design-sections · src/projections/design-review-pack-sections.ts:19Enabled verifiers: test:protocol.pack-design-page
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.design-review.pure-projectionImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.design-review.pure-projection
Packs: pack:self-hosting-v1
spec:consumers.engine-provenanceImplementing units
impl:protocol.build-artifacts · src/cli/build-artifacts.ts:182impl:protocol.engine-provenance-cli · src/cli/sdp.ts:102Referencing units
None.
Enabled verifiers: test:protocol.engine-provenance
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:consumers.intent-composition.proposal.memo.sharedImplementing 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.basesImplementing units
impl:protocol.vault-bases · src/projections/vault/bases.ts:43impl:protocol.vault-notes · src/projections/vault/notes.ts:45Referencing 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-notesImplementing 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-anchorImplementing 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-viewsImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.review-perspectivesImplementing units
impl:protocol.perspective-filter-recipe · test/iteration-recipes.test.ts:753Referencing 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-partImplementing 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-partImplementing 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-workImplementing 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-partImplementing 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-partImplementing 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-evidenceImplementing 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-parentImplementing 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-orderImplementing 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-partImplementing 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-pageImplementing units
impl:protocol.studio-capabilities-page · src/projections/studio/pages/capabilities-page.ts:78impl:protocol.studio-filter · src/studio-elements/filter.ts:25impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing units
None.
Enabled verifiers: test:protocol.studio-capabilities
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.data.inputsImplementing units
impl:protocol.studio-base-input · src/cli/studio-inputs.ts:9impl:protocol.studio-command · src/cli/studio-command.ts:106impl:protocol.studio-inputs · src/projections/studio/inputs.ts:1Referencing 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-answersImplementing units
impl:protocol.studio-recipes · src/projections/studio/recipes.ts:34Referencing units
impl:protocol.studio-register-contracts · src/projections/studio/pages/register-answers.ts:4Enabled verifiers: test:protocol.studio-lenses
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.diagram-kinds.mermaid-sourceImplementing units
impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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-traceImplementing units
impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8Referencing 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.diagramsImplementing units
impl:protocol.studio-architecture-diagrams · src/projections/studio/diagrams/architecture.ts:4impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-diagram-model · src/projections/studio/diagrams/model.ts:1impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73impl:protocol.studio-relation-diagrams · src/projections/studio/diagrams/bands.ts:10Referencing 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-containedImplementing 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.lensesImplementing units
impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3impl:protocol.studio-frame · src/projections/studio/pages/frame.ts:6impl:protocol.studio-tests-lens · src/projections/studio/pages/tests-page.ts:34Referencing units
None.
Enabled verifiers: test:protocol.studio-lenses
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.owner-queue.dependency-firstImplementing 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-mapImplementing units
impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7Referencing 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.publisherImplementing units
impl:protocol.build-pipeline-emit · src/cli/build-command.ts:251impl:protocol.studio-command · src/cli/studio-command.ts:106impl:protocol.studio-page-catalog · src/projections/studio/pages/index.ts:21impl:protocol.studio-paths · src/projections/studio/paths.ts:2impl:protocol.studio-publish · src/projections/studio/publish.ts:24Referencing 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.watchImplementing units
impl:protocol.studio-watch · src/cli/studio-command.ts:122Referencing 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-inputImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:consumers.spec-studio.registers.blocking-firstImplementing 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-rewriteImplementing units
impl:protocol.build-pipeline-emit · src/cli/build-command.ts:251impl:protocol.wholesale-view-rewrite · src/cli/validate-view-command.ts:128Referencing 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-orderImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.pack-design-pageImplementing units
None.
Referencing units
impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120Enabled verifiers: None
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:decisions.prose-ownershipImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:extraction.contract-declarationsImplementing units
impl:protocol.pack-design · src/reader/reader.ts:499impl:protocol.register-recipes · test/recipes.test.ts:2057Referencing units
None.
Enabled verifiers: test:protocol.register-recipes
Packs: pack:self-hosting-v1
spec:model.design-maturityImplementing units
impl:protocol.pack-design · src/reader/reader.ts:499Referencing units
None.
Enabled verifiers: test:protocol.pack-design
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:protocol.delivery-record-cleanupImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
Implementing units
impl:protocol.corpus-rule-runner · src/cli/corpus-rules.ts:65impl:protocol.corpus-rules · src/cli/validate-view-command.ts:79impl:protocol.validate-watch · src/cli/validate-watch.ts:591Referencing 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-renderingImplementing units
impl:protocol.diagnostic-rendering-cli · src/cli/output.ts:23impl:protocol.diagnostic-rendering-design-review · src/projections/design-review-context.ts:208impl:protocol.validate-summary · src/cli/validate-view-command.ts:23impl:protocol.validation-contracts · src/validate/contracts.ts:5Referencing 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-idsImplementing units
impl:protocol.duplicate-id-exclusion · src/extract/index.ts:93impl:protocol.duplicate-ids · src/validate/validators.ts:263Referencing units
None.
Enabled verifiers: spec:validation.duplicate-ids.dual-carrier
Packs: pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.external-registers.uncited-on-request
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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-endImplementing 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-namedImplementing 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-namedImplementing 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-unreadImplementing 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-namedImplementing 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-warnsImplementing 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-warnsImplementing 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-namedImplementing 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-silentImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.superseded-decision-signal.superseded-subject-silent
Packs: pack:self-hosting-v1
spec:carrier.markdown-pack-authoring.markdown-ts-parityImplementing 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-refusedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.markdown-pack-authoring.spec-envelope-refused
Packs: pack:self-hosting-v1
spec:carrier.sdp-importImplementing units
component:protocol.import · src/import/import.ts:45impl:protocol.import-fidelity · src/import/markdown-fidelity.ts:102impl:protocol.sdp-import · src/cli/import-command.ts:71impl:protocol.sdp-import-core · src/import/import.ts:58impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253impl:protocol.sdp-import-publish · src/cli/import-publish.ts:23impl:protocol.sdp-import-scan · src/cli/import-scan.ts:62Referencing units
None.
Enabled verifiers: spec:carrier.sdp-import.round-trip
Packs: pack:self-hosting-v1
spec:carrier.slot-notationImplementing units
component:protocol.notation · src/notation/slots.ts:261impl:protocol.slot-notation · src/notation/slots.ts:269Referencing 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-enumerableImplementing 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-literalImplementing 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-pageImplementing 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-tableImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.binding-language-views.pack-member-table
Packs: pack:self-hosting-v1
spec:consumers.census-pageImplementing units
impl:protocol.census-page · src/projections/census.ts:21impl:protocol.census-page-cli · src/cli/census-command.ts:66Referencing units
None.
Enabled verifiers: test:protocol.census-page
Packs: pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.command-line.generate-check-failure
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.context-bundle.oversized-member-named
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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-divergenceImplementing 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-headroomImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.derived-readiness-banner.honest-headroom
Packs: pack:self-hosting-v1
spec:consumers.gherkin-viewImplementing units
impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6impl:protocol.gherkin-view · src/projections/gherkin-view.ts:19impl:protocol.gherkin-view-cli · src/cli/gherkin-command.ts:66Referencing units
None.
Enabled verifiers: test:protocol.gherkin-view
Packs: pack:self-hosting-v1
spec:consumers.mermaid-viewImplementing units
impl:protocol.mermaid-view · src/projections/mermaid.ts:14impl:protocol.mermaid-view-cli · src/cli/mermaid-command.ts:82Referencing units
None.
Enabled verifiers: test:protocol.mermaid-view
Packs: pack:self-hosting-v1
spec:consumers.obsidian-vaultImplementing units
impl:protocol.vault-command · src/cli/vault-command.ts:191impl:protocol.vault-notes · src/projections/vault/notes.ts:45impl:protocol.vault-sync · src/projections/vault/sync.ts:98Referencing 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-sourcesImplementing 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-givenImplementing 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-onlyImplementing 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-kindsImplementing units
impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7impl:protocol.studio-requirement-diagram · src/projections/studio/diagrams/requirement.ts:12impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10Referencing 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-routingImplementing units
impl:protocol.studio-diagram-routing · src/projections/studio/diagrams/routing.ts:38impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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.legibilityImplementing units
impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-diagram-layout · src/projections/studio/diagrams/layout.ts:140impl:protocol.studio-diagrams · src/projections/studio/diagrams/svg.ts:73Referencing 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-contextImplementing 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-layerImplementing 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-boundImplementing 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-pageImplementing units
impl:protocol.studio-diff · src/projections/studio/pages/diff-page.ts:91Referencing 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.architectureImplementing units
impl:protocol.studio-architecture-lens · src/projections/studio/pages/architecture-page.ts:50Referencing 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.evidenceImplementing units
impl:protocol.studio-evidence-lens · src/projections/studio/pages/evidence-page.ts:3Referencing units
None.
Enabled verifiers: test:protocol.studio-lenses
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.lenses.packsImplementing units
impl:protocol.studio-index-page · src/projections/studio/pages/index-page.ts:8Referencing 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-runImplementing 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-pageImplementing units
impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-runs-page · src/projections/studio/pages/runs-page.ts:6Referencing 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.sharingImplementing units
impl:protocol.stamp-command · src/cli/stamp-command.ts:8impl:protocol.studio-preview-workflow · test/studio-s4.test.ts:742impl:protocol.studio-stamp · src/studio-elements/stamp.ts:30Referencing 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-viewImplementing 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-removedImplementing 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-pageImplementing 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-removedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.wholesale-view-rewrite.stale-page-removed
Packs: pack:self-hosting-v1
spec:decisions.carrier-rulingImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.carrier-universalityImplementing units
None.
Referencing units
impl:protocol.gherkin-kind-policy · src/extract/gherkin-kind-honesty.ts:6Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.sdp-ts-extensionImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:extraction.pack-member-orderImplementing units
impl:protocol.markdown-yaml-policy · src/extract/markdown-yaml-policy.ts:33impl:protocol.open-section-order · src/extract/serialize.ts:105impl:protocol.pack-coherence · src/validate/validators.ts:1102impl:protocol.pack-design-page · src/projections/design-review-pages.ts:120impl:protocol.pack-member-order · src/extract/derive.ts:153impl:protocol.reader · src/reader/reader.ts:687Referencing units
None.
Enabled verifiers: spec:extraction.pack-member-order.manifest-order-kept, test:protocol.roadmap-priority
Packs: pack:self-hosting-v1
spec:model.enrichment-lifecycleImplementing units
impl:protocol.slimming-recipe · test/curation-recipes.test.ts:26Referencing units
None.
Enabled verifiers: test:protocol.slimming-recipe
Packs: pack:design-iteration-v1, pack:self-hosting-v1
spec:model.relation-reasonsImplementing units
impl:protocol.authoring-grammar-recipes · test/recipes.test.ts:6597impl:protocol.authoring-normalization · src/extract/authoring-normalization.ts:8Referencing 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-hostingImplementing units
impl:protocol.self-hosting · test/self-hosting-graph.test.ts:136Referencing units
None.
Enabled verifiers: test:protocol.self-hosting
Packs: pack:self-hosting-v1
spec:validation.architecture-constraintsImplementing units
impl:protocol.architecture-walk-recipe · test/architecture-recipes.test.ts:10Referencing 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-changesImplementing 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-failsImplementing 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-failsImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.validation.corpus-rules.malformed-finding-fails
Packs: pack:corpus-checks-v1, pack:self-hosting-v1
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
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
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-informsImplementing 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-locationImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.diagnostic-rendering.composed-location
Packs: pack:self-hosting-v1
spec:validation.diagnostic-rendering.table-cell-locationImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.diagnostic-rendering.table-cell-location
Packs: pack:self-hosting-v1
spec:validation.duplicate-ids.dual-carrierImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.duplicate-ids.dual-carrier
Packs: pack:self-hosting-v1
spec:carrier.sdp-import.feature-adapterImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:carrier.sdp-import.round-tripImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.sdp-import.round-trip
Packs: pack:self-hosting-v1
spec:carrier.slot-notation.one-literal-bindingImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.slot-notation.one-literal-binding
Packs: pack:self-hosting-v1
spec:carrier.slot-notation.refused-guessImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.slot-notation.refused-guess
Packs: pack:self-hosting-v1
spec:carrier.slot-notation.typed-declarationImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.slot-notation.typed-declaration
Packs: pack:self-hosting-v1
Implementing units
impl:protocol.example-runner · src/runner/index.ts:108impl:protocol.example-space-decoding · src/notation/example-space.ts:473impl:protocol.executable-contracts · src/codegen/contracts.ts:647impl:protocol.key-markers · src/extract/key-markers.ts:136impl:protocol.open-section-order · src/extract/serialize.ts:105impl:protocol.sdp-import-markdown-emit · src/import/emit-markdown.ts:253impl:protocol.spec-sections · src/model/sections.ts:138Referencing 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-refusedImplementing 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-notesImplementing 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-recoveredImplementing 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-vaultImplementing 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-refusedImplementing 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-recoveredImplementing 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-surviveImplementing 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-refusedImplementing 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-refusedImplementing 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-treeImplementing units
impl:protocol.studio-capability-diagrams · src/projections/studio/diagrams/capability.ts:101impl:protocol.studio-diagram-source · src/projections/studio/diagrams/mermaid.ts:13Referencing 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-pictureImplementing units
impl:protocol.studio-maturity-map · src/projections/studio/pages/maturity-map.ts:7Referencing 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-entryImplementing 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-apartImplementing 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-registerImplementing units
impl:protocol.studio-unit-register · src/projections/studio/pages/architecture-register.ts:7Referencing 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-evidenceImplementing 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-apartImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-stamp-apart
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.structural-mermaidImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:design-management-v1, pack:self-hosting-v1
spec:decisions.adopt-the-nounsImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.concept-docs-dissolveImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.executable-meta-modelImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.gherkin-carrier-optionImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.pack-markdown-carrierImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.plain-language-referencesImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.protocol-namingImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.sdp-gherkin-extensionImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.vault-owned-folderImplementing units
None.
Referencing units
impl:protocol.vault-command · src/cli/vault-command.ts:191impl:protocol.vault-sync · src/projections/vault/sync.ts:98Enabled verifiers: None
Packs: pack:obsidian-vault-v1, pack:self-hosting-v1
spec:extraction.pack-member-order.manifest-order-keptImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.pack-member-order
Packs: pack:self-hosting-v1
spec:protocol.capability-epicsImplementing units
impl:protocol.capability-epics · test/recipes.test.ts:8173Referencing units
None.
Enabled verifiers: test:protocol.capability-epics
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:protocol.structural-self-bindingImplementing units
impl:protocol.structural-self-binding · test/self-hosting-oracle/structural-edges.ts:76Referencing units
None.
Enabled verifiers: test:protocol.structural-self-binding
Packs: pack:self-hosting-v1
spec:validation.architecture-constraints.forbidden-layer-pairImplementing 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-ruleImplementing 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-unclassifiedImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.validation.architecture-constraints.unstated-layer-unclassified
Packs: pack:corpus-checks-v1, pack:self-hosting-v1
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
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
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.step-keys.malformed-marker-refused
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.step-keys.renamed-key-breaks
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.step-keys.repeated-key-refused
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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
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
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:decisions.roadmap-priorityImplementing units
None.
Referencing units
impl:protocol.pack-aggregate · src/model/pack.ts:23impl:protocol.pack-member-order · src/extract/derive.ts:153Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
Implementing units
impl:protocol.example-space · src/graph/example-space.ts:117impl:protocol.executable-contracts · src/codegen/contracts.ts:647Referencing 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
Implementing units
component:protocol.codegen · src/codegen/contracts.ts:633component:protocol.testing · src/testing/index.ts:38impl:protocol.example-testing-helpers · src/testing/index.ts:50impl:protocol.runnable-modules · src/codegen/contracts.ts:658Referencing 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-vocabularyImplementing units
impl:protocol.role-vocabulary · test/self-hosting-graph.test.ts:143Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:protocol.significant-units-reviewImplementing units
impl:protocol.structural-self-binding · test/self-hosting-oracle/structural-edges.ts:76Referencing units
None.
Enabled verifiers: test:protocol.structural-self-binding
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.design-diffImplementing units
impl:protocol.design-diff-recipe · test/iteration-recipes.test.ts:27Referencing 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-committedImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:decisions.roadmap-over-plansImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:extraction.example-runnerImplementing units
component:protocol.adapters · src/adapters/vitest.ts:23component:protocol.runner · src/runner/index.ts:99impl:protocol.example-runner · src/runner/index.ts:108impl:protocol.example-runner-adapter · src/adapters/vitest.ts:32Referencing 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-pathImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.executable-contracts.case-colliding-path
Packs: pack:self-hosting-v1
spec:extraction.executable-contracts.concreteness-refusalImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.executable-contracts.concreteness-refusal
Packs: pack:self-hosting-v1
spec:extraction.executable-contracts.multi-entry-exampleImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.executable-contracts.multi-entry-example
Packs: pack:self-hosting-v1
spec:model.pack-aggregateImplementing units
impl:protocol.pack-aggregate · src/model/pack.ts:23Referencing units
None.
Enabled verifiers: test:protocol.pack-builder, test:protocol.roadmap-priority
Packs: pack:self-hosting-v1
spec:decisions.pack-reifiedImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
spec:extraction.example-runner.red-step-namingImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.example-runner.red-step-naming
Packs: pack:self-hosting-v1
spec:extraction.example-runner.step-orderImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.example-runner.step-order
Packs: pack:self-hosting-v1
spec:validation.pack-coherenceImplementing units
impl:protocol.pack-coherence · src/validate/validators.ts:1102Referencing units
None.
Enabled verifiers: spec:validation.pack-coherence.incoherent-aggregate
Packs: pack:self-hosting-v1
spec:validation.pack-coherence.incoherent-aggregateImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.pack-coherence.incoherent-aggregate
Packs: pack:self-hosting-v1
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | spec:decisions.content-only-sectionsspec:decisions.content-only-sections · resolves | declared | None | None |
| refines · outgoing | spec:model.stable-idsspec:model.stable-ids · resolves | declared | None | None |
| decidedBy · incoming | spec:model.open-question-keysspec:model.open-question-keys · resolves | declared | None | None |
| decidedBy · incoming | spec:model.rule-keysspec:model.rule-keys · resolves | declared | rule addresses join the address law it rules | None |
| decidedBy · incoming | spec:model.stable-idsspec:model.stable-ids · resolves | declared | None | None |
| decidedBy · incoming | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | a term address joins the address law that decision rules | None |
| decidedBy · incoming | spec:validation.prose-mentionsspec:validation.prose-mentions · resolves | declared | None | None |
| dependsOn · incoming | Address resolution and dependency cycles stay executable graph recipesspec:consumers.agent-surface.address-and-cycle-recipes · resolves | declared | None | None |
Runtime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:extraction.entry-citations
spec:extraction.entry-citationsUse Case / Behavior · storyready floor readyPacks: 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.
problemoutcomerule.anchoredFilesOnly line 30 · specs/extraction/entry-citations.sdp.md:30spec: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 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:32spec:extraction.entry-citations.test-title-cites-declaration · enabled
rule.citationTable line 33 · specs/extraction/entry-citations.sdp.md:33no example exercises it
rule.inferredClaim line 34 · specs/extraction/entry-citations.sdp.md:34inferred 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:35no example exercises it
rule.readerRows line 36 · specs/extraction/entry-citations.sdp.md:36spec: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:37test: 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:38spec:extraction.entry-citations.unresolved-citation · enabled
rule.unresolvedReports line 39 · specs/extraction/entry-citations.sdp.md:39spec:extraction.entry-citations.unresolved-citation · enabled
0 unkeyed rules.
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}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}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"}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}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}citationTable line 42 · specs/extraction/entry-citations.sdp.md:42citations?: 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:43address 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:44entryCitations: 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:45params.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
specs/extraction/entry-citations.code-comment-cites-declaration.sdp.mdspecs/extraction/entry-citations.test-title-cites-declaration.sdp.mdspecs/extraction/entry-citations.unanchored-file-unread.sdp.mdspecs/extraction/entry-citations.unresolved-citation.sdp.mddeclaration · 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}| Example | declaration | anchored | address | line |
|---|---|---|---|---|
| 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
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
| Declared value | Examples |
|---|---|
"carries a test anchor verifying the Spec" | spec:extraction.entry-citations.test-title-cites-declaration, spec:extraction.entry-citations.unresolved-citation |
"carries a code anchor referencing the Spec" | spec:extraction.entry-citations.code-comment-cites-declaration |
"carries no anchor" | spec:extraction.entry-citations.unanchored-file-unread |
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
declaration: Noneanchored: Noneaddress: Noneline: Nonesrc/graph/entry-address.ts:6src/reader/entry-citations.ts:19test/recipes.test.ts:7008src/extract/entry-citations.ts:6test/entry-citations.test.ts:36test/entry-citations.test.ts:196test/entry-citations.test.ts:191test/entry-citations.test.ts:201test/entry-citations.test.ts:206Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.
No decision record named.
component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocolUses
component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolcomponent:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocolcomponent:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocolcomponent:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolcomponent:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolUses
component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocolcomponent:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocolcomponent:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocolUses
component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocolcomponent:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocolcomponent:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocolcomponent:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocolimpl:protocol.entry-address-resolution · resolves entry addresses for prose validation and citation readers · src/graph/entry-address.ts:6Component: 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:19Component: 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:7008Uses
None.
impl:protocol.entry-citation-scan · records prose-mention tokens with addresses in anchored source files · src/extract/entry-citations.ts:6Component: component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocol
Uses
None.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
spec:extraction.derive-graph · stated ready, floor readyspec:extraction.claim-taxonomy · stated ready, floor readyspec:extraction.entry-locations · stated ready, floor readyspec:model.anchors · stated ready, floor readyspec:validation.prose-mentions · stated ready, floor readyspec:extraction.determinism · stated ready, floor readyspec:consumers.spec-studio.cited-line-textImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
spec:consumers.spec-studio.registersImplementing units
impl:protocol.studio-registers · src/projections/studio/pages/registers-page.ts:47Referencing 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-pageImplementing units
impl:protocol.studio-requirement-view · src/projections/studio/pages/requirement-view.ts:8impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201impl:protocol.studio-spec-structure · src/projections/studio/pages/spec-structure.ts:44Referencing 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
Implementing units
impl:protocol.capability-adoption-recipe · test/upgrade-kit.test.ts:514Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.entry-citations.unanchored-file-unread
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.entry-citations.unresolved-citation
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
spec:consumers.spec-studio.exportImplementing units
impl:protocol.studio-diagram-element · src/studio-elements/diagram.ts:23impl:protocol.studio-expander · src/studio-elements/expander.ts:16impl:protocol.studio-pack-export · src/projections/studio/pages/export-page.ts:35impl:protocol.studio-pack-page · src/projections/studio/pages/pack-page.ts:68Referencing 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-firstImplementing 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-declarationImplementing 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.coreImplementing units
impl:protocol.studio-spec-page · src/projections/studio/pages/spec-page.ts:201Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.spec-studio.verification-panelsImplementing units
impl:protocol.studio-run-rows · src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-verification-panels · src/projections/studio/pages/spec-verification.ts:74Referencing 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
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.spec-studio.export.self-containedImplementing 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-coverageImplementing 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-rampImplementing units
impl:protocol.studio-on-ramp · test/skills.test.ts:1693Referencing units
None.
Enabled verifiers: test:protocol.studio-on-ramp
Packs: pack:self-hosting-v1, pack:spec-studio-v1
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| constrainedBy · outgoing | spec:extraction.determinismspec:extraction.determinism · resolves | declared | None | None |
| dependsOn · outgoing | spec:extraction.claim-taxonomyspec:extraction.claim-taxonomy · resolves | declared | every citation carries the inferred claim | None |
| dependsOn · outgoing | spec:extraction.entry-locationsspec:extraction.entry-locations · resolves | declared | the citation table is the location table's sibling, and a resolving citation names an entry it locates | None |
| dependsOn · outgoing | spec:model.anchorsspec:model.anchors · resolves | declared | only a source file that carries an anchor is read for citations | None |
| dependsOn · outgoing | spec:validation.prose-mentionsspec:validation.prose-mentions · resolves | declared | a citation is a token the prose-mention scan would read, and resolves by the same address rules | None |
| refines · outgoing | spec:extraction.derive-graphspec:extraction.derive-graph · resolves | declared | None | None |
| dependsOn · incoming | spec:consumers.spec-studio.cited-line-textspec:consumers.spec-studio.cited-line-text · resolves | declared | the words belong to a citation the graph already records by file and line | None |
| dependsOn · incoming | spec:consumers.spec-studio.registersspec:consumers.spec-studio.registers · resolves | declared | each declaration shows the source lines that cite its address | None |
| dependsOn · incoming | spec:consumers.spec-studio.spec-pagespec:consumers.spec-studio.spec-page · resolves | declared | the design section shows the source lines that cite each entry | None |
| dependsOn · incoming | Capability adoption counts where each capability is used and where it could applyspec:consumers.upgrade-kit.capability-adoption · resolves | declared | a pinned declaration counts as cited when an anchored line cites it | None |
| refines · incoming | A code file's comment cites a declaration without reading as a test linespec:extraction.entry-citations.code-comment-cites-declaration · resolves | declared | None | None |
| refines · incoming | A test title in an anchored file cites a pinned declarationspec:extraction.entry-citations.test-title-cites-declaration · resolves | declared | None | None |
| refines · incoming | A file that carries no anchor is not read for citationsspec:extraction.entry-citations.unanchored-file-unread · resolves | declared | None | None |
| refines · incoming | A citation of an entry its Spec lacks reports through the recipe, never as a Protocol findingspec:extraction.entry-citations.unresolved-citation · resolves | declared | None | None |
| verifies · incoming | A code file's comment cites a declaration without reading as a test linespec:extraction.entry-citations.code-comment-cites-declaration · resolves | declared | None | anchoredFilesOnly, declarationLines |
| verifies · incoming | A test title in an anchored file cites a pinned declarationspec:extraction.entry-citations.test-title-cites-declaration · resolves | declared | None | anchoredFilesOnly, citationToken, citationRow, readerRows, declarationLines |
| verifies · incoming | A file that carries no anchor is not read for citationsspec:extraction.entry-citations.unanchored-file-unread · resolves | declared | None | anchoredFilesOnly |
| verifies · incoming | A citation of an entry its Spec lacks reports through the recipe, never as a Protocol findingspec:extraction.entry-citations.unresolved-citation · resolves | declared | None | readerRows, citationRecipe, unresolvedReports |
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 protocolimpl: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 protocolimpl:protocol.entry-citation-recipe · asserts realization of Entry citations in docs/agent-surface/recipes.md · test/recipes.test.ts:7008impl: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 protocolspecs/extraction/entry-citations.code-comment-cites-declaration.sdp.md · example enabledspecs/extraction/entry-citations.test-title-cites-declaration.sdp.md · example enabledspecs/extraction/entry-citations.unanchored-file-unread.sdp.md · example enabledspecs/extraction/entry-citations.unresolved-citation.sdp.md · example enabledoracle:protocol.entry-citations · test/entry-citations.test.ts:36Runtime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:extraction.entry-citations.code-comment-cites-declaration
spec:extraction.entry-citations.code-comment-cites-declarationExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionsresolves, its anchors, which name the code anchor, and its testAnchors, which are empty.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}test/entry-citations.test.ts:196test/entry-citations.test.ts:196Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | The graph records where anchored source cites an entry addressspec:extraction.entry-citations · resolves | declared | None | None |
| verifies · outgoing | The graph records where anchored source cites an entry addressspec:extraction.entry-citations · resolves | declared | None | anchoredFilesOnly, declarationLines |
test/entry-citations.test.ts:196 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:extraction.entry-citations.test-title-cites-declaration
spec:extraction.entry-citations.test-title-cites-declarationExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionsidea 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.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}test/entry-citations.test.ts:191test/entry-citations.test.ts:191Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | The graph records where anchored source cites an entry addressspec:extraction.entry-citations · resolves | declared | None | None |
| verifies · outgoing | The graph records where anchored source cites an entry addressspec:extraction.entry-citations · resolves | declared | None | anchoredFilesOnly, citationToken, citationRow, readerRows, declarationLines |
test/entry-citations.test.ts:191 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:extraction.entry-citations.unanchored-file-unread
spec:extraction.entry-citations.unanchored-file-unreadExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionsGiven 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"}test/entry-citations.test.ts:201test/entry-citations.test.ts:201Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | The graph records where anchored source cites an entry addressspec:extraction.entry-citations · resolves | declared | None | None |
| verifies · outgoing | The graph records where anchored source cites an entry addressspec:extraction.entry-citations · resolves | declared | None | anchoredFilesOnly |
test/entry-citations.test.ts:201 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:extraction.entry-citations.unresolved-citation
spec:extraction.entry-citations.unresolved-citationExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionsGiven 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}test/entry-citations.test.ts:206test/entry-citations.test.ts:206Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | The graph records where anchored source cites an entry addressspec:extraction.entry-citations · resolves | declared | None | None |
| verifies · outgoing | The graph records where anchored source cites an entry addressspec:extraction.entry-citations · resolves | declared | None | readerRows, citationRecipe, unresolvedReports |
test/entry-citations.test.ts:206 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.context-bundle
spec:consumers.context-bundleUse Case / Behavior · featureready floor readyPacks: 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.
actorproblemoutcomerule line 27 · specs/consumers/context-bundle.sdp.md:27rule line 28 · specs/consumers/context-bundle.sdp.md:28rule line 29 · specs/consumers/context-bundle.sdp.md:29pack, 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:30pack, 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:31rule line 32 · specs/consumers/context-bundle.sdp.md:32length 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:33questions, 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:34no example exercises it
rule.declarationAddresses line 35 · specs/consumers/context-bundle.sdp.md:35declarations: "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:36part, 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:37rule line 38 · specs/consumers/context-bundle.sdp.md:38rule line 39 · specs/consumers/context-bundle.sdp.md:39rule.parts line 40 · specs/consumers/context-bundle.sdp.md:40part, 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:41spec:consumers.context-bundle.parts-cover-the-pack · enabled
rule.partCuts line 42 · specs/consumers/context-bundle.sdp.md:42leftOut, 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:43spec:consumers.context-bundle.parts-cover-the-pack · enabled
rule.sameParts line 44 · specs/consumers/context-bundle.sdp.md:44part, 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"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.
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"}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}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}bundleRecipe line 49 · specs/consumers/context-bundle.sdp.md:49params.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:54footingCut 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:56exampleCut line 57 · specs/consumers/context-bundle.sdp.md:57behavior.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:58questions 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:59declarationCut line 60 · specs/consumers/context-bundle.sdp.md:60declarations: "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:61leftOut: 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:63part: { 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:64part 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
specs/consumers/context-bundle.oversized-member-named.sdp.mdspecs/consumers/context-bundle.parts-cover-the-pack.sdp.mdtest/iteration-recipes.test.ts:772budget · 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}| Example | budget | sizes |
|---|---|---|
| spec:consumers.context-bundle.oversized-member-named | 10000 | "and one member carries a blocking question longer than the budget" |
| spec:consumers.context-bundle.parts-cover-the-pack | 10000 | "while each member fits a part alone" |
Oracle binding: present · oracle:protocol.context-bundle-parts · test/self-hosting-bundle-parts.test.ts:55
budget: 10000 · spec:consumers.context-bundle.oversized-member-named, spec:consumers.context-bundle.parts-cover-the-pack · not enumerable
| Declared value | Examples |
|---|---|
"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 |
budget: Nonesizes: Nonetest/iteration-recipes.test.ts:765test/self-hosting-bundle-parts.test.ts:55test/iteration-recipes.test.ts:772test/self-hosting-bundle-parts.test.ts:148test/self-hosting-bundle-parts.test.ts:115Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.
spec:decisions.agent-front-doorThe 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.
impl:protocol.context-bundle-recipe · realizes the context bundle in the shipped recipe catalog · test/iteration-recipes.test.ts:765Uses
None.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
spec:consumers.agent-surface · stated ready, floor readyspec:consumers.agent-surface.design-recipes · stated ready, floor readyspec:decisions.agent-front-door · stated ready, floor readyImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.context-bundle.oversized-member-named
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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-rampImplementing units
impl:protocol.delivery-session-on-ramp · test/skills.test.ts:83Referencing units
None.
Enabled verifiers: test:protocol.delivery-session-on-ramp
Packs: pack:self-hosting-v1
spec:consumers.design-sliceImplementing units
impl:protocol.design-slice-recipe · test/self-hosting-design-slice.test.ts:148Referencing units
impl:protocol.studio-slice-answer · src/projections/studio/slice-answer.ts:1Enabled 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.design-slice.chainImplementing 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-absentImplementing 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-differingImplementing 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-matchingImplementing 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-unreadableImplementing 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-unrelatedImplementing 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-backlinkImplementing 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-cycleImplementing 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-exampleImplementing 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-exampleImplementing 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-componentsImplementing 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-holdingImplementing 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-satisfiedImplementing 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-unboundImplementing 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-planningImplementing units
impl:protocol.graph-first-planning · test/skills.test.ts:290Referencing units
None.
Enabled verifiers: test:protocol.graph-first-planning
Packs: pack:self-hosting-v1
spec:consumers.spec-studio.diagram-kinds.dependencyImplementing units
impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10Referencing 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-architectureImplementing units
impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-architecture
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.slice-pageImplementing units
impl:protocol.studio-slice-page · src/projections/studio/pages/slice-page.ts:25Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-page
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
Implementing units
impl:protocol.statement-queue-recipe · test/self-hosting-readiness-planner.test.ts:74Referencing 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.roadmapImplementing units
impl:protocol.roadmap-recipe · test/roadmap.test.ts:20Referencing 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.projections-model.roadmap-viewsImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.decision-first
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.dependency-order
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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-partImplementing 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-partImplementing 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-workImplementing 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-partImplementing 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-partImplementing 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.memoImplementing units
impl:protocol.roadmap-memo-recipe · test/roadmap.test.ts:27impl:protocol.studio-roadmap-page · src/projections/studio/pages/roadmap-page.ts:168Referencing 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-evidenceImplementing 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-parentImplementing 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-orderImplementing 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-partImplementing 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-queueImplementing units
impl:protocol.studio-owner-queue · src/projections/studio/pages/queue-page.ts:9Referencing 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-pageImplementing units
impl:protocol.studio-roadmap-page · src/projections/studio/pages/roadmap-page.ts:168Referencing units
None.
Enabled verifiers: test:protocol.studio-roadmap-page
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
Implementing units
impl:protocol.upgrade-guide · test/upgrade-kit.test.ts:87Referencing units
None.
Enabled verifiers: test:protocol.upgrade-guide
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
spec:protocol.roadmap-replaces-plansImplementing units
impl:protocol.roadmap-practice · test/check-self-hosting-gates.test.ts:52Referencing units
None.
Enabled verifiers: test:protocol.roadmap-practice
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.owner-queue.dependency-firstImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-queue-dependency-first
Packs: pack:self-hosting-v1, pack:spec-studio-v1
Implementing units
impl:protocol.capability-adoption-recipe · test/upgrade-kit.test.ts:514Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
impl:protocol.rule-key-proposal-recipe · test/upgrade-kit.test.ts:742Referencing 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.delivery-record-cleanupImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| decidedBy · outgoing | spec:decisions.agent-front-doorspec:decisions.agent-front-door · resolves | declared | None | None |
| dependsOn · outgoing | spec:consumers.agent-surface.design-recipesspec:consumers.agent-surface.design-recipes · resolves | declared | None | None |
| refines · outgoing | spec:consumers.agent-surfacespec:consumers.agent-surface · resolves | declared | None | None |
| dependsOn · incoming | spec:consumers.delivery-session-on-rampspec:consumers.delivery-session-on-ramp · resolves | declared | the design loop composes each pass's reading material as a context bundle | None |
| dependsOn · incoming | spec:consumers.design-slicespec:consumers.design-slice · resolves | declared | a slice takes its scope as the bundle does, and builds a Spec list's boundary the same way | None |
| refines · incoming | A member larger than the budget is named, and no part is returnedspec:consumers.context-bundle.oversized-member-named · resolves | declared | None | None |
| refines · incoming | A Pack too large for one bundle reads whole in partsspec:consumers.context-bundle.parts-cover-the-pack · resolves | declared | None | None |
| verifies · incoming | A member larger than the budget is named, and no part is returnedspec:consumers.context-bundle.oversized-member-named · resolves | declared | None | oversizedItem |
| verifies · incoming | A Pack too large for one bundle reads whole in partsspec:consumers.context-bundle.parts-cover-the-pack · resolves | declared | None | parts, partBoundaries, partCuts, partHeader, sameParts |
impl:protocol.context-bundle-recipe · realizes the context bundle in the shipped recipe catalog · test/iteration-recipes.test.ts:765 · role projectionspecs/consumers/context-bundle.oversized-member-named.sdp.md · example enabledspecs/consumers/context-bundle.parts-cover-the-pack.sdp.md · example enabledtest/iteration-recipes.test.ts:772 · test anchororacle:protocol.context-bundle-parts · test/self-hosting-bundle-parts.test.ts:55Runtime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.context-bundle.oversized-member-named
spec:consumers.context-bundle.oversized-member-namedExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionssdp 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.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"}test/self-hosting-bundle-parts.test.ts:148test/self-hosting-bundle-parts.test.ts:148Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | A context bundle is composed per invocation within a stated budgetspec:consumers.context-bundle · resolves | declared | None | None |
| verifies · outgoing | A context bundle is composed per invocation within a stated budgetspec:consumers.context-bundle · resolves | declared | None | oversizedItem |
test/self-hosting-bundle-parts.test.ts:148 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.context-bundle.parts-cover-the-pack
spec:consumers.context-bundle.parts-cover-the-packExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionsidea, 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.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}test/self-hosting-bundle-parts.test.ts:115test/self-hosting-bundle-parts.test.ts:115Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | A context bundle is composed per invocation within a stated budgetspec:consumers.context-bundle · resolves | declared | None | None |
| verifies · outgoing | A context bundle is composed per invocation within a stated budgetspec:consumers.context-bundle · resolves | declared | None | parts, partBoundaries, partCuts, partHeader, sameParts |
test/self-hosting-bundle-parts.test.ts:115 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.readiness-planner
spec:consumers.readiness-plannerUse Case / Behavior · featureready floor readyPacks: 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.
actorproblemoutcomerule.waiting line 32 · specs/consumers/readiness-planner.sdp.md:32spec:consumers.readiness-planner.dependency-order · enabled, spec:consumers.readiness-planner.owner-question-holds · enabled
rule.restsOn line 33 · specs/consumers/readiness-planner.sdp.md:33dependsOn, constrainedBy, decidedBy or refines, the four relations the ready floor reads; no Spec rests on itself.rule.refinesYields line 34 · specs/consumers/readiness-planner.sdp.md:34refines 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.rule.rounds line 35 · specs/consumers/readiness-planner.sdp.md:35spec:consumers.readiness-planner.decision-first · enabled, spec:consumers.readiness-planner.dependency-order · enabled
rule.order line 36 · specs/consumers/readiness-planner.sdp.md:36spec: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:37spec:consumers.readiness-planner.cycle-shares-a-round · enabled
rule.ownerQuestions line 38 · specs/consumers/readiness-planner.sdp.md:38decider 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:39decider, 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:40no example exercises it
0 unkeyed rules.
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} cyclesA 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} cyclesThe 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} cyclesAn 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"}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}queueRecipe line 43 · specs/consumers/readiness-planner.sdp.md:43params.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:48specs/consumers/readiness-planner.cycle-shares-a-round.sdp.mdspecs/consumers/readiness-planner.decision-first.sdp.mdspecs/consumers/readiness-planner.dependency-order.sdp.mdspecs/consumers/readiness-planner.owner-question-holds.sdp.mdcorpus · "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}| Example | corpus |
|---|---|
| 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
| Declared value | Examples |
|---|---|
"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 |
corpus: Nonetest/self-hosting-readiness-planner.test.ts:74test/self-hosting-readiness-planner.test.ts:81test/self-hosting-readiness-planner.test.ts:236test/self-hosting-readiness-planner.test.ts:220test/self-hosting-readiness-planner.test.ts:204test/self-hosting-readiness-planner.test.ts:252Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.
No decision record named.
impl:protocol.statement-queue-recipe · realizes the statement queue in the shipped recipe catalog · test/self-hosting-readiness-planner.test.ts:74Uses
None.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
spec:consumers.graph-first-planning · stated ready, floor readyspec:model.open-question-fields · stated ready, floor readyspec:validation.next-rung-floor · stated ready, floor readyspec:validation.typed-dependency-floor · stated ready, floor readyspec:consumers.design-sliceImplementing units
impl:protocol.design-slice-recipe · test/self-hosting-design-slice.test.ts:148Referencing units
impl:protocol.studio-slice-answer · src/projections/studio/slice-answer.ts:1Enabled 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
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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.decision-first
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.readiness-planner.dependency-order
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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.roadmapImplementing units
impl:protocol.roadmap-recipe · test/roadmap.test.ts:20Referencing 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-queueImplementing units
impl:protocol.studio-owner-queue · src/projections/studio/pages/queue-page.ts:9Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.owner-queue.dependency-first
Packs: pack:self-hosting-v1, pack:spec-studio-v1
spec:consumers.design-slice.chainImplementing 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-absentImplementing 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-differingImplementing 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-matchingImplementing 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-unreadableImplementing 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-unrelatedImplementing 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-backlinkImplementing 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-cycleImplementing 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-exampleImplementing 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-exampleImplementing 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-componentsImplementing 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-holdingImplementing 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-satisfiedImplementing 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-unboundImplementing 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-viewsImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.roadmap.blocking-partImplementing 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-partImplementing 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-workImplementing 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-partImplementing 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-partImplementing 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.memoImplementing units
impl:protocol.roadmap-memo-recipe · test/roadmap.test.ts:27impl:protocol.studio-roadmap-page · src/projections/studio/pages/roadmap-page.ts:168Referencing 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-evidenceImplementing 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-parentImplementing 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-orderImplementing 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-partImplementing 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.dependencyImplementing units
impl:protocol.studio-slice-dependencies · src/projections/studio/diagrams/slice.ts:10Referencing 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-architectureImplementing units
impl:protocol.studio-slice-architecture · src/projections/studio/diagrams/slice.ts:219Referencing 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-firstImplementing 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-pageImplementing units
impl:protocol.studio-roadmap-page · src/projections/studio/pages/roadmap-page.ts:168Referencing units
None.
Enabled verifiers: test:protocol.studio-roadmap-page
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
spec:consumers.spec-studio.slice-pageImplementing units
impl:protocol.studio-slice-page · src/projections/studio/pages/slice-page.ts:25Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-page
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
Implementing units
impl:protocol.upgrade-guide · test/upgrade-kit.test.ts:87Referencing units
None.
Enabled verifiers: test:protocol.upgrade-guide
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
spec:protocol.roadmap-replaces-plansImplementing units
impl:protocol.roadmap-practice · test/check-self-hosting-gates.test.ts:52Referencing units
None.
Enabled verifiers: test:protocol.roadmap-practice
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
Implementing units
impl:protocol.capability-adoption-recipe · test/upgrade-kit.test.ts:514Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
impl:protocol.rule-key-proposal-recipe · test/upgrade-kit.test.ts:742Referencing 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.delivery-record-cleanupImplementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | Address resolution and dependency cycles stay executable graph recipesspec:consumers.agent-surface.address-and-cycle-recipes · resolves | declared | a cycle among waiting Specs reports in the shape dependency cycles reports | None |
| dependsOn · outgoing | spec:model.open-question-fieldsspec:model.open-question-fields · resolves | declared | the owner's questions are selected by their decider field | None |
| dependsOn · outgoing | spec:validation.next-rung-floorspec:validation.next-rung-floor · resolves | declared | the rung each Spec's floor allows, and the targets that hold a rung, come from the one floor evaluator | None |
| dependsOn · outgoing | spec:validation.typed-dependency-floorspec:validation.typed-dependency-floor · resolves | declared | the order reads the four typed relations the ready floor reads | None |
| refines · outgoing | spec:consumers.graph-first-planningspec:consumers.graph-first-planning · resolves | declared | the planner is an advisory planning recipe that orders nothing the Protocol enforces | None |
| dependsOn · incoming | spec:consumers.design-slicespec:consumers.design-slice · resolves | declared | members rest on each other as the statement queue reads the four typed relations, and a cycle reports in its shape | None |
| dependsOn · incoming | spec:consumers.roadmapspec:consumers.roadmap · resolves | declared | the statements waiting on a person follow the statement queue's order | None |
| dependsOn · incoming | spec:consumers.spec-studio.owner-queuespec:consumers.spec-studio.owner-queue · resolves | declared | the page renders the statement queue the planner orders | None |
| refines · incoming | Waiting Specs that rest on each other share a round and report a cyclespec:consumers.readiness-planner.cycle-shares-a-round · resolves | declared | None | None |
| refines · incoming | A waiting decision comes before the Spec it shapesspec:consumers.readiness-planner.decision-first · resolves | declared | None | None |
| refines · incoming | The Spec another rests on comes first in the queuespec:consumers.readiness-planner.dependency-order · resolves | declared | None | None |
| refines · incoming | An owner's blocking question lists the Specs it holdsspec:consumers.readiness-planner.owner-question-holds · resolves | declared | None | None |
| verifies · incoming | Waiting Specs that rest on each other share a round and report a cyclespec:consumers.readiness-planner.cycle-shares-a-round · resolves | declared | None | cycles, order |
| verifies · incoming | A waiting decision comes before the Spec it shapesspec:consumers.readiness-planner.decision-first · resolves | declared | None | refinesYields, rounds |
| verifies · incoming | The Spec another rests on comes first in the queuespec:consumers.readiness-planner.dependency-order · resolves | declared | None | waiting, restsOn, rounds, order |
| verifies · incoming | An owner's blocking question lists the Specs it holdsspec:consumers.readiness-planner.owner-question-holds · resolves | declared | None | ownerQuestions, waiting |
impl:protocol.statement-queue-recipe · realizes the statement queue in the shipped recipe catalog · test/self-hosting-readiness-planner.test.ts:74 · role projectionspecs/consumers/readiness-planner.cycle-shares-a-round.sdp.md · example enabledspecs/consumers/readiness-planner.decision-first.sdp.md · example enabledspecs/consumers/readiness-planner.dependency-order.sdp.md · example enabledspecs/consumers/readiness-planner.owner-question-holds.sdp.md · example enabledoracle:protocol.readiness-planner · test/self-hosting-readiness-planner.test.ts:81Runtime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.readiness-planner.decision-first
spec:consumers.readiness-planner.decision-firstExample / Scenario · storyready floor readyPacks: 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.
outcomedecidedBy.assumptionsdefined 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.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} cyclestest/self-hosting-readiness-planner.test.ts:220test/self-hosting-readiness-planner.test.ts:220Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | The readiness planner orders the statements a person can makespec:consumers.readiness-planner · resolves | declared | None | None |
| verifies · outgoing | The readiness planner orders the statements a person can makespec:consumers.readiness-planner · resolves | declared | None | refinesYields, rounds |
test/self-hosting-readiness-planner.test.ts:220 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.readiness-planner.dependency-order
spec:consumers.readiness-planner.dependency-orderExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionsdefined 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.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} cyclestest/self-hosting-readiness-planner.test.ts:204test/self-hosting-readiness-planner.test.ts:204Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | The readiness planner orders the statements a person can makespec:consumers.readiness-planner · resolves | declared | None | None |
| verifies · outgoing | The readiness planner orders the statements a person can makespec:consumers.readiness-planner · resolves | declared | None | waiting, restsOn, rounds, order |
test/self-hosting-readiness-planner.test.ts:204 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.readiness-planner.owner-question-holds
spec:consumers.readiness-planner.owner-question-holdsExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionsscoped, 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.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"}test/self-hosting-readiness-planner.test.ts:252test/self-hosting-readiness-planner.test.ts:252Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | The readiness planner orders the statements a person can makespec:consumers.readiness-planner · resolves | declared | None | None |
| verifies · outgoing | The readiness planner orders the statements a person can makespec:consumers.readiness-planner · resolves | declared | None | ownerQuestions, waiting |
test/self-hosting-readiness-planner.test.ts:252 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.upgrade-kit
spec:consumers.upgrade-kitUse Case / Behavior · featureready floor readyPacks: 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.
actorproblemoutcomerule.reportsAndProposes line 30 · specs/consumers/upgrade-kit.sdp.md:30no example exercises it
rule.statesNoRung line 31 · specs/consumers/upgrade-kit.sdp.md:31no example exercises it
rule.upgradeGuide line 32 · specs/consumers/upgrade-kit.sdp.md:32no example exercises it
rule.guideTeaches line 33 · specs/consumers/upgrade-kit.sdp.md:33no example exercises it
0 unkeyed rules.
guideFile line 36 · specs/consumers/upgrade-kit.sdp.md:36docs/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:37sdp --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.test/upgrade-kit.test.ts:94test/upgrade-kit.test.ts:514test/upgrade-kit.test.ts:742test/upgrade-kit.test.ts:87test/upgrade-kit.test.ts:322test/upgrade-kit.test.ts:398test/upgrade-kit.test.ts:345test/upgrade-kit.test.ts:483test/upgrade-kit.test.ts:466test/upgrade-kit.test.ts:94Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.
No decision record named.
impl:protocol.upgrade-guide · realizes the shipped upgrade guide document · test/upgrade-kit.test.ts:87Uses
None.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
spec:consumers.authoring-on-ramp · stated ready, floor readyspec:consumers.capability-map · stated ready, floor readyspec:consumers.edit-model · stated ready, floor readyspec:consumers.intent-composition · stated ready, floor readyspec:consumers.roadmap · stated ready, floor readyImplementing units
impl:protocol.capability-adoption-recipe · test/upgrade-kit.test.ts:514Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
Implementing units
impl:protocol.rule-key-proposal-recipe · test/upgrade-kit.test.ts:742Referencing 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
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
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
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | spec:consumers.capability-mapspec:consumers.capability-map · resolves | declared | the guide teaches epic organization through the capability map | None |
| dependsOn · outgoing | spec:consumers.edit-modelspec:consumers.edit-model · resolves | declared | a carrier changes only through an agent's or a person's edit, recorded by git | None |
| dependsOn · outgoing | spec:consumers.intent-compositionspec:consumers.intent-composition · resolves | declared | a proposed upgrade hands off on the one change-proposal shape and is applied after its check | None |
| dependsOn · outgoing | spec:consumers.roadmapspec:consumers.roadmap · resolves | declared | the guide teaches advisory priority and the roadmap memo as planning records | None |
| refines · outgoing | spec:consumers.authoring-on-rampspec:consumers.authoring-on-ramp · resolves | declared | the kit moves a whole corpus onto the capabilities the on-ramp teaches one Spec at a time | None |
| refines · incoming | Capability adoption counts where each capability is used and where it could applyspec:consumers.upgrade-kit.capability-adoption · resolves | declared | None | None |
| refines · incoming | The rule-key proposal keys every unkeyed rule as a change proposalspec:consumers.upgrade-kit.rule-key-proposal · resolves | declared | None | None |
impl:protocol.upgrade-guide · realizes the shipped upgrade guide document · test/upgrade-kit.test.ts:87test/upgrade-kit.test.ts:94 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.upgrade-kit.capability-adoption
spec:consumers.upgrade-kit.capability-adoptionUse Case / Behavior · storyready floor readyPacks: 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.
problemoutcomerule.capabilityRows line 37 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:37spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · enabled
rule.corpusTotals line 38 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:38ready and the Specs whose floor allows ready.no example exercises it
rule.perPackAndSpec line 39 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:39no example exercises it
rule.outsideTheGraph line 40 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:40spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · enabled
rule.countsOnly line 41 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:41no example exercises it
0 unkeyed rules.
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"}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}adoptionRecipe line 44 · specs/consumers/upgrade-kit.capability-adoption.sdp.md:44params.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:47capability (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
specs/consumers/upgrade-kit.capability-adoption.counts-a-corpus.sdp.mdrules · 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 reasonkeyed · 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 reasonrelations · 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 reasonreasons · 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| Example | rules | keyed | relations | reasons |
|---|---|---|---|---|
| spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus | 3 | 1 | 2 | 1 |
Oracle binding: present · oracle:protocol.capability-adoption · test/upgrade-kit.test.ts:322
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
rules: Nonekeyed: Nonerelations: Nonereasons: Nonetest/upgrade-kit.test.ts:514test/upgrade-kit.test.ts:322test/upgrade-kit.test.ts:345Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models require exact labels unavailable in requirement syntax.
No decision record named.
impl:protocol.capability-adoption-recipe · realizes capability adoption in the shipped recipe catalog · test/upgrade-kit.test.ts:514Uses
None.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
spec:consumers.review-perspectives · stated ready, floor readyspec:extraction.contract-declarations · stated ready, floor readyspec:model.open-question-fields · stated ready, floor readyspec:model.open-question-keys · stated ready, floor readyspec:model.planned-architecture · stated ready, floor readyspec:model.relation-reasons · stated ready, floor readyspec:model.rule-keys · stated ready, floor readyImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | An example step may carry a key that survives rewordingspec:carrier.step-keys · resolves | declared | step keys are counted where example steps are | None |
| dependsOn · outgoing | spec:consumers.review-perspectivesspec:consumers.review-perspectives · resolves | declared | perspectives are counted from the objects the caller passes | None |
| dependsOn · outgoing | spec:extraction.contract-declarationsspec:extraction.contract-declarations · resolves | declared | pinned declarations are counted where keyed Design entries are | None |
| dependsOn · outgoing | The graph records where anchored source cites an entry addressspec:extraction.entry-citations · resolves | declared | a pinned declaration counts as cited when an anchored line cites it | None |
| dependsOn · outgoing | spec:model.open-question-fieldsspec:model.open-question-fields · resolves | declared | question keys and fields are counted where open questions are | None |
| dependsOn · outgoing | spec:model.open-question-keysspec:model.open-question-keys · resolves | declared | question keys are counted where open questions are | None |
| dependsOn · outgoing | spec:model.planned-architecturespec:model.planned-architecture · resolves | declared | component designs are selected by the convention that Spec states | None |
| dependsOn · outgoing | spec:model.relation-reasonsspec:model.relation-reasons · resolves | declared | relation reasons are counted where authored relations are | None |
| dependsOn · outgoing | spec:model.rule-keysspec:model.rule-keys · resolves | declared | rule keys and exercises are two of the capabilities it counts | None |
| dependsOn · outgoing | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | term keys are counted where Model terms are | None |
| refines · outgoing | The upgrade kit shows a corpus what it could adoptspec:consumers.upgrade-kit · resolves | declared | None | None |
| refines · incoming | Capability adoption counts keyed rules and reasoned relationsspec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · resolves | declared | None | None |
| verifies · incoming | Capability adoption counts keyed rules and reasoned relationsspec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · resolves | declared | None | capabilityRows, outsideTheGraph |
impl:protocol.capability-adoption-recipe · realizes capability adoption in the shipped recipe catalog · test/upgrade-kit.test.ts:514 · role projectionspecs/consumers/upgrade-kit.capability-adoption.counts-a-corpus.sdp.md · example enabledoracle:protocol.capability-adoption · test/upgrade-kit.test.ts:322Runtime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
spec:consumers.upgrade-kit.capability-adoption.counts-a-corpusExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionsidea, 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.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"}test/upgrade-kit.test.ts:345test/upgrade-kit.test.ts:345Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | Capability adoption counts where each capability is used and where it could applyspec:consumers.upgrade-kit.capability-adoption · resolves | declared | None | None |
| verifies · outgoing | Capability adoption counts where each capability is used and where it could applyspec:consumers.upgrade-kit.capability-adoption · resolves | declared | None | capabilityRows, outsideTheGraph |
test/upgrade-kit.test.ts:345 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.upgrade-kit.rule-key-proposal
spec:consumers.upgrade-kit.rule-key-proposalUse Case / Behavior · storyready floor readyPacks: 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.
problemoutcomerule.proposesKeys line 25 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:25spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · enabled
rule.keepsText line 26 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:26spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · enabled
rule.coinedKey line 27 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:27spec: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:28spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · enabled
rule.unkeyable line 29 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:29spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · enabled
rule.applyAfterCheck line 30 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:30spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · enabled
0 unkeyed rules.
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 problemsA 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 proposalGiven 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 proposalproposalRecipe line 33 · specs/consumers/upgrade-kit.rule-key-proposal.sdp.md:33params.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:37Add 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[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:39a, 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:402 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
specs/consumers/upgrade-kit.rule-key-proposal.collision-and-unkeyable.sdp.mdspecs/consumers/upgrade-kit.rule-key-proposal.proposal-applies-clean.sdp.mdrules · string · declared by a probe Spec whose unkeyed rules read {rules}| Example | rules |
|---|---|
| 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
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
rules: Nonetest/upgrade-kit.test.ts:742test/upgrade-kit.test.ts:398test/upgrade-kit.test.ts:483test/upgrade-kit.test.ts:466Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models require exact labels unavailable in requirement syntax.
No decision record named.
impl:protocol.rule-key-proposal-recipe · realizes the rule-key proposal in the shipped recipe catalog · test/upgrade-kit.test.ts:742Uses
None.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
spec:consumers.intent-composition.proposal · stated ready, floor readyspec:extraction.entry-locations · stated ready, floor readyspec:model.rule-keys · stated ready, floor readyImplementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.rule-key-proposal.collision-and-unkeyable
Packs: pack:adopter-speed-v1, pack:self-hosting-v1
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
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | spec:consumers.intent-composition.proposalspec:consumers.intent-composition.proposal · resolves | declared | the recipe writes a change proposal in the shape the proposal check reads | None |
| dependsOn · outgoing | spec:extraction.entry-locationsspec:extraction.entry-locations · resolves | declared | each change names the file and line the location table records for its entry | None |
| dependsOn · outgoing | spec:model.rule-keysspec:model.rule-keys · resolves | declared | a coined key follows the rule-key grammar and marker | None |
| refines · outgoing | The upgrade kit shows a corpus what it could adoptspec:consumers.upgrade-kit · resolves | declared | None | None |
| refines · incoming | Two rules that coin one key stay apart, and a rule with no ASCII word stays unkeyedspec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · resolves | declared | None | None |
| refines · incoming | A rule-key proposal passes the proposal check and validates once appliedspec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · resolves | declared | None | None |
| verifies · incoming | Two rules that coin one key stay apart, and a rule with no ASCII word stays unkeyedspec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · resolves | declared | None | coinedKey, uniqueKey, unkeyable |
| verifies · incoming | A rule-key proposal passes the proposal check and validates once appliedspec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · resolves | declared | None | proposesKeys, keepsText, coinedKey, applyAfterCheck |
impl:protocol.rule-key-proposal-recipe · realizes the rule-key proposal in the shipped recipe catalog · test/upgrade-kit.test.ts:742 · role projectionspecs/consumers/upgrade-kit.rule-key-proposal.collision-and-unkeyable.sdp.md · example enabledspecs/consumers/upgrade-kit.rule-key-proposal.proposal-applies-clean.sdp.md · example enabledoracle:protocol.rule-key-proposal · test/upgrade-kit.test.ts:398Runtime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable
spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyableExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionsGiven 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 problemstest/upgrade-kit.test.ts:483test/upgrade-kit.test.ts:483Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | The rule-key proposal keys every unkeyed rule as a change proposalspec:consumers.upgrade-kit.rule-key-proposal · resolves | declared | None | None |
| verifies · outgoing | The rule-key proposal keys every unkeyed rule as a change proposalspec:consumers.upgrade-kit.rule-key-proposal · resolves | declared | None | coinedKey, uniqueKey, unkeyable |
test/upgrade-kit.test.ts:483 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.
spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean
spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-cleanExample / Scenario · storyready floor readyPacks: 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.
outcomeassumptionsidea 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.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 proposaltest/upgrade-kit.test.ts:466test/upgrade-kit.test.ts:466Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | The rule-key proposal keys every unkeyed rule as a change proposalspec:consumers.upgrade-kit.rule-key-proposal · resolves | declared | None | None |
| verifies · outgoing | The rule-key proposal keys every unkeyed rule as a change proposalspec:consumers.upgrade-kit.rule-key-proposal · resolves | declared | None | proposesKeys, keepsText, coinedKey, applyAfterCheck |
test/upgrade-kit.test.ts:466 · test anchorRuntime observation: not tracked.
Run results: not recorded in the graph.
None.