Repository navigation
refactor(plugins): share manifest capability families - #139049
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review in progressClawSweeper is reviewing this revision. This supersedes any previous blocked status. |
|
Codex review: blocked before merge. Reviewed September 5, 2026, 7:47 AM ET / 11:47 UTC. ClawSweeper reviewWhat this changesThe PR shares one checked list of plugin capability families across manifest parsing, catalog supplementation, and capability consent summaries. Merge readiness⛔ Blocked before merge - 1 item remains Keep open: the cleanup remains useful on fetched main, and no blocking correctness or security findings were identified. Priority: P3 Review scores
Verification
How this fits togetherPlugin discovery reads manifests and catalog metadata before loading plugin code. The resulting capability records feed runtime planning, status displays, and operator consent checks. flowchart LR
A[Plugin manifests] --> C[Manifest normalization]
B[Shared capability families] --> C
C --> E[Plugin registry]
D[Official catalog metadata] --> E
B --> E
E --> F[Capability consent]
B --> F
E --> G[Plugin status]
Before merge
Agent review detailsSecurityNone. PR surfaceSource -44. Total -44 across 4 files. View PR surface stats
Review metrics
Technical reviewBest possible solution: Keep one internal exhaustive inventory while preserving independent manifest types, existing consent semantics, and the narrower runtime eligibility contract. Do we have a high-confidence way to reproduce the issue? Not applicable: this refactor addresses duplicated inventories rather than a reported runtime failure; source comparison confirms identical family values and ordering. Is this the best way to solve the issue? Yes. A type-only shared module removes duplication without coupling parsing to consent machinery or expanding runtime eligibility. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against d46c7ee046a9. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
|
|
Ready to land Before/after focused proof: 126 tests pass. Native ClawSweeper compatibility checklist addressed: zero config/default fields added, changed or removed; no schema, migration, public SDK, capability eligibility or acceptance-hash changes. Current configs and upgrades behave identically. No remaining proof gap. |
|
Merged via squash.
|
Additional instructions
MUST: Keep Allow edits from maintainers enabled for this PR so maintainers
can help update the branch when needed.
What Problem This Solves
Plugin maintainers must currently update three separate capability-family inventories to keep manifest parsing, official catalog supplementation, and capability consent aligned. The inventories contain the same 22 families, but only the consent inventory checks that every declared family is accounted for.
Why This Change Was Made
One internal, exhaustively checked tuple now supplies all three consumers. It preserves every family and its order while removing the duplicate lists; the shared module has only a type import, so metadata discovery stays independent of plugin runtime loading.
The manifest type and its field documentation remain the independent contract. The runtime eligibility subset and public Plugin SDK exports are unchanged. Production LOC: +42/-86, net -44; no test, generated, or dependency changes.
User Impact
No user-visible behavior changes. Parsing, catalog overlays, consent summaries, and acceptance hashes keep their current behavior, with one place to maintain the supported capability families.
Evidence
OPENCLAW_VITEST_MAX_WORKERS=2 node scripts/run-vitest.mjs src/plugins/capability-summary.test.ts src/plugins/manifest-registry.test.ts— 126 tests pass. Coverage includes every reviewed contract family, actual manifest normalization, and supplemental official-catalog contracts.git diff --check, and targeted core lint pass.pnpm buildpasses locally in that native checkout; no ineffective dynamic-import warnings were emitted.openclaw/ci-gate.ee882077ff64b2475113a2b7452c3894d34c7310found no actionable P0–P2 findings.Compatibility review requested by ClawSweeper: 0 config/default fields added, changed, or removed. All 22 capability families and their order, unknown-key filtering, catalog merge ordering, consent hash inputs, public types, and SDK exports remain unchanged. Existing configurations and upgrades keep the same behavior; no migration is needed.
Validated head:
ee882077ff64b2475113a2b7452c3894d34c7310.