Files
mathias 54237af7ad
CI / Lint / Test / Vet (push) Successful in 31s
CI / Mirror to GitHub (push) Skipped
feat(brain): validate the claim-property envelope on write (brain#21) (#102)
First half of brain#21: half_life (volatile|seasonal|durable), applies
(local|homelab|universal), claim_provenance (asserted|inferred).

writeHallNote already passed unknown frontmatter keys through verbatim, so
preservation was free — a test now pins it so a refactor of the merge loop
cannot silently drop the fields. What was missing is validation, and it
fails closed: a value outside the enum is rejected (a lint skips what it
cannot parse, so the note would read as classified while nothing acts on
it); an envelope field without claim_provenance is rejected (a value a
model inferred must never be indistinguishable from one a human asserted,
or a single classifier pass launders guesses into apparent judgement
across the corpus); provenance alone is rejected too.

Validation runs before MkdirAll, so a rejected write leaves nothing behind.

The field is `applies`, not `scope`: scope: has been in use since brain#5
for glossary terms (homelab-core, project:<repo>), a disjoint value space
on the same key. The shipped schema keeps the name.

Notes with none of these fields are byte-identical to before. Bulk
backfill stays out of scope.

Schema documented in brain/CLAUDE.md via brain_edit_root, which produced
the hyperguild#97 audit record for the rewrite.

Refs brain#21, brain#19 (superseded), brain#5, hyperguild#97.

Co-authored-by: Mathias <mthbqv@gmail.com>
2026-08-22 08:58:34 +00:00
..