Repository navigation
Wick v1.6.0 — Timestamps: what, when, where - #7
Merged
Merged
Conversation
v1.1 gave memory an owner. v1.2 made it portable. v1.5 made it findable. This makes it ORDERABLE — the thing a memory layer silently loses as it grows. CLAUDE.md has said "Date everything" since v1.0. It was prose, and prose does not enforce: learning-journal.md — the file that rule cared most about — shipped with no date field at all, and nothing anywhere recorded WHICH MACHINE learned a thing despite the v1.3 machine-awareness layer. Added - tools/wick-freshness-audit.mjs — fifth scanner. Stamp presence, date sanity (parse/order/not-future), index rows dated, and the check that actually bites: the index agreeing with the files it indexes. - --fix backfills from `git log`, never from today's clock, and backfills ONLY WHAT IS MISSING. That second rule is load-bearing and we got it wrong first: once the stamping commit lands, git reports THAT COMMIT as the last change to every file it touched, so an overwriting re-run silently re-dated 8 files and 7 index rows to adoption day with no content change behind any of them. Caught in dogfooding on this repo. --refresh overwrites deliberately. - MEMORY-PROTOCOL.md §10 — the model, the measurements, the boundary. Changed - every shipped memory/ template stamped; host segment optional (a single-machine agent has no "where" worth inventing — advisory, not blocking) - entry-level dates: learning-journal, about-you focus, domain-knowledge, toolchain rows - CLAUDE.md / WICK.md — "Date everything" expanded into the actual rule Measured — the stamp is free §9 established the index row IS the routing surface, so this is a retrieval change, not a cosmetic one. 6 arms x 44 labelled queries on a 31-file layer: zero flips, both eval sets. Manipulation verified independently rather than inferred from the flat result — the body stamp doubles the hostname's document frequency (29->60 term-slots) and still changes nothing. Measured at 31 files, not proven at 100. Boundary: a date is a recall aid, never an expiry. Nothing auto-archives for being old; wick-consolidate-memory still judges staleness by content. Housekeeping: v1.5.0 reached main and CHANGELOG but never its other version surfaces — wick-meta.json read 1.4.0, README read 1.3.0, no tag, no release. Corrected, with v1.5.0's features backfilled into wick-meta.json. Not included: the CI steps for wick-path-audit and wick-freshness-audit. Editing .github/workflows/ needs the `workflow` OAuth scope the release tooling does not hold — same block that left path-audit unwired since v1.1. Tracked as a follow-up; both scanners run clean locally. All five scanners green on the final tree. Co-Authored-By: Claude Opus 5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v1.1 gave memory an owner. v1.2 made it portable. v1.5 made it findable. This makes it orderable — the thing a memory layer silently loses as it grows.
The failure is quiet. A preference captured in March and one captured last week read as equally current. Two entries conflict and nothing on the page says which came later. On a multi-machine agent, nothing records which host learned a thing — even though only one of them is likely to still be true elsewhere.
CLAUDE.mdhas said "Date everything" since v1.0. It was prose, and prose does not enforce:learning-journal.md, the file that rule cared most about, shipped with no date field at all.Added
tools/wick-freshness-audit.mjs— fifth scanner. Stamp presence, date sanity (parse / order / not-future), index rows dated, and the check that actually bites: the index agreeing with the files it indexes.--fix— backfills fromgit log, never today's clock, and only what is missing.MEMORY-PROTOCOL.md§10 — the model, the measurements, the boundary.The bug worth reading
The first
--fixre-derived every stamp on each run. Correct exactly once. The moment the stamping commit lands, git reports that commit as the last change to every file it touched — so the next run silently re-dated 8 files and 7 index rows to adoption day, with no content change behind any of them. It would have flattened the exact ordering the feature exists to preserve. Caught by dogfooding it on this repo, not by review.Measured — the stamp is free
§9 established the index row is the routing surface, so this is a retrieval change, not a cosmetic one. 6 arms × 44 labelled queries on a matured 31-file layer (32 synthetic session-openers + 12 real ones), live-compiled surface, real per-file git dates:
Zero flips. Every arm, both eval sets.
Manipulation verified independently rather than inferred from the flat result — the body stamp doubles the hostname's document frequency (29 → 60 term-slots) and still changes nothing. Honest limit: measured at 31 files, not proven at 100.
Boundary
A date is a recall aid, never an expiry. Nothing auto-archives for being old;
wick-consolidate-memorystill judges staleness by content.Housekeeping
v1.5.0 reached
mainand the CHANGELOG but never its other version surfaces —wick-meta.jsonread 1.4.0,README.mdread 1.3.0, no tag, no release. Corrected here, with v1.5.0's features backfilled intowick-meta.json.Not included
CI steps for
wick-path-auditandwick-freshness-audit. Editing.github/workflows/needs theworkflowOAuth scope the release tooling does not hold — the same block that has left path-audit unwired since v1.1. Both scanners run clean locally; the two steps are a UI paste.All five scanners green on the final tree.
🤖 Generated with Claude Code