Spec Studio

Design iteration

pack:design-iteration-v1specs/design-iteration.pack.sdp.md

Read this Pack as one design

Download this Pack as one file

Where the design stands

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

Maturity map

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

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

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

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

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

Framing

This Pack groups the contracts used to iterate on a design through the graph, in review order. Its members cover concise recipe answers; rule keys, question fields and relation reasons; comparison between design passes; context bundles, perspectives and change proposals. The final members cover when implemented design detail may leave a Spec and how file-level imports inform anchor curation, drawing on lessons from the Protocol's predecessor, @libar-dev/architect.

Changed since the base

Compared with the base graph base da4b141. Read the diff.

Base input: schema 0.11.0, 405 Specs.

Changed members

Diagnostics

  • {
      "part": "schemaVersion",
      "base": "0.11.0",
      "head": "0.12.0"
    }

Members

1. Recipe answers fit an agent's context and explain their missesbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.agent-surface.answer-shapes

Design

10 design entries · 2 pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.answer-shape-recipes · asserts realization of the catalog's compact and detailed answers · test/recipes.test.ts:6214

Design reference: present

  • impl:protocol.authoring-grammar-recipes · asserts the authoring grammar's realization in docs/agent-surface/recipes.md · test/recipes.test.ts:6597
  • impl:protocol.reader · typed graph queries, entry adapters and context joins · src/reader/reader.ts:687 · role reader · component component:protocol.reader · layer application · context protocol

Verifier binding: present

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

2. A rule or flow entry may carry a key that addresses itrule · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:model.rule-keys

Design

10 design entries · 6 pinned declarations

Decisions

Open questions

None.

Implementation binding: present

  • impl:protocol.authoring-grammar-recipes · asserts the authoring grammar's realization in docs/agent-surface/recipes.md · test/recipes.test.ts:6597
  • impl:protocol.authoring-normalization · normalizes rule markers and question fields after carrier reification · src/extract/authoring-normalization.ts:8 · role codec · component component:protocol.extract · layer application · context protocol
  • impl:protocol.rule-exercises · checks the keys named by declared verifies relations · src/validate/validators.ts:1479 · role validator · component component:protocol.validate · layer domain · context protocol

Design reference: none

Verifier binding: present

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

3. An open question may name who decides it, its links, a provisional reading and a re-entry triggerrule · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:model.open-question-fields

Design

7 design entries · 1 pinned declaration

Decisions

Open questions

None.

Implementation binding: present

  • impl:protocol.authoring-grammar-recipes · asserts the authoring grammar's realization in docs/agent-surface/recipes.md · test/recipes.test.ts:6597
  • impl:protocol.authoring-normalization · normalizes rule markers and question fields after carrier reification · src/extract/authoring-normalization.ts:8 · role codec · component component:protocol.extract · layer application · context protocol

Design reference: none

Verifier binding: present

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

4. An authored relation may carry its reasonrule · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:model.relation-reasons

Design

5 design entries · no pinned declarations

Decisions

Open questions

None.

Implementation binding: present

  • impl:protocol.authoring-grammar-recipes · asserts the authoring grammar's realization in docs/agent-surface/recipes.md · test/recipes.test.ts:6597
  • impl:protocol.authoring-normalization · normalizes rule markers and question fields after carrier reification · src/extract/authoring-normalization.ts:8 · role codec · component component:protocol.extract · layer application · context protocol

Design reference: none

Verifier binding: present

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

5. Designs are compared between a base commit and the working tree at entry grainbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.design-diff

Design

8 design entries · 4 pinned declarations

Decisions

Open questions

None.

Implementation binding: present

  • impl:protocol.design-diff-recipe · realizes the design diff in the shipped recipe catalog · test/iteration-recipes.test.ts:27 · role projection

Design reference: none

Verifier binding: present

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

6. A context bundle is composed per invocation within a stated budgetbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.context-bundle

Design

17 design entries · 7 pinned declarations

Decisions

Open questions

None.

Implementation binding: present

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

Design reference: none

Verifier binding: present

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

7. A Pack is read from a named perspectivebehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.review-perspectives

Design

4 design entries · 1 pinned declaration

Open questions

None.

Implementation binding: present

  • impl:protocol.perspective-filter-recipe · realizes the perspective filter in the shipped recipe catalog · test/iteration-recipes.test.ts:753 · role projection

Design reference: none

Verifier binding: present

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

8. A change proposal is addressed, based and checked before it landscontract · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.intent-composition.proposal

Design

7 design entries · 2 pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.proposal-schema-and-recipe · realizes the shipped proposal schema and proposal check in the recipe catalog · test/iteration-recipes.test.ts:1510 · role contract
  • impl:protocol.studio-proposal-contract · browser proposal shape and schema checks · src/studio-elements/proposal.ts:1 · role contract · component component:protocol.studio-elements · layer edge · context protocol

Design reference: none

Verifier binding: present

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

9. Enrichment keeps one Spec while its detail changesmodel · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:model.enrichment-lifecycle

Design

2 design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.slimming-recipe · asserts realization of the shipped slimming-candidates recipe · test/curation-recipes.test.ts:26

Design reference: none

Verifier binding: present

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

10. File-level imports show where curation is missingbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.impact-graph.curation-assist

Design

7 design entries · 4 pinned declarations

Decisions

Open questions

None.

Implementation binding: present

  • impl:protocol.build-imports · opt-in imports publication in the build command · src/cli/build-command.ts:243 · role publisher · component component:protocol.cli · layer edge · context protocol
  • impl:protocol.curation-recipe · asserts the curation report over external inferred imports · test/curation-recipes.test.ts:32
  • impl:protocol.typescript-imports · TypeScript file imports and barrel reach for external curation input · src/adapters/typescript-imports.ts:7 · role adapter · component component:protocol.adapters · layer adapter · context protocol

Design reference: none

Verifier binding: present

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

11. Mechanical code structure stays inferred and apart from curated intentbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present

spec:consumers.impact-graph

Design

No design entries · no pinned declarations

Open questions

None.

Implementation binding: present

  • impl:protocol.typescript-imports · TypeScript file imports and barrel reach for external curation input · src/adapters/typescript-imports.ts:7 · role adapter · component component:protocol.adapters · layer adapter · context protocol

Design reference: none

Verifier binding: present

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

Boundary

Rests on (26)
SpecStated rungImplementation bindingJoined members
Agents script a visible typed graph
spec:consumers.agent-surface
readypresentrefines: spec:consumers.agent-surface.answer-shapes, spec:consumers.context-bundle
Address resolution and dependency cycles stay executable graph recipes
spec:consumers.agent-surface.address-and-cycle-recipes
readypresentdependsOn: spec:consumers.intent-composition.proposal
Design work reads its answers from catalog recipes
spec:consumers.agent-surface.design-recipes
readypresentdependsOn: spec:consumers.agent-surface.answer-shapes, spec:consumers.context-bundle
The evaluation sink runs one body and prints its return
spec:consumers.agent-surface.evaluation-sink
readypresentdependsOn: spec:consumers.agent-surface.answer-shapes
Recipes take parameters as data and ship as runnable files
spec:consumers.agent-surface.recipe-parameters
readypresentdependsOn: spec:consumers.design-diff
Views compose scoped intent instead of patching canonical source
spec:consumers.edit-model
readynonedependsOn: spec:consumers.intent-composition.proposal
Composed intent hands off on one proposal shape
spec:consumers.intent-composition
readynonerefines: spec:consumers.intent-composition.proposal
The Pack context carries the Pack's design
spec:consumers.pack-design
readypresentdependsOn: spec:consumers.review-perspectives
Projections fan out from one graph without becoming truth stores
spec:consumers.projections-model
readypresentrefines: spec:consumers.design-diff, spec:consumers.review-perspectives, spec:consumers.impact-graph
Delivery nouns remain familiar without workflow gates
spec:decisions.adopt-the-nouns
readynonedecidedBy: spec:model.open-question-fields
The agent front door is one evaluation sink over the exported reader
spec:decisions.agent-front-door
readynonedecidedBy: spec:consumers.context-bundle
Architectural significance is annotated where it is realized
spec:decisions.architectural-annotation
readynonedecidedBy: spec:consumers.impact-graph.curation-assist
A Spec id written in prose is a checked mention
spec:decisions.checked-mentions
readynonedecidedBy: spec:model.rule-keys
Planning truths live in ruled graph homes
spec:decisions.planning-truths-placement
readynonedecidedBy: spec:model.open-question-fields
Prose belongs to typed graph owners
spec:decisions.prose-ownership
readynonedecidedBy: spec:model.relation-reasons
A roadmap states advisory priority in the graph
spec:decisions.roadmap-priority
readynonedecidedBy: spec:consumers.design-diff
The shipped projections stay frozen
spec:decisions.shipped-projections-frozen
readynonedecidedBy: spec:model.rule-keys
Pinned declarations give an adopter a derived module to typecheck
spec:extraction.contract-declarations
readypresentdependsOn: spec:model.enrichment-lifecycle
Carrier reification derives the one graph
spec:extraction.derive-graph
readypresentdependsOn: spec:consumers.impact-graph
Committed source derives byte-identical output
spec:extraction.determinism
readypresentconstrainedBy: spec:consumers.design-diff
The graph records where each addressable entry is written
spec:extraction.entry-locations
readypresentdependsOn: spec:model.rule-keys, spec:model.open-question-fields
The Protocol models delivery with one enrichable Spec
spec:model.core-model
readypresentrefines: spec:model.enrichment-lifecycle
An open question may carry a key that addresses it
spec:model.open-question-keys
readypresentrefines: spec:model.open-question-fields
dependsOn: spec:model.rule-keys
Components are designed ahead of their code
spec:model.planned-architecture
readypresentdependsOn: spec:consumers.impact-graph.curation-assist
Specs declare typed directed relations
spec:model.relations
readypresentrefines: spec:model.relation-reasons
Spec sections carry typed detail and direct verifier semantics
spec:model.spec-sections
readypresentrefines: spec:model.rule-keys
Rested on by (33)
SpecStated rungImplementation bindingJoined members
The Markdown envelope is explicit and bounded
spec:carrier.envelope-contract
readypresentdependsOn: spec:model.rule-keys, spec:model.relation-reasons
Gherkin authoring enters the one graph
spec:carrier.gherkin-authoring
readypresentdependsOn: spec:model.rule-keys
The Markdown body accepts one closed form per section
spec:carrier.markdown-body-grammar
readypresentdependsOn: spec:model.rule-keys, spec:model.open-question-fields
Every prose value has one typed owner
spec:carrier.prose-ownership-rule
readypresentdependsOn: spec:model.open-question-fields, spec:model.relation-reasons
Address resolution and dependency cycles stay executable graph recipes
spec:consumers.agent-surface.address-and-cycle-recipes
readypresentdependsOn: spec:model.rule-keys
Register questions stay executable graph recipes
spec:consumers.agent-surface.register-recipes
readypresentdependsOn: spec:model.rule-keys, spec:model.open-question-fields, spec:model.relation-reasons
Authors move one Spec from intent to reviewed evidence
spec:consumers.authoring-on-ramp
readypresentdependsOn: spec:model.rule-keys, spec:model.open-question-fields, spec:model.relation-reasons
A member larger than the budget is named, and no part is returned
spec:consumers.context-bundle.oversized-member-named
readynonerefines: spec:consumers.context-bundle
A Pack too large for one bundle reads whole in parts
spec:consumers.context-bundle.parts-cover-the-pack
readynonerefines: spec:consumers.context-bundle
Delivery sessions route work from current graph state
spec:consumers.delivery-session-on-ramp
readypresentdependsOn: spec:consumers.design-diff, spec:consumers.context-bundle, spec:consumers.review-perspectives, spec:consumers.intent-composition.proposal, spec:model.enrichment-lifecycle
A slice reads a Pack as one design, with the architecture it touches and what each member needs next
spec:consumers.design-slice
readypresentdependsOn: spec:model.rule-keys, spec:model.open-question-fields, spec:consumers.context-bundle, spec:consumers.review-perspectives
The next body of work is planned from the graph, not from a prose index
spec:consumers.graph-first-planning
readypresentdependsOn: spec:model.open-question-fields
Exhaustive symbol reach waits for a language-neutral identity
spec:consumers.impact-graph.symbol-reach
ideanonerefines: spec:consumers.impact-graph
Recipe 49 renders a change proposal as the Markdown memo a person reviews
spec:consumers.intent-composition.proposal.memo
readypresentrefines: spec:consumers.intent-composition.proposal
A design pass is followed and answered from the vault
spec:consumers.obsidian-vault.iteration
readypresentdependsOn: spec:consumers.intent-composition.proposal
The Pack context carries the Pack's design
spec:consumers.pack-design
readypresentdependsOn: spec:model.open-question-fields
The readiness planner orders the statements a person can make
spec:consumers.readiness-planner
readypresentdependsOn: spec:model.open-question-fields
A roadmap orders the next bodies of work, and the graph says what each still needs
spec:consumers.roadmap
readypresentdependsOn: spec:model.open-question-fields
The Studio reads two named inputs beside the graph, a base graph and run records
spec:consumers.spec-studio.data.inputs
readypresentdependsOn: spec:consumers.design-diff
The diff page shows what changed in the design since a base graph
spec:consumers.spec-studio.diff-page
readypresentdependsOn: spec:consumers.design-diff
A composing panel on every page gathers scoped intent for an agent
spec:consumers.spec-studio.intent-panel
readypresentdependsOn: spec:consumers.intent-composition.proposal
The tests lens shows how far each Spec's verification reaches
spec:consumers.spec-studio.lenses.tests
readypresentdependsOn: spec:model.rule-keys
A Pack page shows the Pack's design as one card per member
spec:consumers.spec-studio.pack-page
readypresentdependsOn: spec:model.open-question-fields
A slice page shows a Pack's design as one whole
spec:consumers.spec-studio.slice-page
readypresentdependsOn: spec:model.open-question-fields
A Spec page shows one Spec in collapsible panels, in a fixed order
spec:consumers.spec-studio.spec-page
readypresentdependsOn: spec:model.rule-keys, spec:model.open-question-fields, spec:model.relation-reasons
A Spec page's core shows the whole Spec, with an anchor for every entry
spec:consumers.spec-studio.spec-page.core
readypresentdependsOn: spec:model.rule-keys, spec:model.open-question-fields, spec:model.relation-reasons
The panels for examples, targets, verifiers and evidence
spec:consumers.spec-studio.verification-panels
readypresentdependsOn: spec:model.rule-keys
Capability adoption counts where each capability is used and where it could apply
spec:consumers.upgrade-kit.capability-adoption
readypresentdependsOn: spec:model.rule-keys, spec:model.open-question-fields, spec:model.relation-reasons, spec:consumers.review-perspectives
The rule-key proposal keys every unkeyed rule as a change proposal
spec:consumers.upgrade-kit.rule-key-proposal
readypresentdependsOn: spec:model.rule-keys, spec:consumers.intent-composition.proposal
A TypeScript question list that cannot be read drops whole with a warning
spec:model.open-question-fields.dropped-list-warns
readynonerefines: spec:model.open-question-fields
A Model term may carry a key that addresses it
spec:model.term-addresses
readypresentdependsOn: spec:model.rule-keys
The Protocol reads its next work from its roadmap and keeps its delivery record in git and its pull requests
spec:protocol.roadmap-replaces-plans
readypresentdependsOn: spec:consumers.intent-composition.proposal
Every Spec id written in prose resolves
spec:validation.prose-mentions
readypresentdependsOn: spec:model.open-question-fields
Verified by (3)
SpecStated rungImplementation bindingJoined members
A member larger than the budget is named, and no part is returned
spec:consumers.context-bundle.oversized-member-named
readynoneverifies: spec:consumers.context-bundle
A Pack too large for one bundle reads whole in parts
spec:consumers.context-bundle.parts-cover-the-pack
readynoneverifies: spec:consumers.context-bundle
A TypeScript question list that cannot be read drops whole with a warning
spec:model.open-question-fields.dropped-list-warns
readynoneverifies: spec:model.open-question-fields
Superseded by (0)

None.

Members with no verifier binding

The graph records bindings and never runs. Decision records are left out: a decision never needs a verifier binding. The runs page, the tests lens and the Spec pages of the Specs their files verify show the run records as external evidence from test files.

None.

Findings

None.

Composing (0)

Composing needs the script.