Skip to content

fix: restore OMP secondmates after successful generations - #205

Merged
dnth merged 2 commits into
mainfrom
fm/fm-boat-wake-restore-omp-artifacts
Oct 5, 2026
Merged

dnth merged 2 commits into
mainfrom
fm/fm-boat-wake-restore-omp-artifacts

Conversation

@dnth

@dnth dnth commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

Intent

Fix Boat F1: wake-on-delivery restore refuses a remote OMP secondmate that ran >=1 turn. In bin/fm-spawn.sh secondmate branch, OMP_SECONDMATE_RELAUNCH=1 is set when the recorded endpoint is dead/missing, but the unconditional artifact guard refused when prior-generation .omp-ext.ts/.omp-ready/.omp-started markers exist. Those markers are the prior incarnation's own runtime artifacts, not worker leftovers. When OMP_SECONDMATE_RELAUNCH=1, retire the prior generation's .omp-* artifacts via the existing spawn_omp_secondmate_abort_retire_generation (or equivalent) instead of refusing, keeping the same live-owner checks.

Acceptance criteria:

  • AC1: e2e fixture proves successful-generation -> compute sleep -> wake-on-delivery restore succeeds (the gap PR 200 tests missed).
  • AC2: live-owner checks preserved: a genuinely live prior owner still refuses rather than clobbering.
  • AC3: full suite green; bin/fm-lint.sh clean. Accepted form: broad full-suite regression is owned by the PR's GitHub CI (ci.yml owns broad regression); local evidence is bin/fm-lint.sh clean plus the changed-path tests green; a red GitHub CI blocks PR-ready.

Firstmate-Validation-Generation: 628efbb1c79765e286efabc44f0aef71

What Changed

  • Retire prior OMP secondmate runtime markers when relaunching a dead or missing endpoint, allowing wake-on-delivery restore after a successful generation.
  • Preserve live-owner checks and reject unsafe artifact paths before cleanup.
  • Document relaunch cleanup and add local and remote regression coverage for restore, live-owner refusal, and exactly-once delivery.

Risk Assessment

✅ Low: Captain, the change narrowly fixes prior-generation artifact retirement while preserving live-owner refusals and adding behavioral restore coverage.

Testing

The Test agent exceeded its invocation budget before live validation completed; no evidence was gathered for this head.

  • Outcome: ⚠️ 1 warning across 1 run (30m1s)

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

✅ **Review** - passed

✅ No issues found.

⚠️ **Test** - 1 warning
  • ⚠️ The Test agent did not finish within its invocation budget. Reported: agent run tests timed out after 30m0s: agent last produced output 52s ago (110 observed); agent reported: codex exited: context deadline exceeded: 2026-10-05T06:50:11.374838Z ERROR codex_core::tools::router: error=exec_command failed: CreateProcess { message: "Rejected(&fix: complete remote retirement with foreign pending replies #34;`/usr/bin/zsh -lc \&fix: complete remote retirement with foreign pending replies #34;rm -rf -- .test-disposable; git status --short; python3 - <<'PY'\nfrom pathlib import Path\np=Path('~/.no-mistakes/evidence/01M45BF96NPNGRTFSXCXZDFJWT/live-restore-summary.log')\ns=p.read_text().split.... This is a budget or provider-slowness cut, not a code failure. Re-running the same request costs another full budget, so no further attempt is made automatically. If this repository's targeted tests or evidence gathering routinely approach the default 30m0s, raise test_agent_timeout in global config. Respond with fix to spend another budget: a repair turn runs only for selected findings other than this budget cut, then validation re-runs. Or abort and retry after raising the budget.
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

dnth added 2 commits October 5, 2026 11:38
A wake-on-delivery restore of a remote OMP secondmate that ran at least one
turn always refused: the secondmate artifact guard treated the prior
incarnation's own turn-start, readiness, and doorbell markers as worker
leftovers even though the recorded endpoint was proven dead or missing.

When the endpoint is proven gone, the guard now refuses only unsafe artifact
paths, and the prior generation's runtime markers are retired after the
session-lock and integration-marker live-owner checks pass, so a live owner
still refuses without losing anything.
…ion by tearing down pooled workers before session restarts, while preserving the secondmate home for later recovery cases. Full lint and both OMP tests pass. Real Herdr verification remains blocked locally by the worktree’s Unix socket path length; CI must rerun it
@dnth
dnth merged commit 1350717 into main Oct 5, 2026
17 checks passed
@dnth
dnth deleted the fm/fm-boat-wake-restore-omp-artifacts branch October 5, 2026 08:44
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