8000 fix: live e2e run 10 gaps — report append from a worktree, stale task.env copy, stuck-worker release, test temp-dir leak by adeelahmad · Pull Request #13 · adeelahmad/aloop · GitHub
[go: up one dir, main page]

Skip to content

fix: live e2e run 10 gaps — report append from a worktree, stale task.env copy, stuck-worker release, test temp-dir leak - #13

Merged
adeelahmad merged 7 commits into
masterfrom
claude/project-thread-qerfr9
Oct 18, 2026
Merged

adeelahmad merged 7 commits into
masterfrom
claude/project-thread-qerfr9

Conversation

@adeelahmad
@adeelahmad adeelahmad commented Oct 18, 2026 •
Copy link
Copy Markdown
Owner

Requested by Adeel · project thread

Before: live e2e run 10 (the wordfreq intent, with the rebuilt ctx-symbols) passed 12/12 for $1.20, and the false "duplicate definition" halts from runs 8 and 9 are gone (0 HIGH findings). But it took 44m48s and hit 45 gate blocks. A RED worker tried to write its report to the story's output.md with the Write and Edit tools; Claude Code's worktree isolation refuses a path outside the worktree, and docs/agents/ lives only in the main tree. The gate said only "no output.md", so the worker stopped 29 times without trying a shell append and sat for 29 minutes until the supervisor discarded it. Three more blocks called a stale task.env copy tampering after a re-dispatch bumped ATTEMPT in the contract. Separately, the host tests leaked a temp dir per run and the Codex and OpenCode ones started a real background cargo build over their fake tools (~500MB each); 57 leaked dirs filled the disk and killed live run 11 with ENOSPC.

After: the comms gate's block says how to append (a heredoc from the worktree, and why Write/Edit fail), the red, green, scaffolder and structural-reviewer personas say the same, and a worktree copy older than the contract is treated as stale and ignored. A worker that hits the same gate block 3 times in a row (one gate, task, attempt and worktree) is released unverified: not a pass, never merged; the gate leaves .agentic/state/stuck/<task>.<attempt> with the reason and budget watch prints a STUCK line once so the supervisor re-dispatches with feedback or re-plans. The host tests remove their temp dir on exit and set AGENTIC_NO_AUTOINSTALL=1; e2e-live drops its cargo target dirs after the run.

How: validate_comms carries the how-to in both its "no output.md" and "no block" messages. load_task_env compares the copy against the contract only when the copy is at least as new. Every gate verdict now logs its worktree and a checksum of the block reason; _gate_stuck counts the trailing identical host-run blocks for the key. Nine new conformance cases, all red before the change (54/54 now). make ci green locally and on CI.

Measured: the wordfreq rerun with these fixes (run 11): 12/12, 12m56s, $0.86, 6 blocks (run 10: 44m48s, $1.20, 45 blocks).

🤖 Generated with Claude Code

https://claude.ai/code/session_015QxyVf3NgwsgRyYpBgDDTC

….env copy is not tampering

Live e2e run 10 (wordfreq, rebuilt tools): 12/12, $1.20, but 45 blocks and 45 min.
- Claude Code's Write/Edit refuse a path outside the worker's worktree, and docs/agents/
  lives only in the main tree; a RED worker stopped 29 times without trying a shell append.
  The comms gate's block and the worker personas now say to use a heredoc append.
- A worktree task.env copy older than the contract (a re-dispatch bumped ATTEMPT) is stale,
  not tampering; a copy edited by the worker is newer and still blocks.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015QxyVf3NgwsgRyYpBgDDTC
…host checks, e2e intents)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015QxyVf3NgwsgRyYpBgDDTC
Every host test left its temp dir behind, and the Codex and OpenCode ones
set a fake CLAUDE_PLUGIN_DATA that made the SessionStart hook start a real
background cargo build over the fake tools (~500MB per run). 57 leaked dirs
filled the disk and killed e2e live run 11 with ENOSPC. The tests now remove
their dir on exit and set AGENTIC_NO_AUTOINSTALL=1; e2e-live drops its cargo
target dirs after the run.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015QxyVf3NgwsgRyYpBgDDTC
Live run 10 lost 29 minutes to a RED worker that stopped 29 times on one
unchanged block. The gate library now logs a checksum of each block reason
and the worktree; the third identical host-run block for one gate, task,
attempt and worktree releases the stop unverified, leaves
.agentic/state/stuck/<task>.<attempt> with the reason, and budget watch
prints a STUCK line once so the supervisor re-dispatches with feedback or
re-plans. Not a pass, never merged. A different reason or a new attempt
resets the count; self-checks never release. 7 conformance checks.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015QxyVf3NgwsgRyYpBgDDTC
Resolves the gate-verdict log (stuck release + the aladdin.event stream),
budget watch (STUCK lines + breach class), the Codex test env, the bin
README and the CHANGELOG.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015QxyVf3NgwsgRyYpBgDDTC
@adeelahmad adeelahmad changed the title fix: live e2e run 10 gaps — report append from a worktree, stale task.env copy fix: live e2e run 10 gaps — report append from a worktree, stale task.env copy, stuck-worker release, test temp-dir leak Oct 18, 2026
Run 11 (wordfreq, all run-10 fixes): 12/12, 12m56s, $0.86, 6 blocks, down
from 44m48s, $1.20 and 45 blocks in run 10.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015QxyVf3NgwsgRyYpBgDDTC
…ORY_DIR in the dispatch gate, stuck release on OpenCode

Run 11 (12/12, 12m56s, $0.86, 6 blocks) left three avoidable blocks. The
planner was told only "failed the schema" and rewrote every artifact twice
(12 of 25 verdicts): the block now carries md-db's diagnostics and hints.
The structural reviewer's contract had no STORY_DIR (a whole-wave review has
no single story): gate-dispatch now requires an existing STORY_DIR and names
the sprint dir for a wave review. OpenCode reported a stuck release as a
plain pass: it now says released unverified, do not merge. make test-hosts
masked a failing node test as "node not found".

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015QxyVf3NgwsgRyYpBgDDTC
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

0