Skip to content

reliability: bound ignored Rust subprocess deadlines - #578

Closed
seonghobae wants to merge 18 commits into
mainfrom
fix/ignored-rust-subprocess-deadlines
Closed

reliability: bound ignored Rust subprocess deadlines#578
seonghobae wants to merge 18 commits into
mainfrom
fix/ignored-rust-subprocess-deadlines

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Buyer-visible reliability slice

Advance #555 with the first bounded operation-specific subprocess reliability boundary for statistical-study tooling. Cargo metadata, ignored-test inventory and long scientific studies receive distinct deadlines rather than one unsafe universal timeout.

Implemented boundary

  • separate Cargo metadata, ignored-test inventory and long statistical-study deadlines;
  • bounded positive-integer operator overrides rather than an unbounded global timeout;
  • isolated POSIX sessions/process groups so descendants can be terminated on timeout;
  • bounded SIGTERM→SIGKILL escalation and survivor detection;
  • machine-readable timeout evidence that does not echo child-controlled command/output text;
  • preservation of ordinary check=True non-timeout exit semantics; and
  • migration of scripts/run_ignored_rust_shard.py only, leaving other subprocess classes as separate reliability: add operation-specific subprocess deadlines and timeout evidence #555 slices.

Scientific workloads, iteration counts and statistical recovery contracts are deliberately unchanged; reliability is added around them rather than weakening them to fit a timeout.

Exact-current evidence

Freshly revalidated for this Draft:

  • protected main: 8db4bf358b0a469915d6c5e336054f4a4f9c6b46;
  • exact source head: 048f005cb9a5ab2bd2eb5fbc8bb660f5be22a5a8;
  • exact-head CI 31309550370 has one deterministic failing job only: Python finishes 1 failed, 2939 passed, 2 skipped; the sole failure is tests/test_changelog_fragment_contract.py::test_repository_changelog_is_rendered_from_current_fragments;
  • the focused subprocess deadline, process-group leak/survivor, redaction and edge contracts are GREEN on that exact source/current-main integration evidence;
  • Rust/PyO3, package/reinstall/release acceptance, explicit GPU no-skip and fuzz are GREEN;
  • Security Scan and SAST Semgrep are GREEN;
  • docs/changelog.d/555-operation-specific-subprocess-deadlines.md is authoritative while managed CHANGELOG.md remains stale;
  • a bounded current-main OpenCode integration/release-note handoff already exists on this exact source head and protected main (#578 comment 5233256862). Do not race or duplicate it while identities remain unchanged.

Older body/hand-off identities such as protected main 4d910..., 7516031... or source head f2db... are predecessor evidence only.

Remaining Draft gate

Keep Draft. Reconcile exact current protected main non-destructively while preserving #590 and the unique subprocess slice, run repository-authoritative changelog renderer --update then --check, rerun focused deadline/process-group/survivor/redaction/changelog tests and git diff --check, then require one unchanged exact head with full relevant Python coverage/docstrings, Rust/PyO3, package/reinstall/release acceptance, explicit GPU-no-skip, fuzz, Security Scan, SAST, fresh current-head automated review, zero valid unresolved findings and repository approval/branch-protection policy.

Do not shorten scientific workloads, convert timeout to success, add one universal deadline, alter dependencies/workflows/credentials/version/release, or expand into other #555 operation classes.

Advances #555.

@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 3543642d-532d-418d-a6c2-dcbd5b7e1e28

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Continue this exact Draft branch from head 03b87a62b0cc38c5e28e040ffbbf88977ffffe3d without scope expansion.

The RED→GREEN implementation slice is already present for operation-specific subprocess deadlines and the authoritative changelog fragment has now been added. Perform only the remaining deterministic release-note synchronization and verification work:

  1. run python scripts/render_changelog_fragments.py --update CHANGELOG.md and commit only the generated managed CHANGELOG.md change;
  2. run python scripts/render_changelog_fragments.py --check CHANGELOG.md;
  3. run pytest tests/test_subprocess_deadlines.py tests/test_subprocess_deadline_edges.py tests/test_ignored_rust_subprocess_deadlines.py tests/test_ignored_rust_shard.py -q;
  4. keep the PR Draft and do not alter the operation defaults, timeout ranges, statistical workload, workflows, dependencies, branch protection, review identities, or other source paths;
  5. do not approve, mark Ready, enable auto-merge, merge, release, or close issue reliability: add operation-specific subprocess deadlines and timeout evidence #555.

The final branch still requires a new exact-head full CI/Security/SAST cycle and independent review after this generated changelog commit.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Exact-head RCA for 03b87a62b0cc38c5e28e040ffbbf88977ffffe3d: CI run 31289137534, Python job 93183255946 has exactly one test failure: tests/test_changelog_fragment_contract.py::test_repository_changelog_is_rendered_from_current_fragments. All other Python tests passed (2929), and Rust/package/fuzz/GPU plus Security Scan and SAST passed. The branch already contains docs/changelog.d/555-operation-specific-subprocess-deadlines.md; CHANGELOG.md is simply stale relative to authoritative fragments.

Please make only the narrow repository-owned correction: on the exact current PR head, run the authoritative python scripts/render_changelog_fragments.py --update CHANGELOG.md (or produce its byte-identical output), verify python scripts/render_changelog_fragments.py --check CHANGELOG.md, run the focused changelog-fragment contract, and commit only the resulting required source/document changes. Do not weaken the changelog contract, delete the fragment, alter subprocess deadline semantics, or touch read-only external repositories. Refetch/reconcile if the head moved before writing.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current-head correctness finding beyond the stale CHANGELOG: the POSIX timeout helper does not yet prove the process group is gone after SIGTERM. _terminate_after_timeout() sends SIGTERM to the group and then waits only on process.communicate(timeout=5). If the group leader exits promptly but a descendant survives (especially when output is not captured/inherited), communicate() can return and the function exits without checking or killing the remaining group. The current regression uses a fake leader and therefore cannot detect this descendant-leak case, while the PR doctoring claims timed-out child groups are cleaned up.

Please keep the PR Draft until this is fixed test-first. Add a regression representing leader-exits/descendant-remains after group SIGTERM, then make POSIX cleanup explicitly verify group disappearance and enforce the bounded grace/escalation contract without exposing child-controlled output. Preserve the existing operation-specific deadlines, no-shell argv execution, and non-POSIX limitations. Do not mask this with warning suppression or weaken the cleanup claim.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Exact current Draft head is 03b87a62b0cc38c5e28e040ffbbf88977ffffe3d. Re-read that head before writing and refuse if it moved.

The latest exact-head CI now shows the operation-specific subprocess implementation itself is GREEN: the Python job's only failure is tests/test_changelog_fragment_contract.py::test_repository_changelog_is_rendered_from_current_fragments; Python otherwise reported 2,929 passed / 2 skipped, while Rust, package, GPU no-skip, fuzz, Security Scan, and SAST all succeeded. The authoritative deadline changelog fragment is already present.

Make only the deterministic release-note synchronization:

  1. run python scripts/render_changelog_fragments.py --update CHANGELOG.md on this exact branch head;
  2. run python scripts/render_changelog_fragments.py --check CHANGELOG.md and the focused changelog contract test;
  3. commit only the resulting deterministic CHANGELOG.md update if no other correction is required;
  4. leave the PR Draft and do not alter deadlines, recovery workloads, workflows, protections, dependencies, or release state.

After the commit, leave the exact head stable for ordinary full CI/security/review gates.

Copy link
Copy Markdown
Contributor Author

Exact-head RED review for 26d2a1964f96259cdeee6a012bafac667d1346ba: the new regression proves a SIGKILL is sent after one successful process-group probe, but it does not yet prove the group is gone or that post-escalation verification is bounded. A minimal implementation could satisfy this test by calling killpg(pgid, 0) once, sending SIGKILL, and returning while a descendant/group still exists, which is the same cleanup-claim gap after a different signal. Extend the test-first contract to model probe states across the grace and escalation phases: group present after leader exit/SIGTERM, SIGKILL sent, then bounded polling until ESRCH/group absence; separately fail closed if the group remains observable after the final bounded deadline, and cover permission/error handling without leaking child-controlled output. Preserve the existing operation-specific deadlines and no-shell boundary.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Operate only on exact current Draft head 607e7896d7ea4767820e03c7b87e0b05536708a4. The exact-head CI has already isolated one deterministic repository-owned failure: all 2,938 non-skipped Python tests passed except test_repository_changelog_is_rendered_from_current_fragments; Rust/PyO3, package, explicit GPU no-skip, fuzz, Security Scan and SAST are green on this head. Do not change the subprocess implementation merely to retrigger CI.

  1. Run python scripts/render_changelog_fragments.py --update CHANGELOG.md and commit only the deterministic renderer-produced CHANGELOG.md change.
  2. Run python scripts/render_changelog_fragments.py --check CHANGELOG.md, the focused subprocess deadline/shard tests, and git diff --check.
  3. Preserve operation-specific deadlines, POSIX session/process-group cleanup, bounded SIGTERM→SIGKILL escalation, redacted timeout evidence, ordinary non-timeout exit semantics, and the unchanged statistical recovery workloads.
  4. Keep Draft; do not approve, merge, release, force-push, add a universal timeout, alter workflows/dependencies, or expand into the remaining reliability: add operation-specific subprocess deadlines and timeout evidence #555 subprocess classes.
  5. After the resulting head, allow normal exact-head CI/security/review evidence to run; no predecessor-head result transfers.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Exact-current-head repair only for 607e7896d7ea4767820e03c7b87e0b05536708a4. CI run 31302911814 has one deterministic Python failure: test_repository_changelog_is_rendered_from_current_fragments; 2,938 other Python tests passed, and Rust, package, GPU no-skip, fuzz, Security Scan, and SAST succeeded. The authoritative fragment docs/changelog.d/555-operation-specific-subprocess-deadlines.md is present; the managed CHANGELOG.md block is stale.

Before writing, refetch this exact PR head and protected main. If the head moved or another writer is active, do not race it. Otherwise make only the deterministic generated repair:

  1. reconcile the branch with the current protected-main changelog content so already-integrated release notes are not regressed;
  2. run python scripts/render_changelog_fragments.py --update CHANGELOG.md on the reconciled tree and commit only the required generated CHANGELOG.md synchronization;
  3. verify python scripts/render_changelog_fragments.py --check CHANGELOG.md and pytest tests/test_changelog_fragment_contract.py tests/test_subprocess_deadlines.py tests/test_subprocess_deadline_edges.py tests/test_ignored_rust_subprocess_deadlines.py tests/test_ignored_rust_shard.py -q;
  4. keep the PR Draft. Do not alter subprocess deadline semantics, workflows, dependencies, branch protection, review identities, or issue reliability: add operation-specific subprocess deadlines and timeout evidence #555; do not mark Ready, approve, merge, release, or enable auto-merge.

The resulting new head must receive fresh full exact-head CI/security/review evidence; predecessor-head evidence does not transfer.

Preserve the nine unique subprocess-deadline source, test, doctoring, plan, and fragment files while taking every path outside that bounded slice from exact protected main 4d910ed. This auditable merge keeps fail-first history and avoids stale-base assumptions; authoritative CHANGELOG rendering remains a separate deterministic gate.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Operate only on exact current Draft head f2dbba43c484438378911d6c436c6b6832a046ac; abort without writing if it moved. All predecessor-head requests are void.

This head is reconciled with exact protected main and carries exactly the intended nine-file operation-specific subprocess-deadline slice. Perform only the deterministic release-note repair:

  1. run python scripts/render_changelog_fragments.py --update CHANGELOG.md from the repository root;
  2. verify python scripts/render_changelog_fragments.py --check CHANGELOG.md succeeds;
  3. run pytest tests/test_changelog_fragment_contract.py tests/test_subprocess_deadlines.py tests/test_subprocess_deadline_edges.py tests/test_ignored_rust_subprocess_deadlines.py tests/test_ignored_rust_shard.py -q and git diff --check;
  4. verify the only new changed path is generated CHANGELOG.md, containing one managed-block insertion for docs/changelog.d/555-operation-specific-subprocess-deadlines.md with every protected-main note preserved;
  5. commit the generated file normally to fix/ignored-rust-subprocess-deadlines.

Keep Draft. Do not alter source/tests/fragment/doctoring/plan, workflows, dependencies, deadlines, statistical workloads, versions, review/protection state, issue #555, merge, or release. Full exact-head CI/security/review will be reacquired after the generated commit.

Copy link
Copy Markdown
Contributor Author

@jules address

Take a bounded writer lease on this Draft branch only. Exact head is now 048f005cb9a5ab2bd2eb5fbc8bb660f5be22a5a8, an auditable fast-forward to GitHub's synthetic merge of prior feature head f2dbba43c484438378911d6c436c6b6832a046ac with protected main 7516031df533d1131572eb07b6e3a86b04d12793. Re-read both and abort if either moved.

Render the managed changelog from all live fragments, including docs/changelog.d/555-operation-specific-subprocess-deadlines.md, then run its check. Run the focused subprocess-deadline/ignored-Rust-shard tests, then complete relevant Python coverage/docstring, Rust/PyO3, package/reinstall/release acceptance, GPU-no-skip, fuzz, Security Scan and SAST gates. Preserve operation-specific deadlines, POSIX process-group cleanup, non-POSIX bounded fallback, redacted timeout evidence, ordinary non-timeout check=True semantics, and the existing scientific recovery workloads unchanged.

Commit only rendered CHANGELOG.md plus a minimal test/source/doc correction if the exact focused failure proves one necessary. Keep Draft; do not create another PR, rewrite history, mark Ready, approve, merge, change version/dependencies/workflows, or expand into other #555 subprocess operation classes.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Operate only on exact current Draft head 048f005cb9a5ab2bd2eb5fbc8bb660f5be22a5a8; abort without writing if the PR head or live main tip moved before your write. Exact-current CI run 31309550370 checks out merge ref 9812263f8f6ba155f3b581eff661c9784fefa301 over protected main 7516031df533d1131572eb07b6e3a86b04d12793. Rust, package/reinstall/release acceptance, explicit GPU-no-skip, fuzz, Security Scan and SAST are green. Python job 93235112021 has exactly one deterministic failure after 2939 passed / 2 skipped: test_repository_changelog_is_rendered_from_current_fragments, with the explicit remedy render_changelog_fragments.py --update CHANGELOG.md. The operation-specific deadline tests, process-group leak test and deadline edge tests are green on this exact merge ref.

Make one bounded deterministic repair only: run python scripts/render_changelog_fragments.py --update CHANGELOG.md, then python scripts/render_changelog_fragments.py --check CHANGELOG.md and pytest -q tests/test_changelog_fragment_contract.py. Commit only the renderer-produced CHANGELOG.md delta. Do not edit docs/changelog.d/555-operation-specific-subprocess-deadlines.md, source code, tests, timeout values, dependencies, version/release state, PR Draft state, approval/merge state, or issue #555. If any unrelated diff would be required, stop without writing and report the exact evidence.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Exact-current source head at handoff: 048f005cb9a5ab2bd2eb5fbc8bb660f5be22a5a8. Exact-head CI run 31309550370 has one failing job only: Python. The full suite reached 1 failed, 2939 passed, 2 skipped; the sole failure is tests/test_changelog_fragment_contract.py::test_repository_changelog_is_rendered_from_current_fragments. Rust/PyO3, package/reinstall/release acceptance, explicit GPU no-skip, fuzz, Security Scan, and SAST are successful. Root cause is deterministic and branch-local: docs/changelog.d/555-operation-specific-subprocess-deadlines.md is authoritative while the managed CHANGELOG.md fragment block is stale.

Before writing, refetch this branch and abort if the head moved. If unchanged, run python scripts/render_changelog_fragments.py --update CHANGELOG.md, verify python scripts/render_changelog_fragments.py --check CHANGELOG.md, run the focused changelog contract test, and commit only the deterministic changelog synchronization. Do not alter subprocess deadlines, scientific workloads, process-group behavior, credentials, dependencies, or workflows. Let normal exact-head CI/security/review re-run afterward.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Current exact head is 048f005cb9a5ab2bd2eb5fbc8bb660f5be22a5a8. Exact-head CI 31309550370 has one deterministic failure only: tests/test_changelog_fragment_contract.py::test_repository_changelog_is_rendered_from_current_fragments; Rust, package, GPU-smoke, fuzz, Security Scan and SAST are green on this head. Please make only the deterministic release-note synchronization repair on this branch:

  1. run python scripts/render_changelog_fragments.py --update CHANGELOG.md;
  2. run python scripts/render_changelog_fragments.py --check CHANGELOG.md;
  3. run pytest tests/test_changelog_fragment_contract.py tests/test_subprocess_deadlines.py tests/test_subprocess_deadline_edges.py tests/test_ignored_rust_subprocess_deadlines.py tests/test_ignored_rust_shard.py -q;
  4. commit only the generated CHANGELOG.md change if those checks pass.

Keep the PR Draft. Do not change timeout policy, scientific workloads, workflows, dependencies, review identities, branch protection, version, release state, or issue #555.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Reacquire one bounded integration writer lease only if a final refetch still shows Draft source head 048f005cb9a5ab2bd2eb5fbc8bb660f5be22a5a8 and protected main exactly 8db4bf358b0a469915d6c5e336054f4a4f9c6b46; abort without writing if either moved or another active writer/source receipt appears. Prior handoffs were bound to older main and are stale.

The bounded subprocess implementation already had predecessor evidence with all source behavior green except deterministic changelog parity. Do not expand scope. Reconcile exact current protected main non-destructively, preserving #590 and all accepted-main changes while retaining only this PR's operation-specific subprocess slice. Then:

  1. run python scripts/render_changelog_fragments.py --update CHANGELOG.md and --check so docs/changelog.d/555-operation-specific-subprocess-deadlines.md plus accepted-main fragments are represented exactly;
  2. run the focused subprocess deadline/process-group/survivor/redaction tests, tests/test_changelog_fragment_contract.py, relevant full Python coverage/docstrings, Rust/PyO3/package/reinstall/release-acceptance/GPU-no-skip/fuzz validation, and git diff --check;
  3. preserve distinct Cargo metadata, ignored-test inventory, and long-study deadlines, positive bounded overrides, POSIX group termination, bounded SIGTERM→SIGKILL escalation, survivor detection, redacted machine-readable timeout evidence, and ordinary check=True non-timeout semantics;
  4. commit only deterministic reconciliation/changelog output plus a minimal source correction if focused current-main integration evidence proves one;
  5. refresh PR body to exact head/base/evidence and keep Draft for fresh exact-head CI/security/SAST/review.

Do not shorten scientific workloads, turn timeout into success, introduce one global deadline, migrate other #555 subprocess classes, or change dependencies/workflows/credentials/version/release/canonical #604 docs.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

The prior current-main integration handoff has had no receipt/reaction and no source movement for nearly three hours. Reacquire one bounded writer lease only if a final refetch still shows Draft head 048f005cb9a5ab2bd2eb5fbc8bb660f5be22a5a8, protected main 8db4bf358b0a469915d6c5e336054f4a4f9c6b46, and no current-head source-writer receipt; abort if any identity moved.

The operation-specific subprocess implementation already has exact predecessor evidence showing the focused process-group/deadline/redaction behavior GREEN, with the sole repository failure being stale managed CHANGELOG.md. Perform only the smallest current-main integration/release-note repair: reconcile protected main non-destructively, preserving #590 and this unique bounded subprocess slice; run python scripts/render_changelog_fragments.py --update CHANGELOG.md then --check; run pytest -q tests/test_changelog_fragment_contract.py tests/test_subprocess_deadlines.py tests/test_subprocess_deadline_edges.py tests/test_ignored_rust_subprocess_deadlines.py tests/test_ignored_rust_shard.py and git diff --check; commit only the integration/changelog synchronization required for GREEN. Keep Draft. Do not alter timeout values, workloads, process-group semantics, dependencies, workflows, credentials, version/release, review/merge state, or expand issue #555 scope.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Take a bounded writer lease only if a final refetch still shows Draft head 4edf4957341a60c46d104e562d9e68b83eaf8c70 over protected main a6b7ecc680b73a277714a795143c7a27125022c3; abort without writing if either moved or another source writer appears.

The branch has already been reconciled non-destructively with current protected main as a two-parent merge commit and now retains only the nine subprocess-deadline paths. Preserve existing focused GREEN behavior and all current-main report/scaling changes.

Complete only deterministic release-note cleanup:

  1. Run python scripts/render_changelog_fragments.py --update CHANGELOG.md and python scripts/render_changelog_fragments.py --check CHANGELOG.md, preserving current-main notes plus docs/changelog.d/555-operation-specific-subprocess-deadlines.md through the renderer.
  2. Run pytest -q tests/test_subprocess_deadlines.py tests/test_subprocess_deadline_edges.py tests/test_subprocess_deadline_process_group_leak.py tests/test_ignored_rust_subprocess_deadlines.py tests/test_changelog_fragment_contract.py and git diff --check (plus formatting only if required).
  3. Commit only renderer-produced CHANGELOG.md if required.

Keep Draft. Do not shorten workloads, change timeout semantics, add a universal timeout, alter dependencies/workflows/credentials/version/release, modify canonical #604, mark Ready, approve, merge, or expand into other #555 operation classes. Stop after exact-head deterministic evidence.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Take a bounded writer lease on PR #578 only if a final refetch still shows exact Draft head 4edf4957341a60c46d104e562d9e68b83eaf8c70 and protected main f43a466b1441b27bd2ac4a71be8aa3e4f08c8e8f; abort without writing if either moved or another source writer is active. All earlier handoffs are predecessor-head/base evidence.

The operation-specific subprocess deadline/process-group/redaction slice is already implemented and focused evidence was GREEN; the known remaining repository integration defect is managed changelog parity, and protected main has since advanced through #618.

Execute only deterministic integration cleanup:

  1. reconcile protected main non-destructively, preserving accepted-main behavior and only reliability: bound ignored Rust subprocess deadlines #578's unique subprocess reliability source/tests/doctoring/fragment;
  2. run python scripts/render_changelog_fragments.py --update, then --check;
  3. run pytest -q tests/test_subprocess_deadlines.py tests/test_subprocess_deadline_edges.py tests/test_ignored_rust_subprocess_deadlines.py tests/test_ignored_rust_shard.py tests/test_changelog_fragment_contract.py plus git diff --check;
  4. push only if focused evidence is green and the exact branch lease still holds.

Keep Draft. Do not shorten scientific workloads, turn timeout into success, add a universal deadline, alter dependencies/workflows/credentials/version/release, or expand into other #555 operation classes.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Take a bounded writer lease only if a final refetch still shows Draft head 4edf4957341a60c46d104e562d9e68b83eaf8c70 and protected main f43a466b1441b27bd2ac4a71be8aa3e4f08c8e8f; abort without writing if either moved or another current-head source writer appears. The earlier handoff/comment identities are predecessor evidence only.

Current exact-head Security Scan 31334959610 and SAST 31334959612 succeeded; CI 31334959595 remains non-passing and must be revalidated after current-main reconciliation. Preserve the operation-specific subprocess reliability contract: distinct deadlines, bounded positive overrides, isolated POSIX process groups, bounded TERM→KILL escalation/survivor detection, redacted timeout evidence, and unchanged ordinary check=True failure semantics. Do not weaken scientific workloads or turn timeout into success.

Non-destructively reconcile protected main including #618, run focused deadline/process-group/survivor/redaction tests, render/check the authoritative changelog fragment, formatting/lint and git diff --check, fix only genuine integration failures, and commit one bounded reconciliation/cleanup. Keep Draft. Do not broaden into other #555 operation classes, alter dependencies/workflows/credentials/version/release or architecture PR #604, mark Ready, approve, merge, or create another PR. Stop if exact head/base moves during the write.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Take a bounded writer lease only if a final refetch still shows Draft head d37eaf149f5771107b116b9be511782dadc13d6e and protected main f43a466b1441b27bd2ac4a71be8aa3e4f08c8e8f; abort if either moved or another current-head source writer appears. This exact head is now a non-destructive two-parent reconciliation of the nine unique operation-specific subprocess-deadline paths over protected main; predecessor handoffs are stale.

Do not change deadline/process-group semantics. Run the focused deadline, edge, process-group leak/survivor and ignored-Rust integration tests, then synchronize only managed release notes using python scripts/render_changelog_fragments.py --update CHANGELOG.md and --check CHANGELOG.md, run the changelog contract, formatting/lint and git diff --check, and commit the minimum renderer result if GREEN. Preserve distinct metadata/inventory/study deadlines, bounded operator overrides, POSIX process-group TERM→KILL cleanup/survivor detection, redacted timeout evidence and ordinary check=True failure semantics. Keep Draft. Do not broaden to other #555 subprocess classes, shorten scientific workloads, alter dependencies/workflows/credentials/version/release/canonical docs #604, mark Ready, approve, merge, or create another PR. Stop if exact head/base moves during the write.

Copy link
Copy Markdown
Contributor Author

@jules address

Fallback bounded writer handoff for exact Draft head d37eaf149f5771107b116b9be511782dadc13d6e over protected main f43a466b1441b27bd2ac4a71be8aa3e4f08c8e8f. The prior exact-head OpenCode handoff has no receipt/reaction and no source movement after the exact-current CI completed; treat it as inactive, but perform a final head/base/comment refetch before writing and abort if another writer appears or either ref moved.

Do not change deadline/process-group semantics. The exact-head subprocess feature tests are green; Rust/PyO3, package/reinstall, GPU and fuzz plus Security Scan/SAST are green; the remaining Python failure is deterministic managed changelog parity. Run the focused deadline, edge, process-group leak/survivor and ignored-Rust integration tests, then only python scripts/render_changelog_fragments.py --update CHANGELOG.md and --check CHANGELOG.md, the changelog contract, formatting/lint as applicable, and git diff --check. Commit only the generated CHANGELOG.md synchronization if all focused verification is green. Preserve distinct metadata/inventory/study deadlines, bounded overrides, TERM→KILL cleanup/survivor detection and redacted timeout evidence. Keep Draft. Do not broaden #555 scope, alter source/tests/dependencies/workflows/credentials/version/release/canonical docs #604, mark Ready, approve, merge, or open another PR. Stop writing if exact head/base changes.

Copy link
Copy Markdown
Contributor Author

@jules address

Superseding subprocess-deadline integration handoff after both CodeQL dependency merges. Fresh identities: Draft #578 exact head d37eaf149f5771107b116b9be511782dadc13d6e; protected main a7be9eb8ca0b807364173f8471fc300e3cf9350f; compare = diverged, ahead 18 / behind 2, with the net feature limited to the nine operation-specific deadline paths. Prior writer handoffs were bound to older bases and explicitly abort on base movement. Refetch head/main/comments before writing and abort if either moves or another current-head source writer appears.

Do not change deadline/process-group semantics. Predecessor evidence has the feature tests, Rust/PyO3, package/reinstall, GPU, fuzz, Security Scan and SAST GREEN with only deterministic managed changelog parity outstanding. Reconcile current protected main non-destructively, preserving both CodeQL init/analyze 4.37.6 pins. Run focused deadline/edge/process-group leak-survivor/ignored-Rust integration tests; then only repository-authoritative CHANGELOG render/check, changelog contract, formatting/lint and git diff --check; commit the minimum integration/renderer result if GREEN. Preserve separate metadata/inventory/study deadlines, bounded overrides, POSIX TERM→KILL cleanup/survivor detection, redacted timeout evidence and ordinary check=True failure semantics.

Keep Draft. Do not broaden #555, shorten scientific workloads, alter dependencies/workflows/credentials/version/release/canonical docs #604, mark Ready/approve/merge/close #555, or open another PR. Stop source writes after one coherent verified update; fresh exact-head full CI/Security/SAST/review returns to the maintainer loop.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Fresh current-main reconciliation handoff for Draft #578. Immediately refetch exact source head, live protected main, current comments/reviews and the subprocess-deadline paths; proceed only if source remains d37eaf149f5771107b116b9be511782dadc13d6e, live main is still compatible with d2301dccb7d39a794d08cc96ea8c858b9ff49125, and no other writer targets this branch. Abort on movement.

Fresh compare is diverged, ahead 18 / behind 157, merge base f43a466b1441b27bd2ac4a71be8aa3e4f08c8e8f; unique branch scope remains _subprocess_deadlines.py, ignored-Rust shard migration, deadline/process-group/redaction tests and its doctoring/changelog fragment. Reconcile current protected main non-destructively; do not replay predecessor-main changes as branch-owned work.

Revalidate all deadline classes/override bounds, timeout redaction, POSIX process-group SIGTERM→SIGKILL cleanup/survivor failure, ordinary check=True semantics and long scientific-study allowances. Do not shorten recovery/benchmark workloads to satisfy timeouts. Preserve outer Actions job timeouts as an independent ceiling. Render/check changelog, run focused deadline/process-leak tests and full same-head gates. Fix only exact-current integration defects; do not expand into other #555 subprocess classes, workflows/dependencies/version/release or canonical #604/#621 docs. Keep Draft for current-head review/merge.

Copy link
Copy Markdown
Contributor Author

@opencode-agent address

Fresh exact-current reconciliation/replacement handoff for Draft #578 / issue #555. Immediately before any source write refetch exact branch head d37eaf149f5771107b116b9be511782dadc13d6e, protected main bb30b196d2f83df5117a6bebf5e9680faf18c841, comments/reviews/threads and the nine subprocess-deadline-owned paths; abort if either ref moves or another writer targets this branch. The prior lease 5251221413 was explicitly bound to older main d2301dcc... and self-invalidated when protected main moved.

Fresh compare is diverged, ahead 18 / behind 198 from merge base f43a466b1441b27bd2ac4a71be8aa3e4f08c8e8f; the unique slice remains _subprocess_deadlines.py, the ignored-Rust shard integration, deadline/process-group/redaction tests, doctoring/plan and changelog fragment. Derive this exact unique slice before reconciliation. Prefer non-destructive reconciliation; if current script/package structure makes it conflict-heavy, create exactly one clean-lineage replacement from live main, absorb every non-duplicative contract, state the lineage, and close #578 so no competing writer remains.

Preserve the accepted intended semantics: distinct Cargo metadata / ignored-test inventory / long statistical-study deadlines rather than one universal timeout; bounded positive-integer overrides; POSIX session/process-group isolation with TERM→KILL escalation and survivor detection; timeout evidence machine-readable, bounded and non-reflective; ordinary check=True non-timeout failures preserved; scientific workloads/iteration counts unchanged; no timeout converted to success. Re-run focused deadline/edge/process-group leak/survivor/redaction/ignored-shard tests after integration, keep meaningful 100% owned statement/branch coverage and public docs, render/check authoritative CHANGELOG, git diff --check, then full Python 3.12/3.14, Rust/PyO3/package/reinstall/GPU-existing/fuzz, Security Scan and SAST on one unchanged head.

Keep Draft until current-head review and zero valid unresolved findings. Do not broaden #555 into unrelated subprocess classes, shorten studies, modify credentials/dependencies/workflows/version/release, or touch canonical #604/#621 docs.

Copy link
Copy Markdown
Contributor Author

Superseded by clean-lineage Draft #736 from protected main 7b57f77747b9a9bd911660c76b1be0ca0dc2d145. Fresh file-level reconciliation confirms #736 now carries the same eight durable product/evidence paths from this PR: the bounded subprocess helper, ignored-Rust runner integration, four deadline/cleanup regression modules, authoritative doctoring, and the #555 changelog fragment. The only old-PR-only path is the historical Superpowers implementation plan; it remains available in this closed PR's immutable history and is intentionally not promoted into the replacement product diff.

No checks, reviews, or approvals from this stale head transfer to #736. #736 has already demonstrated GREEN Python 3.12/3.14, Rust/PyO3, package/reinstall/release-acceptance, GPU smoke, Security Scan and SAST on its implemented source predecessor; its final documentation/changelog-rendered head still requires fresh exact-head gates and review before Ready/merge. Closing this stale branch removes competing merge authority without claiming issue #555 complete.

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