Repository navigation
fix(server): keep Pi notification identities distinct across threads - #15791
aliceisjustplaying wants to merge 1 commit into
Conversation
…eir turn Turn item and node ids derive from the driver and native item id alone. The Pi adapter named notify and extension-error items `notify:<ordinal>` and `extension-error:<ordinal>`, and every thread's first turn starts at the same ordinal, so an item in one thread overwrote or took over the item with the same name in another. Both now carry the provider turn id, as compaction items do.
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. 🧰 Additional context used📚 Code guidelines (1)No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (2)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review. 📝 WalkthroughWalkthroughNotification and extension-error item IDs now include the active provider-turn ID and item ordinal. A regression test checks that items from two threads have unique IDs and remain associated with their respective threads. ChangesPiAdapterV2 item identity
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix Suggested reviewers: Merge Risk: ⚪ Minimal · up to No actionable issue remains; the change is mergeable after normal checks. Architecture SummaryArchitecture risk: 🔵 Low · up to The change affects 1 system. Changed systems: Architecture concerns Review detailsSystems and components
Before / after behavior
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a small, isolated Pi adapter bug fix that makes notification and extension-error identities unique per provider turn, with focused regression coverage across threads. It introduces no schema, deployment, configuration, security, billing, or static-analysis changes. You can add or adjust custom eligibility rules. Learn more. |
|
Heads-up: this is now conflicting with Would you be able to rebase and push? Macroscope's verdict was recorded against the old head, so a new push restarts the review path. Both notification PRs are in the same state; rebasing them as a pair should be enough. |
Two Pi turns can emit notifications or extension errors with the same native item ID. Persisted identities derive from the driver and native ID, so one thread's output can overwrite another's.
Include the provider-turn ID in those IDs. The regression opens two threads and checks that notifications and errors produce four distinct IDs.
Verification: 51 Pi adapter tests and the server typecheck pass. Restoring nightly's adapter makes the regression fail with two IDs instead of four. No dependency on YSK or PR #15368; that PR changes presentation, not identity. This fits the small, obvious-bug exception.
Focused verification commands (repository root, dependencies installed):
Prepared with GPT-6 in Codex.