Spec Studio

The Protocol models delivery with one enrichable Spec

spec:model.core-modelDomain Model · epicready floor ready

Packs: pack:self-hosting-v1

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

Findings: no errors, no warnings

specs/model/core-model.sdp.md

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

Intent
outcome
Give every authored delivery statement one stable shape and independent coordinates.
Model
Spec line 17 · specs/model/core-model.sdp.md:17
The one authored truth-primitive, enriched in place without changing artifact type.
envelope line 18 · specs/model/core-model.sdp.md:18
The stable outer shape of id, title, kind, altitude, readiness, and relations; sections carry extension detail.
kind line 19 · specs/model/core-model.sdp.md:19
The true subtype that categorizes a Spec's truth and changes its required detail and validation; one of eight, each shown by its display label: behavior (Use Case / Behavior), workflow (Workflow), example (Example / Scenario), rule (Business Rule), constraint (Constraint (NFR)), model (Domain Model), decision (Decision Record), contract (Contract).
one-kind rule line 20 · specs/model/core-model.sdp.md:20
A Spec states one category of truth; when one fact straddles kinds, author two Specs and join them with the relation that preserves their distinct intents.
altitude line 21 · specs/model/core-model.sdp.md:21
The scope position epic, feature, or story; epic is the ceiling, and anything above it is deferred.
readiness line 22 · specs/model/core-model.sdp.md:22
The author-stated design-maturity position idea, scoped, defined, or ready, checked against a structural floor.
delivery fact line 23 · specs/model/core-model.sdp.md:23
A derived realization signal, implemented, has-verifier or the deferred observed, computed from edges and never authored; it is independent of the stated readiness.
direct realization line 24 · specs/model/core-model.sdp.md:24
implemented follows a resolving implementation binding and never propagates through refinement; examples normally provide verification evidence rather than implementation work.
Verification

Verifier bindings

  • test:protocol.core-model · Spec builders and derivation verify independent coordinates and direct realization · anchored · test anchor binding present · test/builders.test.ts:44

    External run evidence from test/builders.test.ts

    Test anchors: test:protocol.core-model, test:protocol.pack-builder, test:protocol.relation-builders. Specs verified by those bindings: spec:model.core-model, spec:model.pack-aggregate, spec:model.relations.

    Run 1: external run evidence from vitest 4.1.10

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

    NameSuiteResultDuration
    enriches one Spec envelope while keeping all three coordinates independentbuilderspassed41.72 ms
    derives delivery facts directly without propagating realization through refinementbuilderspassed6.3 ms
    builds plain serializable specs with declared relationsbuilderspassed0.87 ms
    builds packs as plain manifests with no authored truth fieldsbuilderspassed0.54 ms
    builds identity-only anchors as plain serializable objectsbuilderspassed0.42 ms
Design view

Requirement drawing

Requirement drawing for spec:model.core-model
The diagram as text
  • spec:model.core-model: The Protocol models delivery with one enrichable Spec · declared Spec
  • spec:decisions.example-realization-posture: Example realization stays evidence, not backlog work · declared Spec
  • spec:decisions.one-primitive: One Spec carries named delivery coordinates · declared Spec
  • spec:model.anchors: Source anchors bind code without carrying intent · declared Spec
  • spec:model.design-maturity: What a Spec's design carries is derived, beside its readiness · declared Spec
  • spec:model.enrichment-lifecycle: Enrichment keeps one Spec while its detail changes · declared Spec
  • spec:model.pack-aggregate: A Pack is a truth-free review aggregate · declared Spec
  • spec:model.planned-architecture: Components are designed ahead of their code · declared Spec
  • spec:model.relations: Specs declare typed directed relations · declared Spec
  • spec:model.spec-sections: Spec sections carry typed detail and direct verifier semantics · declared Spec
  • spec:model.stable-ids: Stable IDs are the Protocol's durable join key · declared Spec
  • spec:model.anchors.lookalike-refusal: A consumer-local lookalike builder mints no anchor and no finding · declared Spec
  • spec:model.anchors.physical-identity: A deep relative import that resolves to the Protocol builders is trusted · declared Spec
  • spec:model.planned-architecture.differing-layer-and-uses: A realized component that differs from its design gives one row per field · declared Spec
  • spec:model.planned-architecture.matching-design: A realized component that matches its design gives no row · declared Spec
  • spec:model.planned-architecture.unrealized-design: A component design no anchor satisfies is listed as unrealized · declared Spec
  • spec:model.stable-ids.malformed-refusal: An uppercase namespace is refused with its reason named · declared Spec
  • spec:model.stable-ids.namespaced-round-trip: A namespaced dotted path with a sub-part survives parsing unchanged · declared Spec
  • spec:model.stable-ids.unsectioned-address-refused: A # sub-part without its section is refused with its reason named · declared Spec
  • spec:carrier.markdown-pack-authoring: A Pack has a Markdown manifest carrier · declared Spec
  • spec:decisions.anchor-binding-grain: Bindings are optional, plural, and may reference a design · declared Spec
  • spec:decisions.anchor-comment-form: The comment form is a second anchor representation · declared Spec
  • spec:decisions.architectural-annotation: Architectural significance is annotated where it is realized · declared Spec
  • spec:decisions.binding-not-liveness: Bindings state existence, not liveness · declared Spec
  • spec:decisions.checked-mentions: A Spec id written in prose is a checked mention · declared Spec
  • spec:decisions.content-only-sections: Sections carry content while relations carry links · declared Spec
  • spec:decisions.pack-reified: Packs group review context without becoming truth · declared Spec
  • spec:decisions.planning-truths-placement: Planning truths live in ruled graph homes · declared Spec
  • spec:decisions.point-per-example: Each example binds one point · declared Spec
  • spec:decisions.typing-law: Floor-read sections are closed typed shapes · declared Spec
  • spec:decisions.verification-posture-not-realization: Verification mode states posture, not realization · declared Spec
  • spec:model.open-question-keys: An open question may carry a key that addresses it · declared Spec
  • spec:model.relation-reasons: An authored relation may carry its reason · declared Spec
  • spec:model.rule-keys: A rule or flow entry may carry a key that addresses it · declared Spec
  • spec:model.structural-patterns: Architecturally significant units are annotated where they are realized · declared Spec
  • spec:model.term-addresses: A Model term may carry a key that addresses it · declared Spec
  • component:protocol.model: the authored contracts and stable ids · anchored code · src/model/anchors.ts:100
  • impl:protocol.anchor-extraction: anchor reification seam: the constant form and the comment form · anchored code · src/extract/anchors.ts:121
  • impl:protocol.anchor-model: binding-only anchor model builders · anchored code · src/model/anchors.ts:108
  • impl:protocol.anchors-subpath: zero-dependency subpath exporting the id and anchor builders only · anchored code · src/anchors.ts:8
  • impl:protocol.curation-recipe: asserts the curation report over external inferred imports · anchored code · test/curation-recipes.test.ts:32
  • impl:protocol.pack-aggregate: Pack aggregate and model references · anchored code · src/model/pack.ts:23
  • impl:protocol.pack-design: the Pack design helpers and the Pack context assembly they serve · anchored code · src/reader/reader.ts:499
  • impl:protocol.planned-components-recipe: asserts realization of the shipped planned against realized components recipe · anchored code · test/architecture-recipes.test.ts:16
  • impl:protocol.protocol-bindings: Protocol builder-import trust (protocolBindingScopeFor / collectProtocolBindings) · anchored code · src/extract/protocol-bindings.ts:93
  • impl:protocol.slimming-recipe: asserts realization of the shipped slimming-candidates recipe · anchored code · test/curation-recipes.test.ts:26
  • impl:protocol.spec-descriptors: Spec kind, altitude, and readiness coordinates · anchored code · src/model/descriptors.ts:38
  • impl:protocol.spec-primitive: Spec envelope and enrich-in-place shape · anchored code · src/model/spec.ts:20
  • impl:protocol.spec-relations: declared Spec relation builders · anchored code · src/model/relations.ts:81
  • impl:protocol.spec-sections: typed Spec section shapes · anchored code · src/model/sections.ts:138
  • impl:protocol.stable-ids: stable ID grammar parser · anchored code · src/ids.ts:173
  • impl:protocol.structural-anchors: checks structural anchor validity and disjoint realization and reference targets · anchored code · src/validate/validators.ts:595
  • impl:protocol.verifier-semantics: readiness clauses over direct verification bindings · anchored code · src/validate/readiness-floor.ts:593
  • test:protocol.anchors.lookalike-refusal: the lookalike point verifies that a consumer-local builder mints nothing · anchored test binding · binding present · test/self-hosting-model.test.ts:292
  • test:protocol.anchors.physical-identity: the physical-identity point verifies the resolved relative builder import · anchored test binding · binding present · test/self-hosting-model.test.ts:314
  • test:protocol.core-model: Spec builders and derivation verify independent coordinates and direct realization · anchored test binding · binding present · test/builders.test.ts:44
  • test:protocol.model.planned-architecture.differing-layer-and-uses: test:protocol.model.planned-architecture.differing-layer-and-uses · anchored test binding · binding present · test/self-hosting-corpus-checks.test.ts:367
  • test:protocol.model.planned-architecture.matching-design: test:protocol.model.planned-architecture.matching-design · anchored test binding · binding present · test/self-hosting-corpus-checks.test.ts:374
  • test:protocol.model.planned-architecture.unrealized-design: test:protocol.model.planned-architecture.unrealized-design · anchored test binding · binding present · test/self-hosting-corpus-checks.test.ts:381
  • test:protocol.pack-builder: Pack builder tests verify the truth-free review aggregate · anchored test binding · binding present · test/builders.test.ts:37
  • test:protocol.pack-design: the Pack context carries each member's design and the Pack's boundary · anchored test binding · binding present · test/pack-design.test.ts:18
  • test:protocol.relation-builders: relation builder tests verify the six declared, directed Spec relations · anchored test binding · binding present · test/builders.test.ts:32
  • test:protocol.roadmap-priority: checks Pack priority extraction, comparison and Studio change notes · anchored test binding · binding present · test/roadmap-priority.test.ts:44
  • test:protocol.slimming-recipe: test:protocol.slimming-recipe · anchored test binding · binding present · test/curation-recipes.test.ts:39
  • test:protocol.stable-ids.malformed-refusal: the malformed point verifies the lowercase-namespace refusal · anchored test binding · binding present · test/self-hosting-model.test.ts:112
  • test:protocol.stable-ids.namespaced-round-trip: the round-trip point verifies the namespaced dotted-path grammar · anchored test binding · binding present · test/self-hosting-model.test.ts:86
  • test:protocol.stable-ids.unsectioned-address-refused: the unsectioned point verifies the entry-address section refusal · anchored test binding · binding present · test/self-hosting-model.test.ts:139
  • spec:carrier.markdown-pack-authoring refines spec:model.pack-aggregate · declared
  • spec:decisions.anchor-binding-grain refines spec:model.anchors · declared
  • spec:decisions.anchor-comment-form refines spec:model.anchors · declared
  • spec:decisions.architectural-annotation refines spec:model.anchors · declared
  • spec:decisions.binding-not-liveness refines spec:model.anchors · declared
  • spec:decisions.checked-mentions refines spec:model.stable-ids · declared
  • spec:decisions.content-only-sections refines spec:model.spec-sections · declared
  • spec:decisions.example-realization-posture refines spec:model.core-model · declared
  • spec:decisions.one-primitive refines spec:model.core-model · declared
  • spec:decisions.pack-reified refines spec:model.pack-aggregate · declared
  • spec:decisions.planning-truths-placement refines spec:model.relations · declared
  • spec:decisions.point-per-example refines spec:model.spec-sections · declared
  • spec:decisions.typing-law refines spec:model.spec-sections · declared
  • spec:decisions.verification-posture-not-realization refines spec:model.spec-sections · declared
  • spec:model.anchors refines spec:model.core-model · declared
  • spec:model.anchors.lookalike-refusal refines spec:model.anchors · declared
  • spec:model.anchors.lookalike-refusal verifies spec:model.anchors · declared
  • spec:model.anchors.physical-identity refines spec:model.anchors · declared
  • spec:model.anchors.physical-identity verifies spec:model.anchors · declared
  • spec:model.design-maturity refines spec:model.core-model · declared
  • spec:model.enrichment-lifecycle refines spec:model.core-model · declared
  • spec:model.open-question-keys refines spec:model.spec-sections · declared
  • spec:model.pack-aggregate refines spec:model.core-model · declared
  • spec:model.planned-architecture refines spec:model.core-model · declared — planned components enrich Specs before code binds them
  • spec:model.planned-architecture.differing-layer-and-uses refines spec:model.planned-architecture · declared
  • spec:model.planned-architecture.differing-layer-and-uses verifies spec:model.planned-architecture · declared
  • spec:model.planned-architecture.matching-design refines spec:model.planned-architecture · declared
  • spec:model.planned-architecture.matching-design verifies spec:model.planned-architecture · declared
  • spec:model.planned-architecture.unrealized-design refines spec:model.planned-architecture · declared
  • spec:model.planned-architecture.unrealized-design verifies spec:model.planned-architecture · declared
  • spec:model.relation-reasons refines spec:model.relations · declared
  • spec:model.relations refines spec:model.core-model · declared
  • spec:model.rule-keys refines spec:model.spec-sections · declared
  • spec:model.spec-sections refines spec:model.core-model · declared
  • spec:model.stable-ids refines spec:model.core-model · declared
  • spec:model.stable-ids.malformed-refusal refines spec:model.stable-ids · declared
  • spec:model.stable-ids.malformed-refusal verifies spec:model.stable-ids · declared
  • spec:model.stable-ids.namespaced-round-trip refines spec:model.stable-ids · declared
  • spec:model.stable-ids.namespaced-round-trip verifies spec:model.stable-ids · declared
  • spec:model.stable-ids.unsectioned-address-refused refines spec:model.stable-ids · declared
  • spec:model.stable-ids.unsectioned-address-refused verifies spec:model.stable-ids · declared
  • spec:model.structural-patterns refines spec:model.anchors · declared
  • spec:model.term-addresses refines spec:model.spec-sections · declared — extends entry addresses to the terms a Model section defines
  • component:protocol.model satisfies spec:model.core-model · anchored
  • impl:protocol.anchor-extraction satisfies spec:model.anchors · anchored
  • impl:protocol.anchor-model satisfies spec:model.anchors · anchored
  • impl:protocol.anchors-subpath satisfies spec:model.anchors · anchored
  • impl:protocol.curation-recipe references spec:model.planned-architecture · anchored
  • impl:protocol.pack-aggregate satisfies spec:model.pack-aggregate · anchored
  • impl:protocol.pack-design satisfies spec:model.design-maturity · anchored
  • impl:protocol.planned-components-recipe satisfies spec:model.planned-architecture · anchored
  • impl:protocol.protocol-bindings satisfies spec:model.anchors · anchored
  • impl:protocol.slimming-recipe satisfies spec:model.enrichment-lifecycle · anchored
  • impl:protocol.spec-descriptors satisfies spec:model.core-model · anchored
  • impl:protocol.spec-primitive satisfies spec:model.core-model · anchored
  • impl:protocol.spec-relations satisfies spec:model.relations · anchored
  • impl:protocol.spec-sections satisfies spec:model.spec-sections · anchored
  • impl:protocol.stable-ids satisfies spec:model.stable-ids · anchored
  • impl:protocol.structural-anchors satisfies spec:model.anchors · anchored
  • impl:protocol.verifier-semantics satisfies spec:model.spec-sections · anchored
  • test:protocol.anchors.lookalike-refusal verifies spec:model.anchors.lookalike-refusal · anchored
  • test:protocol.anchors.physical-identity verifies spec:model.anchors.physical-identity · anchored
  • test:protocol.core-model verifies spec:model.core-model · anchored
  • test:protocol.model.planned-architecture.differing-layer-and-uses verifies spec:model.planned-architecture.differing-layer-and-uses · anchored
  • test:protocol.model.planned-architecture.matching-design verifies spec:model.planned-architecture.matching-design · anchored
  • test:protocol.model.planned-architecture.unrealized-design verifies spec:model.planned-architecture.unrealized-design · anchored
  • test:protocol.pack-builder verifies spec:model.pack-aggregate · anchored
  • test:protocol.pack-design verifies spec:model.design-maturity · anchored
  • test:protocol.relation-builders verifies spec:model.relations · anchored
  • test:protocol.roadmap-priority verifies spec:model.pack-aggregate · anchored
  • test:protocol.slimming-recipe verifies spec:model.enrichment-lifecycle · anchored
  • test:protocol.stable-ids.malformed-refusal verifies spec:model.stable-ids.malformed-refusal · anchored
  • test:protocol.stable-ids.namespaced-round-trip verifies spec:model.stable-ids.namespaced-round-trip · anchored
  • test:protocol.stable-ids.unsectioned-address-refused verifies spec:model.stable-ids.unsectioned-address-refused · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

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

Decisions

Runtime
  • component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol

    Uses

    None.

  • impl:protocol.spec-descriptors · Spec kind, altitude, and readiness coordinates · src/model/descriptors.ts:38

    Component: component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol

    Uses

    None.

  • impl:protocol.spec-primitive · Spec envelope and enrich-in-place shape · src/model/spec.ts:20

    Component: component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol

    Uses

    None.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:model.core-model
The diagram as text
  • spec:decisions.example-realization-posture: Example realization stays evidence, not backlog work
  • spec:decisions.one-primitive: One Spec carries named delivery coordinates
  • spec:model.anchors: Source anchors bind code without carrying intent
  • spec:model.core-model: The Protocol models delivery with one enrichable Spec
  • spec:model.design-maturity: What a Spec's design carries is derived, beside its readiness
  • spec:model.enrichment-lifecycle: Enrichment keeps one Spec while its detail changes
  • spec:model.pack-aggregate: A Pack is a truth-free review aggregate
  • spec:model.planned-architecture: Components are designed ahead of their code
  • spec:model.relations: Specs declare typed directed relations
  • spec:model.spec-sections: Spec sections carry typed detail and direct verifier semantics
  • spec:model.stable-ids: Stable IDs are the Protocol's durable join key
  • spec:observation.runtime-overlay: Runtime observations can close the liveness loop
  • spec:protocol.self-hosting: The Protocol authors and validates itself
  • spec:validation.readiness-floor: Stated readiness must clear its floor
  • spec:model.core-model decidedBy spec:decisions.example-realization-posture · declared
  • spec:model.core-model decidedBy spec:decisions.one-primitive · declared
  • spec:observation.runtime-overlay dependsOn spec:model.core-model · declared
  • spec:protocol.self-hosting dependsOn spec:model.core-model · declared — the self-hosted corpus is authored as Specs on the Protocol's core model
  • spec:validation.readiness-floor dependsOn spec:model.core-model · declared — the floor reads the Protocol descriptor model
  • spec:decisions.example-realization-posture refines spec:model.core-model · declared
  • spec:decisions.one-primitive refines spec:model.core-model · declared
  • spec:model.anchors refines spec:model.core-model · declared
  • spec:model.design-maturity refines spec:model.core-model · declared
  • spec:model.enrichment-lifecycle refines spec:model.core-model · declared
  • spec:model.pack-aggregate refines spec:model.core-model · declared
  • spec:model.planned-architecture refines spec:model.core-model · declared — planned components enrich Specs before code binds them
  • spec:model.relations refines spec:model.core-model · declared
  • spec:model.spec-sections refines spec:model.core-model · declared
  • spec:model.stable-ids refines spec:model.core-model · declared
Mermaid source

Copyable source; the Studio draws static SVG.

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

Rests on

Rested on by

Distance 1

Distance 2

Distance 3

Distance 4

Distance 5

Distance 6

Distance 7

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingExample realization stays evidence, not backlog work
spec:decisions.example-realization-posture · resolves
declaredNoneNone
decidedBy · outgoingOne Spec carries named delivery coordinates
spec:decisions.one-primitive · resolves
declaredNoneNone
dependsOn · incomingRuntime observations can close the liveness loop
spec:observation.runtime-overlay · resolves
declaredNoneNone
dependsOn · incomingThe Protocol authors and validates itself
spec:protocol.self-hosting · resolves
declaredthe self-hosted corpus is authored as Specs on the Protocol's core modelNone
dependsOn · incomingStated readiness must clear its floor
spec:validation.readiness-floor · resolves
declaredthe floor reads the Protocol descriptor modelNone
refines · incomingExample realization stays evidence, not backlog work
spec:decisions.example-realization-posture · resolves
declaredNoneNone
refines · incomingOne Spec carries named delivery coordinates
spec:decisions.one-primitive · resolves
declaredNoneNone
refines · incomingSource anchors bind code without carrying intent
spec:model.anchors · resolves
declaredNoneNone
refines · incomingWhat a Spec's design carries is derived, beside its readiness
spec:model.design-maturity · resolves
declaredNoneNone
refines · incomingEnrichment keeps one Spec while its detail changes
spec:model.enrichment-lifecycle · resolves
declaredNoneNone
refines · incomingA Pack is a truth-free review aggregate
spec:model.pack-aggregate · resolves
declaredNoneNone
refines · incomingComponents are designed ahead of their code
spec:model.planned-architecture · resolves
declaredplanned components enrich Specs before code binds themNone
refines · incomingSpecs declare typed directed relations
spec:model.relations · resolves
declaredNoneNone
refines · incomingSpec sections carry typed detail and direct verifier semantics
spec:model.spec-sections · resolves
declaredNoneNone
refines · incomingStable IDs are the Protocol's durable join key
spec:model.stable-ids · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · role contract · layer domain · context protocol
  • impl:protocol.spec-descriptors · Spec kind, altitude, and readiness coordinates · src/model/descriptors.ts:38 · role contract · component component:protocol.model · layer domain · context protocol
  • impl:protocol.spec-primitive · Spec envelope and enrich-in-place shape · src/model/spec.ts:20 · role contract · component component:protocol.model · layer domain · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.core-model · Spec builders and derivation verify independent coordinates and direct realization · anchored · test/builders.test.ts:44 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

Composing (0)

Composing needs the script.