Skip to content

docs: record ADR-0016 and archive consolidate-vault-writes - #124

Merged
AlexMost merged 3 commits into
mainfrom
docs/consolidate-vault-writes-group3
Aug 31, 2026
Merged

AlexMost merged 3 commits into
mainfrom
docs/consolidate-vault-writes-group3

Conversation

@AlexMost

Copy link
Copy Markdown
Owner

Group 3 (PR 3 of 3) of the consolidate-vault-writes opsx change. Documentation only — no src/ or test/ file changes.

PR 1 (#122) folded FsVaultWriter into FsVaultProvider; PR 2 (#123) resized VaultProvider to the six note-file methods and moved the aggregates out. This PR records the decision behind both and brings the docs back in line.

ADR-0016

docs/adr/0016-one-disk-module-owns-note-writes.md, status Accepted. Per design D9 it states:

  • one disk module (FsVaultProvider) owns note writes over a vault root, over shared readRaw / writeRaw helpers with one fs-error mapping;
  • the VaultWriter seam is deleted, not kept — single consumer, failed the deletion test, and its divergence from the provider's mapping is what shipped edit_note write failure escapes as a bare Error without a code (ADR-0003 violation) #113;
  • what the surviving VaultProvider seam is actually for: a stub point for the operations tool tests, not an abstraction over a plausible second backend. docs/architecture/vault-provider.md had been claiming the latter ("a REST API, an Obsidian plugin bridge"); that claim is now gone;
  • the explicit non-goal that FsVaultReader's errors-as-data convention is untouched.

ADR-0009 is not rewritten

Its body is unchanged and it stays Accepted. Its INDEX.md row gains "VaultProvider method set refined in part by 0016", matching the 0003 → 0015 precedent for the same kind of narrowing.

Its bullet (a) — "listTags counts frontmatter tags only, not inline #tags" — was flagged as a stale claim. It turns out to already carry its own correction: an italic _Follow-up (2026-08, change inline-tags-in-list-tags)_ note sits directly beneath it, added by that change under this repo's append-don't-rewrite convention. It is a pre-existing item this change did not cause and does not need to fix; left alone deliberately, and recorded in the retrospective.

Architecture docs

File Change
vault-provider.md Six-method interface listing; the edit_note-goes-through-VaultWriter paragraph replaced; the two private resolution modes (resolveExisting / resolveNew) documented; resolveIdentifierPath references removed; "what it deliberately does not do" corrected — normalization is now at the tool layer for every write tool
disk-write-path.md edit_note section added; the existing-note error taxonomy stated against the distinct create-time one, as a table
note-path-resolution.md The rule paragraph and the "does not do" list no longer name FsVaultWriter
vault-registry.md writer table row deleted; the reader/provider enumeration fixed
obsidian-lib.md vault-writer.ts bullet deleted; vault-aggregates.ts bullet added (the same directory gained a file in PR 2, and this doc enumerates it); vault-overview.ts deps refreshed; entry-construction sentence fixed
module-structure.md FsVaultWriter mermaid node + edge removed; the two prose sentences corrected
vault-reader.md Not named by the plan. Task 3.6's docs/-wide sweep caught it asserting the reader feeds FsVaultProvider's listTags/listProperties — the reader still scans, but it now feeds free functions

docs/guide/ and README.md came back clean from the sweep, as expected: their list_tags / list_properties mentions are user-facing tool docs and remain correct. No edits were invented there.

Archive

openspec archive synced two ADDED and two MODIFIED requirements into openspec/specs/headless-vault-operations/spec.md. The spec's ## Purpose enumeration gains edit_note by hand — a Purpose block is not expressible as a requirement delta, so that is a deliberate edit on the synced spec, not a sync gap (task 3.7).

verify.md and retrospective.md are included; all 19 tasks are ticked.

Gates

  • openspec validate --all — 18/18 valid (19 before archive removed the change item)
  • npm test — 110 files, 1371 tests passing (flat vs PR 2 by design; no src//test/ changes)
  • npm run lint — clean
  • npm run typecheck — clean

Closes #114

🤖 Generated with Claude Code

AlexMost and others added 3 commits August 31, 2026 22:51
Group 3 of consolidate-vault-writes: documentation only, no src/ or test/
changes.

ADR-0016 records the decision the two preceding PRs implemented: one disk
module (FsVaultProvider) owns note writes over a vault root; the VaultWriter
seam is deleted rather than kept; VaultProvider survives resized to six
note-file methods, as a stub point for tool tests and not as an abstraction
over a plausible second backend; and FsVaultReader's errors-as-data convention
is an explicit non-goal, left untouched.

ADR-0009 stays Accepted and its body is unchanged. Its INDEX row gains a
"VaultProvider method set refined in part by 0016" note, matching the
0003 -> 0015 precedent.

Architecture docs brought back in line with the code: vault-provider.md (six
methods, the two private resolution modes, why the seam survives),
disk-write-path.md (edit_note added, plus the existing-note vs create-time
error taxonomies), note-path-resolution.md, vault-registry.md,
obsidian-lib.md (vault-writer.ts bullet removed, vault-aggregates.ts added),
module-structure.md, and vault-reader.md.

Refs #114

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Refs #114

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ult-writes

Archive syncs two ADDED requirements (one identifier rule at one depth; one
existing-note failure taxonomy, distinct from the create-time one) and two
MODIFIED ones into openspec/specs/headless-vault-operations/spec.md.

The spec's `## Purpose` enumeration gains `edit_note` by hand — a Purpose block
is not expressible as a requirement delta, so this is a deliberate edit on the
synced spec rather than a sync gap (task 3.7).

Closes #114

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@AlexMost
AlexMost merged commit 21aaf9a into main Aug 31, 2026
2 checks passed
@AlexMost
AlexMost deleted the docs/consolidate-vault-writes-group3 branch August 31, 2026 21:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Consolidate disk writes into one module over the vault root

1 participant