{
  "version": 1,
  "repository": "Knuckles-Team/immich-api",
  "revision": "e04a120962d1f2c591112e440a87609c82e4b76b",
  "captured_at": "2026-10-14T01:41:32.153710+00:00",
  "records": [
    {
      "id": "CONN-IMMICH-API",
      "kind": "spec",
      "parent": null,
      "source": "specs/immich-api/status.json",
      "title": "CONN-IMMICH-API \u2014 Immich Api connector",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/immich-api/spec.md",
      "component": "Connector integration",
      "code_refs": [
        {
          "declared_in": "specs/immich-api/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "api-spec/immich.openapi.json",
          "repository": "Knuckles-Team/immich-api",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/api-spec/immich.openapi.json"
        },
        {
          "declared_in": "specs/immich-api/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "spec.md",
          "repository": "Knuckles-Team/immich-api",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/specs/immich-api/spec.md"
        },
        {
          "declared_in": "specs/immich-api/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "tests/test_immich_content.py",
          "repository": "Knuckles-Team/immich-api",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/tests/test_immich_content.py"
        },
        {
          "declared_in": "specs/immich-api/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "the governing scope",
          "repository": "Knuckles-Team/immich-api",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/specs/immich-api/spec.md#scope-and-owner"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "external declaration; not verified",
          "label": "Connector SDK",
          "repository": "Knuckles-Team/agent-connector-sdk",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/agent-connector-sdk/blob/b9ee9ed0a82f6ecd5ed23d6226ca5ab503f74f9c/README.md"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../immich_api/auth.py",
          "repository": "Knuckles-Team/immich-api",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/immich_api/auth.py"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../immich_api/kg_ingest.py",
          "repository": "Knuckles-Team/immich-api",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/immich_api/kg_ingest.py"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../immich_api/mcp/__init__.py",
          "repository": "Knuckles-Team/immich-api",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/immich_api/mcp/__init__.py"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../immich_api/mcp_server.py",
          "repository": "Knuckles-Team/immich-api",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/immich_api/mcp_server.py"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../immich_api/openapi_runtime.py",
          "repository": "Knuckles-Team/immich-api",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/immich_api/openapi_runtime.py"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../scripts/generate_tool_schemas.py",
          "repository": "Knuckles-Team/immich-api",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/scripts/generate_tool_schemas.py"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../tests/operation_fixtures.py",
          "repository": "Knuckles-Team/immich-api",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/tests/operation_fixtures.py"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../tests/test_api_wrapper.py",
          "repository": "Knuckles-Team/immich-api",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/tests/test_api_wrapper.py"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../tests/test_auth.py",
          "repository": "Knuckles-Team/immich-api",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/tests/test_auth.py"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../tests/test_immich_mcp_validation.py",
          "repository": "Knuckles-Team/immich-api",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/tests/test_immich_mcp_validation.py"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../tests/test_kg_ingest.py",
          "repository": "Knuckles-Team/immich-api",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/tests/test_kg_ingest.py"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../tests/test_operation_parity.py",
          "repository": "Knuckles-Team/immich-api",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/tests/test_operation_parity.py"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "plan.md",
          "repository": "Knuckles-Team/immich-api",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/specs/immich-api/plan.md"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/immich-api",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/specs/immich-api/requirements.md"
        },
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "test-spec.md",
          "repository": "Knuckles-Team/immich-api",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/immich-api/blob/e04a120962d1f2c591112e440a87609c82e4b76b/specs/immich-api/test-spec.md"
        }
      ],
      "relations": [
        {
          "declared_in": "specs/immich-api/spec.md",
          "evidence": "external declaration; not verified",
          "kind": "references",
          "label": "Connector SDK",
          "repository": "Knuckles-Team/agent-connector-sdk",
          "url": "https://github.com/Knuckles-Team/agent-connector-sdk/blob/b9ee9ed0a82f6ecd5ed23d6226ca5ab503f74f9c/README.md"
        }
      ],
      "plan_diagrams": [
        "flowchart LR\n    Caller[Authorized caller] --> Server[MCP server]\n    Server --> Router[Operation router]\n    Router --> Client[Connector API client]\n    Client --> Vendor[Configured external system]\n    Resolver[Credential references and TLS policy] --> Client\n    Content[Packaged skills prompts ontology manifest] --> Server\n    Source[Authorized source observations] --> Mapper[Connector ingest mapper]\n    Mapper --> SDK[Shared connector ingest service]\n"
      ],
      "unparsed_references": []
    },
    {
      "id": "CONN-IMMICH-API-R001",
      "kind": "requirement",
      "parent": "CONN-IMMICH-API",
      "source": "specs/immich-api/status.json",
      "title": "Credential references",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "47656ecb1833"
      ],
      "verified_by": [],
      "parent_title": "CONN-IMMICH-API \u2014 Immich Api connector",
      "definition": "**Credential references.** The connector must resolve authorized credential references in `immich_api/auth.py` when a client is requested. | `tests/test_auth.py::test_client_resolves_reference_and_cleans_up` must observe reference resolution and resource cleanup.",
      "definition_source": "specs/immich-api/requirements.md",
      "definition_line": 9
    },
    {
      "id": "CONN-IMMICH-API-R002",
      "kind": "requirement",
      "parent": "CONN-IMMICH-API",
      "source": "specs/immich-api/status.json",
      "title": "Bounded API requests",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "47656ecb1833"
      ],
      "verified_by": [],
      "parent_title": "CONN-IMMICH-API \u2014 Immich Api connector",
      "definition": "**Bounded API requests.** The connector must enforce origin, TLS, timeout, and response-size limits in `immich_api/openapi_runtime.py`. | `tests/test_api_wrapper.py` must exercise rejected origins, redirects, deadlines, and oversized responses through the real client.",
      "definition_source": "specs/immich-api/requirements.md",
      "definition_line": 10
    },
    {
      "id": "CONN-IMMICH-API-R003",
      "kind": "requirement",
      "parent": "CONN-IMMICH-API",
      "source": "specs/immich-api/status.json",
      "title": "MCP registration",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "47656ecb1833"
      ],
      "verified_by": [],
      "parent_title": "CONN-IMMICH-API \u2014 Immich Api connector",
      "definition": "**MCP registration.** The connector must register its operation router through `immich_api/mcp_server.py` and `immich_api/mcp/__init__.py`. | `tests/test_immich_mcp_validation.py::test_mcp_instance_registration` must construct the production server without vendor requests.",
      "definition_source": "specs/immich-api/requirements.md",
      "definition_line": 11
    },
    {
      "id": "CONN-IMMICH-API-R004",
      "kind": "requirement",
      "parent": "CONN-IMMICH-API",
      "source": "specs/immich-api/status.json",
      "title": "Native content contracts",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "47656ecb1833"
      ],
      "verified_by": [],
      "parent_title": "CONN-IMMICH-API \u2014 Immich Api connector",
      "definition": "**Native content contracts.** The connector must publish packaged prompts, skills, ontology, and its manifest through `immich_api/mcp_server.py`. | `scripts/generate_tool_schemas.py --check` must validate live tool contracts. `tests/test_immich_content.py::test_native_prompt_skill_shapes_and_tool_discovery` must render prompts and read the declared content through the production SDK server.",
      "definition_source": "specs/immich-api/requirements.md",
      "definition_line": 12
    },
    {
      "id": "CONN-IMMICH-API-R005",
      "kind": "requirement",
      "parent": "CONN-IMMICH-API",
      "source": "specs/immich-api/status.json",
      "title": "Typed source observations",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "47656ecb1833"
      ],
      "verified_by": [],
      "parent_title": "CONN-IMMICH-API \u2014 Immich Api connector",
      "definition": "**Typed source observations.** The connector must submit authorized source observations through the shared ingest service in `immich_api/kg_ingest.py`. | `tests/test_kg_ingest.py::test_ingest_uses_scoped_binding_and_preserves_receipt` must observe typed changes at the submission boundary.",
      "definition_source": "specs/immich-api/requirements.md",
      "definition_line": 13
    },
    {
      "id": "CONN-IMMICH-API-R006",
      "kind": "requirement",
      "parent": "CONN-IMMICH-API",
      "source": "specs/immich-api/status.json",
      "title": "Complete source parity",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0210f2b943f4",
        "250bb53307c8",
        "47656ecb1833"
      ],
      "verified_by": [
        "tests/test_generated_schema_policy.py:18",
        "tests/test_oauth_redirect_response.py:26",
        "tests/test_operation_parity.py:31",
        "tests/test_reviewed_secret_history.py:13",
        "tests/test_session_auth_isolation.py:17"
      ],
      "parent_title": "CONN-IMMICH-API \u2014 Immich Api connector",
      "definition": "**Complete source parity.** Every operation in the pinned provider schema must retain its method, route, typed arguments, responses and authorization metadata and be reachable through both the API client and native MCP. | `tests/test_operation_parity.py` must execute all source operations against mocked HTTP, verify exact request and response contents, require modern MCP confirmation for writes, and fail on missing or duplicate successful operation IDs.",
      "definition_source": "specs/immich-api/requirements.md",
      "definition_line": 14
    }
  ],
  "github": {
    "issues": {
      "available": true,
      "items": []
    },
    "pull_requests": {
      "available": true,
      "items": []
    }
  },
  "spec_edges": [
    [
      "CONN-IMMICH-API",
      "references",
      "https://github.com/Knuckles-Team/agent-connector-sdk/blob/b9ee9ed0a82f6ecd5ed23d6226ca5ab503f74f9c/README.md"
    ]
  ]
}
