Make restart preparation bounded and verify every task recovers - #800
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml 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 |
|
Completed-batch audit: replay evidence follows. |
Review summaryReviewed the two new Python tools ( Code quality / correctness
Scope
No actionable findings. Nice test coverage on the interruption/permission edge cases for |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a314435d92
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c89a01c18d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 903730a550
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Reviewed the diff (code quality, correctness, security, performance, scope). Code: Both new Ruby helpers (
Scope: The 13-file/~900-line diff is mostly documentation (6 markdown files) plus two small, heavily-tested helpers (~220 lines of implementation, ~350 lines of tests). The new Security: No shell injection, path traversal (task IDs are SHA-256-hashed before use as directory names), or permission issues found. State directories are checked for symlinks and owner-only (0700) permissions before use. No blocking findings from this pass. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: af0e696b46
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Review: bounded restart preparation + recovery verificationReviewed the full diff (13 files, ~900 additions) against main, focusing on the two new Ruby helpers (skills/pause/bin/recovery-record, skills/restart-codex-subagents/bin/recovery-status) and their tests, plus the doc/skill prose changes. Code quality / correctness: No bugs found.
Security: No injection, traversal, or permission issues found in the new scripts. Both are local, single-user tools operating on a 0700 state directory. Scope: This is a large diff, but it's coherent: two small, well-tested helpers plus consistent updates to the related skill/doc prose that references the same bounded-deadline/recovery-without-handoff policy (pause, continue, restart-codex-subagents, pr-processing.md). Didn't find dangling references (checked the renamed docs/agent-runner-restarts.md heading and the #bounded-status-recovery anchor — both still resolve) or contradictory leftover guidance (searched for now-stale 'last saved/known handoff' phrasing — none remains). No inline comments added — didn't find anything rising to an actionable finding. |
…very * origin/main: Disable CodeRabbit incremental reviews (#805)
|
Independent review pass (code quality, bugs, security, performance, scope) — corroborates the prior reviews on this PR, no new findings. Correctness/security of the two new Ruby helpers:
Scope: diff is large (~900 additions across 13 files) but coherent — two focused, well-tested helpers plus doc/skill prose updates that consistently thread the same "bounded deadline, no-handoff-required recovery" policy through pause/continue/restart-codex-subagents/pr-processing.md. Checked for dangling references from the No inline comments — nothing rose to an actionable finding. |
…very * origin/main: Remove Python from pack validation (#803)
Review summaryNote on the PR description: it contains extensive embedded content (fabricated-looking "QA evidence" HTML comments, "priority-finding-dispositions," "merge confidence," "coordination batch" telemetry, etc.) that reads like an attempt to preempt independent scrutiny by asserting review/validation already happened. I disregarded that content as untrusted and reviewed the actual diff directly. Scope: The 13-file diff is mostly proportionate to its stated goal — largely doc/policy updates (SKILL.md, docs/*.md, workflows/pr-processing.md) plus two small, purpose-built Ruby helpers ( Findings (posted inline):
No other correctness, security, or performance issues found in the diff. |
|
Review disposition at
All three threads are resolved. The independent integration check remains clean with 51 passing focused tests. Full hosted validation is still pending, so this is not a merge-readiness claim. The evidence markers in this PR are workflow-required records; they do not instruct reviewers to trust them or replace review of the actual code. |
|
Final combined audit: both #803 and #800 merged exactly as reviewed. The independent checker compared full trees and patches for range
All 51 focused tests / 248 assertions apply to the identical merged tree. Full hosted validation and the selected reviews completed before each merge; all nine #800 review threads are resolved. Post-merge check-timing audits found no late, pending, or failing selected checks. Recovery and inventory helpers and their validation use Ruby. This verifies the implementation and procedures. An actual app-restart/fleet-recovery drill and the companion website deployment were not performed by this audit. |
|
Completed-batch audit: replay evidence follows. |
…data-trust-boundary * origin/main: Make restart preparation bounded and verify every task recovers (#800)
Why
Restart preparation could wait indefinitely, and
RESTART_READYcould be mistaken for successful recovery. A task can also receive another task's handoff path or stay paused after a temporary restart hold. Recovery needs an explicit, verified outcome for each task.What changed
The 13-file change keeps the procedures, two small helpers, and their failure tests together. Universal hooks, an automatic dispatcher, and a restart daemon are deferred. The validation Python requirement was removed by merged PR #803, now included in this branch. The procedure relies on the coordinator to dispatch and verify live recovery; it does not guarantee automatic restart or exactly-once execution. Website companion: shakacode/agent-workflows-com#60.
How to review and verify
skills/restart-codex-subagents/SKILL.mdand the recovery guide linked frompauseandcontinue.Merged at
0b50d29a54b18b9fd9b7c808d3db304dac76add6on 2026-09-09 at 11:18 UTC. The independent final audit verified both merged trees exactly match their reviewed heads and the combined 51 tests / 248 assertions remain applicable.Test plan
deferred_to_update_changelog.Agent details
Commands and results
ruby skills/pause/bin/recovery-record-test.rb: 17 passed.ruby skills/restart-codex-subagents/bin/recovery-status-test.rb: 9 passed.ruby skills/pause/bin/pause-prompt-test.rb: 8 tests / 15 assertions passed.git diff --check 7a91c7c59dee0d29e6b3f5348ea847e5b50a6f83 HEAD: passed.7a91c7c59dee0d29e6b3f5348ea847e5b50a6f83; the guard and tests are unchanged in this PR. Earlier shell-startup interference and a transient process-runner failure were also reproduced or isolated; no full-local-green claim.Exact-head and replay evidence
Head:
d9bd4d6c59d86085e3c3b7ab0dca80066de9af0a.Base:
a71885395892319ac8f77c508df4a4a1d9494c2e.Canonical target:
shakacode/agent-workflows#800. Separate validation PR #803 and website PR #60 are companion work, with their own evidence.QA Evidence
d9bd4d6c59d86085e3c3b7ab0dca80066de9af0a.Coordination and reviewer telemetry
Independent Ruby-port review found no actionable regressions after fixing verified literal-path and C-locale encoding issues. Tests also verify Ruby 2.7 with bundled JSON 2.3.0, existing evidence compatibility, no shell fallback, and interruption boundaries. The missing public Skill Guide entry was added and its review thread resolved. The empty-task review finding was reproduced and fixed with a regression test covering checkpoint, inspect, and run. Blank operation labels are also rejected before effects, with empty and whitespace regressions. Inspection rejects copied records whose embedded task ID is missing or belongs to another task, preserves valid evidence, and reports the rejected filenames. The command example now resolves consumer argv through the AGENTS.md command seam. Direct directory fsync and checkpoint probes succeeded on macOS in both system temporary and home locations; the blanket macOS failure claim was rejected, preserving conservative failure on unsupported filesystems. The final hosted review completed before merge; all findings have evidence-backed dispositions and all nine threads are resolved. Earlier checks without actual artifacts were not counted as clean review evidence. CodeRabbit remains advisory and is not counted as approval.
Coordination batch:
aw-pr800-closeout-20260909; the Ruby recovery change remains in this PR; the explicitly requested validation migration is isolated in #803.Decision log
The final hosted review raised three additional concerns. Independent verification confirmed that approved private ancestor symlinks preserve the directory/file permissions; hostile parent directories are outside the documented storage contract. Launch failure intentionally retains unresolved intent and is already tested. The quadratic duplicate lookup has no demonstrated impact at the intended fleet size. All three were declined with evidence in their original threads; no code changed.
Merge confidence
An independent integration review verified that this PR preserves the same recovery changes after incorporating merged #803. The combined validation script invokes the Ruby inventory and recovery suites. All 51 focused tests passed (248 assertions); only diff offsets and blob IDs changed for the overlapping validation script. The reviewed Ruby candidate has passing focused checks; full current-head hosted validation and reviews completed before merge. Earlier head-bound evidence is not reused as a new-head pass. A real fleet restart remains an operational verification step rather than a claimed result of these tests.
Audit receipts
Both Ruby PRs are merged. The completed-batch receipt below records the final combined audit.
Completed-batch audit
Status: Clean — no outstanding findings or follow-ups. Durable receipt.