Skip to content

v0.1.66 — delegate preset, safer auto-approve, visible whitespace

Choose a tag to compare

@mitchjablonski mitchjablonski released this 12 Oct 18:06
bfbdc6c

v0.1.66 ships the 5 PRs merged on main since v0.1.65: four merge commits (#507, #508, #520, #522) and one squash merge (#519).

What ships

Delegate a task with one check-in and one packet (#507, #520)

You get a new opt-in preset, /deeppairing:delegate <issue | text>. It runs delegated work in three beats:

  • An intent check: one brief that states what the agent understood, what done looks like, what it will decide alone, and what it will ask you.
  • A quiet run: the agent interrupts you only for the decisions you need to make.
  • One understanding packet: a debrief and its changeset arrive together as a single item to review.

It is guidance only. It uses the existing tools and adds a "Delegated work" paragraph to the pairing SKILL. The design doc (docs/design/delegate-first.md, #507) ships with it.

What this is not. Delegate is not a new autonomy level yet, and it is not the default. The fourth level, the default flip and the packet UI are slices S1–S6 of the design. None of them ships here.

Auto-approve stops when you lower your autonomy (#522, fixes #521)

  • The countdown cancels: an armed auto-approve countdown now cancels, and its UI clears, as soon as the artifact stops being eligible. That covers lowering your autonomy level to supervised, a confidence change, the status leaving draft, and hiding the approve button.
  • The daemon refuses a stale auto-approval: auto approvals now send reason: "auto_confidence". The daemon re-checks at commit and answers 409 auto_approve_not_permitted, with no state change, if your level no longer permits it. Your own clicks are unaffected.
  • Limits: balanced is still eligible, so autonomous to balanced keeps counting down. The a/Enter keymap countdown is not revoked. A hostile client can leave out reason, which the review noted as a residual.

The CLI preview marks whitespace and invisible characters (#508, #519; fixes #506, #518)

  • Changed whitespace is visible: spaces and tabs on changed lines show as ⟨SPACE⟩ and ⟨TAB⟩. This includes whitespace-only differences inside mixed edits, trailing whitespace and final-newline changes.
  • Invisible characters are marked: non-ASCII spaces, default-ignorable code points and the braille blank show as tokens (including U+3164, U+2800 and U+034F). Literal marker text is escaped, so it can't pass for a marker.
  • Mixed edits (#519): a replacement that also changes text, such as foo(x) to foo(y), now shows the trailing space. Ordinary context and identical-layout edits stay readable.

Not in this release: the delegate slices S1–S6, #500 (flaky tests, a WSL clock-offset environment issue), and #430/#434.

Review provenance

  • #507: Opus UX review (changes at rev 2, approved at rev 3). Astra's architecture review ran four rounds of findings, all addressed. An independent Opus architecture review approved rev 7, and a Sonnet delta check approved rev 7.1. Merged under Mitch's authorization; Astra's review of the final head is welcome after the fact.
  • #520: an independent Sonnet review approved 8404f32e (field names checked against the schemas, 31/31 pass). Merged as 4a370dc5 after #507 landed.
  • #522: an independent Opus adversarial review approved d7350ea2. A Sonnet delta review approved b2d3ec90. Merged under Mitch's authorization.
  • #508: Astra approved b0ab8665 (Sol authored), and an independent Claude adversarial review approved the same head (a brute force of 88,741 strings per mode found no collisions). Merged as b9f9fb40.
  • #519: Sol approved the exact head 6172369d (33,306 distinct pairs, all previews unique), with a root integration review in agreement. Merged under delegated second-agent approval.
  • Every round is recorded on its PR.

Verification

Measured on a fresh native clone, branch release/v0.1.66 off main e84b2772:

  • Version sources: all four read 0.1.66.
  • Diff vs main: 6 files, 6 insertions and 6 deletions (the four version sources plus the daemon.js / standalone.js stamps).
  • Cold build: pnpm install --frozen-lockfile, then pnpm build:clean; the regenerated stamps are committed.
  • Typecheck: 3 of 3 tasks clean.
  • Lint: 0 errors; mcp-server 218 warnings (cap 240).
  • Tests: full FORCE_COLOR=0 NO_COLOR=1 pnpm test passes on the first run, in the foreground: mcp-server 386 files and 5,839 tests, shared 15 files and 321 tests. No timing failures, so there was nothing to re-run.
  • Checks: version-lockstep and plugin-bundle-boot pass (2 files, 5 tests).
  • Rebuild: a second cold pnpm build:clean leaves git status clean, and grep -rF "0.1.65" claude-plugin/server returns nothing.
  • Conflict markers: none.