Repository navigation
fix(skills): check the token capture and the unproven verdict in the lifecycle model - #238
Conversation
…l without a token Refs #222
…lifecycle model Two guards join the model. TokenNamesProgram: captureToken keeps an autogroup only after the program left the host's session. Without it, destroy records destroyed while the group runs (R16). ReusedIdReadsGone: isProgramGroupAlive reads an unproven group gone. Without it, no wait of destroy passes while an unrelated group holds the id, which the new witness WitnessWaitPassesReusedId shows. DestroyStopsLeftovers now also reads readProvenProgramGroup and hasToken. Refs #222
|
@codex review |
|
@codex security review |
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. |
|
Codex Review: Didn't find any major issues. Can't wait for the next one! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
…-guards # Conflicts: # .agents/skills/verify-session-lifecycle/coverage.json
… unchecked kill Refs #222
|
@codex review |
|
@codex security review |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
|
Codex Review: Didn't find any major issues. 🚀 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
…-guards # Conflicts: # .agents/skills/verify-session-lifecycle/coverage.json
Why
The operator's goal is to land the open lifecycle issues he filed. This PR closes #222, the follow-ups from the review of #221.
Three edits to the destroy proof broke no rule of the lifecycle model. Only the coverage hash flagged them: a capture that keeps the host's autogroup, a
readProvenProgramGroupthat returns no record, and anisProgramGroupAlivethat reads an unproven group alive.What changed
TokenNamesProgramturns FALSE whencaptureTokencan keep the host's autogroup. Its mutant breaks R16:destroyrecords destroyed while the group runs.ReusedIdReadsGoneturns FALSE when an unproven group reads alive. Its mutant shows that no wait ofdestroypasses while an unrelated group holds the id, through the new witnessWitnessWaitPassesReusedId.DestroyStopsLeftoversnow also readsreadProvenProgramGroupandhasToken./proc/<pid>/tasklisting and for a capture that still reads the host's autogroup.docs/USAGE.mdnames an empty or malformed autogroup file, and the host's kill without a token. Limit 2 now says that a kill without the check can reach an unrelated process that took the group id. A new limit 6 names the two declined cases: an idle time-out whose check cannot run recordsexitedwhile a leftover runs (a laterdestroyfails withHOST_TIMEOUT, andgccan remove the folder), and underhidepidadestroythat cannot prove a hidden group gone fails withHOST_TIMEOUT.Scope
No product code changes. The issue's other items stay as they are, for these reasons:
exitedwith a leftover. That is the same state as a program that exits on its own and leaves a process, which USAGE limit 5 covers. Makinggccheck groups would be a new feature.hidepid=2,destroyreads a hidden group alive and times out. That is the fail-safe side: the hidden process can also be asudochild of the session. Livehidepidtests need a root/procmount, which this host cannot do.unknown. Withunproven,destroywould record destroyed while the proven group can still run.Verification
.agents/skills/verify-session-lifecycle/scripts/check.sh --update-coverage: exit 0, 55 runs as expected, 5,042,251 and 5,218,828 distinct states.Closes #222
Generated with
xum• Model:anthropic:claude-opus-5-5• Thinking:xhigh