chore(release): 9.0.1, the runtime refactor, qualified offline - #93
Conversation
A canary expires 72 hours after it is recorded, and that window was checked against the wall clock everywhere, including where a reviewed offline release cites a baseline it explicitly does not claim to have measured. The effect was that retained evidence rotted: three days after 8.3.0 was measured, no offline release could be sealed or verified against it, and every offline release already published stopped being reproducible. Re-running the 9.0.0 release workflow today refuses evidence that has not changed. Freshness is now stated by the caller. The release being published still needs a canary inside its window; a baseline a patch or feature record only cites is read as it stood when recorded. The offline paths pass retained, `bun run qualify` takes --freshness and says so in its output, and everything else keeps the clock. Nothing else about a retained canary is relaxed: a future date, a failed checklist, a mismatched artifact, a broken digest and unreadable evidence all still refuse. This deliberately removes the only thing that forced a live measurement every three days. The control that remains is the reviewed entry each offline release needs in OFFLINE_FEATURES, which is a source change that has to be reviewed and merged, plus the disclosure every record carries that nothing after the baseline has been measured live. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Authorize 9.0.1 through the offline feature exception, frozen to 8d275b7. The candidate is phases 0 to 4 of the runtime refactor merged as #88 to #92: the application, persistence and auto-drive layers split by responsibility with no new tool, command or setting. This entry cannot reuse an earlier file list. The refactor touched most of the runtime, so it freezes all twenty-nine changed src files plus the two guides, the manifest and the build surface. Earlier entries froze thirteen. It is the widest claim any release has made on an exception written for a single reviewed feature, and the operator accepted that knowingly. Regrade the same original 8.3.0 campaign and canary offline: the grader closure covers eval-canary.ts and qualify-release.ts, which the freshness fix edits, so the 9.0.0 seal no longer regrades. No model ran. Six releases now sit between this candidate and the last live measurement, and the seventy-two hour canary window that used to force one has been changed to read a cited baseline as retained evidence. The baseline stays 8.3.0. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7f5841693a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @@ -475,6 +480,7 @@ export async function assertStrictReleaseEvidence(input: { | |||
| expectedArtifact: input.expectedArtifact, | |||
| directory: dirname(input.canaryPath), | |||
| ...(input.now ? { now: input.now } : {}), | |||
| ...(input.freshness ? { freshness: input.freshness } : {}), | |||
There was a problem hiding this comment.
Propagate retained mode through bundle regrading
When freshness is "retained", this only relaxes the two canary checks; the subsequent assertQualificationBundle call still invokes regradeQualificationBundle, whose campaign-age check rejects evidence more than seven days after completion.finishedAt. The committed baseline finished on 2026-09-13, so after 2026-09-20 the new 9.0.1 feature path—and other offline paths citing this baseline—will again fail verification despite retained mode (reproduced with now: 2026-09-21). Thread the retained policy into bundle regrading so it skips the historical campaign-age limit while preserving future-date and integrity checks.
Useful? React with 👍 / 👎.
Releases 9.0.1: phases 0 to 4 of the runtime refactor, merged as #88 to #92. No new tool, command or setting. Qualified offline.
What ships
The application, persistence and auto-drive layers split by responsibility, with one source of truth for session validation and review readiness. Session files written by 9.0.0 load unchanged.
Two deliberate behavior changes, both planned:
flow_feature_completereturns the same bytes and takes the session lock once.Why there is a fix commit in a release PR
A canary expires 72 hours after it is recorded, and that window was checked against the wall clock everywhere, including where an offline release cites a baseline it explicitly does not claim to have measured.
The 8.3.0 canary expired on 2026-09-16. Two days later no offline release could be sealed or verified against it, and 8.4.0, 8.5.0, 8.6.0 and 9.0.0 could no longer be re-verified either. Re-running the 9.0.0 release workflow today refuses evidence that has not changed. Retained evidence had been made to rot.
Freshness is now stated by the caller. The release being published still needs a canary inside its window; a baseline a patch or feature record only cites is read as it stood when recorded.
bun run qualifytakes--freshnessand says so in its output. Nothing else is relaxed: a future date, a failed checklist, a mismatched artifact, a broken digest and unreadable evidence all still refuse.This removes the only mechanism that forced a live measurement every three days. What remains is the reviewed
OFFLINE_FEATURESentry each offline release needs, which is a source change that must be reviewed and merged, plus the disclosure every record carries. The exception is now bounded by review alone. Reject this PR if you would rather keep the timer and fund a campaign.Offline qualification
.agents/plans/14-runtime-refactor-release/README.mdholds the record. The entry freezes all 29 changed runtime files plus the two guides, the manifest and the build surface. Earlier entries froze 13. It is the widest claim any release has made on an exception written for a single reviewed feature.The 8.3.0 campaign and canary were regraded offline into a new seal, with no model calls. The 9.0.0 seal could not be reused because the grader closure covers the two files the freshness fix edits. The baseline stays 8.3.0.
Six releases now sit between this candidate and the last live measurement.
Evidence
bun run checkbun run replaybun run smoke:liveFollow-ups
patch-qualificationCI job rather than a unit test; the patch path has one. A git fixture for the feature path would close that.biome.jsonstill pins schema 2.5.11 while the dependency is 2.5.13. Untouched here because the offline exception refuses formatter policy changes.docs/development.mdin 9.0.0 are still missing; the 130 spare bytes in this PR's ceiling raise are reserved for them.🤖 Generated with Claude Code