Identity Vault Phase 2: MCP + REST contract (fan-out gate) - #16
Conversation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session-Id: e1f46be7-c51a-4d1e-9c4e-9f885635722d
…changelog [skip ci] Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session-Id: e1f46be7-c51a-4d1e-9c4e-9f885635722d
…e 2 gate) Completes the contract-designer deliverable (the agent died on a billing limit before finishing): adds the contract README (REST<->MCP mapping, sensitivity/ approval semantics, consumer usage) and removes the leftover probe.yaml scratch file. openapi.yaml (3.1, 23 paths, 46 schemas) and mcp-tools.json (10 tools) parse clean; all 9 enums well-formed. Spectral threw an internal null/enum error = its known OpenAPI-3.1 ruleset limitation, not a spec defect (CI lint to use a 3.1-compatible linter). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session-Id: e1f46be7-c51a-4d1e-9c4e-9f885635722d
CI failure analysisI investigated the failed CI run (#28237236661) and found two bugs: Bug 1 (PRIMARY): Python 3.10 parsed as
|
Phase 2 fan-out gate for the identity-vault subsystem (design:
docs/superpowers/specs/2026-06-24-identity-vault-mcp-design.md). Backend, UI, and tests build against this frozen contract. Contract only — no implementation.Authored by the
contract-designeragent; finalized after it hit an account billing limit mid-run.What's frozen (
contracts/identity-vault/)openapi.yaml— OpenAPI 3.1, 23 paths / 46 schemas: discovery (metadata-only), gated secret access (profile / site-login / TOTP-code / card / api-token),store_site_loginwrite, approvals (get/list/approve/deny), management (orgs/members/identities/agents/scopes/rotate), audit-log.mcp-tools.json— all 10 MCP tools from design §6, field-consistent with the REST schemas.README.md— REST↔MCP mapping, sensitivity/approval semantics, consumer usage..spectral.yaml,package.json(lint/mock/gen:types),client/(generated types target).Security semantics encoded
401bad/missing token ·403out-of-scope/cross-tenant ·404not-found-under-owner ·202approval_required (7 endpoints) for HIGH-sensitivity secrets → pollGET /approvals/{id}→ one-time short-TTL value.Validation
openapi.yaml+mcp-tools.jsonparse clean; all 9 enums well-formed; no null schema nodes.null/enumerror — its known OpenAPI-3.1 ruleset limitation, not a spec defect. CI should runnpm run lintwith a 3.1-compatible linter (or pin ruleset);npm run gen:typesshould be run to populateclient/.Why draft
Frozen as the gate, but kept draft until the lint/gen toolchain runs green in CI. Once merged, Phases 3–5 (vault infra, broker, approval UI) fan out against it.
🤖 Generated with Claude Code