Obsidian vault
pack:obsidian-vault-v1specs/obsidian-vault.pack.sdp.mdDownload this Pack as one file
Where the design stands
- 23 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.
- 49 design entries and 25 pinned declarations.
- No open questions and no blocking questions.
- 6 members with an implementation binding.
- 1 member with a design reference.
- 18 outside Specs the Pack rests on; 12 outside Specs rest on the Pack; 5 outside Specs verify it; no outside Specs supersede it.
Maturity map
23 members at stated ready and floor ready: full member list.
Stated readiness by floor reached
Outlined diagonal: matches. Right of diagonal: floor above statement. Left of diagonal: statement above floor.
Maturity map as text
| Stated rung / floor reached | floor none | floor idea | floor scoped | floor defined | floor ready |
|---|---|---|---|---|---|
| stated idea | — | — | — | — | — |
| stated scoped | — | — | — | — | — |
| stated defined | — | — | — | — | — |
| stated ready | — | — | — | — | 23 |
stated ready, floor ready · 23 members
- An Obsidian vault lets a person iterate on designs from the one graph ·
spec:consumers.obsidian-vault· ready floor ready - The vault's generator owns one folder and synchronizes it ·
spec:decisions.vault-owned-folder· ready floor ready - A fresh vault is written the same way twice and every link resolves ·
spec:consumers.obsidian-vault.fresh-vault· ready floor ready - A regeneration removes a note that left the graph and keeps a person's notes ·
spec:consumers.obsidian-vault.person-notes-survive· ready floor ready - A note a person wrote inside the generated folder refuses the regeneration ·
spec:consumers.obsidian-vault.unknown-note-refused· ready floor ready - A generated note a person changed refuses the regeneration and keeps the edit ·
spec:consumers.obsidian-vault.changed-note-refused· ready floor ready - A person's file under a temporary's name refuses the regeneration ·
spec:consumers.obsidian-vault.hidden-file-refused· ready floor ready - A vault directory the build removes refuses the run and keeps a person's notes ·
spec:consumers.obsidian-vault.vault-in-build-path-refused· ready floor ready - A run after a stopped synchronization finishes it ·
spec:consumers.obsidian-vault.interrupted-run-recovered· ready floor ready - A failed extraction keeps the notes and says so on the index ·
spec:consumers.obsidian-vault.failed-extraction-keeps-notes· ready floor ready - The run after a failed extraction passes the guard and restores the index ·
spec:consumers.obsidian-vault.failed-extraction-recovered· ready floor ready - Every Spec, Pack, code unit and keyed term is a note, and every relation is a link ·
spec:consumers.obsidian-vault.notes· ready floor ready - An entry address in prose opens the entry's block in its Spec's note ·
spec:consumers.obsidian-vault.notes.entry-address-link· ready floor ready - A mention of an entry that does not exist stays as written ·
spec:consumers.obsidian-vault.notes.unresolved-mention-stays· ready floor ready - A keyed Model term gets a note, and its address in prose opens the term's block ·
spec:consumers.obsidian-vault.notes.term-address-link· ready floor ready - Two Specs whose notes differ only in case refuse the run ·
spec:consumers.obsidian-vault.notes.case-collision-refused· ready floor ready - A Pack's members and the standing queries are tables over the reader's values ·
spec:consumers.obsidian-vault.bases· ready floor ready - Each standing view selects what its source selects ·
spec:consumers.obsidian-vault.bases.views-match-sources· ready floor ready - A design pass is followed and answered from the vault ·
spec:consumers.obsidian-vault.iteration· ready floor ready - A carrier edit under watch rewrites only the notes it changes ·
spec:consumers.obsidian-vault.iteration.watch-rewrites-changed-notes· ready floor ready - An anchor added in a source file under watch rewrites the Spec's note ·
spec:consumers.obsidian-vault.iteration.watch-source-anchor· ready floor ready - The vault skill teaches agents to keep an Obsidian vault of the graph ·
spec:consumers.vault-on-ramp· ready floor ready - A Model term may carry a key that addresses it ·
spec:model.term-addresses· ready floor ready
Mermaid source
Preferred syntax: block. Fixed categorical cells; membership appears in comments.
Framing
A human interface for iterating on designs: the one graph regenerated as an Obsidian vault of linked notes, read beside the carriers an agent edits. First the vault, its verb and its place among the projections, with the decision that its generator owns one folder of the vault and never touches a note a person wrote. Then its notes and links, its tables, the loop a design pass runs through it, and the skill that teaches an agent to keep the vault and answer a pass from it. Each Spec is followed by the examples that will verify it. Last, the one model change the vault asks for, an address for a Model term, so a concept links as exactly as a Spec does.
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. An Obsidian vault lets a person iterate on designs from the one graphbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present
Design
13 design entries · 5 pinned declarations
Decisions
- The shipped projections stay frozen · stated ready
- The vault's generator owns one folder and synchronizes it · stated ready
Open questions
None.
Implementation binding: present
impl:protocol.vault-command· validates after vault preflight and retains prior notes behind a failed-extraction index ·src/cli/vault-command.ts:191· role publisher · component component:protocol.cli· layer edge · context protocolimpl:protocol.vault-notes· renders reader contexts, declared relations and keyed terms as linked notes ·src/projections/vault/notes.ts:45· role projection · component component:protocol.projections· layer edge · context protocolimpl:protocol.vault-sync· guards every owned entry and records transitional hashes before atomic file replacement ·src/projections/vault/sync.ts:98· role publisher · component component:protocol.projections· layer edge · context protocol
Design reference: none
Verifier binding: present
9 verifiers, 9 enabled · 9 verifying examples, 9 enabled
2. The vault's generator owns one folder and synchronizes itdecision · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding none
spec:decisions.vault-owned-folder
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: present
impl:protocol.vault-command· validates after vault preflight and retains prior notes behind a failed-extraction index ·src/cli/vault-command.ts:191· role publisher · component component:protocol.cli· layer edge · context protocolimpl:protocol.vault-sync· guards every owned entry and records transitional hashes before atomic file replacement ·src/projections/vault/sync.ts:98· role publisher · component component:protocol.projections· layer edge · context protocol
Verifier binding: none
3. A fresh vault is written the same way twice and every link resolvesexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present
spec:consumers.obsidian-vault.fresh-vault
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
4. A regeneration removes a note that left the graph and keeps a person's notesexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present
spec:consumers.obsidian-vault.person-notes-survive
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
5. A note a person wrote inside the generated folder refuses the regenerationexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present
spec:consumers.obsidian-vault.unknown-note-refused
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
6. A generated note a person changed refuses the regeneration and keeps the editexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present
spec:consumers.obsidian-vault.changed-note-refused
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
8. A vault directory the build removes refuses the run and keeps a person's notesexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present
spec:consumers.obsidian-vault.vault-in-build-path-refused
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
9. A run after a stopped synchronization finishes itexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present
spec:consumers.obsidian-vault.interrupted-run-recovered
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
10. A failed extraction keeps the notes and says so on the indexexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present
spec:consumers.obsidian-vault.failed-extraction-keeps-notes
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
11. The run after a failed extraction passes the guard and restores the indexexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present
spec:consumers.obsidian-vault.failed-extraction-recovered
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
12. Every Spec, Pack, code unit and keyed term is a note, and every relation is a linkbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present
spec:consumers.obsidian-vault.notes
Design
17 design entries · 8 pinned declarations
Open questions
None.
Implementation binding: present
impl:protocol.vault-notes· renders reader contexts, declared relations and keyed terms as linked notes ·src/projections/vault/notes.ts:45· role projection · component component:protocol.projections· layer edge · context protocolimpl:protocol.vault-sections· renders sections in graph order with keyed entry block ids ·src/projections/vault/sections.ts:10· role projection · component component:protocol.projections· layer edge · context protocolimpl:protocol.vault-text· renders checked mentions and escapes Obsidian syntax outside code spans ·src/projections/vault/text.ts:30· role codec · component component:protocol.projections· layer edge · context protocol
Design reference: none
Verifier binding: present
5 verifiers, 5 enabled · 4 verifying examples, 4 enabled
13. An entry address in prose opens the entry's block in its Spec's noteexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present
spec:consumers.obsidian-vault.notes.entry-address-link
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
14. A mention of an entry that does not exist stays as writtenexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present
spec:consumers.obsidian-vault.notes.unresolved-mention-stays
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
15. A keyed Model term gets a note, and its address in prose opens the term's blockexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present
spec:consumers.obsidian-vault.notes.term-address-link
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
16. Two Specs whose notes differ only in case refuse the runexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present
spec:consumers.obsidian-vault.notes.case-collision-refused
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
17. A Pack's members and the standing queries are tables over the reader's valuesbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present
spec:consumers.obsidian-vault.bases
Design
9 design entries · 5 pinned declarations
Open questions
None.
Implementation binding: present
impl:protocol.vault-bases· serializes standing query predicates over reader properties as Obsidian Bases ·src/projections/vault/bases.ts:43· role projection · component component:protocol.projections· layer edge · context protocolimpl:protocol.vault-notes· renders reader contexts, declared relations and keyed terms as linked notes ·src/projections/vault/notes.ts:45· role projection · component component:protocol.projections· layer edge · context protocol
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · 1 verifying example, 1 enabled
18. Each standing view selects what its source selectsexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present
spec:consumers.obsidian-vault.bases.views-match-sources
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
19. A design pass is followed and answered from the vaultbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present
spec:consumers.obsidian-vault.iteration
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: present
impl:protocol.vault-sync· guards every owned entry and records transitional hashes before atomic file replacement ·src/projections/vault/sync.ts:98· role publisher · component component:protocol.projections· layer edge · context protocolimpl:protocol.vault-text· renders checked mentions and escapes Obsidian syntax outside code spans ·src/projections/vault/text.ts:30· role codec · component component:protocol.projections· layer edge · context protocolimpl:protocol.vault-watch· reuses the coalescing watcher with source suffixes and a synchronous vault cycle ·src/cli/vault-command.ts:219· role service · component component:protocol.cli· layer edge · context protocol
Design reference: none
Verifier binding: present
2 verifiers, 2 enabled · 2 verifying examples, 2 enabled
20. A carrier edit under watch rewrites only the notes it changesexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present
spec:consumers.obsidian-vault.iteration.watch-rewrites-changed-notes
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
21. An anchor added in a source file under watch rewrites the Spec's noteexample · ready floor ready · 0 open, 0 blocking questions · implementation binding none · verifier binding present
spec:consumers.obsidian-vault.iteration.watch-source-anchor
Design
No design entries · no pinned declarations
Open questions
None.
Implementation binding: none
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
22. The vault skill teaches agents to keep an Obsidian vault of the graphbehavior · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present
Design
No design entries · no pinned declarations
Decisions
- The vault's generator owns one folder and synchronizes it · stated ready
Open questions
None.
Implementation binding: present
impl:protocol.vault-on-ramp· asserts realization of the shipped vault skill document ·test/skills.test.ts:1995
Design reference: none
Verifier binding: present
1 verifier, 1 enabled · no verifying examples, 0 enabled
23. A Model term may carry a key that addresses itrule · ready floor ready · 0 open, 0 blocking questions · implementation binding present · verifier binding present
Design
10 design entries · 7 pinned declarations
Decisions
- A Spec id written in prose is a checked mention · stated ready
- The shipped projections stay frozen · stated ready
Open questions
None.
Implementation binding: present
impl:protocol.address-and-cycle-recipes· asserts realization of the shipped address resolution and dependency cycle recipes ·test/recipes.test.ts: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 protocol
Design reference: none
Verifier binding: present
6 verifiers, 6 enabled · 5 verifying examples, 5 enabled
Boundary
Rests on (18)
Rested on by (12)
Verified by (5)
| Spec | Stated rung | Implementation binding | Joined members |
|---|---|---|---|
A keyed term is reified and its address resolvesspec:model.term-addresses.keyed-term-resolves | ready | none | verifies: spec:model.term-addresses |
A term marker whose key is off the grammar refuses its carrierspec:model.term-addresses.malformed-term-marker-refused | ready | none | verifies: spec:model.term-addresses |
A term key repeated in one Spec refuses its carrierspec:model.term-addresses.repeated-term-key-refused | ready | none | verifies: spec:model.term-addresses |
A keyed TypeScript term keeps its address through import to Markdownspec:model.term-addresses.typescript-term-imports-keyed | ready | none | verifies: spec:model.term-addresses |
An address that names a term key no term carries is an errorspec:model.term-addresses.unknown-term-key-refused | ready | none | verifies: spec:model.term-addresses |
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.