fix(plugins): preserve bundled capability manifest contracts#81312
fix(plugins): preserve bundled capability manifest contracts#81312yfge wants to merge 2 commits into
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 3, 2026, 11:48 PM ET / 03:48 UTC. Summary PR surface: Source +51, Tests +20. Total +71 across 3 files. Reproducibility: yes. source-level: current main creates bundled capability PluginRecords without contracts and then validates captured tools against record.contracts, while affected bundled manifests declare contracts.tools. 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:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land this focused manifest-contract propagation after maintainer compatibility acceptance and green or explained current-head checks, or explicitly fold the same fix and regression coverage into the broader hardening PR before closing this PR. Do we have a high-confidence way to reproduce the issue? Yes, source-level: current main creates bundled capability PluginRecords without contracts and then validates captured tools against record.contracts, while affected bundled manifests declare contracts.tools. Is this the best way to solve the issue? Yes, with a sequencing caveat: preserving manifest.contracts on the synthesized bundled PluginRecord is the narrow manifest-first fix and aligns the bundled runtime with the normal loader record path. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 9d68f877ac3e. Label changesLabel justifications:
Evidence reviewedPR surface: Source +51, Tests +20. Total +71 across 3 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
|
This comment was marked as spam.
This comment was marked as spam.
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
This pull request has been automatically marked as stale due to inactivity. |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
5da98c7 to
2585661
Compare
2585661 to
f97f9d2
Compare
|
This pull request has been automatically marked as stale due to inactivity. |
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: fix(plugins): preserve bundled capability manifest contracts This is item 1/1 in the current shard. Shard 16/20. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
Background
manifest.contractsforwardcontracts.tools(and other declared contract metadata) for bundled capability plugins like Feishu/LarkChanges
manifest.contractsintocreateCapabilityPluginRecord(...)memory-coreVerification
pnpm test src/plugins/bundled-capability-runtime.test.tspnpm exec oxfmt --check --threads=1 src/plugins/bundled-capability-runtime.ts src/plugins/bundled-capability-runtime.test.tsnode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/plugins/bundled-capability-runtime.ts src/plugins/bundled-capability-runtime.test.tspnpm buildImpact
Fixes #77982
Real behavior proof
manifest.contractson synthesized bundled capability plugin records instead of dropping them during registry loading.memory-core/feishurecords after runtime initialization.manifest.contractsfor bothmemory-coreandfeishuafter registry loading, which is the runtime behavior this bug was dropping before the patch.