Repository navigation
v10.7.0 — the writes that earn nothing, cut
Task 190: the vault gains only the cards that earned their place, and a page is rewritten only when what it says changes. The write-quality audit of 2026-10-07 judged every file the vault wrote on 10-05 and 10-06. It found none of the 18 new memory cards earned: nine were traces of one unattended poll, and four of five crystallized lessons were under their own bar. It also found maps, trackers, needs-review and entity pages rewritten with nothing in them changed. A meter now measures that every morning, and each writer is held to it. Over the first three nights after the deploy (2026-10-10 to 10-12), new cards ran 1, 2 and 1 a night against 18 in the audit's two days, no unattended run left a trace, and no map, tracker, needs-review or entity page was rewritten with only the calendar or line order moved, against 9 such rewrites in the audit window. Enrichment appended no prose to a project doc, against 7 sections, and the weekly crystallize run wrote no lesson under its bar. This release also carries task 191's step 2 (under Internal), which ships ahead of that task's purge; task 191 releases on its own close-out.
Added
- A write meter, in the morning note and the health scorecard (task 190 step 1, #885).
write_meter.pyreads the vault's git history and counts the following: new memory cards by class, with the self-probe apart; the vault's net notes; each rewrite of a map, project tracker,needs-reviewor entity page, and how many changed only the calendar (theupdated:stamp, the dream cycle's date, a count of days) or only line order, while a date that is data, such as a project'slast_worked, counts as a change (the operator's ruling of 2026-10-13); and enrichment restamps andAdded by dreamingsections in project docs. It warns when cards pass the newthresholds.daily_card_budget(30 a day), on any rewrite that changed only dates or order, and when the committer is an hour behind. Over the audit's window it reads 18 cards plus 2 self-probes, as the audit found.
Changed
- A session with no operator turn writes no episodic trace (task 190 step 2, the operator's ruling of 2026-10-07). A Desktop scheduled task and a headless
claude -prun leave nothing unless you reply. The host stamps a scheduled runorigin.kind: human, so it is read by its<scheduled-task>wrapper. A typed message or slash command is a turn. - Maps change only when their membership or text does (task 190 step 3). The daemon's self-probe is no longer a map member, and a regeneration that would move only
updatedwrites nothing. The scorecard's class census counts the probe apart. - One write a night for a project tracker, and
needs-reviewstops following the calendar (task 190 step 4). The night reads each project's activity before rendering its tracker, so the projects job has nothing left to edit.needs-reviewsays "silent since " and movesupdatedonly when its lists change. - An issue or release entity page needs three origins, and the builder is a page's one writer (task 190 step 5, the operator's ruling of 2026-10-07). The new
thresholds.entity_min_sources_numberedis 3, and repositories keep 2. The task mover no longer edits entity pages, and the night builds them after it. A dry run on 2026-10-09 kept 290 of 527 pages and removes 237 through the journal. - Crystallize checks its bar on the lesson's own sources, counted in notes, and a source teaches one lesson (task 190 step 6). A ledger in the engine's state directory remembers the trackers and trace lines a lesson consumed. A draft restating a lesson links it rather than minting a second. A lesson's file is never written over. Four of the five 10-06 lessons fail the rechecked bar; they are listed for the operator, and none is removed.
- Enrichment leaves designs, dead drafts and
updatedalone (task 190 step 7). A project's records take fields and stamps, never prose.updatedstays the author's date, the one the age clock reads, and the pass's own date isenriched_at. A superseded note and aPROMPTS-*.mdpack are not enriched.
Internal
- The retrieval gate follows three gold questions to their keepers (task 191 step 2). The memory junk purge deletes rc09's gold card, a duplicate of the MarkTechPost article it is
superseded_by, and archives the card rc10 and rc12 expect, whose finding lives in the kept aliases card._PURGE_REMAPSineval_retrieval_shipped.pypoints each question at the note that now answers it, the article inresources/topics/agent-memory/(or insemantic/until it moves). A row is taken only once the gold card is gone, so the gate scores the same questions before, during and after the purge instead of stopping with exit 4.
Pull requests: task 190 (#884) shipped in #885, #886, #888 and #891; task 191 step 2 in #890.