reliability: bound ignored Rust subprocess deadlines - #578
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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 |
|
@opencode-agent address Continue this exact Draft branch from head 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:
The final branch still requires a new exact-head full CI/Security/SAST cycle and independent review after this generated changelog commit. |
|
@opencode-agent address Exact-head RCA for Please make only the narrow repository-owned correction: on the exact current PR head, run the authoritative |
seonghobae
left a comment
There was a problem hiding this comment.
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.
|
@opencode-agent address Exact current Draft head is The latest exact-head CI now shows the operation-specific subprocess implementation itself is GREEN: the Python job's only failure is Make only the deterministic release-note synchronization:
After the commit, leave the exact head stable for ordinary full CI/security/review gates. |
|
Exact-head RED review for |
|
@opencode-agent address Operate only on exact current Draft head
|
|
@opencode-agent address Exact-current-head repair only for Before writing, refetch this exact PR head and protected
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.
|
@opencode-agent address Operate only on exact current Draft head 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:
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. |
|
@jules address Take a bounded writer lease on this Draft branch only. Exact head is now Render the managed changelog from all live fragments, including Commit only rendered |
|
@opencode-agent address Operate only on exact current Draft head Make one bounded deterministic repair only: run |
|
@opencode-agent address Exact-current source head at handoff: Before writing, refetch this branch and abort if the head moved. If unchanged, run |
|
@opencode-agent address Current exact head is
Keep the PR Draft. Do not change timeout policy, scientific workloads, workflows, dependencies, review identities, branch protection, version, release state, or issue #555. |
|
@opencode-agent address Reacquire one bounded integration writer lease only if a final refetch still shows Draft source head 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:
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. |
|
@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 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 |
|
@opencode-agent address Take a bounded writer lease only if a final refetch still shows Draft head 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:
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. |
|
@opencode-agent address Take a bounded writer lease on PR #578 only if a final refetch still shows exact Draft head 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:
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. |
|
@opencode-agent address Take a bounded writer lease only if a final refetch still shows Draft head Current exact-head Security Scan Non-destructively reconcile protected main including #618, run focused deadline/process-group/survivor/redaction tests, render/check the authoritative changelog fragment, formatting/lint and |
|
@opencode-agent address Take a bounded writer lease only if a final refetch still shows Draft head 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 |
|
@jules address Fallback bounded writer handoff for exact Draft head 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 |
|
@jules address Superseding subprocess-deadline integration handoff after both CodeQL dependency merges. Fresh identities: Draft #578 exact head 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 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. |
0d3ba94 to
d37eaf1
Compare
|
@opencode-agent address Fresh current-main reconciliation handoff for Draft #578. Immediately refetch exact source head, live protected Fresh compare is Revalidate all deadline classes/override bounds, timeout redaction, POSIX process-group SIGTERM→SIGKILL cleanup/survivor failure, ordinary |
|
@opencode-agent address Fresh exact-current reconciliation/replacement handoff for Draft #578 / issue #555. Immediately before any source write refetch exact branch head Fresh compare is 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 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. |
|
Superseded by clean-lineage Draft #736 from protected 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. |
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
check=Truenon-timeout exit semantics; andscripts/run_ignored_rust_shard.pyonly, 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:
main:8db4bf358b0a469915d6c5e336054f4a4f9c6b46;048f005cb9a5ab2bd2eb5fbc8bb660f5be22a5a8;31309550370has one deterministic failing job only: Python finishes1 failed, 2939 passed, 2 skipped; the sole failure istests/test_changelog_fragment_contract.py::test_repository_changelog_is_rendered_from_current_fragments;docs/changelog.d/555-operation-specific-subprocess-deadlines.mdis authoritative while managedCHANGELOG.mdremains stale;#578comment5233256862). Do not race or duplicate it while identities remain unchanged.Older body/hand-off identities such as protected main
4d910...,7516031...or source headf2db...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
--updatethen--check, rerun focused deadline/process-group/survivor/redaction/changelog tests andgit 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.