Capability Contract v2 Pilot Execution Plan
Goal
Start Stage 1 of the unified-platform roadmap with one complete, low-risk vertical slice. The pilot makes qiongli_literature_export_evidence consume a versioned capability record, canonical input/output schemas, semantic error classes, and Lite/Full golden conformance without changing its public name or claiming that the remaining tools are already migrated.
Baseline
- Rust Marketplace Lite advertises 12 public tool names.
- Python Full advertises 22 public tool names.
- Ten names overlap; two Zotero names are Lite-only and twelve names are Full-only.
qiongli_open_config_wizardis a compatibility alias, so the completed v2 registry should contain 23 canonical capability records expanded to 24 public names.- Only four of the ten overlapping input schemas are currently identical.
- Lite and Full use different wire-level error carriers and structured output envelopes. Contract v2 must record and migrate these differences instead of hiding them behind name-only parity.
Pilot Selection
qiongli_literature_export_evidence is the first slice because it:
- has no network, config-write, project-write, process, or agent side effect;
- already has a Lite/Full semantic projection test;
- exercises input schema, output schema, compatibility arguments, error semantics, redaction, and runtime declaration alignment;
- can be tested deterministically without live providers or user data.
Files
Create:
content/mcp-contracts/v2/registry.jsoncontent/mcp-contracts/v2/registry.schema.jsoncontent/mcp-contracts/v2/schemas/qiongli_literature_export_evidence.input.schema.jsoncontent/mcp-contracts/v2/schemas/qiongli_literature_export_evidence.output.schema.jsontooling/scripts/validate_capability_contract.pyscripts/validate_capability_contract.pytests/test_capability_contract_v2.py
Modify:
content/mcp-contracts/lite-tools.jsoncontent/mcp-contracts/fixtures/lite-tool-smoke-calls.jsonpackages/qiongli-lite-mcp/src/mcp/server.rspackages/python-qiongli/src/qiongli/bridges/literature_mcp_tools.pypackages/python-qiongli/src/qiongli/bridges/mcp_tool_handlers.py.github/workflows/ci.ymldocs/superpowers/roadmaps/2026-07-09-unified-platform-roadmap.md
Task 1: Registry And Schemas
- [x] Add a Draft 2020-12 registry schema with explicit profiles, maturity, lifecycle, errors, side effects, security, and smoke evidence.
- [x] Add a pilot registry that reports
1 / 23canonical and1 / 24public name coverage instead of claiming Stage 1 completion. - [x] Add canonical input and output schemas for evidence export.
- [x] Preserve
query_plan,search_results, andsearch_diagnosticsas declared deprecated argument aliases.
Task 2: Runtime Alignment
- [x] Make Lite and Full advertise the canonical pilot input schema.
- [x] Make both runtimes normalize compatibility arguments to canonical output fields.
- [x] Keep Lite's JSON-RPC
-32602and Full's tool-result carrier during the compatibility window, but map both to the semanticinvalid_argumentsclass. - [x] Keep the shared output core stable while allowing Lite's
statusand Full'sexported_atcompatibility fields.
Task 3: Validation And CI
- [x] Validate registry shape, counts, names, profiles, schema references, taxonomy references, side-effect policy, security, smoke evidence, and runtime declaration drift.
- [x] Add machine-readable validator output.
- [x] Add golden Lite/Full calls, alias normalization, output validation, semantic error classification, and negative schema tests.
- [x] Add the validator to required CI.
- [x] Add the validator to release preflight after the pilot remains green on
devand the registry expands beyond one tool.
Acceptance
python scripts/validate_capability_contract.pyexits zero.- Both runtimes advertise the same pilot input schema.
- The same canonical or compatibility-alias call produces schema-valid outputs with equivalent common fields in Lite and Full.
- Unknown arguments are classified as
invalid_argumentswithout requiring a shared wire carrier in this pilot. - Registry and output negative fixtures fail with actionable paths.
- Existing Lite behavior, Full behavior, MCPB, release, and strict repository tests remain green.
Next Migration Order
- Configuration status and save/setup tools, including the wizard tool alias.
- Literature status and search-plan schemas.
- Literature search inputs, result envelope, diagnostics, and provider errors.
- Preview routing and task-plan tools.
- Zotero Lite tools with explicit Full availability status.
- Full-only orchestration, subject, experience, lifecycle, and execution tools.
The registry becomes complete only when all 23 canonical records, all 24 public names, runtime declarations, smoke evidence, schemas or explicit migration status, and profile availability are covered.