Skip to content

chore(release): 9.0.1, the runtime refactor, qualified offline - #93

Merged
vriesd merged 3 commits into
mainfrom
release-9.0.1-runtime-refactor
Sep 18, 2026
Merged

vriesd merged 3 commits into
mainfrom
release-9.0.1-runtime-refactor

Conversation

@vriesd

@vriesd vriesd commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

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:

  • The plugin validates its workspace at load instead of on the first tool call, logging the reason before it refuses. Starting OpenCode with the filesystem root or a home directory as the project now fails at load.
  • An identical repeat of flow_feature_complete returns 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 qualify takes --freshness and 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_FEATURES entry 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.md holds 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

Gate Result
bun run check 1251 pass, 1 skip, 0 fail
bun run replay 13/13 gated cassettes reproduced
bun run smoke:live 22 pass
Offline record verification VERIFIED against the exact candidate tarball

Follow-ups

  • Fund a live campaign. It would reset the baseline, restore the patch path unavailable since 8.4.0, and end a disclosure that has grown to six releases. The timer that used to force this is gone.
  • The feature path's retained flag is covered end to end by the patch-qualification CI job rather than a unit test; the patch path has one. A git fixture for the feature path would close that.
  • biome.json still pins schema 2.5.11 while the dependency is 2.5.13. Untouched here because the offline exception refuses formatter policy changes.
  • Three qualifiers trimmed from docs/development.md in 9.0.0 are still missing; the 130 spare bytes in this PR's ceiling raise are reserved for them.

🤖 Generated with Claude Code

vriesdcrv and others added 3 commits September 18, 2026 14:05
Phases 0-4 of the runtime refactor plan are merged (#88-#92). This commit
holds the final package.json, README pins and changelog, so the release
record can name it as the reviewed commit without a later edit moving a
frozen blob.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 18, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-18T12:37:11.834197Z 7f58416 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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 } : {}),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

@vriesd
vriesd merged commit 4a4cf6e into main Sep 18, 2026
7 checks passed
@vriesd
vriesd deleted the release-9.0.1-runtime-refactor branch September 19, 2026 16:48
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.

2 participants