Skip to content

Wick v1.6.0 — Timestamps: what, when, where - #7

Merged
Kielov merged 1 commit into
mainfrom
feature/timestamps-v1.6.0
Aug 3, 2026
Merged

Kielov merged 1 commit into
mainfrom
feature/timestamps-v1.6.0

Conversation

@Kielov

@Kielov Kielov commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

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.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.

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 today's clock, and only what is missing.
  • MEMORY-PROTOCOL.md §10 — the model, the measurements, the boundary.

The bug worth reading

The first --fix re-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-memory still judges staleness by content.

Housekeeping

v1.5.0 reached main and the CHANGELOG but never its other version surfaces — wick-meta.json read 1.4.0, README.md read 1.3.0, no tag, no release. Corrected here, with v1.5.0's features backfilled into wick-meta.json.

Not included

CI steps for wick-path-audit and wick-freshness-audit. Editing .github/workflows/ needs the workflow OAuth 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

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]>
@Kielov
Kielov merged commit 420c93b into main Aug 3, 2026
1 check passed
@Kielov
Kielov deleted the feature/timestamps-v1.6.0 branch August 3, 2026 13:01
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.

1 participant