Skip to content

chore(release): 0.10.0 - #225

Merged
fstubner merged 1 commit into
mainfrom
release/0.10.0
Sep 6, 2026
Merged

chore(release): 0.10.0#225
fstubner merged 1 commit into
mainfrom
release/0.10.0

Conversation

@fstubner

@fstubner fstubner commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Version bump, changelog heading, and acceptance/0.10.0.md.

The final acceptance pass returned CONDITIONAL with two HIGH documentation findings and five smaller ones. All seven are fixed here, and the record marks them BUILDER — fixed after the reviewer went home, unreviewed.

What the pass caught

The release notes were wrong about this release. They declared doctor --json still printed text on a load failure; the same release fixed it. And PRs #223 and #224 contributed no changelog entries at all — eight user-visible changes missing, including doctor gaining a check that makes it exit 1 in an unbuilt checkout where it used to exit 0.

Two behaviours were pinned by nothing. The pass deleted the usage empty state and forced the doctor job-runner check to pass, simultaneously, and the suite came back byte-identical at 1258 passed. Both worked; neither was tested.

The lock sweep was the "looser second rule" its own comment denied. Measured: the sweep deleted an unreadable lock after 25 ms; the acquire path waits out a deliberate 1018 ms grace for the same file. The docblock, the commit message and the test all claimed the two used the same rule. wx creation leaves a real empty-file window and the sweep runs before every job start, so losing that race deletes a live holder's lock and lets two dispatches edit one shared_locked workspace. It honours the grace now.

That is the same overclaiming habit four earlier passes caught — this time inside a comment written to deny it.

--json was one spelling and four commands short. --json=true got JSON on success and plain text on failure. An unknown command, auth with no subcommand, and dispatch with no prompt bypassed the envelope entirely — and the first printed the help block to stdout, so harness-dispatch frobnicate --json | jq was fed usage text, the exact pipe the envelope exists to serve. All four emit the envelope now; usage moved to stderr. Consequence worth noting: main() throws for a missing prompt rather than returning 1.

The sink inventory was missing three entriesresult.md and both installOutputRedaction calls. Removing the first left that file 20/20 green.

Verification

  • npm run check: 1269 passed, 8 skipped, exit 0, green in one full run.
  • Live dispatch on this build: cursor_clipong. codex_cli refused as rate-limited, which costs nothing and counts as a refusal.
  • Every fix sabotage-checked: reverting each fails its own test and no other.

Open at ship time

Named in full in acceptance/0.10.0.md. The substantive ones: MCP JSON-RPC error frames bypass the redaction sinks on the HTTP transport (structural, never demonstrated carrying a credential); stream-subprocess has no backpressure and kills a healthy child on queue overflow; redaction is value-based, so an api_key that is an ordinary word mangles output; and a Windows git-spawn flake at roughly 1 full-suite run in 11.

Merging this and pushing the tag publishes 0.10.0 to npm.

Version bump, changelog heading, and the acceptance record for the release.

Also the seven findings from the final acceptance pass, which returned
CONDITIONAL:

- The release notes declared `doctor --json` still printed text on a load
  failure. It does not; this same release fixed it.
- PRs #223 and #224 had no changelog entries at all — eight user-visible
  changes, including doctor gaining a check that makes it exit 1 in an
  unbuilt checkout, and a lock sweep that runs before every job start.
- The `usage` empty state and the doctor job-runner check were pinned by no
  test: removing both left the suite byte-identical at 1258 passed.
- pruneDeadWorkspaceLocks deleted an unreadable lock on sight, measured at
  25ms against the acquire path's deliberate 1018ms grace, while its
  docblock, its commit message and its test all asserted the two rules were
  the same. It now honours the grace. `wx` creation leaves a real empty-file
  window, and this runs before every job start, so losing that race deletes
  a live holder's lock and lets two dispatches edit one shared_locked
  workspace.
- Removing the sweep's call from start.ts failed no test.
- `--json` was honoured only for the exact token `--json`, and four error
  shapes bypassed the envelope entirely; `unknown command` printed the help
  block to stdout, so `frobnicate --json | jq` was fed usage text. All four
  emit the envelope now and usage moved to stderr, which also means main()
  throws for a missing prompt rather than returning 1.
- The redaction sink inventory omitted result.md and both
  installOutputRedaction calls; removing the first left that file 20/20
  green.

Live dispatch on this build: cursor_cli returned pong; codex_cli refused as
rate-limited, which costs nothing and counts as a refusal.

npm run check: 1269 passed, 8 skipped, exit 0, green in one full run.
@fstubner
fstubner merged commit a80d3d7 into main Sep 6, 2026
4 checks passed
@fstubner
fstubner deleted the release/0.10.0 branch September 6, 2026 01:00
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