fix(codex): restore pre-registration child liveness - #7848
lastobelus wants to merge 10 commits into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: 📥 CommitsReviewing files that changed from the base of the PR and between 592c598 and 3a836d7dce348331773566e6fd0c9cd9bb04c656. 📒 Files selected for processing (6)
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughThe change prevents descriptive task updates from reviving idle tasks. It preserves child-agent identity during late registration and replays recorded live turns. Tests cover liveness, child event sequencing, and pre-registration turn replay. ChangesLifecycle and liveness behavior
Estimated code review effort: 3 (Moderate) | ~20 minutes Merge Risk: 🔵 Low · up to The PR prevents stale interaction events from reviving idle subagents while restoring genuinely live work discovered late. A bounded lifecycle edge case remains if child turns overlap, complete out of order, or lose terminal notifications, which could cause stop or recovery handling to miss active work; merge is reasonable with explicit owner awareness and follow-up. Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
489ad2e to
3a836d7
Compare
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
|
@coderabbitai review |
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR changes shared Codex event routing and child lifecycle state, including suppression, synthetic replay, terminal-error handling, and Stop interruption tracking. Because these changes can alter parent visibility and agent liveness across several event-ordering scenarios, the runtime behavior warrants human review. Notes:
You can add or adjust custom eligibility rules. Learn more. |
✅ Action performedReview finished.
|
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
3a836d7 to
94002d8
Compare
Dismissing prior approval to re-evaluate 94002d8
|
Refactored after #7937 merged: this PR no longer changes the |
94002d8 to
8bd707f
Compare
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
(cherry picked from commit 75b66cae0de74a7ebfa5a8d017a7444660cabe57)
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing Codex `interacted` events. LastCode's nightly adopted that implementation, but the rebased #48 commit still grouped two independent safeguards under the old composite port. This branch makes the ownership explicit and atomic: 1. revert LastCode #48; 2. reapply the generic status-free `task.updated` liveness hardening from pingdotgg#7468; 3. reapply the pre-registration child-turn replay from the narrowed pingdotgg#7848, including its terminal-error ordering and cross-client anchor fixes. The small net diff is intentional: the nightly had already resolved the upstream provenance without exposing an intermediate LastCode state that drops either still-needed safeguard. Upstream sources observed 2026-08-23 PDT: - pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge `4e00471d1ab340b46742565bb6ce6462160b4d0c`) - pingdotgg#7848 open at reviewed head `1123f75e9` - pingdotgg#7468 remains the upstream owner of generic liveness hardening Import method: exact commits applied with `cherry-pick -x`; review fixes were authored in pingdotgg#7848 first and then ported into this stack. Validation: - 52 focused Codex adapter, collaboration runtime, wire, and background-liveness tests passed - server typecheck passed - targeted lint, formatting, and diff checks passed - three bounded review rounds completed: correctness/edge cases, KISS/best practices, and final regression review - mandatory quick local CI passed on head `a6f42da8a` Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing Codex `interacted` events. LastCode's nightly adopted that implementation, but the rebased #48 commit still grouped two independent safeguards under the old composite port. This branch makes the ownership explicit and atomic: 1. revert LastCode #48; 2. reapply the generic status-free `task.updated` liveness hardening from pingdotgg#7468; 3. reapply the pre-registration child-turn replay from the narrowed pingdotgg#7848, including its terminal-error ordering and cross-client anchor fixes. The small net diff is intentional: the nightly had already resolved the upstream provenance without exposing an intermediate LastCode state that drops either still-needed safeguard. Upstream sources observed 2026-08-23 PDT: - pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge `4e00471d1ab340b46742565bb6ce6462160b4d0c`) - pingdotgg#7848 open at reviewed head `1123f75e9` - pingdotgg#7468 remains the upstream owner of generic liveness hardening Import method: exact commits applied with `cherry-pick -x`; review fixes were authored in pingdotgg#7848 first and then ported into this stack. Validation: - 52 focused Codex adapter, collaboration runtime, wire, and background-liveness tests passed - server typecheck passed - targeted lint, formatting, and diff checks passed - three bounded review rounds completed: correctness/edge cases, KISS/best practices, and final regression review - mandatory quick local CI passed on head `a6f42da8a` Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing Codex `interacted` events. LastCode's nightly adopted that implementation, but the rebased #48 commit still grouped two independent safeguards under the old composite port. This branch makes the ownership explicit and atomic: 1. revert LastCode #48; 2. reapply the generic status-free `task.updated` liveness hardening from pingdotgg#7468; 3. reapply the pre-registration child-turn replay from the narrowed pingdotgg#7848, including its terminal-error ordering and cross-client anchor fixes. The small net diff is intentional: the nightly had already resolved the upstream provenance without exposing an intermediate LastCode state that drops either still-needed safeguard. Upstream sources observed 2026-08-23 PDT: - pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge `4e00471d1ab340b46742565bb6ce6462160b4d0c`) - pingdotgg#7848 open at reviewed head `1123f75e9` - pingdotgg#7468 remains the upstream owner of generic liveness hardening Import method: exact commits applied with `cherry-pick -x`; review fixes were authored in pingdotgg#7848 first and then ported into this stack. Validation: - 52 focused Codex adapter, collaboration runtime, wire, and background-liveness tests passed - server typecheck passed - targeted lint, formatting, and diff checks passed - three bounded review rounds completed: correctness/edge cases, KISS/best practices, and final regression review - mandatory quick local CI passed on head `a6f42da8a` Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing Codex `interacted` events. LastCode's nightly adopted that implementation, but the rebased #48 commit still grouped two independent safeguards under the old composite port. This branch makes the ownership explicit and atomic: 1. revert LastCode #48; 2. reapply the generic status-free `task.updated` liveness hardening from pingdotgg#7468; 3. reapply the pre-registration child-turn replay from the narrowed pingdotgg#7848, including its terminal-error ordering and cross-client anchor fixes. The small net diff is intentional: the nightly had already resolved the upstream provenance without exposing an intermediate LastCode state that drops either still-needed safeguard. Upstream sources observed 2026-08-23 PDT: - pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge `4e00471d1ab340b46742565bb6ce6462160b4d0c`) - pingdotgg#7848 open at reviewed head `1123f75e9` - pingdotgg#7468 remains the upstream owner of generic liveness hardening Import method: exact commits applied with `cherry-pick -x`; review fixes were authored in pingdotgg#7848 first and then ported into this stack. Validation: - 52 focused Codex adapter, collaboration runtime, wire, and background-liveness tests passed - server typecheck passed - targeted lint, formatting, and diff checks passed - three bounded review rounds completed: correctness/edge cases, KISS/best practices, and final regression review - mandatory quick local CI passed on head `a6f42da8a` Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing Codex `interacted` events. LastCode's nightly adopted that implementation, but the rebased #48 commit still grouped two independent safeguards under the old composite port. This branch makes the ownership explicit and atomic: 1. revert LastCode #48; 2. reapply the generic status-free `task.updated` liveness hardening from pingdotgg#7468; 3. reapply the pre-registration child-turn replay from the narrowed pingdotgg#7848, including its terminal-error ordering and cross-client anchor fixes. The small net diff is intentional: the nightly had already resolved the upstream provenance without exposing an intermediate LastCode state that drops either still-needed safeguard. Upstream sources observed 2026-08-23 PDT: - pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge `4e00471d1ab340b46742565bb6ce6462160b4d0c`) - pingdotgg#7848 open at reviewed head `1123f75e9` - pingdotgg#7468 remains the upstream owner of generic liveness hardening Import method: exact commits applied with `cherry-pick -x`; review fixes were authored in pingdotgg#7848 first and then ported into this stack. Validation: - 52 focused Codex adapter, collaboration runtime, wire, and background-liveness tests passed - server typecheck passed - targeted lint, formatting, and diff checks passed - three bounded review rounds completed: correctness/edge cases, KISS/best practices, and final regression review - mandatory quick local CI passed on head `a6f42da8a` Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing Codex `interacted` events. LastCode's nightly adopted that implementation, but the rebased #48 commit still grouped two independent safeguards under the old composite port. This branch makes the ownership explicit and atomic: 1. revert LastCode #48; 2. reapply the generic status-free `task.updated` liveness hardening from pingdotgg#7468; 3. reapply the pre-registration child-turn replay from the narrowed pingdotgg#7848, including its terminal-error ordering and cross-client anchor fixes. The small net diff is intentional: the nightly had already resolved the upstream provenance without exposing an intermediate LastCode state that drops either still-needed safeguard. Upstream sources observed 2026-08-23 PDT: - pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge `4e00471d1ab340b46742565bb6ce6462160b4d0c`) - pingdotgg#7848 open at reviewed head `1123f75e9` - pingdotgg#7468 remains the upstream owner of generic liveness hardening Import method: exact commits applied with `cherry-pick -x`; review fixes were authored in pingdotgg#7848 first and then ported into this stack. Validation: - 52 focused Codex adapter, collaboration runtime, wire, and background-liveness tests passed - server typecheck passed - targeted lint, formatting, and diff checks passed - three bounded review rounds completed: correctness/edge cases, KISS/best practices, and final regression review - mandatory quick local CI passed on head `a6f42da8a` Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing Codex `interacted` events. LastCode's nightly adopted that implementation, but the rebased #48 commit still grouped two independent safeguards under the old composite port. This branch makes the ownership explicit and atomic: 1. revert LastCode #48; 2. reapply the generic status-free `task.updated` liveness hardening from pingdotgg#7468; 3. reapply the pre-registration child-turn replay from the narrowed pingdotgg#7848, including its terminal-error ordering and cross-client anchor fixes. The small net diff is intentional: the nightly had already resolved the upstream provenance without exposing an intermediate LastCode state that drops either still-needed safeguard. Upstream sources observed 2026-08-23 PDT: - pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge `4e00471d1ab340b46742565bb6ce6462160b4d0c`) - pingdotgg#7848 open at reviewed head `1123f75e9` - pingdotgg#7468 remains the upstream owner of generic liveness hardening Import method: exact commits applied with `cherry-pick -x`; review fixes were authored in pingdotgg#7848 first and then ported into this stack. Validation: - 52 focused Codex adapter, collaboration runtime, wire, and background-liveness tests passed - server typecheck passed - targeted lint, formatting, and diff checks passed - three bounded review rounds completed: correctness/edge cases, KISS/best practices, and final regression review - mandatory quick local CI passed on head `a6f42da8a` Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing Codex `interacted` events. LastCode's nightly adopted that implementation, but the rebased #48 commit still grouped two independent safeguards under the old composite port. This branch makes the ownership explicit and atomic: 1. revert LastCode #48; 2. reapply the generic status-free `task.updated` liveness hardening from pingdotgg#7468; 3. reapply the pre-registration child-turn replay from the narrowed pingdotgg#7848, including its terminal-error ordering and cross-client anchor fixes. The small net diff is intentional: the nightly had already resolved the upstream provenance without exposing an intermediate LastCode state that drops either still-needed safeguard. Upstream sources observed 2026-08-23 PDT: - pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge `4e00471d1ab340b46742565bb6ce6462160b4d0c`) - pingdotgg#7848 open at reviewed head `1123f75e9` - pingdotgg#7468 remains the upstream owner of generic liveness hardening Import method: exact commits applied with `cherry-pick -x`; review fixes were authored in pingdotgg#7848 first and then ported into this stack. Validation: - 52 focused Codex adapter, collaboration runtime, wire, and background-liveness tests passed - server typecheck passed - targeted lint, formatting, and diff checks passed - three bounded review rounds completed: correctness/edge cases, KISS/best practices, and final regression review - mandatory quick local CI passed on head `a6f42da8a` Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing Codex `interacted` events. LastCode's nightly adopted that implementation, but the rebased #48 commit still grouped two independent safeguards under the old composite port. This branch makes the ownership explicit and atomic: 1. revert LastCode #48; 2. reapply the generic status-free `task.updated` liveness hardening from pingdotgg#7468; 3. reapply the pre-registration child-turn replay from the narrowed pingdotgg#7848, including its terminal-error ordering and cross-client anchor fixes. The small net diff is intentional: the nightly had already resolved the upstream provenance without exposing an intermediate LastCode state that drops either still-needed safeguard. Upstream sources observed 2026-08-23 PDT: - pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge `4e00471d1ab340b46742565bb6ce6462160b4d0c`) - pingdotgg#7848 open at reviewed head `1123f75e9` - pingdotgg#7468 remains the upstream owner of generic liveness hardening Import method: exact commits applied with `cherry-pick -x`; review fixes were authored in pingdotgg#7848 first and then ported into this stack. Validation: - 52 focused Codex adapter, collaboration runtime, wire, and background-liveness tests passed - server typecheck passed - targeted lint, formatting, and diff checks passed - three bounded review rounds completed: correctness/edge cases, KISS/best practices, and final regression review - mandatory quick local CI passed on head `a6f42da8a` Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing Codex `interacted` events. LastCode's nightly adopted that implementation, but the rebased #48 commit still grouped two independent safeguards under the old composite port. This branch makes the ownership explicit and atomic: 1. revert LastCode #48; 2. reapply the generic status-free `task.updated` liveness hardening from pingdotgg#7468; 3. reapply the pre-registration child-turn replay from the narrowed pingdotgg#7848, including its terminal-error ordering and cross-client anchor fixes. The small net diff is intentional: the nightly had already resolved the upstream provenance without exposing an intermediate LastCode state that drops either still-needed safeguard. Upstream sources observed 2026-08-23 PDT: - pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge `4e00471d1ab340b46742565bb6ce6462160b4d0c`) - pingdotgg#7848 open at reviewed head `1123f75e9` - pingdotgg#7468 remains the upstream owner of generic liveness hardening Import method: exact commits applied with `cherry-pick -x`; review fixes were authored in pingdotgg#7848 first and then ported into this stack. Validation: - 52 focused Codex adapter, collaboration runtime, wire, and background-liveness tests passed - server typecheck passed - targeted lint, formatting, and diff checks passed - three bounded review rounds completed: correctness/edge cases, KISS/best practices, and final regression review - mandatory quick local CI passed on head `a6f42da8a` Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing Codex `interacted` events. LastCode's nightly adopted that implementation, but the rebased #48 commit still grouped two independent safeguards under the old composite port. This branch makes the ownership explicit and atomic: 1. revert LastCode #48; 2. reapply the generic status-free `task.updated` liveness hardening from pingdotgg#7468; 3. reapply the pre-registration child-turn replay from the narrowed pingdotgg#7848, including its terminal-error ordering and cross-client anchor fixes. The small net diff is intentional: the nightly had already resolved the upstream provenance without exposing an intermediate LastCode state that drops either still-needed safeguard. Upstream sources observed 2026-08-23 PDT: - pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge `4e00471d1ab340b46742565bb6ce6462160b4d0c`) - pingdotgg#7848 open at reviewed head `1123f75e9` - pingdotgg#7468 remains the upstream owner of generic liveness hardening Import method: exact commits applied with `cherry-pick -x`; review fixes were authored in pingdotgg#7848 first and then ported into this stack. Validation: - 52 focused Codex adapter, collaboration runtime, wire, and background-liveness tests passed - server typecheck passed - targeted lint, formatting, and diff checks passed - three bounded review rounds completed: correctness/edge cases, KISS/best practices, and final regression review - mandatory quick local CI passed on head `a6f42da8a` Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing Codex `interacted` events. LastCode's nightly adopted that implementation, but the rebased #48 commit still grouped two independent safeguards under the old composite port. This branch makes the ownership explicit and atomic: 1. revert LastCode #48; 2. reapply the generic status-free `task.updated` liveness hardening from pingdotgg#7468; 3. reapply the pre-registration child-turn replay from the narrowed pingdotgg#7848, including its terminal-error ordering and cross-client anchor fixes. The small net diff is intentional: the nightly had already resolved the upstream provenance without exposing an intermediate LastCode state that drops either still-needed safeguard. Upstream sources observed 2026-08-23 PDT: - pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge `4e00471d1ab340b46742565bb6ce6462160b4d0c`) - pingdotgg#7848 open at reviewed head `1123f75e9` - pingdotgg#7468 remains the upstream owner of generic liveness hardening Import method: exact commits applied with `cherry-pick -x`; review fixes were authored in pingdotgg#7848 first and then ported into this stack. Validation: - 52 focused Codex adapter, collaboration runtime, wire, and background-liveness tests passed - server typecheck passed - targeted lint, formatting, and diff checks passed - three bounded review rounds completed: correctness/edge cases, KISS/best practices, and final regression review - mandatory quick local CI passed on head `a6f42da8a` Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing Codex `interacted` events. LastCode's nightly adopted that implementation, but the rebased #48 commit still grouped two independent safeguards under the old composite port. This branch makes the ownership explicit and atomic: 1. revert LastCode #48; 2. reapply the generic status-free `task.updated` liveness hardening from pingdotgg#7468; 3. reapply the pre-registration child-turn replay from the narrowed pingdotgg#7848, including its terminal-error ordering and cross-client anchor fixes. The small net diff is intentional: the nightly had already resolved the upstream provenance without exposing an intermediate LastCode state that drops either still-needed safeguard. Upstream sources observed 2026-08-23 PDT: - pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge `4e00471d1ab340b46742565bb6ce6462160b4d0c`) - pingdotgg#7848 open at reviewed head `1123f75e9` - pingdotgg#7468 remains the upstream owner of generic liveness hardening Import method: exact commits applied with `cherry-pick -x`; review fixes were authored in pingdotgg#7848 first and then ported into this stack. Validation: - 52 focused Codex adapter, collaboration runtime, wire, and background-liveness tests passed - server typecheck passed - targeted lint, formatting, and diff checks passed - three bounded review rounds completed: correctness/edge cases, KISS/best practices, and final regression review - mandatory quick local CI passed on head `a6f42da8a` Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing Codex `interacted` events. LastCode's nightly adopted that implementation, but the rebased #48 commit still grouped two independent safeguards under the old composite port. This branch makes the ownership explicit and atomic: 1. revert LastCode #48; 2. reapply the generic status-free `task.updated` liveness hardening from pingdotgg#7468; 3. reapply the pre-registration child-turn replay from the narrowed pingdotgg#7848, including its terminal-error ordering and cross-client anchor fixes. The small net diff is intentional: the nightly had already resolved the upstream provenance without exposing an intermediate LastCode state that drops either still-needed safeguard. Upstream sources observed 2026-08-23 PDT: - pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge `4e00471d1ab340b46742565bb6ce6462160b4d0c`) - pingdotgg#7848 open at reviewed head `1123f75e9` - pingdotgg#7468 remains the upstream owner of generic liveness hardening Import method: exact commits applied with `cherry-pick -x`; review fixes were authored in pingdotgg#7848 first and then ported into this stack. Validation: - 52 focused Codex adapter, collaboration runtime, wire, and background-liveness tests passed - server typecheck passed - targeted lint, formatting, and diff checks passed - three bounded review rounds completed: correctness/edge cases, KISS/best practices, and final regression review - mandatory quick local CI passed on head `a6f42da8a` Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Codex can emit a trailing interacted notification after a child turn completes, and can emit a real child turn start before the activity that registers that child. Treating every interaction as running revives idle children, while treating every interaction as metadata can miss a genuinely live pre-registration turn. This port retains the complete upstream candidate: - pingdotgg#7848 maps interacted to a status-free identity update and replays an explicit start only when registration finds a recorded live turn. - pingdotgg#7468 hardens generic task liveness so status-free task.updated events cannot revive an idle task; its original authored commit is preserved. Upstream PR: pingdotgg#7848 Generic hardening PR: pingdotgg#7468 Issue: pingdotgg#7726 Validation: - 87 focused adapter, runtime, liveness, and client-fold tests passed - focused lint and formatting passed - quick local CI passed before the review fix; final exact-head full CI will run before merge Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
Upstream pingdotgg#7937 merged the core stale-Working fix by ignoring trailing Codex `interacted` events. LastCode's nightly adopted that implementation, but the rebased #48 commit still grouped two independent safeguards under the old composite port. This branch makes the ownership explicit and atomic: 1. revert LastCode #48; 2. reapply the generic status-free `task.updated` liveness hardening from pingdotgg#7468; 3. reapply the pre-registration child-turn replay from the narrowed pingdotgg#7848, including its terminal-error ordering and cross-client anchor fixes. The small net diff is intentional: the nightly had already resolved the upstream provenance without exposing an intermediate LastCode state that drops either still-needed safeguard. Upstream sources observed 2026-08-23 PDT: - pingdotgg#7937 merged at head `db85d831d4074cbbbe6c1975b7fa2421f9c10df4` (merge `4e00471d1ab340b46742565bb6ce6462160b4d0c`) - pingdotgg#7848 open at reviewed head `1123f75e9` - pingdotgg#7468 remains the upstream owner of generic liveness hardening Import method: exact commits applied with `cherry-pick -x`; review fixes were authored in pingdotgg#7848 first and then ported into this stack. Validation: - 52 focused Codex adapter, collaboration runtime, wire, and background-liveness tests passed - server typecheck passed - targeted lint, formatting, and diff checks passed - three bounded review rounds completed: correctness/edge cases, KISS/best practices, and final regression review - mandatory quick local CI passed on head `a6f42da8a` Prepared by gpt-5.6-sol through the Codex harness. --------- Co-authored-by: Jeremy Schoemaker <jeremy@shoemoney.com>
|
Thanks for the PR. We're not taking changes to the orchestration and provider layers right now: that part of the server is being rewritten for V2, and merging into the current code would either conflict with or be thrown away by that work. Closing for now. If this is still an issue once V2 lands, please reopen (or open a fresh PR against the new code) and we'll take a proper look. |
Upstream #7937 fixed the stale-Working bug by ignoring trailing
collabAgent/activity { activityKind: "interacted" }events. A complementary registration race remains: Codex can emit a real childturn/startedbefore either notification that identifies that child.The runtime now records that suppressed live turn and replays an explicit
collabAgent/turnStartedonly when a later registration proves the turn is still live. Terminal child errors clear the recorded turn, remain authoritative across late registration, and emit a bounded start-to-failed lifecycle so every client gets an anchor without leaving the child live. Retryable errors retain the live turn. Child-scoped errors stay off the parent event stream.This PR is intentionally limited to that residual race:
task.updatedliveness hardening.Related issue: #7726
LastCode counterpart: lastobelus#69
Validation:
Prepared by gpt-5.6-sol through the Codex harness.