fix(plugins): isolate bundled capability capture fields#90068
fix(plugins): isolate bundled capability capture fields#90068vincentkoc wants to merge 1 commit into
Conversation
|
Codex review: needs maintainer review before merge. Reviewed June 30, 2026, 8:42 AM ET / 12:42 UTC. Summary PR surface: Source +133, Tests +117. Total +250 across 2 files. Reproducibility: yes. source-level. Current main and v2026.6.10 build bundled capability records without manifest contracts and read captured tool names inside the registration projection path that this PR isolates. Review metrics: 1 noteworthy metric.
Stored data model 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:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Refresh the branch against current main, explicitly sequence or fold the focused manifest-contract fix, and land the malformed-capture row isolation only after focused runtime proof plus build or changed-gate proof on the refreshed merge result. Do we have a high-confidence way to reproduce the issue? Yes, source-level. Current main and v2026.6.10 build bundled capability records without manifest contracts and read captured tool names inside the registration projection path that this PR isolates. Is this the best way to solve the issue? Yes for the malformed-capture boundary, with a sequencing caveat. Snapshotting readable identity fields once at the bundled runtime boundary is narrower than plugin-specific shims, but the manifest-contract overlap should be coordinated with the focused open PR. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 6cb82eaab865. Label changesLabel justifications:
Evidence reviewedPR surface: Source +133, Tests +117. Total +250 across 2 files. View PR surface stats
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
|
|
Closing this fuzz-only hardening PR. The only failing state is a synthetic fixture using hostile in-process objects, throwing getters or callbacks, or similarly malformed metadata; there is no linked production report or supported external contract requiring that state. This adds broad fail-soft behavior and substantial regression surface across consumers. If a real plugin or provider demonstrates the failure, please open a focused issue with the observed payload and stack so validation can live at the single owning registration/parsing boundary. Thanks for exploring it. |
Summary
idfields or toolnamefields are diagnosed and skipped per row.contractsinto the runtime-created plugin record so captured tools use the same manifest-declared contract enforcement as the normal plugin registry path.Reviewers should focus on the captured registration boundary in
src/plugins/bundled-capability-runtime.tsand the temp bundled plugin regression insrc/plugins/bundled-capability-runtime.test.ts.Linked context
Related to the ongoing tool-schema/plugin SDK fuzz hardening sweep.
Real behavior proof
idor toolnamefield can no longer poison the whole bundled capability runtime snapshot; healthy sibling registrations continue.scripts/run-vitest.mjswrapper.node scripts/run-vitest.mjs run src/plugins/bundled-capability-runtime.test.tshealthy_tool.pnpm check:changeddid not run.azure;blacksmith testbox list --allalso failed withnot authenticated, so broad remote proof is blocked by runner auth.registry.tools.Tests and validation
./node_modules/.bin/oxfmt --write --threads=1 src/plugins/bundled-capability-runtime.ts src/plugins/bundled-capability-runtime.test.tsgit diff --checknode scripts/run-vitest.mjs run src/plugins/bundled-capability-runtime.test.ts$autoreviewlocal dirty-patch review: clean,overall: patch is correct (0.86)node scripts/crabbox-wrapper.mjs run --shell -- env OPENCLAW_CHECK_CHANGED_REMOTE_CHILD=1 OPENCLAW_CHANGED_LANES_RAW_SYNC=1 corepack pnpm check:changed; blocked by coordinator HTTP 401 on/v1/leases, latest slugpearl-krill.Regression coverage added in
src/plugins/bundled-capability-runtime.test.tsfor a temp bundled plugin with one captured tool whosenamegetter throws followed by a healthy manifest-declared tool.Risk checklist
NoNoYesHighest-risk area: plugin capability registration projection. The mitigation is that the change only filters malformed captured rows at the runtime boundary, keeps healthy rows intact, and leaves existing manifest contract validation in place.
Current review state
Next action: maintainer review and CI.
Waiting on: CI and, if desired, maintainer-side Crabbox/Testbox changed-gate proof once runner auth is available.
Bot/reviewer comments addressed: none yet.