Skip to content

[RCL-45] rcl-converge skill: route exit 0 through step 2a, harden the detached wrapper, carry the run id in pending entries - #56

Merged
mstroeck merged 2 commits into
mainfrom
rcl-45-converge-skill-followups
Sep 9, 2026
Merged

[RCL-45] rcl-converge skill: route exit 0 through step 2a, harden the detached wrapper, carry the run id in pending entries#56
mstroeck merged 2 commits into
mainfrom
rcl-45-converge-skill-followups

Conversation

@mstroeck

@mstroeck mstroeck commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Skill text only (skills/src/rcl-converge.md, three variants regenerated with npm run build:skills); rcl itself is unchanged.

  1. Step 2 → step 2a. Every rcl exit=0 now goes to step 2a in both variants, so its rule 1 writes the evidence: none (<reason>) ledger line for an unevidenced loop instead of the round continuing without a ledger evidence state.
  2. Detached wrapper (agents/codex variants). The signal handler (on_signal, a function so $rcl_pid is read at signal time) is installed before rcl is backgrounded; it forwards TERM, reaps rcl and exits 143 — in dash, $? after a signal interrupts wait is the handler's status, so the old wrapper logged rcl exit=0 for a killed review. The prose states that the PID file names rcl, not the wrapper, and that the rcl exit= line is appended after rcl is gone.
  3. Pending entries carry the run id. evidence: pending run=<run id> and evidence: pending (flush timed out) run=<run id>, so a resume after /tmp cleanup can rcl telemetry flush --run <run id> without the JSON report; the ledger format section says so.

test/skills/generated.test.ts pins the new wrapper shape and the pending line. Vendored copies in allocator-one follow in a separate PR (the fork port takes items 1 and 3; it has no detached wrapper). npm run lint && npm test green.

RCL-45

… detached wrapper, carry the run id in pending entries

- Every rcl exit=0 goes to step 2a, so rule 1 writes the evidence: none
  ledger line when the loop is not evidenced.
- The detached wrapper installs its signal handler before backgrounding
  rcl; the handler reaps rcl and exits 143, so a killed review never logs
  rcl exit=0 (dash sets $? to the handler status after a trapped wait).
- Pending ledger entries record run=<run id>, so a resume after /tmp
  cleanup can flush the run without the JSON report.
…n; recorded replaces the whole pending state
@mstroeck
mstroeck merged commit 46d5021 into main Sep 9, 2026
1 check passed
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.

1 participant