Spec Studio

Design slice: Obsidian vault

pack:obsidian-vault-v1

Read the Pack member by member

The design as a whole

  • 23 members; 16 example members counted in their parents.
  • 26 relations among members; deepest depth 4; 0 cycles.
  • 0 members held below their stated next rung; 0 waiting only for their author.
  • 18 outside Specs the slice rests on; 0 hold a member; 12 outside Specs rest on it.
  • 9 components touched: 6 through members' code, 8 through what the slice rests on, 0 named by member designs; 3 outside components shown for context.
  • 0 member component designs; 0 realized; 0 of those match.
  • 3 decisions in scope; 0 state below ready.
  • 0 open questions; 0 blocking.

Members read with the ones others rest on first. The columns count the design each member carries beside its rung; they never judge whether it is enough. This page records no review and approves nothing.

How the members rest on each other

Declared relations by depth

Depths are structural, never phases, dates or priority. Dashed relations order nothing. The text keeps every member and original relation.

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

The diagram as text
  • spec:consumers.obsidian-vault: An Obsidian vault lets a person iterate on designs from the one graph, depth 2, stated ready, floor ready
  • spec:decisions.vault-owned-folder: The vault's generator owns one folder and synchronizes it, depth 1, stated ready, floor ready
  • spec:consumers.obsidian-vault.fresh-vault: A fresh vault is written the same way twice and every link resolves, depth 3, stated ready, floor ready; example folded into spec:consumers.obsidian-vault
  • spec:consumers.obsidian-vault.person-notes-survive: A regeneration removes a note that left the graph and keeps a person's notes, depth 3, stated ready, floor ready; example folded into spec:consumers.obsidian-vault
  • spec:consumers.obsidian-vault.unknown-note-refused: A note a person wrote inside the generated folder refuses the regeneration, depth 3, stated ready, floor ready; example folded into spec:consumers.obsidian-vault
  • spec:consumers.obsidian-vault.changed-note-refused: A generated note a person changed refuses the regeneration and keeps the edit, depth 3, stated ready, floor ready; example folded into spec:consumers.obsidian-vault
  • spec:consumers.obsidian-vault.hidden-file-refused: A person's file under a temporary's name refuses the regeneration, depth 3, stated ready, floor ready; example folded into spec:consumers.obsidian-vault
  • spec:consumers.obsidian-vault.vault-in-build-path-refused: A vault directory the build removes refuses the run and keeps a person's notes, depth 3, stated ready, floor ready; example folded into spec:consumers.obsidian-vault
  • spec:consumers.obsidian-vault.interrupted-run-recovered: A run after a stopped synchronization finishes it, depth 3, stated ready, floor ready; example folded into spec:consumers.obsidian-vault
  • spec:consumers.obsidian-vault.failed-extraction-keeps-notes: A failed extraction keeps the notes and says so on the index, depth 3, stated ready, floor ready; example folded into spec:consumers.obsidian-vault
  • spec:consumers.obsidian-vault.failed-extraction-recovered: The run after a failed extraction passes the guard and restores the index, depth 3, stated ready, floor ready; example folded into spec:consumers.obsidian-vault
  • spec:consumers.obsidian-vault.notes: Every Spec, Pack, code unit and keyed term is a note, and every relation is a link, depth 3, stated ready, floor ready
  • spec:consumers.obsidian-vault.notes.entry-address-link: An entry address in prose opens the entry's block in its Spec's note, depth 4, stated ready, floor ready; example folded into spec:consumers.obsidian-vault.notes
  • spec:consumers.obsidian-vault.notes.unresolved-mention-stays: A mention of an entry that does not exist stays as written, depth 4, stated ready, floor ready; example folded into spec:consumers.obsidian-vault.notes
  • spec:consumers.obsidian-vault.notes.term-address-link: A keyed Model term gets a note, and its address in prose opens the term's block, depth 4, stated ready, floor ready; example folded into spec:consumers.obsidian-vault.notes
  • spec:consumers.obsidian-vault.notes.case-collision-refused: Two Specs whose notes differ only in case refuse the run, depth 4, stated ready, floor ready; example folded into spec:consumers.obsidian-vault.notes
  • spec:consumers.obsidian-vault.bases: A Pack's members and the standing queries are tables over the reader's values, depth 3, stated ready, floor ready
  • spec:consumers.obsidian-vault.bases.views-match-sources: Each standing view selects what its source selects, depth 4, stated ready, floor ready; example folded into spec:consumers.obsidian-vault.bases
  • spec:consumers.obsidian-vault.iteration: A design pass is followed and answered from the vault, depth 3, stated ready, floor ready
  • spec:consumers.obsidian-vault.iteration.watch-rewrites-changed-notes: A carrier edit under watch rewrites only the notes it changes, depth 4, stated ready, floor ready; example folded into spec:consumers.obsidian-vault.iteration
  • spec:consumers.obsidian-vault.iteration.watch-source-anchor: An anchor added in a source file under watch rewrites the Spec's note, depth 4, stated ready, floor ready; example folded into spec:consumers.obsidian-vault.iteration
  • spec:consumers.vault-on-ramp: The vault skill teaches agents to keep an Obsidian vault of the graph, depth 4, stated ready, floor ready
  • spec:model.term-addresses: A Model term may carry a key that addresses it, depth 1, stated ready, floor ready
  • Outside this scope: spec:consumers.binding-language-views: Views speak binding language, never the internal fact name, stated ready, floor ready
  • Outside this scope: spec:consumers.edit-model: Views compose scoped intent instead of patching canonical source, stated ready, floor ready
  • Outside this scope: spec:consumers.intent-composition: Composed intent hands off on one proposal shape, stated ready, floor ready
  • Outside this scope: spec:consumers.intent-composition.proposal: A change proposal is addressed, based and checked before it lands, stated ready, floor ready
  • Outside this scope: spec:consumers.pack-design: The Pack context carries the Pack's design, stated ready, floor ready
  • Outside this scope: spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores, stated ready, floor ready
  • Outside this scope: spec:consumers.reader: The reader bridges agent entry points to composable graph context, stated ready, floor ready
  • Outside this scope: spec:consumers.reading-on-ramp: The reading skill teaches agents to query the graph, stated ready, floor ready
  • Outside this scope: spec:consumers.validate-watch: Validation re-runs while an author edits carriers, stated ready, floor ready
  • Outside this scope: spec:consumers.wholesale-view-rewrite: Every view run rewrites the view wholesale, stated ready, floor ready
  • Outside this scope: spec:decisions.checked-mentions: A Spec id written in prose is a checked mention, stated ready, floor ready
  • Outside this scope: spec:decisions.shipped-projections-frozen: The shipped projections stay frozen, stated ready, floor ready
  • Outside this scope: spec:extraction.determinism: Committed source derives byte-identical output, stated ready, floor ready
  • Outside this scope: spec:extraction.entry-locations: The graph records where each addressable entry is written, stated ready, floor ready
  • Outside this scope: spec:model.rule-keys: A rule or flow entry may carry a key that addresses it, stated ready, floor ready
  • Outside this scope: spec:model.spec-sections: Spec sections carry typed detail and direct verifier semantics, stated ready, floor ready
  • Outside this scope: spec:model.stable-ids: Stable IDs are the Protocol's durable join key, stated ready, floor ready
  • Outside this scope: spec:validation.prose-mentions: Every Spec id written in prose resolves, stated ready, floor ready
  • spec:consumers.obsidian-vault decidedBy spec:decisions.vault-owned-folder · declared — the generator owns one folder of the vault and synchronizes it instead of rewriting a root
  • spec:consumers.obsidian-vault.bases refines spec:consumers.obsidian-vault · declared
  • spec:consumers.obsidian-vault.bases.views-match-sources refines spec:consumers.obsidian-vault.bases · declared
  • spec:consumers.obsidian-vault.changed-note-refused refines spec:consumers.obsidian-vault · declared
  • spec:consumers.obsidian-vault.failed-extraction-keeps-notes refines spec:consumers.obsidian-vault · declared
  • spec:consumers.obsidian-vault.failed-extraction-recovered refines spec:consumers.obsidian-vault · declared
  • spec:consumers.obsidian-vault.fresh-vault refines spec:consumers.obsidian-vault · declared
  • spec:consumers.obsidian-vault.hidden-file-refused refines spec:consumers.obsidian-vault · declared
  • spec:consumers.obsidian-vault.interrupted-run-recovered refines spec:consumers.obsidian-vault · declared
  • spec:consumers.obsidian-vault.iteration refines spec:consumers.obsidian-vault · declared
  • spec:consumers.obsidian-vault.iteration.watch-rewrites-changed-notes refines spec:consumers.obsidian-vault.iteration · declared
  • spec:consumers.obsidian-vault.iteration.watch-source-anchor refines spec:consumers.obsidian-vault.iteration · declared
  • spec:consumers.obsidian-vault.notes dependsOn spec:model.term-addresses · declared — a term note exists for a Model term that carries a key and so an address
  • spec:consumers.obsidian-vault.notes refines spec:consumers.obsidian-vault · declared
  • spec:consumers.obsidian-vault.notes.case-collision-refused refines spec:consumers.obsidian-vault.notes · declared
  • spec:consumers.obsidian-vault.notes.entry-address-link refines spec:consumers.obsidian-vault.notes · declared
  • spec:consumers.obsidian-vault.notes.term-address-link refines spec:consumers.obsidian-vault.notes · declared
  • spec:consumers.obsidian-vault.notes.unresolved-mention-stays refines spec:consumers.obsidian-vault.notes · declared
  • spec:consumers.obsidian-vault.person-notes-survive refines spec:consumers.obsidian-vault · declared
  • spec:consumers.obsidian-vault.unknown-note-refused refines spec:consumers.obsidian-vault · declared
  • spec:consumers.obsidian-vault.vault-in-build-path-refused refines spec:consumers.obsidian-vault · declared
  • spec:consumers.vault-on-ramp decidedBy spec:decisions.vault-owned-folder · declared — the skill keeps a person's notes outside the one folder the command owns
  • spec:consumers.vault-on-ramp dependsOn spec:consumers.obsidian-vault · declared — the skill teaches the verb, where the vault may lie and the guard's refusals
  • spec:consumers.vault-on-ramp dependsOn spec:consumers.obsidian-vault.iteration · declared — the skill teaches the watch and the intent notes a design pass is answered in
  • spec:consumers.vault-on-ramp dependsOn spec:consumers.obsidian-vault.notes · declared — the skill converts a note name or block id back to the id or entry address it names
  • spec:decisions.vault-owned-folder refines spec:consumers.obsidian-vault · declared, orders nothing — settles which files the vault's generator owns and how it regenerates them
  • spec:consumers.obsidian-vault.notes dependsOn spec:consumers.binding-language-views · declared — rendered binding labels must state existence rather than liveness
  • spec:consumers.obsidian-vault.iteration dependsOn spec:consumers.edit-model · declared — the vault composes intent and never patches a carrier
  • spec:consumers.vault-on-ramp dependsOn spec:consumers.intent-composition · declared — intent written in the vault is applied through a checked change proposal
  • spec:consumers.obsidian-vault.iteration dependsOn spec:consumers.intent-composition.proposal · declared — intent composed in the vault hands off on the one proposal contract
  • spec:consumers.obsidian-vault.bases dependsOn spec:consumers.pack-design · declared — a Pack's Base shows the members, rungs and design columns the Pack design assembles
  • spec:consumers.obsidian-vault refines spec:consumers.projections-model · declared — a projection for a person who iterates on designs in a notes app
  • spec:consumers.obsidian-vault dependsOn spec:consumers.reader · declared — the generator reads the graph through the reader's joined values
  • spec:consumers.vault-on-ramp refines spec:consumers.reading-on-ramp · declared — a vault note is a person's reading of the one graph, and the skill turns what the person writes beside it into checked edits
  • spec:consumers.obsidian-vault.iteration dependsOn spec:consumers.validate-watch · declared — the vault's watch runs the same loop over carriers and anchored source files
  • spec:consumers.obsidian-vault dependsOn spec:consumers.wholesale-view-rewrite · declared — the shared build's invalidation removes the five projection roots and never the vault
  • spec:model.term-addresses decidedBy spec:decisions.checked-mentions · declared — a term address joins the address law that decision rules
  • spec:consumers.obsidian-vault decidedBy spec:decisions.shipped-projections-frozen · declared — the vault is a new root, since the four shipped projections stay frozen
  • spec:model.term-addresses decidedBy spec:decisions.shipped-projections-frozen · declared — term keys stay off the frozen projections, which read the definition unchanged
  • spec:consumers.obsidian-vault constrainedBy spec:extraction.determinism · declared
  • spec:model.term-addresses dependsOn spec:extraction.entry-locations · declared — adds a row per Model term to the location table
  • spec:model.term-addresses dependsOn spec:model.rule-keys · declared — the term-key design follows the rule-entry address pattern
  • spec:model.term-addresses refines spec:model.spec-sections · declared — extends entry addresses to the terms a Model section defines
  • spec:model.term-addresses dependsOn spec:model.stable-ids · declared — a term address extends the Spec entry-address grammar
  • spec:consumers.obsidian-vault.notes dependsOn spec:validation.prose-mentions · declared — a mention can become a link because validation already refuses one that does not resolve

What each member needs next

MemberDepthRungNext rungDesign carriedCode
The vault's generator owns one folder and synchronizes it
spec:decisions.vault-owned-folder
decision
1ready floor ready0 rules0 entries0 declarations0 questions0 decisions0 of 0 verifying examples bound0 implementing2 referencing
A Model term may carry a key that addresses it
spec:model.term-addresses
rule
1ready floor ready9 rules, 7 keyed10 entries7 declarations0 questions2 decisions5 of 5 verifying examples bound9 implementing0 referencing
An Obsidian vault lets a person iterate on designs from the one graph
spec:consumers.obsidian-vault
behavior
2ready floor ready15 rules, 15 keyed13 entries5 declarations0 questions2 decisions9 of 9 verifying examples bound3 implementing0 referencing
9 example members folded in
Every Spec, Pack, code unit and keyed term is a note, and every relation is a link
spec:consumers.obsidian-vault.notes
behavior
3ready floor ready12 rules, 12 keyed17 entries8 declarations0 questions0 decisions4 of 4 verifying examples bound3 implementing0 referencing
4 example members folded in
A Pack's members and the standing queries are tables over the reader's values
spec:consumers.obsidian-vault.bases
behavior
3ready floor ready6 rules, 6 keyed9 entries5 declarations0 questions0 decisions1 of 1 verifying examples bound2 implementing0 referencing
1 example members folded in
A design pass is followed and answered from the vault
spec:consumers.obsidian-vault.iteration
behavior
3ready floor ready6 rules, 6 keyed0 entries0 declarations0 questions0 decisions2 of 2 verifying examples bound3 implementing0 referencing
2 example members folded in
The vault skill teaches agents to keep an Obsidian vault of the graph
spec:consumers.vault-on-ramp
behavior
4ready floor ready7 rules, 7 keyed0 entries0 declarations0 questions1 decisions0 of 0 verifying examples bound1 implementing0 referencing

The architecture it touches

Anchored components and member designs

Arrows: uses (anchored).

The diagram as text
  • component:protocol.cli: entry points, shared build and publication, anchored, layer edge, context protocol; satisfies members spec:consumers.obsidian-vault, spec:consumers.obsidian-vault.iteration; references members spec:decisions.vault-owned-folder; code for rests on spec:consumers.validate-watch, spec:consumers.wholesale-view-rewrite, spec:extraction.determinism; member designs none
  • component:protocol.extract: the carrier and source pipeline, anchored, layer application, context protocol; satisfies members spec:model.term-addresses; references members none; code for rests on spec:extraction.determinism, spec:extraction.entry-locations, spec:model.rule-keys; member designs none
  • component:protocol.graph: the one graph and its semantic decisions, anchored, layer domain, context protocol; satisfies members none; references members none; code for rests on spec:validation.prose-mentions; member designs none
  • component:protocol.import: canonical conversion with a fidelity boundary, anchored, layer application, context protocol; satisfies members spec:model.term-addresses; references members none; code for rests on none; member designs none
  • component:protocol.model: the authored contracts and stable ids, anchored, layer domain, context protocol; satisfies members spec:model.term-addresses; references members none; code for rests on spec:model.spec-sections, spec:model.stable-ids; member designs none
  • component:protocol.projections: read-only output, layout and owned publication, anchored, layer edge, context protocol; satisfies members spec:consumers.obsidian-vault, spec:consumers.obsidian-vault.notes, spec:consumers.obsidian-vault.bases, spec:consumers.obsidian-vault.iteration; references members spec:decisions.vault-owned-folder; code for rests on spec:consumers.binding-language-views, spec:consumers.projections-model; member designs none
  • component:protocol.reader: the typed graph contract and body evaluator, anchored, layer application, context protocol; satisfies members none; references members none; code for rests on spec:consumers.pack-design, spec:consumers.reader, spec:extraction.entry-locations; member designs none
  • component:protocol.studio-elements: optional browser behavior and proposal handoff, anchored, layer edge, context protocol; satisfies members none; references members none; code for rests on spec:consumers.intent-composition.proposal; member designs none
  • component:protocol.validate: one finding currency and ordered checks, anchored, layer domain, context protocol; satisfies members spec:model.term-addresses; references members none; code for rests on spec:model.rule-keys, spec:model.spec-sections, spec:validation.prose-mentions; member designs none
  • component:protocol.adapters: external runtime and source adapters, outside scope, anchored, layer adapter, context protocol
  • component:protocol.codegen: contracts and registrar output, outside scope, anchored, layer application, context protocol
  • component:protocol.notation: the leaf step codec, outside scope, anchored, layer domain, context protocol
  • component:protocol.cli uses component:protocol.adapters · anchored
  • component:protocol.cli uses component:protocol.codegen · anchored
  • component:protocol.cli uses component:protocol.extract · anchored
  • component:protocol.cli uses component:protocol.graph · anchored
  • impl:protocol.stamp-command uses impl:protocol.schema-version · anchored
  • component:protocol.cli uses component:protocol.import · anchored
  • component:protocol.cli uses component:protocol.model · anchored
  • component:protocol.cli uses component:protocol.projections · anchored
  • impl:protocol.vault-command uses component:protocol.projections · anchored
  • component:protocol.cli uses component:protocol.reader · anchored
  • component:protocol.cli uses component:protocol.validate · anchored
  • component:protocol.codegen uses component:protocol.graph · anchored
  • component:protocol.codegen uses component:protocol.reader · anchored
  • component:protocol.codegen uses component:protocol.validate · anchored
  • component:protocol.extract uses component:protocol.graph · anchored
  • impl:protocol.derive-graph uses impl:protocol.delivery-facts · anchored
  • component:protocol.extract uses component:protocol.model · anchored
  • component:protocol.extract uses component:protocol.notation · anchored
  • component:protocol.extract uses component:protocol.validate · anchored
  • component:protocol.graph uses component:protocol.model · anchored
  • component:protocol.graph uses component:protocol.notation · anchored
  • component:protocol.import uses component:protocol.extract · anchored
  • component:protocol.import uses component:protocol.notation · anchored
  • component:protocol.import uses component:protocol.validate · anchored
  • component:protocol.projections uses component:protocol.extract · anchored
  • impl:protocol.gherkin-view uses impl:protocol.gherkin-kind-policy · anchored
  • component:protocol.projections uses component:protocol.graph · anchored
  • component:protocol.projections uses component:protocol.model · anchored
  • component:protocol.projections uses component:protocol.notation · anchored
  • component:protocol.projections uses component:protocol.reader · anchored
  • impl:protocol.studio-recipes uses api:protocol.evaluate-body · anchored
  • impl:protocol.studio-recipes uses impl:protocol.reader · anchored
  • impl:protocol.vault-notes uses impl:protocol.reader · anchored
  • component:protocol.projections uses component:protocol.validate · anchored
  • component:protocol.reader uses component:protocol.graph · anchored
  • impl:protocol.reader uses impl:protocol.delivery-facts · anchored
  • component:protocol.reader uses component:protocol.model · anchored
  • component:protocol.reader uses component:protocol.notation · anchored
  • component:protocol.reader uses component:protocol.validate · anchored
  • impl:protocol.reader uses impl:protocol.next-rung-floor · anchored
  • component:protocol.studio-elements uses component:protocol.projections · anchored
  • component:protocol.studio-elements uses component:protocol.reader · anchored
  • component:protocol.validate uses component:protocol.graph · anchored
  • impl:protocol.authored-honesty-delivery-facts uses impl:protocol.delivery-facts · anchored
  • component:protocol.validate uses component:protocol.model · anchored
  • component:protocol.validate uses component:protocol.notation · anchored
  • impl:protocol.vault-on-ramp implements spec:consumers.vault-on-ramp; no component
  • impl:protocol.address-and-cycle-recipes implements spec:model.term-addresses; no component
  • impl:protocol.register-recipes implements spec:model.term-addresses; no component
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: block; flowchart fallback because block cannot carry edge claims and counts.

Components the slice touches

ComponentLayer and contextReached through
component:protocol.cli
entry points, shared build and publication
edge · protocolMembers its code satisfies: An Obsidian vault lets a person iterate on designs from the one graph, A design pass is followed and answered from the vaultMembers its code references: The vault's generator owns one folder and synchronizes itWhat the slice rests on, realized here: spec:consumers.validate-watch, spec:consumers.wholesale-view-rewrite, spec:extraction.determinismMember designs naming it: none
component:protocol.extract
the carrier and source pipeline
application · protocolMembers its code satisfies: A Model term may carry a key that addresses itMembers its code references: noneWhat the slice rests on, realized here: spec:extraction.determinism, spec:extraction.entry-locations, spec:model.rule-keysMember designs naming it: none
component:protocol.graph
the one graph and its semantic decisions
domain · protocolMembers its code satisfies: noneMembers its code references: noneWhat the slice rests on, realized here: spec:validation.prose-mentionsMember designs naming it: none
component:protocol.import
canonical conversion with a fidelity boundary
application · protocolMembers its code satisfies: A Model term may carry a key that addresses itMembers its code references: noneWhat the slice rests on, realized here: noneMember designs naming it: none
component:protocol.model
the authored contracts and stable ids
domain · protocolMembers its code satisfies: A Model term may carry a key that addresses itMembers its code references: noneWhat the slice rests on, realized here: spec:model.spec-sections, spec:model.stable-idsMember designs naming it: none
component:protocol.projections
read-only output, layout and owned publication
edge · protocolMembers its code satisfies: An Obsidian vault lets a person iterate on designs from the one graph, Every Spec, Pack, code unit and keyed term is a note, and every relation is a link, A Pack's members and the standing queries are tables over the reader's values, A design pass is followed and answered from the vaultMembers its code references: The vault's generator owns one folder and synchronizes itWhat the slice rests on, realized here: spec:consumers.binding-language-views, spec:consumers.projections-modelMember designs naming it: none
component:protocol.reader
the typed graph contract and body evaluator
application · protocolMembers its code satisfies: noneMembers its code references: noneWhat the slice rests on, realized here: spec:consumers.pack-design, spec:consumers.reader, spec:extraction.entry-locationsMember designs naming it: none
component:protocol.studio-elements
optional browser behavior and proposal handoff
edge · protocolMembers its code satisfies: noneMembers its code references: noneWhat the slice rests on, realized here: spec:consumers.intent-composition.proposalMember designs naming it: none
component:protocol.validate
one finding currency and ordered checks
domain · protocolMembers its code satisfies: A Model term may carry a key that addresses itMembers its code references: noneWhat the slice rests on, realized here: spec:model.rule-keys, spec:model.spec-sections, spec:validation.prose-mentionsMember designs naming it: none

Member component designs

None.

Outside the slice, shown for context and not counted as touched

Units bound to a member and to no component

Decisions in scope

Open questions in scope

None.

Where the slice meets the rest

Rests on (18)
SpecRungImplementation bindingJoined membersHolds
Views speak binding language, never the internal fact name
spec:consumers.binding-language-views
ready floor readypresentdependsOn: Every Spec, Pack, code unit and keyed term is a note, and every relation is a linknone
Views compose scoped intent instead of patching canonical source
spec:consumers.edit-model
ready floor readynonedependsOn: A design pass is followed and answered from the vaultnone
Composed intent hands off on one proposal shape
spec:consumers.intent-composition
ready floor readynonedependsOn: The vault skill teaches agents to keep an Obsidian vault of the graphnone
A change proposal is addressed, based and checked before it lands
spec:consumers.intent-composition.proposal
ready floor readypresentdependsOn: A design pass is followed and answered from the vaultnone
The Pack context carries the Pack's design
spec:consumers.pack-design
ready floor readypresentdependsOn: A Pack's members and the standing queries are tables over the reader's valuesnone
Projections fan out from one graph without becoming truth stores
spec:consumers.projections-model
ready floor readypresentrefines: An Obsidian vault lets a person iterate on designs from the one graphnone
The reader bridges agent entry points to composable graph context
spec:consumers.reader
ready floor readypresentdependsOn: An Obsidian vault lets a person iterate on designs from the one graphnone
The reading skill teaches agents to query the graph
spec:consumers.reading-on-ramp
ready floor readypresentrefines: The vault skill teaches agents to keep an Obsidian vault of the graphnone
Validation re-runs while an author edits carriers
spec:consumers.validate-watch
ready floor readypresentdependsOn: A design pass is followed and answered from the vaultnone
Every view run rewrites the view wholesale
spec:consumers.wholesale-view-rewrite
ready floor readypresentdependsOn: An Obsidian vault lets a person iterate on designs from the one graphnone
A Spec id written in prose is a checked mention
spec:decisions.checked-mentions
ready floor readynonedecidedBy: A Model term may carry a key that addresses itnone
The shipped projections stay frozen
spec:decisions.shipped-projections-frozen
ready floor readynonedecidedBy: An Obsidian vault lets a person iterate on designs from the one graph, A Model term may carry a key that addresses itnone
Committed source derives byte-identical output
spec:extraction.determinism
ready floor readypresentconstrainedBy: An Obsidian vault lets a person iterate on designs from the one graphnone
The graph records where each addressable entry is written
spec:extraction.entry-locations
ready floor readypresentdependsOn: A Model term may carry a key that addresses itnone
A rule or flow entry may carry a key that addresses it
spec:model.rule-keys
ready floor readypresentdependsOn: A Model term may carry a key that addresses itnone
Spec sections carry typed detail and direct verifier semantics
spec:model.spec-sections
ready floor readypresentrefines: A Model term may carry a key that addresses itnone
Stable IDs are the Protocol's durable join key
spec:model.stable-ids
ready floor readypresentdependsOn: A Model term may carry a key that addresses itnone
Every Spec id written in prose resolves
spec:validation.prose-mentions
ready floor readypresentdependsOn: Every Spec, Pack, code unit and keyed term is a note, and every relation is a linknone
Rested on by (12)
SpecRungImplementation bindingJoined membersHolds
The Markdown body accepts one closed form per section
spec:carrier.markdown-body-grammar
ready floor readypresentdependsOn: A Model term may carry a key that addresses itnone
Address resolution and dependency cycles stay executable graph recipes
spec:consumers.agent-surface.address-and-cycle-recipes
ready floor readypresentdependsOn: A Model term may carry a key that addresses itnone
Register questions stay executable graph recipes
spec:consumers.agent-surface.register-recipes
ready floor readypresentdependsOn: A Model term may carry a key that addresses itnone
The glossary page lists every term the corpus's Specs define
spec:consumers.spec-studio.glossary-page
ready floor readypresentdependsOn: A Model term may carry a key that addresses itnone
A Spec page shows one Spec in collapsible panels, in a fixed order
spec:consumers.spec-studio.spec-page
ready floor readypresentdependsOn: A Model term may carry a key that addresses itnone
Capability adoption counts where each capability is used and where it could apply
spec:consumers.upgrade-kit.capability-adoption
ready floor readypresentdependsOn: A Model term may carry a key that addresses itnone
A keyed term is reified and its address resolves
spec:model.term-addresses.keyed-term-resolves
ready floor readynonerefines: A Model term may carry a key that addresses itnone
A term marker whose key is off the grammar refuses its carrier
spec:model.term-addresses.malformed-term-marker-refused
ready floor readynonerefines: A Model term may carry a key that addresses itnone
A term key repeated in one Spec refuses its carrier
spec:model.term-addresses.repeated-term-key-refused
ready floor readynonerefines: A Model term may carry a key that addresses itnone
A keyed TypeScript term keeps its address through import to Markdown
spec:model.term-addresses.typescript-term-imports-keyed
ready floor readynonerefines: A Model term may carry a key that addresses itnone
An address that names a term key no term carries is an error
spec:model.term-addresses.unknown-term-key-refused
ready floor readynonerefines: A Model term may carry a key that addresses itnone
Every Spec id written in prose resolves
spec:validation.prose-mentions
ready floor readypresentdependsOn: A Model term may carry a key that addresses itnone
Verified by (5)
SpecRungImplementation bindingJoined membersHolds
A keyed term is reified and its address resolves
spec:model.term-addresses.keyed-term-resolves
ready floor readynoneverifies: A Model term may carry a key that addresses itnone
A term marker whose key is off the grammar refuses its carrier
spec:model.term-addresses.malformed-term-marker-refused
ready floor readynoneverifies: A Model term may carry a key that addresses itnone
A term key repeated in one Spec refuses its carrier
spec:model.term-addresses.repeated-term-key-refused
ready floor readynoneverifies: A Model term may carry a key that addresses itnone
A keyed TypeScript term keeps its address through import to Markdown
spec:model.term-addresses.typescript-term-imports-keyed
ready floor readynoneverifies: A Model term may carry a key that addresses itnone
An address that names a term key no term carries is an error
spec:model.term-addresses.unknown-term-key-refused
ready floor readynoneverifies: A Model term may carry a key that addresses itnone
Superseded by (0)

None.

Composing (0)

Composing needs the script.