type: meta

slug: preset-tmpfile-cleanup

base_branch: main

gate0_mode: strict

preset: codex


type: task

seat: coder

tier: medium

desc: Read docs/plans/2026-07-02-preset-tmpfile-cleanup.md Task 1 (clean up synthetic runconfig temp file) for the full contract. Wrap main()'s per-run logic in src/runner.js in a try/finally that deletes the synthetic --preset runconfig temp file (only the one this invocation created) after the run completes, success or failure; never delete a user-supplied --runconfig file. Acceptance: node -e "require('./src/runner.js')" 2>&1 | head -1 — expect no output. Commit only: src/runner.js.


desc: Read docs/plans/2026-07-02-preset-tmpfile-cleanup.md Task 2 (test synthetic runconfig cleanup) for the full contract. Add two cases to test/runner-integration.sh using the file's existing mkfixture()/ok()/bad() pattern: Case A asserts a --preset-only run leaves zero harness-runconfig-* temp files behind after exit; Case B asserts a --runconfig-only run does NOT delete that file. Acceptance: bash test/runner-integration.sh — expect all cases PASS, exit 0. Commit only: test/runner-integration.sh.