Workspaces: add tab-scoped widget pub/sub#101841
Conversation
|
On the |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Dependency graph guard clearedThis PR no longer has blocked dependency graph changes. A future dependency graph change requires a fresh
|
|
Codex review: needs real behavior proof before merge. Reviewed July 13, 2026, 9:12 AM ET / 13:12 UTC. Summary PR surface: Source +324, Tests +338, Docs +5. Total +667 across 12 files. Reproducibility: yes. for the review defect. The unchanged head retains a bridge-local limiter while the host can recreate the bridge for the same parent-owned widget connection, making reload a reproducible quota reset from source. Review metrics: 1 noteworthy metric.
Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Copy recommended automerge instructionNext step before merge
Maintainer decision needed
Security Review findings
Review detailsBest possible solution: Make the parent-owned widget bus connection the canonical owner of identity, subscriptions, and rolling publish quota across iframe reloads, then prove the complete lifecycle with two real widgets in a browser. Do we have a high-confidence way to reproduce the issue? Yes for the review defect. The unchanged head retains a bridge-local limiter while the host can recreate the bridge for the same parent-owned widget connection, making reload a reproducible quota reset from source. Is this the best way to solve the issue? No, not yet. Parent-brokered tab scoping is the right ownership model, but quota accounting must share that parent-owned identity and lifetime instead of living inside a reloadable bridge. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: unclear because the file could not be read completely. Codex review notes: model internal, reasoning high; reviewed against 2a7132a43f53. Label changesLabel justifications:
Evidence reviewedPR surface: Source +324, Tests +338, Docs +5. Total +667 across 12 files. View PR surface stats
Security concerns:
Acceptance criteria:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
Review history (15 earlier review cycles; latest 8 shown)
|
|
Fixed the P1 file-binding contract issue flagged here. The @clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
46f8afc to
1603b86
Compare
1603b86 to
b4e8cd4
Compare
b4e8cd4 to
18a5876
Compare
18a5876 to
9a26d8e
Compare
9a26d8e to
9fc036d
Compare
What Problem This Solves
Approved custom widgets could not coordinate within a workspace tab. A filter widget could not drive a chart or table without introducing gateway persistence or cross-tab reach.
Why This Change Was Made
This rebuild ports the original #101841 feature delta onto the Workspaces architecture landed by #104139. It adds a parent-owned, in-memory broker and a
bus:pubsubmanifest capability. The host binds every connection to the rendered tab and widget identity; iframe messages can provide only a channel and strict JSON payload.The rebuild also closes the old payload-limit bypass: values are validated as strict JSON, normalized before fanout, capped at 8 KiB on the exact forwarded representation, and rate-limited to 60 publishes per minute. Structured-clone-only values such as
ArrayBuffer, cycles, and unsupported JSON values are rejected.User Impact
Evidence
843e3c787806389cdaac884300e671fba658dab6during the final recovery pass; all three commits range-diff identically while preserving current main's private capability constant and addingbus:pubsub.git diff --checkpassed.Closes #101147.