fix(local): preserve journal connections through downstream execution - #250
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Review swarm: maintainabilityNo fresh transcript was produced for run |
Review swarm: historyNo fresh transcript was produced for run |
Review swarm: structureNo fresh transcript was produced for run |
Review swarm: FAILED
Cloud run: |
maintainability lens — PASSNow I've read the RFC-context prelude and the two changed source files. Let me finalize the review. Maintainability review — PR #250 (journal-close-0909) Blockers — none. The behavior change is small and the tests pin it. Concerns
Notes
REVIEW_PASSED |
history lens — PASSBlockers: none. PR #250 at Notes:
Concerns, non-blocking:
This is a history and claims review; I did not independently rerun the test or mutation commands. The checked-in transcripts are reviewed evidence, not fresh execution results. REVIEW_PASSED |
structure lens — MISSING |
|
🎯 review-swarm: FAILED (M:pass H:pass S:missing) Lens transcripts posted as sibling comments above. |
…a verdict One real structure verdict across 8 PRs; MISSING from both runners everywhere else, as a 62-byte stub. Aggregate needs all three lenses, so review can never go green -- #250 and #252 both had two passing lenses and were still red. Killed my own #248 hypothesis first: structure comments from 09-08 predate that merge, and MISSING means no transcript, which a marker-placement contract cannot cause. Filed flows#255. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FtQSAcGDta5VH9xiZFT4sR
…ct (#255) (#378) `opencode` was mapped to the structure lens in both `ops/preswarm-check/ lens-runner.sh` and `workflows/review-swarm.yaml`, but the binary was absent on both runners for every sampled PR. That made structure MISSING on every review comment (byte-identical stub across #238, #240, #242, #244, #250, #251, #252), which in turn made the aggregate `review` check unpassable by construction: `swarm-post.sh` gates on `overall = PASSED`, and one lens returning no verdict makes PASSED impossible. Two PRs (#250, #252) were merged with `--admin` for exactly this reason; the corrosive effect the issue calls out is that a gate that can never pass trains everyone to override it, so a *real* FAILED becomes noise. Move `structure` to `codex` — installed and authenticated in both runners so it can actually produce a transcript. Model diversity across the swarm is preserved by `maintainability = claude`; the two `codex` lenses remain independent because their prompts differ, not because their CLIs differ. Add `ops/preswarm-check/lens-cli-parity-check.sh` and wire it into the base-owned `review-swarm-wrapper-guard.yml` alongside the prompt-parity check from #218. The two checks are the same shape of drift on two axes: prompt text and CLI mapping. The new check also refuses if a mapped CLI is not on PATH, since that reproduces the exact failure this fix exists to prevent — a lens whose CLI call fails silently produces NO_VERDICT on every PR and buries real findings. `PRESWARM_ALLOW_MISSING_CLI=1` opts a partial environment out; the guard workflow does not set it. Verified with a mutation: pointing the swarm YAML back at `opencode` while leaving the runner on `codex` makes the parity check fail on both `history` and `structure` with the specific divergent CLIs printed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Session-Id: efeda5df-9b7c-48d4-b2ce-957f5bef0a82 Co-authored-by: kjgbot <kjgbot@agentrelay.dev>
A local agent followed by more than 30 seconds of deterministic work fails with
journal client: closed by caller.step.completedrives downstream steps before replying, but used the 30-second request timeout; the launcher also queued status reads on that same connection and hid the original worker error when closing it.Give the worker its own connection, apply run-lifecycle timeout semantics to
step.complete, drain its acknowledgement before publishing success, and retain the worker error on failure. The fix is independent of #249; the same failure was reproduced before and after integrating that PR temporarily for testing.Validation and full captured commands/output are in the evidence report. The real-daemon agent → 35-second verification → report reproducer exits 0 and exports a successful journal. Reverting either fix reproduces the corresponding timeout; restoring the exact bytes passes. Final standalone checks: SDK build and test typecheck, 18 SDK tests, and six launcher tests. Protocol rejection, disconnect, explicit close, journal pagination, and failed-command behavior are covered.
The exact checked-in
workflows/drive-local.yamlstill refuses at selection because its F8b change is already applied; its exit-1 transcript is included. This PR does not claim a completed live Claude drive tick. No kernel changes, gate changes, or #249 implementation changes are included.