Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
aff6112
chore(rewrite): add a reachability guard from app/cli.ts
claude Nov 4, 2026
fd86582
bench(rewrite): measure the message path on the production direct-* path
claude Nov 4, 2026
6d451a2
bench(rewrite): delete the benches that only exercise the bridge path
claude Nov 4, 2026
acece2e
refactor(rewrite): delete the bridge's client, host and protocol files
claude Nov 4, 2026
cfbcfbb
refactor(rewrite): delete the bridge session store, reducer and adopt…
claude Nov 4, 2026
5277104
refactor(rewrite): delete the adopted engine and the native-tracer loop
claude Nov 4, 2026
e3e27db
refactor(rewrite): delete scoped settings, the scripted model and not…
claude Nov 4, 2026
1ddd943
refactor(rewrite): delete app/run.ts; withGenerationGuard moves to ap…
claude Nov 4, 2026
1043741
refactor(rewrite): delete the agent-wire v1 SSE translator
claude Nov 4, 2026
c58f591
refactor(rewrite): trim the layer index files to the production contr…
claude Nov 4, 2026
ba56bbf
refactor(rewrite): delete dead helpers and the app-side publish seam
claude Nov 4, 2026
46ebec5
fix(rewrite): help no longer marks dispatched subcommands unavailable
claude Nov 4, 2026
f16f40c
docs(rewrite): describe the production direct-* path
claude Nov 4, 2026
8395b1b
refactor(rewrite): one owner for each duplicated table
claude Nov 4, 2026
556837e
refactor(rewrite): name things by what they do
claude Nov 4, 2026
0af0e3c
Merge origin/main into claude/zealous-volta-dfwldh
claude Nov 4, 2026
d738d35
docs(rewrite): fix what the fresh-reader check got wrong
claude Nov 4, 2026
fd861da
docs(testing): record the direct-settings e2e teardown race
claude Nov 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .agents/skills/testing/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,15 @@ and `68ef50ff` (local-only evidence), not a result file to resume appending.
cause from that alone. A separate fixed harness defect missed an already
captured HTTP request when no later PTY event woke its waiter; test HTTP-only
wakeup and an unmet-predicate timeout, not just terminal output.
- **Direct settings e2e teardown:** `source/direct-settings.e2e.test.ts` fails
intermittently with `ENOTEMPTY: directory not empty, rmdir
'<tmp>/term2-tool-rows-e2e-*/home'` (or `home/.local`) and no assertion
failure. It reproduced on unmodified `main` `d7bf2ff` in 3 of 6 isolated runs
(2026-11-04). `afterEach` calls `session.dispose()`, which kills the PTY
without awaiting child exit, then `rmSync`s the root while the child may still
write under HOME; `maxRetries` does not cover it. Treat the signature as this
teardown race, not a product regression; a likely fix (untested) is to await child exit
before removing the root.
- **Build/host isolation:** suites that replace `dist` in one worktree must run
sequentially; overlapping builds produced transient missing-module errors.
Missing `dist/cli.js` is setup failure, not behavioral red proof. Child-process
Expand Down
32 changes: 1 addition & 31 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,44 +104,14 @@ jobs:
run: |
pnpm exec tsc -p rewrite/tsconfig.json
node rewrite/scripts/check-layers.mjs
node rewrite/scripts/check-reachability.mjs
node rewrite/scripts/check-complexity.mjs
node --unhandled-rejections=strict --import tsx rewrite/bench/hops.mts
- name: Check the direct headless path
run: |
node rewrite/scripts/build.mjs
node rewrite/parity/run.mjs check --cli rewrite/dist/rewrite/src/app/cli.js headless-plain-answer settings-batch
node rewrite/bench/m1-direct.mjs
- name: Check adopted approval and crash recovery
run: |
pnpm exec tsx rewrite/bench/c1-adopted-approval.mts
pnpm exec tsx rewrite/bench/c1-adopted-kill.mts
pnpm exec tsx rewrite/bench/c3a-foreground.mts
for mode in normal fault partial unsupported; do PROBE_MODE="$mode" node --unhandled-rejections=strict --import tsx rewrite/bench/c3a-settings.mts; done
node --unhandled-rejections=strict --import tsx rewrite/bench/c3a-settings-legacy.mts
for mode in set fsync achieve propose-approve propose-race propose-reject; do PROBE_MODE="$mode" node --unhandled-rejections=strict --import tsx rewrite/bench/c3a-goal.mts; done
for mode in human refusal fault; do PROBE_MODE="$mode" node --unhandled-rejections=strict --import tsx rewrite/bench/c3a-budget.mts; done
for mode in basic held fsync; do PROBE_MODE="$mode" node --unhandled-rejections=strict --import tsx rewrite/bench/c3a-history-commands.mts; done
for mode in local accounting native interleaving; do PROBE_MODE="$mode" node --unhandled-rejections=strict --import tsx rewrite/bench/c3a-compaction.mts; done
for mode in plain image skill disabled error retry approval failure cancel; do PROBE_MODE="$mode" node --unhandled-rejections=strict --import tsx rewrite/bench/c3a-memory.mts; done
pnpm exec tsx rewrite/bench/c3a-owned-handle.mts
pnpm exec tsx rewrite/bench/c3a-network.mts
pnpm exec tsx rewrite/bench/c3a-network-background.mts
for mode in running late; do PROBE_MODE="$mode" pnpm exec tsx rewrite/bench/c3a-network-nested.mts; done
node --unhandled-rejections=strict --import tsx rewrite/bench/c3a-network-kill.mts
node --unhandled-rejections=strict --import tsx rewrite/bench/c3a-capture.mts
for mode in repeat batch reject ask-nav ask-cancel; do PROBE_MODE="$mode" pnpm exec tsx rewrite/bench/c3a-interactions.mts; done
pnpm exec tsx rewrite/bench/c3a-retry-turn.mts
for target in turn tool; do RETRY_TARGET="$target" pnpm exec tsx rewrite/bench/c3a-retry-effects.mts; done
for target in turn tool; do RETRY_TARGET="$target" node --unhandled-rejections=strict --import tsx rewrite/bench/c3a-retry-fsync.mts; done
node --unhandled-rejections=strict --import tsx rewrite/bench/c3a-retry-kill.mts
node --unhandled-rejections=strict --import tsx rewrite/bench/c3a-background-interrupt.mts
node --unhandled-rejections=strict --import tsx rewrite/bench/c3a-held-tool.mts
node --unhandled-rejections=strict --import tsx rewrite/bench/c3a-toolkill.mts
for failure in none session_interaction_pending session_interaction_resolved; do FAIL_TYPE="$failure" node --unhandled-rejections=strict --import tsx rewrite/bench/c3a-postexecute.mts; done
pnpm exec tsx rewrite/bench/c3a-input-fsync.mts
PROBE_MODE=unknown pnpm exec tsx rewrite/bench/c3a-tool-dispatch.mts
PROBE_MODE=tool pnpm exec tsx rewrite/bench/c3a-tool-dispatch.mts
for mode in valid forged changed-image changed-skill reuse mismatch-reuse; do PROBE_MODE="$mode" pnpm exec tsx rewrite/bench/c3a-surge-capability.mts; done

integration:
runs-on: ubuntu-22.04
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
node_modules
dist
dist.bak
bench-dist

# TypeScript
*.tsbuildinfo
Expand Down
2 changes: 1 addition & 1 deletion docs/plans/approvals-and-sandbox/guard-ledger.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ fail-closed parsing, no global/Standard additions and no subagent grant.

## Direct headless path generation limits (2026-10-31)

Owner: `withGenerationGuard` in `rewrite/src/app/run.ts`, reusing the existing
Owner: `withGenerationGuard` in `rewrite/src/app/generation-guard.ts`, reusing the existing
`GenerationGuard` and `GenerationStreamDeadlines` unchanged. Recovery owner: the
user, through the failed turn and a later follow-up. Scope: requests on the M1
direct executable only; the old run loop keeps its own instance. Class: inactivity
Expand Down
Loading
Loading