Skip to content

Account for nested process groups in the RSS guard - #72

Merged
kikashy merged 2 commits into
mainfrom
codex/rss-session-65
Nov 1, 2026
Merged

kikashy merged 2 commits into
mainfrom
codex/rss-session-65

Conversation

@kikashy

@kikashy kikashy commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Closes #65. Milestone: v0.14.0. One issue per PR; stack order #70 → #65 → #69 → #71.

Summary

GNU timeout can place descendants in another process group, outside the former RSS accounting. The guard now samples all non-zombie processes in its launched session and keeps monitoring after the leader exits. Limit and interruption cleanup targets the observed groups and verifies that no runnable session members remain.

Public surface

RSS accounting and cleanup scope, session wording in diagnostics, positive integer limit validation, and documented bounded Go race invocation. Normal Go wrapper defaults are unchanged.

Acceptance mapping

Requirement Implementation Verification Remaining gate
Nested timeout descendants Session accounting rather than outer process-group accounting Real separate-process-group memory/time probes and aggregate-memory test pass Complete: reviewed, exact-head CI passed, merged and released in v0.14.0
Owned descendant cleanup Cleanup on memory/time/interruption; continue after leader exit Real liveness checks use files rather than retained pipes; three safeguard-removal controls fail as intended Complete: reviewed, exact-head CI passed, merged and released in v0.14.0
Preserve Go wrapper controls Explicit outer RSS guard with virtual-address limit set to unlimited Actual wrapper probe confirms held lock, per-clone cache and read-only module mode Released in v0.14.0; consumer adoption separate
Honest limits Document cooperative sampling and descendants that create a new session A bounded detached-session probe confirms that limitation No security-containment claim

Eight focused tests pass; shellcheck passes. Descendants that create a new session are neither measured nor cleaned up by this cooperative guard. Sampled RSS is not an instantaneous memory reservation. The tests verify wrapper behavior with bounded process probes; they do not claim a consumer Go race suite executed.

Checks

PR head: 4a99e4e0ed3275913319d41ec95df99badbe4f7f.

The full checklist ran once on the clean integrated batch head a8ec74e2b70608d350f5cca740ec777fa41fdb7d, using scripts/dev/check.sh --all under the configured shared lock. No uncommitted diff. This batch result does not replace exact-head CI for the individual PRs. Only the machine-local interpreter path is omitted from this runner summary:

== check summary (dev.json) ==
PASS     diff-check               0s
PASS     local-paths              0s
PASS     agent-docs               0s
    sync-agent-docs: CLAUDE.md matches AGENTS.md
    sync-agent-docs: CLAUDE.md matches AGENTS.md
PASS     bash-n                   0s
    bash -n: every script parses
PASS     duplication              0s, python [interpreter path omitted] (Python 3.12.11)
    duplication: no duplicate block (at least 100 tokens over at least 10 lines, 23 files of python, shell)
PASS     json                     0s, python [interpreter path omitted] (Python 3.12.11)
    parsed 14 JSON documents
PASS     shellcheck               4s
    shellcheck: clean
PASS     tests                    110s
    449 passed, 0 failed
== 8 passed, 0 failed, 0 skipped, 0 not run ==

Review and release status

Authored, executed, independently reviewed and merged into main as c7c88298d176fdb258d8b95e664c60e831c733dc. Exact-head lint, tests and DCO passed before merge. Review record reports no findings; it identifies the same-vendor reviewer and actual model. The merged tree exactly matches the reviewed candidate. Published in v0.14.0; release verification record. Consumer rollout remains a separate gate.

Sign-off

Commits carry the repository-required sign-off.

Signed-off-by: kikashy <kikashy@hotmail.com>
Signed-off-by: kikashy <kikashy@hotmail.com>
@kikashy kikashy added this to the v0.14.0 milestone Nov 1, 2026 — with ChatGPT Codex Connector
@kikashy kikashy self-assigned this Nov 1, 2026

kikashy commented Nov 1, 2026

Copy link
Copy Markdown
Contributor Author

Independent review of judgment-pack-devkit PR #72, addressing #65.

Head: 4a99e4e0ed3275913319d41ec95df99badbe4f7f
Base: 138c9f99785a1aa7c41ee9f580bd965ce58bfa49

Reviewer: OpenAI, gpt-6.1-sol, high reasoning for concurrent process lifetime and cleanup. Independent reviewer session; same vendor as the builder, so this is not a cross-vendor review.

Findings: none.

Reviewed the issue and comment, applicable AGENTS.md and docs/policy.md, complete five-file diff, Go wrapper integration, regression assertions, and preserved safeguard-removal failures. Session RSS accounting covers nested process groups; monitoring continues after leader exit; cleanup and documented limitations match the requested contract.

Validation reused the coordinator-verified exact-head CI run 41312801969 with lint/tests and DCO successful. Inspected preserved assertion failures for process-group-only accounting, leader-only lifetime monitoring, and root-group-only cleanup. Additional bounded probes against the exact candidate passed:

  • Normal descendant completion delayed guard exit and preserved leader status 7.
  • SIGHUP returned 129 and stopped the descendant in another process group.
  • SIGINT returned 130 and stopped the descendant in another process group.

Limits: no broad suite repeated and no consumer Go race suite executed. The guard remains sampled and cooperative; descendants creating a new session escape measurement and cleanup, as explicitly documented. HEAD and tracked files remained unchanged. No Git writes, publication, or merge performed.

Disposition:

Finding Action
None Review complete; exact-head CI and DCO passed. Ready for the authorized merge after #74.

Base automatically changed from codex/api-merge-event-70 to main November 1, 2026 13:54
@kikashy
kikashy marked this pull request as ready for review November 1, 2026 13:54
@kikashy
kikashy merged commit c7c8829 into main Nov 1, 2026
3 checks passed
@kikashy
kikashy deleted the codex/rss-session-65 branch November 1, 2026 13:55
@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown

🎉 Thank you for your contribution to Judgment Pack!

If you’d like another task, choose a path that interests you:

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.

rsscap misses descendants moved into GNU timeout's process group

1 participant