mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-26 18:31:34 +01:00
PAP-17039. Both catalog modules now derive their operation set, placement, required claims, and task-mode policy from a single hand-authored source, src/catalog/canonical-operations.ts; neither declares an independent op list. - New canonical-operations.ts is the single 41-op source of truth. tools/ and semantic-tools/ project it and supply only per-surface presentation (title, description, schema, and the scenario-only mock mapping + redaction). A bidirectional parity check fails the build on any drift. - Unify generic_api_request to one claim, test:generic_api_request (test-only, never product coverage); update scenario grants/plan/tests. - One canonical task-mode policy: the live runtime policy unioned with skill_test. Resolves the ledger's 15 task-mode divergences to zero. The live contract golden is byte-identical (allowedModes is not serialized); the live runtime allowedModes gained skill_test for the 9 standard-only ops so the eval harness can drive them. - reconciliation.ts inverts to derive from canonical-operations and recompute the drift ledger: zero claim/mode divergences; the sole surviving divergence is the reviewed intentional input-schema projection (idempotency in-band for the provider, out-of-band for the observable runtime). Focused catalog, scenario, conformance, issue-thread, mock, and package-export suites pass; golden verified byte-identical. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>