{
  "version": 1,
  "repository": "Knuckles-Team/pipelines",
  "revision": "2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9",
  "captured_at": "2026-10-28T23:19:32.272736+00:00",
  "records": [
    {
      "id": "PIPE-IDENTITY",
      "kind": "spec",
      "parent": null,
      "source": "specs/commit-identity-governance/status.json",
      "title": "PIPE-IDENTITY \u2014 Commit author identity governance",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/commit-identity-governance/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/commit-identity-governance/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".config/pre-commit.yaml",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.config/pre-commit.yaml"
        },
        {
          "declared_in": "specs/commit-identity-governance/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".github/workflows/ci.yml",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.github/workflows/ci.yml"
        },
        {
          "declared_in": "specs/commit-identity-governance/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/cli.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/cli.py"
        },
        {
          "declared_in": "specs/commit-identity-governance/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/core/gitenv.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/core/gitenv.py"
        },
        {
          "declared_in": "specs/commit-identity-governance/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/core/settings.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/core/settings.py"
        },
        {
          "declared_in": "specs/commit-identity-governance/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/identity/allowlist.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/identity/allowlist.py"
        },
        {
          "declared_in": "specs/commit-identity-governance/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/identity/fleet-default-allowlist.json",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/identity/fleet-default-allowlist.json"
        },
        {
          "declared_in": "specs/commit-identity-governance/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/identity/fork_exemption.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/identity/fork_exemption.py"
        },
        {
          "declared_in": "specs/commit-identity-governance/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/privacy/gate.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/privacy/gate.py"
        },
        {
          "declared_in": "specs/commit-identity-governance/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/privacy/identity_catalog.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/privacy/identity_catalog.py"
        },
        {
          "declared_in": "specs/commit-identity-governance/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Commit-time check",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/commit-identity-governance/plan.md#commit-time-check"
        },
        {
          "declared_in": "specs/commit-identity-governance/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Failure behavior",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/commit-identity-governance/plan.md#failure-behavior"
        },
        {
          "declared_in": "specs/commit-identity-governance/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Push-time check",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/commit-identity-governance/plan.md#push-time-check"
        },
        {
          "declared_in": "specs/commit-identity-governance/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "plan.md",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/commit-identity-governance/plan.md#allowlist-configuration"
        },
        {
          "declared_in": "specs/commit-identity-governance/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/commit-identity-governance/requirements.md"
        },
        {
          "declared_in": "specs/commit-identity-governance/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "the fork exemption",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/commit-identity-governance/plan.md#ci-re-verification"
        }
      ],
      "relations": [],
      "plan_diagrams": [],
      "unparsed_references": []
    },
    {
      "id": "PIPE-IDENTITY-R001",
      "kind": "requirement",
      "parent": "PIPE-IDENTITY",
      "source": "specs/commit-identity-governance/status.json",
      "title": "Commit author identity is restricted to an allowlist",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "1a70d678b24f",
        "f2d327f13a3c"
      ],
      "verified_by": [],
      "parent_title": "PIPE-IDENTITY \u2014 Commit author identity governance",
      "definition": "**Commit author identity is restricted to an allowlist.** pipelines enforces an author-identity allowlist in its pre-commit, pre-push, and CI checks, rejecting any commit whose author or committer name and email pair does not match one of a configured set of permitted identities. | Verified by a negative test that a commit with an identity outside the configured allowlist is rejected by the hook and by the CI check.",
      "definition_source": "specs/commit-identity-governance/requirements.md",
      "definition_line": 5
    },
    {
      "id": "PIPE-CONNSPEC",
      "kind": "spec",
      "parent": null,
      "source": "specs/connector-spec-delivery/status.json",
      "title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/connector-spec-delivery/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/connector-spec-delivery/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/cli.py:73",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/cli.py#L73"
        }
      ],
      "relations": [],
      "plan_diagrams": [],
      "unparsed_references": []
    },
    {
      "id": "PIPE-CONNSPEC-R001",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Generated status with three hooks and four states",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1141a437d4bd",
        "15fc54d4d3c9",
        "2379fcc1353d",
        "2c140a34dfcd",
        "2f112e98cd9f"
      ],
      "verified_by": [
        "tests/hooks/test_spec_landing_attribution.py:18",
        "tests/hooks/test_spec_landing_attribution.py:46",
        "tests/hooks/test_spec_landing_attribution.py:56",
        "tests/hooks/test_spec_landing_attribution.py:66",
        "tests/hooks/test_spec_repository_identity.py:104"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Generated status with three hooks and four states.** The reference implementation lives in `pipelines_hooks/specs/`, exposing the hooks `spec-status`, `spec-decomposition`, and `spec-trailers`. Delivery status is generated, never hand-edited, and each requirement is in exactly one of the states SPECIFIED, LANDED, VERIFIED, or RETIRED. New landings use explicit Spec trailers or historical Spec subjects, never unrelated prose or none exemption reasons; historical receipts retain their existing validation. When specs exist, incomplete shallow Git history refuses generation and writes with exit 2 and a full-history fetch remedy, leaving status files unchanged; full history still rejects reverted or unreachable receipts. Repository ownership comes from origin or a sole configured remote, correcting stale checkout-derived owners without losing live legacy receipts; without an unambiguous remote identity, retain the old owner or finally the checkout name. A parent rolls up to the minimum state of its live children. A parent rolled up to LANDED carries its children's landing commits, and one rolled up to VERIFIED also carries their bound tests. During a resolved merge, default `spec-status` evaluates the index candidate tree with HEAD and MERGE_HEAD as parents and records evidence only from actual non-merge commits. An explicit `--head` remains authoritative even with unresolved conflicts. Default merge inference fails closed when conflicts remain or the worktree differs from its index. `spec-trailers` excludes commits already reachable from `origin/main` even when the pushed-over base is older, while continuing to validate all new branch commits against the current requirement and binding tree. | The files `pipelines_hooks/specs/status.py`, `decomposition.py`, and `trailers.py` exist; pending-merge tests in `tests/hooks/test_spec_status.py` verify candidate-tree history, explicit-head behavior, and fail-closed conflicts and index/worktree mismatch; `pipelines-hook spec-status --write` followed by `pipelines-hook spec-decomposition` runs clean in this repository.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 5
    },
    {
      "id": "PIPE-CONNSPEC-R002",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Test binding forms",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "e01884644a83"
      ],
      "verified_by": [
        "tests/hooks/test_spec_status.py:62"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Test binding forms.** A test binds to a requirement with `@pytest.mark.spec(\"<ID>\")` in Python or a `// spec: <ID>` comment in other languages, as parsed by `pipelines_hooks/specs/bindings.py`. | `pipelines_hooks/specs/bindings.py` exists and a bound test in this repository is picked up by `pipelines-hook spec-status`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 6
    },
    {
      "id": "PIPE-CONNSPEC-R003",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "The spec-delivery page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0e995cf10c3d"
      ],
      "verified_by": [
        "tests/test_spec_dashboard.py:14"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**The spec-delivery page.** `scripts/spec_dashboard*.py` is rendered through the reusable workflow `.github/workflows/pages_pipeline.yml` with `spec_dashboard_enabled: true`, and publishes at `https://knuckles-team.github.io/<repo>/spec-delivery/`. | `scripts/spec_dashboard.py` and `.github/workflows/pages_pipeline.yml` exist, and the workflow declares the `spec_dashboard_enabled` input.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 7
    },
    {
      "id": "PIPE-CONNSPEC-R004",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Reference callers in the five core repositories",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Reference callers in the five core repositories.** The reference callers are Medulla (`release.yml`), Meristem (`advisory.yml`), arbora (`pages.yml`), Scion SDK (`pages.yml`), and Overstory (`advisory.yml`). They are the one standard a connector copies. | Each named workflow file exists in its repository and calls `Knuckles-Team/pipelines/.github/workflows/pages_pipeline.yml@main` with `spec_dashboard_enabled: true`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 8
    },
    {
      "id": "PIPE-CONNSPEC-R005",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "The lane contract in each development skill",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**The lane contract in each development skill.** Each repository's `<repo>-development` skill carries the section \"Rapid delivery: the 5-minute contract\", which is the lane contract for agents working in it. | A search of each core repository's `<repo>-development` skill finds the section heading \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 9
    },
    {
      "id": "PIPE-CONNSPEC-R006",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Preserve retired identities across spec ownership moves",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "615425fe278b"
      ],
      "verified_by": [
        "tests/test_spec_standard.py:117",
        "tests/test_spec_standard.py:124"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Preserve retired identities across spec ownership moves.** `pipelines_hooks/specs/standard.py` uses the shared retirement parser. A retired row keeps its original prefix; active canonical-form rows must match the owning spec. | `test_moved_retired_identity_uses_shared_status_parser` accepts a retired historical ID and refuses active rows that merely mention retirement.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 10
    },
    {
      "id": "PIPE-CONNSPEC-R007",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "CI checks changed prose",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "6f1b2623bbda"
      ],
      "verified_by": [
        "tests/hooks/test_ste_ci.py:31"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**CI checks changed prose.** `ste-staged` checks committed PR or push changes on clean CI checkouts. Local runs check the staged index. Unavailable requested base commits fail closed. Existing per-file `(code, message)` finding counts remain exempt. | Real Git fixtures cover PR and push event bases, new findings, legacy debt, staged content, and invalid bases.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 11
    },
    {
      "id": "PIPE-CONNSPEC-R175",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Every repository ships one-command agent setup",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "86a085a2865d",
        "b6a2fbb27499"
      ],
      "verified_by": [
        "tests/hooks/test_agent_contract.py:20",
        "tests/hooks/test_agent_contract.py:68",
        "tests/hooks/test_agent_contract.py:79"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Every repository ships one-command agent setup.** Each repository tracks an idempotent, non-interactive `scripts/bootstrap.sh` that installs a current uv, the pinned Python (`.python-version`, else the fleet standard), the locked environment (`uv sync --locked`, or the repository's equivalent), and the pre-commit and pre-push hooks, then prints the gate command `uvx pre-commit run --all-files`. The script never pipes a network response into a shell: uv comes from `pip install --user` (retrying with `--break-system-packages`) or the script stops with the install link, so the `supply-chain` rule SC-INSTALL-001 stays clean. | `pipelines-hook agent-contract` reports `scripts/bootstrap.sh is not tracked` for a repository without it, reports SC-INSTALL-001 for a script containing `curl ... \\| sh`, and passes under `--strict` for a conformant fixture.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 12
    },
    {
      "id": "PIPE-CONNSPEC-R176",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Every repository carries the standard tool-neutral AGENTS.md section",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a35ac8c46c0"
      ],
      "verified_by": [
        "tests/hooks/test_agent_contract.py:31",
        "tests/hooks/test_agent_contract.py:39"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Every repository carries the standard tool-neutral AGENTS.md section.** `AGENTS.md` holds the marked block `<!-- agent-contract:start -->` to `<!-- agent-contract:end -->` with the labels Owner boundary, Setup, Gates and Commits, and a link to the organization `AGENTS.md` at `https://github.com/Knuckles-Team/.github/blob/main/AGENTS.md`. The block is tool-neutral; a tool-specific entry file such as `CLAUDE.md` only imports `AGENTS.md`. The connector scaffold in `universal-skills` generates both the script and the block. | `pipelines-hook agent-contract --strict` fails for an `AGENTS.md` without the block, a missing label or a missing org link, and passes for a conformant fixture.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 13
    },
    {
      "id": "PIPE-CONNSPEC-R177",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "The agent-contract check is warn-level first",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a35ac8c46c0"
      ],
      "verified_by": [
        "tests/hooks/test_agent_contract.py:47",
        "tests/hooks/test_agent_contract.py:58"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**The agent-contract check is warn-level first.** The hook `agent-contract` (pre-push) reports findings and exits 0; `--strict` makes them blocking once the fleet has converged. It reads the tracked set only. | The default run exits 0 with a `WARN` line for a nonconforming fixture, and `--strict` exits 1.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 14
    },
    {
      "id": "PIPE-CONNSPEC-R101",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`ansible-tower-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "939290c617c5",
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r106_r116.py:65",
        "tests/test_connector_consumer_r101_r106_r116.py:66",
        "tests/test_connector_consumer_r101_r106_r116.py:67",
        "tests/test_connector_consumer_r101_r115.py:72",
        "tests/test_connector_consumer_r101_r115.py:97"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`ansible-tower-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 15
    },
    {
      "id": "PIPE-CONNSPEC-R101.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`ansible-tower-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:72",
        "tests/test_connector_consumer_r101_r115.py:97"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`ansible-tower-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 16
    },
    {
      "id": "PIPE-CONNSPEC-R101.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`ansible-tower-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "939290c617c5"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r106_r116.py:65"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`ansible-tower-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 17
    },
    {
      "id": "PIPE-CONNSPEC-R101.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`ansible-tower-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "939290c617c5"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r106_r116.py:66"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`ansible-tower-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/ansible-tower-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 18
    },
    {
      "id": "PIPE-CONNSPEC-R101.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`ansible-tower-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "939290c617c5"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r106_r116.py:67"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`ansible-tower-mcp` has the rapid-delivery section in its development skill. | Check that its `ansible-tower-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 19
    },
    {
      "id": "PIPE-CONNSPEC-R102",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`archimate-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2cfb5169e508",
        "449c1193701b",
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:111",
        "tests/test_connector_consumer_r101_r115.py:136",
        "tests/test_connector_consumer_r101_r115.py:73",
        "tests/test_connector_consumer_r102.py:150",
        "tests/test_connector_consumer_r102.py:62"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`archimate-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 20
    },
    {
      "id": "PIPE-CONNSPEC-R102.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`archimate-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:73"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`archimate-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 21
    },
    {
      "id": "PIPE-CONNSPEC-R102.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`archimate-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:111"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`archimate-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 22
    },
    {
      "id": "PIPE-CONNSPEC-R102.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`archimate-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:136"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`archimate-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/archimate-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 23
    },
    {
      "id": "PIPE-CONNSPEC-R102.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`archimate-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2cfb5169e508",
        "449c1193701b"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r102.py:150",
        "tests/test_connector_consumer_r102.py:62"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`archimate-mcp` has the rapid-delivery section in its development skill. | Check that its `archimate-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 24
    },
    {
      "id": "PIPE-CONNSPEC-R103",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`archivebox-api` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "a75eb4ea62fd",
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:138",
        "tests/test_connector_consumer_r103_r152_public_batch.py:96",
        "tests/test_connector_consumer_remeasure_20261028.py:172",
        "tests/test_connector_consumer_rollout.py:49"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`archivebox-api` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 25
    },
    {
      "id": "PIPE-CONNSPEC-R103.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`archivebox-api` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:49"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`archivebox-api` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 26
    },
    {
      "id": "PIPE-CONNSPEC-R103.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`archivebox-api` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:172"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`archivebox-api` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 27
    },
    {
      "id": "PIPE-CONNSPEC-R103.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`archivebox-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:96"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`archivebox-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/archivebox-api/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 28
    },
    {
      "id": "PIPE-CONNSPEC-R103.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`archivebox-api` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:138"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`archivebox-api` has the rapid-delivery section in its development skill. | Check that its `archivebox-api-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 29
    },
    {
      "id": "PIPE-CONNSPEC-R104",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`aris-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd",
        "d982a5d40269"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:124",
        "tests/test_connector_consumer_rollout.py:224",
        "tests/test_connector_consumer_rollout.py:50",
        "tests/test_connector_consumer_rollout.py:80"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`aris-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 30
    },
    {
      "id": "PIPE-CONNSPEC-R104.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`aris-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:50"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`aris-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 31
    },
    {
      "id": "PIPE-CONNSPEC-R104.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`aris-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:80"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`aris-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 32
    },
    {
      "id": "PIPE-CONNSPEC-R104.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`aris-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:124"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`aris-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/aris-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 33
    },
    {
      "id": "PIPE-CONNSPEC-R104.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`aris-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d982a5d40269"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:224"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`aris-mcp` has the rapid-delivery section in its development skill. | Check that its `aris-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 34
    },
    {
      "id": "PIPE-CONNSPEC-R105",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`arr-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd",
        "f82d25db4632"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r105.py:62",
        "tests/test_connector_consumer_r105.py:63",
        "tests/test_connector_consumer_rollout.py:51",
        "tests/test_connector_consumer_rollout.py:81"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`arr-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 35
    },
    {
      "id": "PIPE-CONNSPEC-R105.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`arr-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:51"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`arr-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 36
    },
    {
      "id": "PIPE-CONNSPEC-R105.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`arr-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:81"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`arr-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 37
    },
    {
      "id": "PIPE-CONNSPEC-R105.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`arr-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "f82d25db4632"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r105.py:62"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`arr-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/arr-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 38
    },
    {
      "id": "PIPE-CONNSPEC-R105.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`arr-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "f82d25db4632"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r105.py:63"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`arr-mcp` has the rapid-delivery section in its development skill. | Check that its `arr-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 39
    },
    {
      "id": "PIPE-CONNSPEC-R106",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`atlassian-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "939290c617c5",
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r106_r116.py:68",
        "tests/test_connector_consumer_r101_r106_r116.py:69",
        "tests/test_connector_consumer_r101_r106_r116.py:70",
        "tests/test_connector_consumer_r101_r115.py:74"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`atlassian-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 40
    },
    {
      "id": "PIPE-CONNSPEC-R106.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`atlassian-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:74"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`atlassian-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 41
    },
    {
      "id": "PIPE-CONNSPEC-R106.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`atlassian-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "939290c617c5"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r106_r116.py:68"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`atlassian-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 42
    },
    {
      "id": "PIPE-CONNSPEC-R106.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`atlassian-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "939290c617c5"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r106_r116.py:69"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`atlassian-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/atlassian-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 43
    },
    {
      "id": "PIPE-CONNSPEC-R106.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`atlassian-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "939290c617c5"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r106_r116.py:70"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`atlassian-agent` has the rapid-delivery section in its development skill. | Check that its `atlassian-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 44
    },
    {
      "id": "PIPE-CONNSPEC-R107",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`audio-transcriber` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291",
        "a75eb4ea62fd",
        "d7d1a86cc659"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:127",
        "tests/test_connector_consumer_r107_r155_public_batch.py:76",
        "tests/test_connector_consumer_rollout.py:52",
        "tests/test_connector_consumer_rollout.py:82"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`audio-transcriber` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 45
    },
    {
      "id": "PIPE-CONNSPEC-R107.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`audio-transcriber` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:52"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`audio-transcriber` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 46
    },
    {
      "id": "PIPE-CONNSPEC-R107.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`audio-transcriber` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:82"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`audio-transcriber` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 47
    },
    {
      "id": "PIPE-CONNSPEC-R107.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`audio-transcriber` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291",
        "d7d1a86cc659"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:76"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`audio-transcriber` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/audio-transcriber/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 48
    },
    {
      "id": "PIPE-CONNSPEC-R107.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`audio-transcriber` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291",
        "d7d1a86cc659"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:127"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`audio-transcriber` has the rapid-delivery section in its development skill. | Check that its `audio-transcriber-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 49
    },
    {
      "id": "PIPE-CONNSPEC-R108",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`audiobookshelf-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48",
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:112",
        "tests/test_connector_consumer_r101_r115.py:75",
        "tests/test_connector_consumer_r108_r115.py:79",
        "tests/test_connector_consumer_r108_r115.py:80"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`audiobookshelf-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 50
    },
    {
      "id": "PIPE-CONNSPEC-R108.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`audiobookshelf-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:75"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`audiobookshelf-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 51
    },
    {
      "id": "PIPE-CONNSPEC-R108.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`audiobookshelf-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:112"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`audiobookshelf-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 52
    },
    {
      "id": "PIPE-CONNSPEC-R108.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`audiobookshelf-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r108_r115.py:79"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`audiobookshelf-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/audiobookshelf-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 53
    },
    {
      "id": "PIPE-CONNSPEC-R108.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`audiobookshelf-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r108_r115.py:80"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`audiobookshelf-mcp` has the rapid-delivery section in its development skill. | Check that its `audiobookshelf-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 54
    },
    {
      "id": "PIPE-CONNSPEC-R109",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`caddy-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4c822b3c2dd7",
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:125",
        "tests/test_connector_consumer_rollout.py:148",
        "tests/test_connector_consumer_rollout.py:53",
        "tests/test_connector_consumer_rollout.py:83"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`caddy-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 55
    },
    {
      "id": "PIPE-CONNSPEC-R109.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`caddy-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:53"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`caddy-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 56
    },
    {
      "id": "PIPE-CONNSPEC-R109.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`caddy-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:83"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`caddy-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 57
    },
    {
      "id": "PIPE-CONNSPEC-R109.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`caddy-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:125"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`caddy-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/caddy-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 58
    },
    {
      "id": "PIPE-CONNSPEC-R109.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`caddy-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4c822b3c2dd7"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:148"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`caddy-mcp` has the rapid-delivery section in its development skill. | Check that its `caddy-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 59
    },
    {
      "id": "PIPE-CONNSPEC-R110",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`camunda-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd",
        "d982a5d40269"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:126",
        "tests/test_connector_consumer_rollout.py:225",
        "tests/test_connector_consumer_rollout.py:54",
        "tests/test_connector_consumer_rollout.py:84"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`camunda-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 60
    },
    {
      "id": "PIPE-CONNSPEC-R110.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`camunda-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:54"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`camunda-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 61
    },
    {
      "id": "PIPE-CONNSPEC-R110.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`camunda-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:84"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`camunda-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 62
    },
    {
      "id": "PIPE-CONNSPEC-R110.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`camunda-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:126"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`camunda-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/camunda-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 63
    },
    {
      "id": "PIPE-CONNSPEC-R110.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`camunda-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d982a5d40269"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:225"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`camunda-mcp` has the rapid-delivery section in its development skill. | Check that its `camunda-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 64
    },
    {
      "id": "PIPE-CONNSPEC-R111",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`ciso-assistant-api` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "5536587da291",
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:128",
        "tests/test_connector_consumer_r107_r155_public_batch.py:77",
        "tests/test_connector_consumer_remeasure_20261028.py:173",
        "tests/test_connector_consumer_rollout.py:55"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`ciso-assistant-api` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 65
    },
    {
      "id": "PIPE-CONNSPEC-R111.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`ciso-assistant-api` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:55"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`ciso-assistant-api` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 66
    },
    {
      "id": "PIPE-CONNSPEC-R111.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`ciso-assistant-api` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:173"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`ciso-assistant-api` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 67
    },
    {
      "id": "PIPE-CONNSPEC-R111.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`ciso-assistant-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:77"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`ciso-assistant-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/ciso-assistant-api/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 68
    },
    {
      "id": "PIPE-CONNSPEC-R111.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`ciso-assistant-api` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:128"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`ciso-assistant-api` has the rapid-delivery section in its development skill. | Check that its `ciso-assistant-api-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 69
    },
    {
      "id": "PIPE-CONNSPEC-R112",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`clarity-api` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48",
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:113",
        "tests/test_connector_consumer_r101_r115.py:76",
        "tests/test_connector_consumer_r108_r115.py:81",
        "tests/test_connector_consumer_r108_r115.py:82"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`clarity-api` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 70
    },
    {
      "id": "PIPE-CONNSPEC-R112.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`clarity-api` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:76"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`clarity-api` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 71
    },
    {
      "id": "PIPE-CONNSPEC-R112.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`clarity-api` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:113"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`clarity-api` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 72
    },
    {
      "id": "PIPE-CONNSPEC-R112.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`clarity-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r108_r115.py:81"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`clarity-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/clarity-api/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 73
    },
    {
      "id": "PIPE-CONNSPEC-R112.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`clarity-api` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r108_r115.py:82"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`clarity-api` has the rapid-delivery section in its development skill. | Check that its `clarity-api-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 74
    },
    {
      "id": "PIPE-CONNSPEC-R113",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`container-manager-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48",
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:77",
        "tests/test_connector_consumer_r108_r115.py:83",
        "tests/test_connector_consumer_r108_r115.py:84",
        "tests/test_connector_consumer_r108_r115.py:85"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`container-manager-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 75
    },
    {
      "id": "PIPE-CONNSPEC-R113.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`container-manager-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:77"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`container-manager-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 76
    },
    {
      "id": "PIPE-CONNSPEC-R113.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`container-manager-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r108_r115.py:83"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`container-manager-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 77
    },
    {
      "id": "PIPE-CONNSPEC-R113.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`container-manager-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r108_r115.py:84"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`container-manager-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/container-manager-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 78
    },
    {
      "id": "PIPE-CONNSPEC-R113.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`container-manager-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r108_r115.py:85"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`container-manager-mcp` has the rapid-delivery section in its development skill. | Check that its `container-manager-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 79
    },
    {
      "id": "PIPE-CONNSPEC-R114",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`data-science-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48",
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:114",
        "tests/test_connector_consumer_r101_r115.py:78",
        "tests/test_connector_consumer_r108_r115.py:86",
        "tests/test_connector_consumer_r108_r115.py:87"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`data-science-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 80
    },
    {
      "id": "PIPE-CONNSPEC-R114.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`data-science-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:78"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`data-science-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 81
    },
    {
      "id": "PIPE-CONNSPEC-R114.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`data-science-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:114"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`data-science-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 82
    },
    {
      "id": "PIPE-CONNSPEC-R114.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`data-science-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r108_r115.py:86"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`data-science-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/data-science-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 83
    },
    {
      "id": "PIPE-CONNSPEC-R114.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`data-science-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r108_r115.py:87"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`data-science-mcp` has the rapid-delivery section in its development skill. | Check that its `data-science-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 84
    },
    {
      "id": "PIPE-CONNSPEC-R115",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`dockerhub-api` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48",
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:115",
        "tests/test_connector_consumer_r101_r115.py:79",
        "tests/test_connector_consumer_r108_r115.py:88",
        "tests/test_connector_consumer_r108_r115.py:89"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`dockerhub-api` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 85
    },
    {
      "id": "PIPE-CONNSPEC-R115.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`dockerhub-api` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:79"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`dockerhub-api` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 86
    },
    {
      "id": "PIPE-CONNSPEC-R115.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`dockerhub-api` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afd8a5efe60e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r115.py:115"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`dockerhub-api` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 87
    },
    {
      "id": "PIPE-CONNSPEC-R115.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`dockerhub-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r108_r115.py:88"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`dockerhub-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/dockerhub-api/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 88
    },
    {
      "id": "PIPE-CONNSPEC-R115.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`dockerhub-api` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3023e9165c48"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r108_r115.py:89"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`dockerhub-api` has the rapid-delivery section in its development skill. | Check that its `dockerhub-api-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 89
    },
    {
      "id": "PIPE-CONNSPEC-R116",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`documentdb-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "939290c617c5",
        "a75eb4ea62fd",
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r106_r116.py:71",
        "tests/test_connector_consumer_r101_r106_r116.py:72",
        "tests/test_connector_consumer_r103_r152_public_batch.py:139",
        "tests/test_connector_consumer_rollout.py:56"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`documentdb-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 90
    },
    {
      "id": "PIPE-CONNSPEC-R116.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`documentdb-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:56"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`documentdb-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 91
    },
    {
      "id": "PIPE-CONNSPEC-R116.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`documentdb-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "939290c617c5"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r106_r116.py:71"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`documentdb-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 92
    },
    {
      "id": "PIPE-CONNSPEC-R116.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`documentdb-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "939290c617c5"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r101_r106_r116.py:72"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`documentdb-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/documentdb-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 93
    },
    {
      "id": "PIPE-CONNSPEC-R116.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`documentdb-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:139"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`documentdb-mcp` has the rapid-delivery section in its development skill. | Check that its `documentdb-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 94
    },
    {
      "id": "PIPE-CONNSPEC-R117",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`egeria-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd",
        "d982a5d40269"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:127",
        "tests/test_connector_consumer_rollout.py:226",
        "tests/test_connector_consumer_rollout.py:57",
        "tests/test_connector_consumer_rollout.py:85"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`egeria-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 95
    },
    {
      "id": "PIPE-CONNSPEC-R117.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`egeria-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:57"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`egeria-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 96
    },
    {
      "id": "PIPE-CONNSPEC-R117.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`egeria-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:85"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`egeria-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 97
    },
    {
      "id": "PIPE-CONNSPEC-R117.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`egeria-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a75eb4ea62fd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:127"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`egeria-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/egeria-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 98
    },
    {
      "id": "PIPE-CONNSPEC-R117.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`egeria-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d982a5d40269"
      ],
      "verified_by": [
        "tests/test_connector_consumer_rollout.py:226"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`egeria-mcp` has the rapid-delivery section in its development skill. | Check that its `egeria-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 99
    },
    {
      "id": "PIPE-CONNSPEC-R118",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`emerald-exchange` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:49",
        "tests/test_connector_consumer_remeasure_20261028.py:174",
        "tests/test_connector_consumer_remeasure_20261028.py:200",
        "tests/test_connector_consumer_remeasure_20261028.py:225"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`emerald-exchange` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 100
    },
    {
      "id": "PIPE-CONNSPEC-R118.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`emerald-exchange` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:49"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`emerald-exchange` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 101
    },
    {
      "id": "PIPE-CONNSPEC-R118.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`emerald-exchange` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:174"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`emerald-exchange` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 102
    },
    {
      "id": "PIPE-CONNSPEC-R118.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`emerald-exchange` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:200"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`emerald-exchange` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/emerald-exchange/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 103
    },
    {
      "id": "PIPE-CONNSPEC-R118.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`emerald-exchange` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:225"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`emerald-exchange` has the rapid-delivery section in its development skill. | Check that its `emerald-exchange-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 104
    },
    {
      "id": "PIPE-CONNSPEC-R119",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`erpnext-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291",
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:129",
        "tests/test_connector_consumer_r118_137.py:147",
        "tests/test_connector_consumer_r118_137.py:50",
        "tests/test_connector_consumer_r118_137.py:94"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`erpnext-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 105
    },
    {
      "id": "PIPE-CONNSPEC-R119.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`erpnext-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:50"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`erpnext-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 106
    },
    {
      "id": "PIPE-CONNSPEC-R119.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`erpnext-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:94"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`erpnext-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 107
    },
    {
      "id": "PIPE-CONNSPEC-R119.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`erpnext-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:147"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`erpnext-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/erpnext-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 108
    },
    {
      "id": "PIPE-CONNSPEC-R119.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`erpnext-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:129"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`erpnext-agent` has the rapid-delivery section in its development skill. | Check that its `erpnext-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 109
    },
    {
      "id": "PIPE-CONNSPEC-R120",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`fan-manager` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291",
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:130",
        "tests/test_connector_consumer_r107_r155_public_batch.py:78",
        "tests/test_connector_consumer_r118_137.py:51",
        "tests/test_connector_consumer_r118_137.py:95"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`fan-manager` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 110
    },
    {
      "id": "PIPE-CONNSPEC-R120.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`fan-manager` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:51"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`fan-manager` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 111
    },
    {
      "id": "PIPE-CONNSPEC-R120.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`fan-manager` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:95"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`fan-manager` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 112
    },
    {
      "id": "PIPE-CONNSPEC-R120.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`fan-manager` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:78"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`fan-manager` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/fan-manager/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 113
    },
    {
      "id": "PIPE-CONNSPEC-R120.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`fan-manager` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:130"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`fan-manager` has the rapid-delivery section in its development skill. | Check that its `fan-manager-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 114
    },
    {
      "id": "PIPE-CONNSPEC-R121",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`firefly-iii-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2523602d5bf6",
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:52",
        "tests/test_connector_consumer_r118_137.py:96",
        "tests/test_connector_consumer_r121.py:148",
        "tests/test_connector_consumer_r121.py:186",
        "tests/test_connector_consumer_r121.py:67"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`firefly-iii-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 115
    },
    {
      "id": "PIPE-CONNSPEC-R121.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`firefly-iii-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:52"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`firefly-iii-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 116
    },
    {
      "id": "PIPE-CONNSPEC-R121.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`firefly-iii-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:96"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`firefly-iii-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 117
    },
    {
      "id": "PIPE-CONNSPEC-R121.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`firefly-iii-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2523602d5bf6"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r121.py:148",
        "tests/test_connector_consumer_r121.py:67"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`firefly-iii-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/firefly-iii-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 118
    },
    {
      "id": "PIPE-CONNSPEC-R121.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`firefly-iii-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2523602d5bf6"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r121.py:186",
        "tests/test_connector_consumer_r121.py:68"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`firefly-iii-mcp` has the rapid-delivery section in its development skill. | Check that its `firefly-iii-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 119
    },
    {
      "id": "PIPE-CONNSPEC-R122",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`freshrss-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "5536587da291",
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:131",
        "tests/test_connector_consumer_r118_137.py:53",
        "tests/test_connector_consumer_r118_137.py:97",
        "tests/test_connector_consumer_remeasure_20261028.py:201"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`freshrss-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 120
    },
    {
      "id": "PIPE-CONNSPEC-R122.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`freshrss-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:53"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`freshrss-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 121
    },
    {
      "id": "PIPE-CONNSPEC-R122.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`freshrss-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:97"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`freshrss-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 122
    },
    {
      "id": "PIPE-CONNSPEC-R122.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`freshrss-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:201"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`freshrss-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/freshrss-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 123
    },
    {
      "id": "PIPE-CONNSPEC-R122.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`freshrss-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:131"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`freshrss-agent` has the rapid-delivery section in its development skill. | Check that its `freshrss-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 124
    },
    {
      "id": "PIPE-CONNSPEC-R123",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`genius-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:54",
        "tests/test_connector_consumer_r118_137.py:98",
        "tests/test_connector_consumer_remeasure_20261028.py:202",
        "tests/test_connector_consumer_remeasure_20261028.py:226"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`genius-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 125
    },
    {
      "id": "PIPE-CONNSPEC-R123.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`genius-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:54"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`genius-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 126
    },
    {
      "id": "PIPE-CONNSPEC-R123.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`genius-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:98"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`genius-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 127
    },
    {
      "id": "PIPE-CONNSPEC-R123.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`genius-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:202"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`genius-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/genius-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 128
    },
    {
      "id": "PIPE-CONNSPEC-R123.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`genius-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:226"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`genius-agent` has the rapid-delivery section in its development skill. | Check that its `genius-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 129
    },
    {
      "id": "PIPE-CONNSPEC-R124",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`github-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:55",
        "tests/test_connector_consumer_remeasure_20261028.py:175",
        "tests/test_connector_consumer_remeasure_20261028.py:203",
        "tests/test_connector_consumer_remeasure_20261028.py:227"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`github-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 130
    },
    {
      "id": "PIPE-CONNSPEC-R124.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`github-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:55"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`github-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 131
    },
    {
      "id": "PIPE-CONNSPEC-R124.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`github-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:175"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`github-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 132
    },
    {
      "id": "PIPE-CONNSPEC-R124.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`github-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:203"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`github-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/github-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 133
    },
    {
      "id": "PIPE-CONNSPEC-R124.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`github-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:227"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`github-agent` has the rapid-delivery section in its development skill. | Check that its `github-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 134
    },
    {
      "id": "PIPE-CONNSPEC-R125",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`gitlab-api` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "a56aeaef8e7f",
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:140",
        "tests/test_connector_consumer_r103_r152_public_batch.py:97",
        "tests/test_connector_consumer_r118_137.py:56",
        "tests/test_connector_consumer_remeasure_20261028.py:176"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`gitlab-api` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 135
    },
    {
      "id": "PIPE-CONNSPEC-R125.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`gitlab-api` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:56"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`gitlab-api` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 136
    },
    {
      "id": "PIPE-CONNSPEC-R125.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`gitlab-api` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:176"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`gitlab-api` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 137
    },
    {
      "id": "PIPE-CONNSPEC-R125.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`gitlab-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:97"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`gitlab-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/gitlab-api/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 138
    },
    {
      "id": "PIPE-CONNSPEC-R125.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`gitlab-api` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:140"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`gitlab-api` has the rapid-delivery section in its development skill. | Check that its `gitlab-api-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 139
    },
    {
      "id": "PIPE-CONNSPEC-R126",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`gramps-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f",
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:141",
        "tests/test_connector_consumer_r103_r152_public_batch.py:98",
        "tests/test_connector_consumer_r118_137.py:57",
        "tests/test_connector_consumer_r118_137.py:99"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`gramps-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 140
    },
    {
      "id": "PIPE-CONNSPEC-R126.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`gramps-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:57"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`gramps-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 141
    },
    {
      "id": "PIPE-CONNSPEC-R126.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`gramps-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:99"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`gramps-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 142
    },
    {
      "id": "PIPE-CONNSPEC-R126.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`gramps-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:98"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`gramps-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/gramps-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 143
    },
    {
      "id": "PIPE-CONNSPEC-R126.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`gramps-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:141"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`gramps-mcp` has the rapid-delivery section in its development skill. | Check that its `gramps-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 144
    },
    {
      "id": "PIPE-CONNSPEC-R127",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`hdhomerun-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f",
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:142",
        "tests/test_connector_consumer_r103_r152_public_batch.py:99",
        "tests/test_connector_consumer_r118_137.py:100",
        "tests/test_connector_consumer_r118_137.py:58"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`hdhomerun-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 145
    },
    {
      "id": "PIPE-CONNSPEC-R127.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`hdhomerun-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:58"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`hdhomerun-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 146
    },
    {
      "id": "PIPE-CONNSPEC-R127.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`hdhomerun-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:100"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`hdhomerun-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 147
    },
    {
      "id": "PIPE-CONNSPEC-R127.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`hdhomerun-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:99"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`hdhomerun-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/hdhomerun-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 148
    },
    {
      "id": "PIPE-CONNSPEC-R127.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`hdhomerun-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:142"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`hdhomerun-mcp` has the rapid-delivery section in its development skill. | Check that its `hdhomerun-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 149
    },
    {
      "id": "PIPE-CONNSPEC-R128",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`home-assistant-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291",
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:132",
        "tests/test_connector_consumer_r107_r155_public_batch.py:79",
        "tests/test_connector_consumer_r118_137.py:101",
        "tests/test_connector_consumer_r118_137.py:59"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`home-assistant-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 150
    },
    {
      "id": "PIPE-CONNSPEC-R128.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`home-assistant-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:59"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`home-assistant-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 151
    },
    {
      "id": "PIPE-CONNSPEC-R128.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`home-assistant-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:101"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`home-assistant-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 152
    },
    {
      "id": "PIPE-CONNSPEC-R128.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`home-assistant-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:79"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`home-assistant-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/home-assistant-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 153
    },
    {
      "id": "PIPE-CONNSPEC-R128.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`home-assistant-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:132"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`home-assistant-agent` has the rapid-delivery section in its development skill. | Check that its `home-assistant-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 154
    },
    {
      "id": "PIPE-CONNSPEC-R129",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`jellyfin-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f",
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:100",
        "tests/test_connector_consumer_r103_r152_public_batch.py:143",
        "tests/test_connector_consumer_r118_137.py:102",
        "tests/test_connector_consumer_r118_137.py:60"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`jellyfin-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 155
    },
    {
      "id": "PIPE-CONNSPEC-R129.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`jellyfin-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:60"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`jellyfin-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 156
    },
    {
      "id": "PIPE-CONNSPEC-R129.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`jellyfin-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:102"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`jellyfin-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 157
    },
    {
      "id": "PIPE-CONNSPEC-R129.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`jellyfin-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:100"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`jellyfin-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/jellyfin-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 158
    },
    {
      "id": "PIPE-CONNSPEC-R129.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`jellyfin-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:143"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`jellyfin-mcp` has the rapid-delivery section in its development skill. | Check that its `jellyfin-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 159
    },
    {
      "id": "PIPE-CONNSPEC-R130",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`jena-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291",
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:133",
        "tests/test_connector_consumer_r118_137.py:103",
        "tests/test_connector_consumer_r118_137.py:148",
        "tests/test_connector_consumer_r118_137.py:61"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`jena-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 160
    },
    {
      "id": "PIPE-CONNSPEC-R130.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`jena-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:61"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`jena-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 161
    },
    {
      "id": "PIPE-CONNSPEC-R130.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`jena-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:103"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`jena-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 162
    },
    {
      "id": "PIPE-CONNSPEC-R130.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`jena-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:148"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`jena-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/jena-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 163
    },
    {
      "id": "PIPE-CONNSPEC-R130.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`jena-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:133"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`jena-mcp` has the rapid-delivery section in its development skill. | Check that its `jena-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 164
    },
    {
      "id": "PIPE-CONNSPEC-R131",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`kafka-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:62",
        "tests/test_connector_consumer_remeasure_20261028.py:177",
        "tests/test_connector_consumer_remeasure_20261028.py:204",
        "tests/test_connector_consumer_remeasure_20261028.py:228"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`kafka-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 165
    },
    {
      "id": "PIPE-CONNSPEC-R131.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`kafka-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:62"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`kafka-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 166
    },
    {
      "id": "PIPE-CONNSPEC-R131.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`kafka-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:177"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`kafka-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 167
    },
    {
      "id": "PIPE-CONNSPEC-R131.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`kafka-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:204"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`kafka-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/kafka-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 168
    },
    {
      "id": "PIPE-CONNSPEC-R131.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`kafka-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:228"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`kafka-mcp` has the rapid-delivery section in its development skill. | Check that its `kafka-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 169
    },
    {
      "id": "PIPE-CONNSPEC-R132",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`keycloak-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291",
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:134",
        "tests/test_connector_consumer_r118_137.py:104",
        "tests/test_connector_consumer_r118_137.py:149",
        "tests/test_connector_consumer_r118_137.py:63"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`keycloak-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 170
    },
    {
      "id": "PIPE-CONNSPEC-R132.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`keycloak-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:63"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`keycloak-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 171
    },
    {
      "id": "PIPE-CONNSPEC-R132.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`keycloak-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:104"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`keycloak-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 172
    },
    {
      "id": "PIPE-CONNSPEC-R132.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`keycloak-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:149"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`keycloak-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/keycloak-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 173
    },
    {
      "id": "PIPE-CONNSPEC-R132.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`keycloak-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:134"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`keycloak-agent` has the rapid-delivery section in its development skill. | Check that its `keycloak-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 174
    },
    {
      "id": "PIPE-CONNSPEC-R133",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`lakekeeper-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "a56aeaef8e7f",
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:144",
        "tests/test_connector_consumer_r118_137.py:105",
        "tests/test_connector_consumer_r118_137.py:64",
        "tests/test_connector_consumer_remeasure_20261028.py:205"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`lakekeeper-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 175
    },
    {
      "id": "PIPE-CONNSPEC-R133.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`lakekeeper-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:64"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`lakekeeper-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 176
    },
    {
      "id": "PIPE-CONNSPEC-R133.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`lakekeeper-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:105"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`lakekeeper-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 177
    },
    {
      "id": "PIPE-CONNSPEC-R133.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`lakekeeper-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:205"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`lakekeeper-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/lakekeeper-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 178
    },
    {
      "id": "PIPE-CONNSPEC-R133.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`lakekeeper-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:144"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`lakekeeper-mcp` has the rapid-delivery section in its development skill. | Check that its `lakekeeper-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 179
    },
    {
      "id": "PIPE-CONNSPEC-R134",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`langfuse-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f",
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:101",
        "tests/test_connector_consumer_r103_r152_public_batch.py:145",
        "tests/test_connector_consumer_r118_137.py:106",
        "tests/test_connector_consumer_r118_137.py:65"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`langfuse-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 180
    },
    {
      "id": "PIPE-CONNSPEC-R134.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`langfuse-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:65"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`langfuse-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 181
    },
    {
      "id": "PIPE-CONNSPEC-R134.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`langfuse-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:106"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`langfuse-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 182
    },
    {
      "id": "PIPE-CONNSPEC-R134.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`langfuse-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:101"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`langfuse-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/langfuse-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 183
    },
    {
      "id": "PIPE-CONNSPEC-R134.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`langfuse-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:145"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`langfuse-agent` has the rapid-delivery section in its development skill. | Check that its `langfuse-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 184
    },
    {
      "id": "PIPE-CONNSPEC-R135",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`leanix-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f",
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:102",
        "tests/test_connector_consumer_r103_r152_public_batch.py:146",
        "tests/test_connector_consumer_r118_137.py:107",
        "tests/test_connector_consumer_r118_137.py:66"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`leanix-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 185
    },
    {
      "id": "PIPE-CONNSPEC-R135.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`leanix-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:66"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`leanix-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 186
    },
    {
      "id": "PIPE-CONNSPEC-R135.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`leanix-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:107"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`leanix-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 187
    },
    {
      "id": "PIPE-CONNSPEC-R135.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`leanix-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:102"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`leanix-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/leanix-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 188
    },
    {
      "id": "PIPE-CONNSPEC-R135.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`leanix-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:146"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`leanix-agent` has the rapid-delivery section in its development skill. | Check that its `leanix-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 189
    },
    {
      "id": "PIPE-CONNSPEC-R136",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`legal-peripherals-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:67",
        "tests/test_connector_consumer_remeasure_20261028.py:178",
        "tests/test_connector_consumer_remeasure_20261028.py:206",
        "tests/test_connector_consumer_remeasure_20261028.py:229"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`legal-peripherals-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 190
    },
    {
      "id": "PIPE-CONNSPEC-R136.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`legal-peripherals-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:67"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`legal-peripherals-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 191
    },
    {
      "id": "PIPE-CONNSPEC-R136.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`legal-peripherals-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:178"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`legal-peripherals-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 192
    },
    {
      "id": "PIPE-CONNSPEC-R136.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`legal-peripherals-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:206"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`legal-peripherals-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/legal-peripherals-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 193
    },
    {
      "id": "PIPE-CONNSPEC-R136.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`legal-peripherals-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:229"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`legal-peripherals-mcp` has the rapid-delivery section in its development skill. | Check that its `legal-peripherals-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 194
    },
    {
      "id": "PIPE-CONNSPEC-R137",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`lgtm-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:108",
        "tests/test_connector_consumer_r118_137.py:150",
        "tests/test_connector_consumer_r118_137.py:68",
        "tests/test_connector_consumer_remeasure_20261028.py:230"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`lgtm-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 195
    },
    {
      "id": "PIPE-CONNSPEC-R137.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`lgtm-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:68"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`lgtm-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 196
    },
    {
      "id": "PIPE-CONNSPEC-R137.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`lgtm-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:108"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`lgtm-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 197
    },
    {
      "id": "PIPE-CONNSPEC-R137.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`lgtm-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a56aeaef8e7f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r118_137.py:150"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`lgtm-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/lgtm-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 198
    },
    {
      "id": "PIPE-CONNSPEC-R137.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`lgtm-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:230"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`lgtm-mcp` has the rapid-delivery section in its development skill. | Check that its `lgtm-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 199
    },
    {
      "id": "PIPE-CONNSPEC-R138",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`listmonk-api` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2dadce373942",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:125",
        "tests/test_connector_consumer_r138_157.py:63",
        "tests/test_connector_consumer_r138_r145.py:114",
        "tests/test_connector_consumer_r138_r145.py:115",
        "tests/test_connector_consumer_r138_r145.py:203"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`listmonk-api` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 200
    },
    {
      "id": "PIPE-CONNSPEC-R138.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`listmonk-api` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:63"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`listmonk-api` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 201
    },
    {
      "id": "PIPE-CONNSPEC-R138.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`listmonk-api` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:125"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`listmonk-api` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 202
    },
    {
      "id": "PIPE-CONNSPEC-R138.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`listmonk-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2dadce373942"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_r145.py:114",
        "tests/test_connector_consumer_r138_r145.py:203"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`listmonk-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/listmonk-api/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 203
    },
    {
      "id": "PIPE-CONNSPEC-R138.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`listmonk-api` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2dadce373942"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_r145.py:115",
        "tests/test_connector_consumer_r138_r145.py:243"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`listmonk-api` has the rapid-delivery section in its development skill. | Check that its `listmonk-api-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 204
    },
    {
      "id": "PIPE-CONNSPEC-R139",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`bellwether-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:64",
        "tests/test_connector_consumer_remeasure_20261028.py:179",
        "tests/test_connector_consumer_remeasure_20261028.py:207",
        "tests/test_connector_consumer_remeasure_20261028.py:231"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`bellwether-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). The repository was renamed from `market-data-mcp`; the old name redirects to it. | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 205
    },
    {
      "id": "PIPE-CONNSPEC-R139.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`bellwether-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:64"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`bellwether-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 206
    },
    {
      "id": "PIPE-CONNSPEC-R139.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`bellwether-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:179"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`bellwether-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 207
    },
    {
      "id": "PIPE-CONNSPEC-R139.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`bellwether-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:207"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`bellwether-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/bellwether-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 208
    },
    {
      "id": "PIPE-CONNSPEC-R139.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`bellwether-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:231"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`bellwether-mcp` has the rapid-delivery section in its development skill. | Check that its `market-data-mcp-development` skill, which still carries the pre-rename directory name, has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 209
    },
    {
      "id": "PIPE-CONNSPEC-R140",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`mattermost-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:158",
        "tests/test_connector_consumer_r138_157.py:65",
        "tests/test_connector_consumer_remeasure_20261028.py:180",
        "tests/test_connector_consumer_remeasure_20261028.py:232"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`mattermost-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 210
    },
    {
      "id": "PIPE-CONNSPEC-R140.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`mattermost-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:65"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`mattermost-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 211
    },
    {
      "id": "PIPE-CONNSPEC-R140.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`mattermost-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:180"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`mattermost-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 212
    },
    {
      "id": "PIPE-CONNSPEC-R140.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`mattermost-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:158"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`mattermost-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/mattermost-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 213
    },
    {
      "id": "PIPE-CONNSPEC-R140.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`mattermost-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:232"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`mattermost-mcp` has the rapid-delivery section in its development skill. | Check that its `mattermost-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 214
    },
    {
      "id": "PIPE-CONNSPEC-R141",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`mealie-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1211cdf00063",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:126",
        "tests/test_connector_consumer_r138_157.py:66",
        "tests/test_connector_consumer_r141.py:148",
        "tests/test_connector_consumer_r141.py:186",
        "tests/test_connector_consumer_r141.py:67"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`mealie-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 215
    },
    {
      "id": "PIPE-CONNSPEC-R141.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`mealie-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:66"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`mealie-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 216
    },
    {
      "id": "PIPE-CONNSPEC-R141.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`mealie-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:126"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`mealie-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 217
    },
    {
      "id": "PIPE-CONNSPEC-R141.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`mealie-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1211cdf00063"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r141.py:148",
        "tests/test_connector_consumer_r141.py:67"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`mealie-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/mealie-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 218
    },
    {
      "id": "PIPE-CONNSPEC-R141.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`mealie-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1211cdf00063"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r141.py:186",
        "tests/test_connector_consumer_r141.py:68"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`mealie-mcp` has the rapid-delivery section in its development skill. | Check that its `mealie-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 219
    },
    {
      "id": "PIPE-CONNSPEC-R142",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`media-downloader` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:67",
        "tests/test_connector_consumer_remeasure_20261028.py:181",
        "tests/test_connector_consumer_remeasure_20261028.py:208",
        "tests/test_connector_consumer_remeasure_20261028.py:233"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`media-downloader` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 220
    },
    {
      "id": "PIPE-CONNSPEC-R142.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`media-downloader` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:67"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`media-downloader` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 221
    },
    {
      "id": "PIPE-CONNSPEC-R142.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`media-downloader` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:181"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`media-downloader` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 222
    },
    {
      "id": "PIPE-CONNSPEC-R142.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`media-downloader` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:208"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`media-downloader` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/media-downloader/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 223
    },
    {
      "id": "PIPE-CONNSPEC-R142.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`media-downloader` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:233"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`media-downloader` has the rapid-delivery section in its development skill. | Check that its `media-downloader-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 224
    },
    {
      "id": "PIPE-CONNSPEC-R143",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`microsoft-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:68",
        "tests/test_connector_consumer_remeasure_20261028.py:182",
        "tests/test_connector_consumer_remeasure_20261028.py:209",
        "tests/test_connector_consumer_remeasure_20261028.py:234"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`microsoft-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 225
    },
    {
      "id": "PIPE-CONNSPEC-R143.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`microsoft-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:68"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`microsoft-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 226
    },
    {
      "id": "PIPE-CONNSPEC-R143.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`microsoft-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:182"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`microsoft-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 227
    },
    {
      "id": "PIPE-CONNSPEC-R143.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`microsoft-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:209"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`microsoft-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/microsoft-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 228
    },
    {
      "id": "PIPE-CONNSPEC-R143.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`microsoft-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:234"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`microsoft-agent` has the rapid-delivery section in its development skill. | Check that its `microsoft-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 229
    },
    {
      "id": "PIPE-CONNSPEC-R144",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`nextcloud-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1bd43d95d2c6",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:127",
        "tests/test_connector_consumer_r138_157.py:69",
        "tests/test_connector_consumer_r144.py:136",
        "tests/test_connector_consumer_r144.py:174",
        "tests/test_connector_consumer_r144.py:50"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`nextcloud-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 230
    },
    {
      "id": "PIPE-CONNSPEC-R144.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`nextcloud-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:69"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`nextcloud-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 231
    },
    {
      "id": "PIPE-CONNSPEC-R144.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`nextcloud-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:127"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`nextcloud-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 232
    },
    {
      "id": "PIPE-CONNSPEC-R144.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`nextcloud-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1bd43d95d2c6"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r144.py:136",
        "tests/test_connector_consumer_r144.py:50"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`nextcloud-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/nextcloud-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 233
    },
    {
      "id": "PIPE-CONNSPEC-R144.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`nextcloud-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1bd43d95d2c6"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r144.py:174",
        "tests/test_connector_consumer_r144.py:51"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`nextcloud-agent` has the rapid-delivery section in its development skill. | Check that its `nextcloud-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 234
    },
    {
      "id": "PIPE-CONNSPEC-R145",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`objectstore-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2dadce373942",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:128",
        "tests/test_connector_consumer_r138_157.py:70",
        "tests/test_connector_consumer_r138_r145.py:116",
        "tests/test_connector_consumer_r138_r145.py:117",
        "tests/test_connector_consumer_r138_r145.py:204"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`objectstore-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 235
    },
    {
      "id": "PIPE-CONNSPEC-R145.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`objectstore-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:70"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`objectstore-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 236
    },
    {
      "id": "PIPE-CONNSPEC-R145.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`objectstore-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:128"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`objectstore-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 237
    },
    {
      "id": "PIPE-CONNSPEC-R145.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`objectstore-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2dadce373942"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_r145.py:116",
        "tests/test_connector_consumer_r138_r145.py:204"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`objectstore-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/objectstore-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 238
    },
    {
      "id": "PIPE-CONNSPEC-R145.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`objectstore-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2dadce373942"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_r145.py:117",
        "tests/test_connector_consumer_r138_r145.py:244"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`objectstore-mcp` has the rapid-delivery section in its development skill. | Check that its `objectstore-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 239
    },
    {
      "id": "PIPE-CONNSPEC-R146",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`okta-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a9c07ce2625e",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:129",
        "tests/test_connector_consumer_r138_157.py:71",
        "tests/test_connector_consumer_r146.py:148",
        "tests/test_connector_consumer_r146.py:186",
        "tests/test_connector_consumer_r146.py:67"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`okta-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 240
    },
    {
      "id": "PIPE-CONNSPEC-R146.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`okta-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:71"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`okta-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 241
    },
    {
      "id": "PIPE-CONNSPEC-R146.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`okta-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:129"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`okta-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 242
    },
    {
      "id": "PIPE-CONNSPEC-R146.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`okta-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a9c07ce2625e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r146.py:148",
        "tests/test_connector_consumer_r146.py:67"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`okta-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/okta-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 243
    },
    {
      "id": "PIPE-CONNSPEC-R146.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`okta-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a9c07ce2625e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r146.py:186",
        "tests/test_connector_consumer_r146.py:68"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`okta-agent` has the rapid-delivery section in its development skill. | Check that its `okta-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 244
    },
    {
      "id": "PIPE-CONNSPEC-R147",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`onetrust-api` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:159",
        "tests/test_connector_consumer_r138_157.py:72",
        "tests/test_connector_consumer_remeasure_20261028.py:183",
        "tests/test_connector_consumer_remeasure_20261028.py:235"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`onetrust-api` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 245
    },
    {
      "id": "PIPE-CONNSPEC-R147.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`onetrust-api` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:72"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`onetrust-api` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 246
    },
    {
      "id": "PIPE-CONNSPEC-R147.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`onetrust-api` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:183"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`onetrust-api` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 247
    },
    {
      "id": "PIPE-CONNSPEC-R147.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`onetrust-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:159"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`onetrust-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/onetrust-api/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 248
    },
    {
      "id": "PIPE-CONNSPEC-R147.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`onetrust-api` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:235"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`onetrust-api` has the rapid-delivery section in its development skill. | Check that its `onetrust-api-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 249
    },
    {
      "id": "PIPE-CONNSPEC-R148",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`openbao-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "95c31e627d5e",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:130",
        "tests/test_connector_consumer_r138_157.py:160",
        "tests/test_connector_consumer_r138_157.py:73",
        "tests/test_connector_consumer_r148.py:163",
        "tests/test_connector_consumer_r148.py:77"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`openbao-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 250
    },
    {
      "id": "PIPE-CONNSPEC-R148.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`openbao-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:73"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`openbao-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 251
    },
    {
      "id": "PIPE-CONNSPEC-R148.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`openbao-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:130"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`openbao-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 252
    },
    {
      "id": "PIPE-CONNSPEC-R148.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`openbao-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:160"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`openbao-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/openbao-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 253
    },
    {
      "id": "PIPE-CONNSPEC-R148.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`openbao-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "95c31e627d5e"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r148.py:163",
        "tests/test_connector_consumer_r148.py:77"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`openbao-mcp` has the rapid-delivery section in its development skill. | Check that its `openbao-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 254
    },
    {
      "id": "PIPE-CONNSPEC-R149",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`opensearch-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "8b12b7066e0b",
        "d0b62fe19086",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:131",
        "tests/test_connector_consumer_r138_157.py:74",
        "tests/test_connector_consumer_r149.py:127",
        "tests/test_connector_consumer_r149.py:166",
        "tests/test_connector_consumer_r149.py:198"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`opensearch-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 255
    },
    {
      "id": "PIPE-CONNSPEC-R149.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`opensearch-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:74"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`opensearch-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 256
    },
    {
      "id": "PIPE-CONNSPEC-R149.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`opensearch-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:131"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`opensearch-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 257
    },
    {
      "id": "PIPE-CONNSPEC-R149.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`opensearch-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "8b12b7066e0b",
        "d0b62fe19086"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r149.py:127",
        "tests/test_connector_consumer_r149.py:198",
        "tests/test_connector_consumer_r149.py:44"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`opensearch-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/opensearch-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 258
    },
    {
      "id": "PIPE-CONNSPEC-R149.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`opensearch-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "8b12b7066e0b",
        "d0b62fe19086"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r149.py:166",
        "tests/test_connector_consumer_r149.py:45"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`opensearch-mcp` has the rapid-delivery section in its development skill. | Check that its `opensearch-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 259
    },
    {
      "id": "PIPE-CONNSPEC-R150",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`owncast-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:75",
        "tests/test_connector_consumer_remeasure_20261028.py:184",
        "tests/test_connector_consumer_remeasure_20261028.py:210",
        "tests/test_connector_consumer_remeasure_20261028.py:236"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`owncast-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 260
    },
    {
      "id": "PIPE-CONNSPEC-R150.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`owncast-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:75"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`owncast-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 261
    },
    {
      "id": "PIPE-CONNSPEC-R150.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`owncast-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:184"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`owncast-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 262
    },
    {
      "id": "PIPE-CONNSPEC-R150.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`owncast-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:210"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`owncast-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/owncast-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 263
    },
    {
      "id": "PIPE-CONNSPEC-R150.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`owncast-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:236"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`owncast-agent` has the rapid-delivery section in its development skill. | Check that its `owncast-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 264
    },
    {
      "id": "PIPE-CONNSPEC-R151",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`paperless-ngx-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:76",
        "tests/test_connector_consumer_remeasure_20261028.py:185",
        "tests/test_connector_consumer_remeasure_20261028.py:211",
        "tests/test_connector_consumer_remeasure_20261028.py:237"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`paperless-ngx-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 265
    },
    {
      "id": "PIPE-CONNSPEC-R151.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`paperless-ngx-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:76"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`paperless-ngx-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 266
    },
    {
      "id": "PIPE-CONNSPEC-R151.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`paperless-ngx-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:185"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`paperless-ngx-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 267
    },
    {
      "id": "PIPE-CONNSPEC-R151.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`paperless-ngx-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:211"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`paperless-ngx-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/paperless-ngx-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 268
    },
    {
      "id": "PIPE-CONNSPEC-R151.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`paperless-ngx-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:237"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`paperless-ngx-mcp` has the rapid-delivery section in its development skill. | Check that its `paperless-ngx-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 269
    },
    {
      "id": "PIPE-CONNSPEC-R152",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`plane-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "ed11593ea8c8",
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:103",
        "tests/test_connector_consumer_r103_r152_public_batch.py:147",
        "tests/test_connector_consumer_r138_157.py:77",
        "tests/test_connector_consumer_remeasure_20261028.py:186"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`plane-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 270
    },
    {
      "id": "PIPE-CONNSPEC-R152.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`plane-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:77"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`plane-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 271
    },
    {
      "id": "PIPE-CONNSPEC-R152.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`plane-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:186"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`plane-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 272
    },
    {
      "id": "PIPE-CONNSPEC-R152.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`plane-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:103"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`plane-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/plane-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 273
    },
    {
      "id": "PIPE-CONNSPEC-R152.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`plane-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ede2cdeae90f"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r103_r152_public_batch.py:147"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`plane-agent` has the rapid-delivery section in its development skill. | Check that its `plane-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 274
    },
    {
      "id": "PIPE-CONNSPEC-R153",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`portainer-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d37c6af0e600",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:132",
        "tests/test_connector_consumer_r138_157.py:78",
        "tests/test_connector_consumer_r153.py:143",
        "tests/test_connector_consumer_r153.py:185",
        "tests/test_connector_consumer_r153.py:61"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`portainer-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 275
    },
    {
      "id": "PIPE-CONNSPEC-R153.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`portainer-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:78"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`portainer-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 276
    },
    {
      "id": "PIPE-CONNSPEC-R153.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`portainer-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:132"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`portainer-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 277
    },
    {
      "id": "PIPE-CONNSPEC-R153.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`portainer-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d37c6af0e600"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r153.py:143",
        "tests/test_connector_consumer_r153.py:61"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`portainer-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/portainer-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 278
    },
    {
      "id": "PIPE-CONNSPEC-R153.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`portainer-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d37c6af0e600"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r153.py:185",
        "tests/test_connector_consumer_r153.py:62"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`portainer-agent` has the rapid-delivery section in its development skill. | Check that its `portainer-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 279
    },
    {
      "id": "PIPE-CONNSPEC-R154",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`postiz-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c940238f01fc",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:133",
        "tests/test_connector_consumer_r138_157.py:207",
        "tests/test_connector_consumer_r138_157.py:223",
        "tests/test_connector_consumer_r138_157.py:79"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`postiz-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 280
    },
    {
      "id": "PIPE-CONNSPEC-R154.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`postiz-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:79"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`postiz-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 281
    },
    {
      "id": "PIPE-CONNSPEC-R154.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`postiz-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:133"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`postiz-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 282
    },
    {
      "id": "PIPE-CONNSPEC-R154.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`postiz-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c940238f01fc"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:207"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`postiz-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/postiz-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 283
    },
    {
      "id": "PIPE-CONNSPEC-R154.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`postiz-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c940238f01fc"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:223"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`postiz-agent` has the rapid-delivery section in its development skill. | Check that its `postiz-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 284
    },
    {
      "id": "PIPE-CONNSPEC-R155",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`pulselink-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "5536587da291",
        "d7d1a86cc659",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:135",
        "tests/test_connector_consumer_r138_157.py:80",
        "tests/test_connector_consumer_remeasure_20261028.py:187",
        "tests/test_connector_consumer_remeasure_20261028.py:212"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`pulselink-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 285
    },
    {
      "id": "PIPE-CONNSPEC-R155.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`pulselink-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:80"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`pulselink-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 286
    },
    {
      "id": "PIPE-CONNSPEC-R155.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`pulselink-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:187"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`pulselink-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 287
    },
    {
      "id": "PIPE-CONNSPEC-R155.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`pulselink-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:212"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`pulselink-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/pulselink-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 288
    },
    {
      "id": "PIPE-CONNSPEC-R155.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`pulselink-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5536587da291",
        "d7d1a86cc659"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r107_r155_public_batch.py:135"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`pulselink-mcp` has the rapid-delivery section in its development skill. | Check that its `pulselink-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 289
    },
    {
      "id": "PIPE-CONNSPEC-R156",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`qbittorrent-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1",
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:134",
        "tests/test_connector_consumer_r138_157.py:81",
        "tests/test_connector_consumer_remeasure_20261028.py:213",
        "tests/test_connector_consumer_remeasure_20261028.py:238"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`qbittorrent-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 290
    },
    {
      "id": "PIPE-CONNSPEC-R156.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`qbittorrent-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:81"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`qbittorrent-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 291
    },
    {
      "id": "PIPE-CONNSPEC-R156.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`qbittorrent-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:134"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`qbittorrent-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 292
    },
    {
      "id": "PIPE-CONNSPEC-R156.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`qbittorrent-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:213"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`qbittorrent-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/qbittorrent-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 293
    },
    {
      "id": "PIPE-CONNSPEC-R156.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`qbittorrent-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:238"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`qbittorrent-agent` has the rapid-delivery section in its development skill. | Check that its `qbittorrent-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 294
    },
    {
      "id": "PIPE-CONNSPEC-R157",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`repository-manager` adopts the standard spec-delivery method and page",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`repository-manager` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 295
    },
    {
      "id": "PIPE-CONNSPEC-R157.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`repository-manager` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:82"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`repository-manager` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 296
    },
    {
      "id": "PIPE-CONNSPEC-R157.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`repository-manager` has the three spec hooks in its pre-commit config",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`repository-manager` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 297
    },
    {
      "id": "PIPE-CONNSPEC-R157.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`repository-manager` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ed11593ea8c8"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r138_157.py:161"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`repository-manager` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/repository-manager/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 298
    },
    {
      "id": "PIPE-CONNSPEC-R157.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`repository-manager` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:239"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`repository-manager` has the rapid-delivery section in its development skill. | Check that its `repository-manager-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 299
    },
    {
      "id": "PIPE-CONNSPEC-R158",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`rom-manager` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7",
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:49",
        "tests/test_connector_consumer_r163_r167.py:82",
        "tests/test_connector_consumer_r163_r167.py:83",
        "tests/test_connector_consumer_r163_r167.py:84"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`rom-manager` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 300
    },
    {
      "id": "PIPE-CONNSPEC-R158.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`rom-manager` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:49"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`rom-manager` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 301
    },
    {
      "id": "PIPE-CONNSPEC-R158.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`rom-manager` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r163_r167.py:82"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`rom-manager` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 302
    },
    {
      "id": "PIPE-CONNSPEC-R158.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`rom-manager` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r163_r167.py:83"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`rom-manager` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/rom-manager/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 303
    },
    {
      "id": "PIPE-CONNSPEC-R158.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`rom-manager` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r163_r167.py:84"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`rom-manager` has the rapid-delivery section in its development skill. | Check that its `rom-manager-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 304
    },
    {
      "id": "PIPE-CONNSPEC-R159",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`salesforce-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524",
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:50",
        "tests/test_connector_consumer_r158_167.py:85",
        "tests/test_connector_consumer_r159_r169.py:76",
        "tests/test_connector_consumer_r159_r169.py:77"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`salesforce-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 305
    },
    {
      "id": "PIPE-CONNSPEC-R159.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`salesforce-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:50"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`salesforce-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 306
    },
    {
      "id": "PIPE-CONNSPEC-R159.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`salesforce-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:85"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`salesforce-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 307
    },
    {
      "id": "PIPE-CONNSPEC-R159.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`salesforce-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r159_r169.py:76"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`salesforce-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/salesforce-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 308
    },
    {
      "id": "PIPE-CONNSPEC-R159.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`salesforce-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r159_r169.py:77"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`salesforce-agent` has the rapid-delivery section in its development skill. | Check that its `salesforce-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 309
    },
    {
      "id": "PIPE-CONNSPEC-R160",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`scholarx` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524",
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:51",
        "tests/test_connector_consumer_r159_r169.py:78",
        "tests/test_connector_consumer_r159_r169.py:79",
        "tests/test_connector_consumer_r159_r169.py:80"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`scholarx` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 310
    },
    {
      "id": "PIPE-CONNSPEC-R160.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`scholarx` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:51"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`scholarx` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 311
    },
    {
      "id": "PIPE-CONNSPEC-R160.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`scholarx` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r159_r169.py:78"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`scholarx` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 312
    },
    {
      "id": "PIPE-CONNSPEC-R160.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`scholarx` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r159_r169.py:79"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`scholarx` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/scholarx/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 313
    },
    {
      "id": "PIPE-CONNSPEC-R160.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`scholarx` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r159_r169.py:80"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`scholarx` has the rapid-delivery section in its development skill. | Check that its `scholarx-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 314
    },
    {
      "id": "PIPE-CONNSPEC-R161",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`searxng-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524",
        "444f49d63af1",
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:52",
        "tests/test_connector_consumer_r159_r169.py:81",
        "tests/test_connector_consumer_r159_r169.py:82",
        "tests/test_connector_consumer_remeasure_20261028.py:188"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`searxng-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 315
    },
    {
      "id": "PIPE-CONNSPEC-R161.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`searxng-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:52"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`searxng-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 316
    },
    {
      "id": "PIPE-CONNSPEC-R161.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`searxng-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "444f49d63af1"
      ],
      "verified_by": [
        "tests/test_connector_consumer_remeasure_20261028.py:188"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`searxng-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 317
    },
    {
      "id": "PIPE-CONNSPEC-R161.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`searxng-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r159_r169.py:81"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`searxng-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/searxng-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 318
    },
    {
      "id": "PIPE-CONNSPEC-R161.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`searxng-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r159_r169.py:82"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`searxng-mcp` has the rapid-delivery section in its development skill. | Check that its `searxng-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 319
    },
    {
      "id": "PIPE-CONNSPEC-R162",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`servicenow-api` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524",
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:53",
        "tests/test_connector_consumer_r158_167.py:86",
        "tests/test_connector_consumer_r159_r169.py:83",
        "tests/test_connector_consumer_r159_r169.py:84"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`servicenow-api` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 320
    },
    {
      "id": "PIPE-CONNSPEC-R162.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`servicenow-api` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:53"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`servicenow-api` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 321
    },
    {
      "id": "PIPE-CONNSPEC-R162.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`servicenow-api` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:86"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`servicenow-api` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 322
    },
    {
      "id": "PIPE-CONNSPEC-R162.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`servicenow-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r159_r169.py:83"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`servicenow-api` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/servicenow-api/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 323
    },
    {
      "id": "PIPE-CONNSPEC-R162.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`servicenow-api` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r159_r169.py:84"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`servicenow-api` has the rapid-delivery section in its development skill. | Check that its `servicenow-api-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 324
    },
    {
      "id": "PIPE-CONNSPEC-R163",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`spark-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7",
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:54",
        "tests/test_connector_consumer_r158_167.py:87",
        "tests/test_connector_consumer_r163_r167.py:85",
        "tests/test_connector_consumer_r163_r167.py:86"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`spark-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 325
    },
    {
      "id": "PIPE-CONNSPEC-R163.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`spark-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:54"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`spark-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 326
    },
    {
      "id": "PIPE-CONNSPEC-R163.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`spark-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:87"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`spark-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 327
    },
    {
      "id": "PIPE-CONNSPEC-R163.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`spark-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r163_r167.py:85"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`spark-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/spark-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 328
    },
    {
      "id": "PIPE-CONNSPEC-R163.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`spark-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r163_r167.py:86"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`spark-mcp` has the rapid-delivery section in its development skill. | Check that its `spark-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 329
    },
    {
      "id": "PIPE-CONNSPEC-R164",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`sql-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7",
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:55",
        "tests/test_connector_consumer_r158_167.py:88",
        "tests/test_connector_consumer_r163_r167.py:87",
        "tests/test_connector_consumer_r163_r167.py:88"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`sql-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 330
    },
    {
      "id": "PIPE-CONNSPEC-R164.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`sql-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:55"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`sql-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 331
    },
    {
      "id": "PIPE-CONNSPEC-R164.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`sql-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:88"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`sql-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 332
    },
    {
      "id": "PIPE-CONNSPEC-R164.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`sql-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r163_r167.py:87"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`sql-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/sql-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 333
    },
    {
      "id": "PIPE-CONNSPEC-R164.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`sql-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r163_r167.py:88"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`sql-mcp` has the rapid-delivery section in its development skill. | Check that its `sql-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 334
    },
    {
      "id": "PIPE-CONNSPEC-R165",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`stirlingpdf-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7",
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:56",
        "tests/test_connector_consumer_r158_167.py:89",
        "tests/test_connector_consumer_r163_r167.py:89",
        "tests/test_connector_consumer_r163_r167.py:90"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`stirlingpdf-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 335
    },
    {
      "id": "PIPE-CONNSPEC-R165.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`stirlingpdf-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:56"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`stirlingpdf-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 336
    },
    {
      "id": "PIPE-CONNSPEC-R165.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`stirlingpdf-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:89"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`stirlingpdf-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 337
    },
    {
      "id": "PIPE-CONNSPEC-R165.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`stirlingpdf-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r163_r167.py:89"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`stirlingpdf-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/stirlingpdf-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 338
    },
    {
      "id": "PIPE-CONNSPEC-R165.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`stirlingpdf-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r163_r167.py:90"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`stirlingpdf-agent` has the rapid-delivery section in its development skill. | Check that its `stirlingpdf-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 339
    },
    {
      "id": "PIPE-CONNSPEC-R166",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`systems-manager` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "90a9705f15b2",
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:57",
        "tests/test_connector_consumer_r166.py:65",
        "tests/test_connector_consumer_r166.py:66",
        "tests/test_connector_consumer_r166.py:67"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`systems-manager` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 340
    },
    {
      "id": "PIPE-CONNSPEC-R166.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`systems-manager` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:57"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`systems-manager` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 341
    },
    {
      "id": "PIPE-CONNSPEC-R166.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`systems-manager` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "90a9705f15b2"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r166.py:65"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`systems-manager` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 342
    },
    {
      "id": "PIPE-CONNSPEC-R166.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`systems-manager` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "90a9705f15b2"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r166.py:66"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`systems-manager` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/systems-manager/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 343
    },
    {
      "id": "PIPE-CONNSPEC-R166.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`systems-manager` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "90a9705f15b2"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r166.py:67"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`systems-manager` has the rapid-delivery section in its development skill. | Check that its `systems-manager-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 344
    },
    {
      "id": "PIPE-CONNSPEC-R167",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`technitium-dns-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7",
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:58",
        "tests/test_connector_consumer_r158_167.py:90",
        "tests/test_connector_consumer_r163_r167.py:91",
        "tests/test_connector_consumer_r163_r167.py:92"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`technitium-dns-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 345
    },
    {
      "id": "PIPE-CONNSPEC-R167.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`technitium-dns-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:58"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`technitium-dns-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 346
    },
    {
      "id": "PIPE-CONNSPEC-R167.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`technitium-dns-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r158_167.py:90"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`technitium-dns-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 347
    },
    {
      "id": "PIPE-CONNSPEC-R167.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`technitium-dns-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r163_r167.py:91"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`technitium-dns-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/technitium-dns-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 348
    },
    {
      "id": "PIPE-CONNSPEC-R167.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`technitium-dns-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5e8e39a52de7"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r163_r167.py:92"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`technitium-dns-mcp` has the rapid-delivery section in its development skill. | Check that its `technitium-dns-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 349
    },
    {
      "id": "PIPE-CONNSPEC-R168",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`tunnel-manager` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524",
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r159_r169.py:85",
        "tests/test_connector_consumer_r159_r169.py:86",
        "tests/test_connector_consumer_r168_177.py:46",
        "tests/test_connector_consumer_r168_177.py:93"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`tunnel-manager` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 350
    },
    {
      "id": "PIPE-CONNSPEC-R168.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`tunnel-manager` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r168_177.py:46"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`tunnel-manager` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 351
    },
    {
      "id": "PIPE-CONNSPEC-R168.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`tunnel-manager` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r168_177.py:93"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`tunnel-manager` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 352
    },
    {
      "id": "PIPE-CONNSPEC-R168.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`tunnel-manager` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r159_r169.py:85"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`tunnel-manager` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/tunnel-manager/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 353
    },
    {
      "id": "PIPE-CONNSPEC-R168.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`tunnel-manager` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r159_r169.py:86"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`tunnel-manager` has the rapid-delivery section in its development skill. | Check that its `tunnel-manager-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 354
    },
    {
      "id": "PIPE-CONNSPEC-R169",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`twenty-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524",
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r159_r169.py:87",
        "tests/test_connector_consumer_r159_r169.py:88",
        "tests/test_connector_consumer_r168_177.py:47",
        "tests/test_connector_consumer_r168_177.py:94"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`twenty-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 355
    },
    {
      "id": "PIPE-CONNSPEC-R169.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`twenty-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r168_177.py:47"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`twenty-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 356
    },
    {
      "id": "PIPE-CONNSPEC-R169.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`twenty-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r168_177.py:94"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`twenty-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 357
    },
    {
      "id": "PIPE-CONNSPEC-R169.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`twenty-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r159_r169.py:87"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`twenty-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/twenty-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 358
    },
    {
      "id": "PIPE-CONNSPEC-R169.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`twenty-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2d9cc833b524"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r159_r169.py:88"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`twenty-mcp` has the rapid-delivery section in its development skill. | Check that its `twenty-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 359
    },
    {
      "id": "PIPE-CONNSPEC-R170",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`uptime-kuma-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95",
        "c6421c2094dd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r168_177.py:48",
        "tests/test_connector_consumer_r170_r171.py:66",
        "tests/test_connector_consumer_r170_r171.py:67",
        "tests/test_connector_consumer_r170_r171.py:68"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`uptime-kuma-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 360
    },
    {
      "id": "PIPE-CONNSPEC-R170.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`uptime-kuma-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r168_177.py:48"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`uptime-kuma-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 361
    },
    {
      "id": "PIPE-CONNSPEC-R170.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`uptime-kuma-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c6421c2094dd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r170_r171.py:66"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`uptime-kuma-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 362
    },
    {
      "id": "PIPE-CONNSPEC-R170.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`uptime-kuma-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c6421c2094dd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r170_r171.py:67"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`uptime-kuma-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/uptime-kuma-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 363
    },
    {
      "id": "PIPE-CONNSPEC-R170.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`uptime-kuma-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c6421c2094dd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r170_r171.py:68"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`uptime-kuma-agent` has the rapid-delivery section in its development skill. | Check that its `uptime-kuma-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 364
    },
    {
      "id": "PIPE-CONNSPEC-R171",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`vaultwarden-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95",
        "c6421c2094dd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r168_177.py:49",
        "tests/test_connector_consumer_r168_177.py:95",
        "tests/test_connector_consumer_r170_r171.py:69",
        "tests/test_connector_consumer_r170_r171.py:70"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`vaultwarden-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 365
    },
    {
      "id": "PIPE-CONNSPEC-R171.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`vaultwarden-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r168_177.py:49"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`vaultwarden-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 366
    },
    {
      "id": "PIPE-CONNSPEC-R171.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`vaultwarden-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r168_177.py:95"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`vaultwarden-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 367
    },
    {
      "id": "PIPE-CONNSPEC-R171.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`vaultwarden-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c6421c2094dd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r170_r171.py:69"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`vaultwarden-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/vaultwarden-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 368
    },
    {
      "id": "PIPE-CONNSPEC-R171.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`vaultwarden-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c6421c2094dd"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r170_r171.py:70"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`vaultwarden-mcp` has the rapid-delivery section in its development skill. | Check that its `vaultwarden-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 369
    },
    {
      "id": "PIPE-CONNSPEC-R172",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`vector-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "83ced38ba830",
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r168_177.py:50",
        "tests/test_connector_consumer_r172_r174.py:74",
        "tests/test_connector_consumer_r172_r174.py:75",
        "tests/test_connector_consumer_r172_r174.py:76"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`vector-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 370
    },
    {
      "id": "PIPE-CONNSPEC-R172.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`vector-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r168_177.py:50"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`vector-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 371
    },
    {
      "id": "PIPE-CONNSPEC-R172.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`vector-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "83ced38ba830"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r172_r174.py:74"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`vector-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 372
    },
    {
      "id": "PIPE-CONNSPEC-R172.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`vector-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "83ced38ba830"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r172_r174.py:75"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`vector-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/vector-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 373
    },
    {
      "id": "PIPE-CONNSPEC-R172.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`vector-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "83ced38ba830"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r172_r174.py:76"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`vector-mcp` has the rapid-delivery section in its development skill. | Check that its `vector-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 374
    },
    {
      "id": "PIPE-CONNSPEC-R173",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`wger-agent` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95",
        "dd326634dc85",
        "eeffa360f86b"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r168_177.py:51",
        "tests/test_connector_consumer_r173.py:63",
        "tests/test_connector_consumer_r173.py:64",
        "tests/test_connector_consumer_r173.py:65"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`wger-agent` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 375
    },
    {
      "id": "PIPE-CONNSPEC-R173.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`wger-agent` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r168_177.py:51"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`wger-agent` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 376
    },
    {
      "id": "PIPE-CONNSPEC-R173.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`wger-agent` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "dd326634dc85",
        "eeffa360f86b"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r173.py:63"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`wger-agent` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 377
    },
    {
      "id": "PIPE-CONNSPEC-R173.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`wger-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "dd326634dc85",
        "eeffa360f86b"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r173.py:64"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`wger-agent` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/wger-agent/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 378
    },
    {
      "id": "PIPE-CONNSPEC-R173.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`wger-agent` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "dd326634dc85",
        "eeffa360f86b"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r173.py:65"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`wger-agent` has the rapid-delivery section in its development skill. | Check that its `wger-agent-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 379
    },
    {
      "id": "PIPE-CONNSPEC-R174",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`world-reference-mcp` adopts the standard spec-delivery method and page",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "83ced38ba830",
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r168_177.py:52",
        "tests/test_connector_consumer_r172_r174.py:77",
        "tests/test_connector_consumer_r172_r174.py:78",
        "tests/test_connector_consumer_r172_r174.py:79"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**`world-reference-mcp` adopts the standard spec-delivery method and page.** Rollup of the four children below, following the reference implementation (PIPE-CONNSPEC-R001 to PIPE-CONNSPEC-R005). | The rollup is the minimum state of its four children.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 380
    },
    {
      "id": "PIPE-CONNSPEC-R174.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`world-reference-mcp` has a `specs/` tree with a generated `status.json`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a86b11ee9b95"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r168_177.py:52"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`world-reference-mcp` has a `specs/` tree with a generated `status.json`. | Check that `specs/` exists and contains a `status.json` written by `pipelines-hook spec-status --write`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 381
    },
    {
      "id": "PIPE-CONNSPEC-R174.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`world-reference-mcp` has the three spec hooks in its pre-commit config",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "83ced38ba830"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r172_r174.py:77"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`world-reference-mcp` has the three spec hooks in its pre-commit config. | Check that the pre-commit config lists `spec-status`, `spec-decomposition`, and `spec-trailers` from `Knuckles-Team/pipelines`.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 382
    },
    {
      "id": "PIPE-CONNSPEC-R174.3",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`world-reference-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "83ced38ba830"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r172_r174.py:78"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`world-reference-mcp` has a caller of the reusable Pages workflow with the dashboard enabled and Pages turned on. | Check that a workflow calls `pages_pipeline.yml@main` with `spec_dashboard_enabled: true`, and `gh api repos/Knuckles-Team/world-reference-mcp/pages` returns a site.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 383
    },
    {
      "id": "PIPE-CONNSPEC-R174.4",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "`world-reference-mcp` has the rapid-delivery section in its development skill",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "83ced38ba830"
      ],
      "verified_by": [
        "tests/test_connector_consumer_r172_r174.py:79"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "`world-reference-mcp` has the rapid-delivery section in its development skill. | Check that its `world-reference-mcp-development` skill has the section \"Rapid delivery: the 5-minute contract\".",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 384
    },
    {
      "id": "PIPE-CONNSPEC-R008",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Canonical title determines generated spec identity",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0f9f73b150d7"
      ],
      "verified_by": [
        "tests/hooks/test_spec_status.py:502"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Canonical title determines generated spec identity.** The generator reuses the spec-standard title parser; a missing canonical title retains the prior identity or directory fallback. | `test_canonical_title_controls_generated_identity` covers missing and stale metadata without changing requirement IDs.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 385
    },
    {
      "id": "PIPE-CONNSPEC-R009",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Requirement state read from the engine (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "b6d61da291ad"
      ],
      "verified_by": [],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Requirement state read from the engine (rollup).** The status generator must compare its output with the engine-derived state of EG-SDLC-R005 when an endpoint is set. A difference fails the spec-status gate and names each row. `status.json` stays a generated export. Children `.1` and `.2` deliver it. | See each child.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 386
    },
    {
      "id": "PIPE-CONNSPEC-R009.1",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Wiring.** `main` at `pipelines_hooks/specs/status.py:99` calls `compare_engine_state` in `pipelines_hooks/specs/engine_state.py` after generation. It reads the arbora `spec.status` operation over plain HTTP. | `tests/hooks/test_engine_state.py::test_difference_names_rows` feeds one differing row.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 387
    },
    {
      "id": "PIPE-CONNSPEC-R009.2",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Hot-path proof.** The test generates status for a fixture repository and reads a fixture endpoint. Equal states pass. One differing row fails the gate with that row ID. | `tests/hooks/test_engine_state.py::test_generator_and_engine_agree` asserts both outcomes.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 388
    },
    {
      "id": "PIPE-CONNSPEC-R010",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Binding suggester ranks existing tests for unverified rows",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "b6d61da291ad",
        "c9681d3a4727"
      ],
      "verified_by": [
        "tests/hooks/test_spec_bind_suggest.py:41"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Binding suggester ranks existing tests for unverified rows.** `main` in `pipelines_hooks/specs/bind_suggest.py` scores each tracked test against every SPECIFIED or LANDED leaf row. It scores a test that the row text names, a test that names the row ID or an old alias, and a test whose name shares at least two title terms. It reads and writes no repository file, and the same tree gives the same ranked output. | `tests/hooks/test_spec_bind_suggest.py::test_ranks_named_test_first_and_is_repeatable` asserts the ranking, the term threshold and repeatability on a fixture repository.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 389
    },
    {
      "id": "PIPE-CONNSPEC-R011",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Explicit retired standard-ID aliases",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "026b93b29c01",
        "b6d61da291ad"
      ],
      "verified_by": [
        "tests/hooks/test_spec_standard_aliases.py:14"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Explicit retired standard-ID aliases.** An exact retired standard requirement ID may map to one current active requirement row through `.config/spec-aliases.toml`. Require the source ID to be absent from current requirement rows, including retired tombstones. Reject absent or retired targets, alias chains and cycles, and exact standard aliases intercepted by retired prefixes. Keep one-hop prefix and pre-standard aliases unchanged. Historical and current trailer ranges retain unknown-ID and bound-test enforcement; an exact alias never applies to unlisted children. | `tests/hooks/test_spec_standard_aliases.py` covers renumbered history, current ranges, status evidence, and adversarial aliases.",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 390
    },
    {
      "id": "PIPE-CONNSPEC-R012",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Row-level Depends-on",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "645ed8876446",
        "a7d9241136c9"
      ],
      "verified_by": [
        "tests/hooks/test_goal_priority.py:12",
        "tests/hooks/test_goal_priority.py:20"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Row-level Depends-on.** `parse_rows` in `pipelines_hooks/specs/requirements_doc.py` reads prerequisite IDs from a requirement cell, including IDs of other repositories. No other field is added to a row. | `tests/hooks/test_goal_priority.py::test_row_depends_on_parses`",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 391
    },
    {
      "id": "PIPE-CONNSPEC-R013",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Priority from competency questions",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a7d9241136c9"
      ],
      "verified_by": [
        "tests/hooks/test_goal_priority.py:58"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Priority from competency questions.** `score` in `pipelines_hooks/specs/priority.py` computes 10 for each `EG-CQ-` row that transitively depends on a row, plus 2 for each open row it transitively unblocks, halved for a non-functional row. | `tests/hooks/test_goal_priority.py::test_priority_formula`",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 392
    },
    {
      "id": "PIPE-CONNSPEC-R014",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Priority, frontier, and unserved from the organization aggregate",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1da5fcbd5c7f",
        "a7d9241136c9"
      ],
      "verified_by": [
        "tests/hooks/test_goal_priority.py:81",
        "tests/hooks/test_goal_priority.py:88"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Priority, frontier, and unserved from the organization aggregate.** `aggregate` in `scripts/architecture_explorer/delivery.py` computes `priority`, `frontier`, and `unserved` over the rows of every repository. The per-repository `status.json` generator writes none of them, so a repository's `status.json` keeps its prior shape. Unserved rows are open functional leaf rows no competency question reaches. | `tests/hooks/test_goal_priority.py::test_generator_leaves_status_shape_unchanged` and `tests/test_architecture_delivery.py::test_aggregate_over_repositories`",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 393
    },
    {
      "id": "PIPE-CONNSPEC-R015",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Derived release bundles",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "8f6b2234e190",
        "a7d9241136c9"
      ],
      "verified_by": [
        "tests/hooks/test_goal_priority.py:103"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Derived release bundles.** `bundles` in `pipelines_hooks/specs/priority.py` groups open rows joined by cross-repository `Depends-on` edges. Each bundle orders its repositories by the release train and lists, per row, the bundle rows it unblocks. The bundle priority is the maximum row priority. | `tests/hooks/test_goal_priority.py::test_bundle_orders_steps_by_release_train`",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 394
    },
    {
      "id": "PIPE-CONNSPEC-R016",
      "kind": "requirement",
      "parent": "PIPE-CONNSPEC",
      "source": "specs/connector-spec-delivery/status.json",
      "title": "Architecture page delivery views",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a7d9241136c9",
        "b99e7e0b5d7b"
      ],
      "verified_by": [
        "tests/test_architecture_delivery.py:41",
        "tests/test_architecture_delivery.py:52",
        "tests/test_architecture_delivery.py:74"
      ],
      "parent_title": "PIPE-CONNSPEC \u2014 Connector spec-delivery rollout",
      "definition": "**Architecture page delivery views.** `scripts/architecture_explorer/delivery.py` recomputes the scores over every repository. `template.html` shows Next up, Delivery path, a priority sort, a competency-question filter, a \u201cNo CQ dependency path\u201d filter that distinguishes CQ reachability from architecture placement and implementation links, and competency-question badges on each row. | `tests/test_architecture_delivery.py::test_aggregate_over_repositories` and `test_page_embeds_delivery_views`",
      "definition_source": "specs/connector-spec-delivery/requirements.md",
      "definition_line": 395
    },
    {
      "id": "PIPE-PAGES",
      "kind": "spec",
      "parent": null,
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/ecosystem-pages-parity/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../.github/workflows/pages_pipeline.yml",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.github/workflows/pages_pipeline.yml"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../reference/pages-readiness.md",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/reference/pages-readiness.md"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../scripts/pages_readiness.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/scripts/pages_readiness.py"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../scripts/readiness/cli.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/scripts/readiness/cli.py"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../scripts/readiness/delivery.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/scripts/readiness/delivery.py"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../tests/test_pages_pipeline_contract.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/tests/test_pages_pipeline_contract.py"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "../../tests/test_pages_readiness.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/tests/test_pages_readiness.py"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".config/kiss.toml",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.config/kiss.toml"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".config/pre-commit.yaml:30",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.config/pre-commit.yaml#L30"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".github/workflows/ci.yml:86",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.github/workflows/ci.yml#L86"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".github/workflows/pages_pipeline.yml:253",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.github/workflows/pages_pipeline.yml#L253"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pages/parity.md",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pages/parity.md"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/cli.py:14",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/cli.py#L14"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/cli.py:33",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/cli.py#L33"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/cli.py:59",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/cli.py#L59"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/cli.py:66",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/cli.py#L66"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/cli.py:79",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/cli.py#L79"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/clones/contract.py:14",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/clones/contract.py#L14"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/clones/dupehound.py:64",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/clones/dupehound.py#L64"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/clones/dupehound_gate.py:28",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/clones/dupehound_gate.py#L28"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/clones/dupehound_gate.py:46",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/clones/dupehound_gate.py#L46"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/clones/dupehound_report.py:66",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/clones/dupehound_report.py#L66"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/code/import_cycles.py:57",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/code/import_cycles.py#L57"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/code/import_graph.py:71",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/code/import_graph.py#L71"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/code/no_stub.py:62",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/code/no_stub.py#L62"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/code/no_stub.py:79",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/code/no_stub.py#L79"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/core/comparison.py:53",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/core/comparison.py#L53"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/core/config.py:21",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/core/config.py#L21"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/core/gitenv.py:81",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/core/gitenv.py#L81"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/docs/claims.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/docs/claims.py"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/docs/public_surface.py:31",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/docs/public_surface.py#L31"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/docs/public_surface_constants.py:7",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/docs/public_surface_constants.py#L7"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/docs/public_surface_links.py:29",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/docs/public_surface_links.py#L29"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/kiss/census.py:31",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/kiss/census.py#L31"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/specs/generator.py:93",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/specs/generator.py#L93"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "reference/ecosystem-boundaries.md",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/reference/ecosystem-boundaries.md"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "scripts/architecture_explorer/build.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/scripts/architecture_explorer/build.py"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "scripts/check_five_repo_parity.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/scripts/check_five_repo_parity.py"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "scripts/readiness/cli.py:68",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/scripts/readiness/cli.py#L68"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "scripts/readiness/evidence.py:41",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/scripts/readiness/evidence.py#L41"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "scripts/skill_graph/au.py:78",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/scripts/skill_graph/au.py#L78"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "scripts/spec_dashboard_drilldown.py:17",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/scripts/spec_dashboard_drilldown.py#L17"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "scripts/spec_dashboard_render.py:67",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/scripts/spec_dashboard_render.py#L67"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "scripts/spec_dashboard_render.py:70",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/scripts/spec_dashboard_render.py#L70"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "scripts/sync_mkdocs_theme.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/scripts/sync_mkdocs_theme.py"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "templates/mkdocs-theme/base.mkdocs.yml",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/templates/mkdocs-theme/base.mkdocs.yml"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "templates/mkdocs-theme/overrides/main.html",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/templates/mkdocs-theme/overrides/main.html"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "tests/hooks/test_public_surface_claims.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/tests/hooks/test_public_surface_claims.py"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "tests/hooks/test_similarity_guidance_hook.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/tests/hooks/test_similarity_guidance_hook.py"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "tests/hooks/test_skill_grade_hook.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/tests/hooks/test_skill_grade_hook.py"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Comparison",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/ecosystem-pages-parity/plan.md#comparison-and-publication"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Input and provenance",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/ecosystem-pages-parity/plan.md#input-and-provenance"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Integration",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/ecosystem-pages-parity/plan.md#integration-boundary"
        },
        {
          "declared_in": "specs/ecosystem-pages-parity/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/ecosystem-pages-parity/requirements.md"
        }
      ],
      "relations": [],
      "plan_diagrams": [],
      "unparsed_references": []
    },
    {
      "id": "PIPE-PAGES-R001",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Repository switcher kept in sync with the core repo list",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Repository switcher kept in sync with the core repo list.** The documentation site's repository switcher is renamed and its repository list is completed to match the full declared set of core repositories, replacing any per-repository duplicate copies and staying synchronized with the shared parity check and release receipt. Meristem's now-obsolete generator for a standalone web UI deployment manifest is also removed, since the web UI runs within Arbora. | A parity check confirms the switcher's repository list matches the declared core-repository set and release receipt, and a source scan confirms the obsolete standalone deployment generator no longer exists.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 5
    },
    {
      "id": "PIPE-PAGES-R002",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Layered documentation from overview to reference",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "fe4d11323d0b"
      ],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Layered documentation from overview to reference.** The published documentation presents a layered information architecture: concise top-level introductions, then per-component overviews, then detailed reference pages, so a reader can go only as deep as they need. | A navigation-depth and link-structure audit confirms each tier, introduction, component, and reference, exists and links progressively into the next.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 6
    },
    {
      "id": "PIPE-PAGES-R003",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Present-tense docs with accessible embedded start",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Present-tense docs with accessible embedded start.** The published README and documentation home present content in the intended canonical order, include an embedded observable quick-start demonstration, use accessible multimodal and shared visual assets, run on the shared Material-themed site with short navigation, and describe the running engine's current behavior in present tense rather than its history. | Strict documentation build, theme, accessibility, and content-diff checks confirm the README order, embedded start, shared visuals, and present-tense wording.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 7
    },
    {
      "id": "PIPE-PAGES-R004",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "One progressively disclosed skill-graph corpus",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "fe4d11323d0b"
      ],
      "verified_by": [
        "tests/test_skill_graph_registry_comparison.py:243"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**One progressively disclosed skill-graph corpus.** Concepts, components, and reference pages are drawn from one progressively disclosed skill-graph content corpus rather than separate, independently maintained sources. | A build check confirms the published concept, component, and reference pages are generated from the single skill-graph corpus with consistent navigation depth.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 8
    },
    {
      "id": "PIPE-PAGES-R005",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Generate architecture and reference pages from registries",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "38133654c6e9",
        "6048c059727f"
      ],
      "verified_by": [
        "tests/test_skill_graph_registry_comparison.py:107",
        "tests/test_skill_graph_registry_comparison.py:83"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Generate architecture and reference pages from registries.** Architecture, capability, and reference documentation pages are generated directly from the underlying registries and contracts rather than hand-authored, so published content stays consistent with the implementation it describes. | A build-time comparison confirms each generated page's content matches its source registry or contract.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 9
    },
    {
      "id": "PIPE-PAGES-R006",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Rehome generated docs out of the legacy docs directory",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "38133654c6e9",
        "fabe92a1aa4c"
      ],
      "verified_by": [
        "tests/test_docs_rehomed.py:19",
        "tests/test_docs_rehomed.py:24",
        "tests/test_docs_rehomed.py:31",
        "tests/test_docs_rehomed.py:40",
        "tests/test_docs_rehomed.py:56"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Rehome generated docs out of the legacy docs directory.** Every generated or gate-checked artifact currently stored under a repository's legacy docs directory is moved to its new canonical tracked location, every quality gate that referenced the old location is repointed to the new one, and the legacy docs directory is then removed. | A source scan confirms no gate or build step still reads from the removed docs directory and that each migrated artifact exists at its new tracked location.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 10
    },
    {
      "id": "PIPE-PAGES-R007",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Ecosystem flow diagram with exact names and project marks",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "525086d94efb",
        "64e34ca63385"
      ],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Ecosystem flow diagram with exact names and project marks.** The documentation home page renders the shared Material theme chrome together with an architecture flow diagram showing the path from people through the Arbora web UI, Tuig, Axil, and messaging/protocol clients to Arbora, Meristem, and Medulla, plus the source-system-to-Scion SDK flow, using each project's exact display title and a versioned logo mark. | Focused theme rendering tests plus a changed-file documentation build confirm the diagram's flow, project titles, and logo marks render correctly.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 11
    },
    {
      "id": "PIPE-PAGES-R008",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Correct ownership and quick start in consumer parity checks",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Correct ownership and quick start in consumer parity checks.** The shared Pages parity check verifies that a consumer site's documentation correctly states process and front-door ownership, includes a stdio-based quick start, renders on the shared Material theme with short navigation, and keeps its content flows accessible. | A multi-page render, link, and accessibility audit plus a changed-file build check confirm ownership statements, the quick start, and accessible navigation on the consumer site.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 12
    },
    {
      "id": "PIPE-PAGES-R009",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The shared generator must show accessible component package diagrams and export Mermaid source. It must include every spec",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5b454e4b7eb4"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:95"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "The shared generator must show accessible component package diagrams and export Mermaid source. It must include every spec. | `test_deterministic_escaped_output_and_plan_diagram_coverage` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 13
    },
    {
      "id": "PIPE-PAGES-R010",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Generate API contract docs from the contract registry",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "38133654c6e9",
        "6048c059727f"
      ],
      "verified_by": [
        "tests/test_skill_graph_registry_comparison.py:161",
        "tests/test_skill_graph_registry_comparison.py:192"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Generate API contract docs from the contract registry.** API contract documentation pages are generated from the canonical contract and method registry rather than hand-written, so the published reference stays synchronized with the registry's actual definitions. | A build-time comparison between the generated documentation pages and the source contract registry confirms they match.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 14
    },
    {
      "id": "PIPE-PAGES-R011",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Present-tense home page with screenshot and repo map",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "ebfaa43bc233"
      ],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Present-tense home page with screenshot and repo map.** The shared theme's documentation home page is present-tense HTML with short navigation, a real product screenshot, a map of the full declared core-repository set from the shared registry (currently seven), and an Arbora-hosted observable quick-start walkthrough. | Strict MkDocs render, accessibility, theme, and privacy gates, together with the documentation build run, confirm the home page's content and that it passes without regressions.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 15
    },
    {
      "id": "PIPE-PAGES-R012",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The spec-delivery page must map specs to implementation references. It must replace the Concepts column",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "5b454e4b7eb4"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:60"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "The spec-delivery page must map specs to implementation references. It must replace the Concepts column. | `test_implementation_tests_docs_and_missing_sources_are_distinct` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 16
    },
    {
      "id": "PIPE-PAGES-R012.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The generator must read Code declarations and existing source citations from spec.md and plan.md",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "13e5f2f6b948",
        "303d05f2ffc1"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:201"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "The generator must read Code declarations and existing source citations from spec.md and plan.md. | `test_source_declarations_and_citations_in_both_documents` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 17
    },
    {
      "id": "PIPE-PAGES-R012.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Source declarations must survive status regeneration without adding hand-edited status fields",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "13e5f2f6b948",
        "303d05f2ffc1"
      ],
      "verified_by": [
        "tests/hooks/test_spec_status.py:373"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Source declarations must survive status regeneration without adding hand-edited status fields. | Needs a status-regeneration integration check. `test_enrichment_preserves_delivery_records_and_status_bytes` checks enrichment only; it does not prove regeneration.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 18
    },
    {
      "id": "PIPE-PAGES-R012.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Each implementation link must identify its source revision and path. External links must remain unverified",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "13e5f2f6b948",
        "303d05f2ffc1"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:61"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Each implementation link must identify its source revision and path. External links must remain unverified. | `test_implementation_tests_docs_and_missing_sources_are_distinct` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 19
    },
    {
      "id": "PIPE-PAGES-R012.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The page must state Not mapped when a spec has no code references",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "13e5f2f6b948",
        "303d05f2ffc1"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:137"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "The page must state Not mapped when a spec has no code references. | `test_code_cells_replace_concepts` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 20
    },
    {
      "id": "PIPE-PAGES-R012.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The spec table must distinguish implementation, test, and documentation links",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0fc12ceeb003",
        "13e5f2f6b948",
        "170f1bc883a2"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:62"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "The spec table must distinguish implementation, test, and documentation links. | `test_implementation_tests_docs_and_missing_sources_are_distinct` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 21
    },
    {
      "id": "PIPE-PAGES-R012.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The caption must count specs without resolved implementation links",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0fc12ceeb003",
        "13e5f2f6b948"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:138"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "The caption must count specs without resolved implementation links. | `test_code_cells_replace_concepts` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 22
    },
    {
      "id": "PIPE-PAGES-R012.7",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The generator must reject unsafe links and paths outside the checkout. It must retain unresolved mappings",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0fc12ceeb003",
        "13e5f2f6b948"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:113"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "The generator must reject unsafe links and paths outside the checkout. It must retain unresolved mappings. | `test_examples_unsafe_links_and_parent_escape_are_not_mappings` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 23
    },
    {
      "id": "PIPE-PAGES-R013",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The page must show declared dependencies within and across repositories. It must distinguish references and shared code",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0fc12ceeb003",
        "13e5f2f6b948",
        "170f1bc883a2",
        "5b454e4b7eb4",
        "6cd8906edd00"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:215",
        "tests/test_spec_dashboard_metadata.py:226",
        "tests/test_spec_dashboard_metadata.py:28",
        "tests/test_spec_dashboard_metadata.py:29",
        "tests/test_spec_dashboard_metadata.py:30"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "The page must show declared dependencies within and across repositories. It must distinguish references and shared code. | `test_local_and_external_dependencies_have_links_and_canonical_identity` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 24
    },
    {
      "id": "PIPE-PAGES-R013.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Depends-on declarations must resolve local spec and requirement IDs through canonical spec ownership",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "13e5f2f6b948",
        "6cd983d5fe0b"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:29"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Depends-on declarations must resolve local spec and requirement IDs through canonical spec ownership. | `test_local_and_external_dependencies_have_links_and_canonical_identity` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 25
    },
    {
      "id": "PIPE-PAGES-R013.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The generator must distinguish Depends-on, Extends, and References declarations. Mere mentions must not imply prerequisite order",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "13e5f2f6b948",
        "6cd8906edd00",
        "6cd983d5fe0b",
        "911c63f923e5"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:215",
        "tests/test_spec_dashboard_reference_prose.py:10"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "The generator must distinguish Depends-on, Extends, and References declarations. Mere mentions must not imply prerequisite order. | `test_explicit_edge_kinds_remain_distinct_from_mentions` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 26
    },
    {
      "id": "PIPE-PAGES-R013.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Repository and component groups must include orphan specs. Missing components must remain Unassigned",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "13e5f2f6b948",
        "6cd983d5fe0b"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:81"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Repository and component groups must include orphan specs. Missing components must remain Unassigned. | `test_unknowns_empty_and_isolated_specs_remain_discoverable` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 27
    },
    {
      "id": "PIPE-PAGES-R013.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The page must render package diagrams without browser scripts. Mermaid export must escape source labels",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "13e5f2f6b948",
        "170f1bc883a2",
        "6cd983d5fe0b"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:96"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "The page must render package diagrams without browser scripts. Mermaid export must escape source labels. | `test_deterministic_escaped_output_and_plan_diagram_coverage` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 28
    },
    {
      "id": "PIPE-PAGES-R013.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Every relationship must retain its label, source declaration, target link, and evidence limit",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "13e5f2f6b948",
        "6cd983d5fe0b"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:30"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Every relationship must retain its label, source declaration, target link, and evidence limit. | `test_local_and_external_dependencies_have_links_and_canonical_identity` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 29
    },
    {
      "id": "PIPE-PAGES-R013.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The relationship index must retain unresolved targets and specs without declared relationships",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "13e5f2f6b948",
        "6cd983d5fe0b"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:82"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "The relationship index must retain unresolved targets and specs without declared relationships. | `test_unknowns_empty_and_isolated_specs_remain_discoverable` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 30
    },
    {
      "id": "PIPE-PAGES-R013.7",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Large diagrams must split into navigable groups without hiding any spec or relationship",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "13e5f2f6b948",
        "6cd983d5fe0b"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:226"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Large diagrams must split into navigable groups without hiding any spec or relationship. | `test_large_groups_keep_all_specs_and_relationships` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 31
    },
    {
      "id": "PIPE-PAGES-R014",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Three-level drill-down from the ecosystem view to the spec",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Three-level drill-down from the ecosystem view to the spec.** Rollup of the children below. The organisation architecture view links to each repository page, and that page links to each spec section. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 32
    },
    {
      "id": "PIPE-PAGES-R014.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Add `ecosystem_components()` to `scripts/spec_dashboard_drilldown.py`. It returns the list defined by PIPE-PAGES-R001 (the core repository list) and defines no second list",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "fe2b599895fa"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_drilldown.py:18"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Add `ecosystem_components()` to `scripts/spec_dashboard_drilldown.py`. It returns the list defined by PIPE-PAGES-R001 (the core repository list) and defines no second list. | Run `test_components_equal_core_list` in `tests/test_spec_dashboard_drilldown.py` expects equality with the R001 list.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 33
    },
    {
      "id": "PIPE-PAGES-R014.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Define the URL form in `scripts/spec_dashboard_drilldown.py`: level 1 `https://knuckles-team.github.io/<repo>/spec-delivery/`, level 2 `.../spec-delivery/#spec-<ID>`, level 3 row `.../spec-delivery/#req-<ID>`. Add `anchor_for(kind, id)`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "fe2b599895fa"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_drilldown.py:23"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Define the URL form in `scripts/spec_dashboard_drilldown.py`: level 1 `https://knuckles-team.github.io/<repo>/spec-delivery/`, level 2 `.../spec-delivery/#spec-<ID>`, level 3 row `.../spec-delivery/#req-<ID>`. Add `anchor_for(kind, id)`. | Run `test_anchor_forms` in `tests/test_spec_dashboard_drilldown.py` expects the three forms.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 34
    },
    {
      "id": "PIPE-PAGES-R014.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Emit the anchors in `spec_row` (`scripts/spec_dashboard_panels.py`): each spec section gets `id=\"spec-<ID>\"` and lists its rows, state, code references, and bound tests; each row gets `id=\"req-<ID>\"`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0fc12ceeb003",
        "170f1bc883a2",
        "5b454e4b7eb4"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_drilldown.py:41"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Emit the anchors in `spec_row` (`scripts/spec_dashboard_panels.py`): each spec section gets `id=\"spec-<ID>\"` and lists its rows, state, code references, and bound tests; each row gets `id=\"req-<ID>\"`. | Run `test_spec_section_has_anchor` in `tests/test_spec_dashboard_drilldown.py` expects the anchor and four content blocks.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 35
    },
    {
      "id": "PIPE-PAGES-R014.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Link each box in `relation_view` (`scripts/spec_dashboard_relations_view.py`) to `#spec-<ID>` of its own page, or to the other repository's page for a cross-repository node",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0fc12ceeb003"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_drilldown.py:49"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Link each box in `relation_view` (`scripts/spec_dashboard_relations_view.py`) to `#spec-<ID>` of its own page, or to the other repository's page for a cross-repository node. | Run `test_relation_box_links_to_spec_section` in `tests/test_spec_dashboard_drilldown.py` expects the href on every box.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 36
    },
    {
      "id": "PIPE-PAGES-R014.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Cross-repository row, owner `Knuckles-Team/.github` (BLOCKED until that repository carries a spec tree): link each component in `profile/README.md` to `ecosystem_components()` URLs at level 1. Add `scripts/render_profile_links.py` here as the producer",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Cross-repository row, owner `Knuckles-Team/.github` (BLOCKED until that repository carries a spec tree): link each component in `profile/README.md` to `ecosystem_components()` URLs at level 1. Add `scripts/render_profile_links.py` here as the producer. | Run `test_profile_links_cover_components` in `tests/test_render_profile_links.py` expects one level-1 link per component.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 37
    },
    {
      "id": "PIPE-PAGES-R014.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Add `check_drilldown_links(readme, site_index)` to `scripts/spec_dashboard_drilldown.py`. It fails when a component link or spec anchor does not resolve in the generated site",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "fe2b599895fa"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_drilldown.py:32"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Add `check_drilldown_links(readme, site_index)` to `scripts/spec_dashboard_drilldown.py`. It fails when a component link or spec anchor does not resolve in the generated site. | Run `test_unresolved_component_link_fails` in `tests/test_spec_dashboard_drilldown.py` expects exit 1 for a missing page.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 38
    },
    {
      "id": "PIPE-PAGES-R015",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "One generator for connectors and client repositories",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "246cc47a897a",
        "5b454e4b7eb4",
        "6f853265406b"
      ],
      "verified_by": [
        "tests/test_pages_pipeline_contract.py:257",
        "tests/test_pages_pipeline_contract.py:303",
        "tests/test_spec_dashboard_metadata.py:157"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**One generator for connectors and client repositories.** Rollup of the children below. Connectors and the client repositories get PIPE-PAGES-R012 to PIPE-PAGES-R014 from the same reusable workflow. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 39
    },
    {
      "id": "PIPE-PAGES-R015.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The reusable workflow `.github/workflows/pages_pipeline.yml` must run the R012 to R014 steps for every caller. It adds no per-repository input and no per-repository copy",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "246cc47a897a"
      ],
      "verified_by": [
        "tests/test_pages_pipeline_contract.py:257"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "The reusable workflow `.github/workflows/pages_pipeline.yml` must run the R012 to R014 steps for every caller. It adds no per-repository input and no per-repository copy. | Run `test_pages_workflow_runs_relation_steps` in `tests/test_pages_pipeline_contract.py` expects the steps and no repository names.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 40
    },
    {
      "id": "PIPE-PAGES-R015.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Overstory, Tuig, and Axil adopt it through the caller pattern in PIPE-CONNSPEC-R004. Each caller change belongs to the repository's own spec",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "6f853265406b"
      ],
      "verified_by": [
        "tests/test_pages_pipeline_contract.py:303"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Overstory, Tuig, and Axil adopt it through the caller pattern in PIPE-CONNSPEC-R004. Each caller change belongs to the repository's own spec. | Run `test_client_callers_use_reusable_workflow` in `tests/test_pages_pipeline_contract.py` expects each caller to reference the workflow at `main`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 41
    },
    {
      "id": "PIPE-PAGES-R015.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Connectors must inherit code references and relationship views through the shared Pages generator when enabled",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5b454e4b7eb4"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_metadata.py:157"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Connectors must inherit code references and relationship views through the shared Pages generator when enabled. | `test_generator_entry_point_writes_architecture` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 42
    },
    {
      "id": "PIPE-PAGES-R016",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Spec-delivery page shows only the current spec state",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "9e705970e4c9",
        "a81cc87849a5"
      ],
      "verified_by": [
        "tests/test_spec_dashboard.py:161",
        "tests/test_spec_dashboard.py:169",
        "tests/test_spec_dashboard.py:176",
        "tests/test_spec_dashboard.py:198",
        "tests/test_spec_dashboard.py:210"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Spec-delivery page shows only the current spec state.** Rollup of the children below. The page is an as-is functional requirements view of the current `specs/` tree. Git history, state transitions, trends and burn charts are not rendered; earlier states live in git. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 43
    },
    {
      "id": "PIPE-PAGES-R016.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Remove the `history` field and the `--history-limit` option from `create_snapshot` and `argument_parser` in `scripts/spec_dashboard.py`. The snapshot holds only records read from the current tree, so no ID absent from that tree enters it",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a81cc87849a5"
      ],
      "verified_by": [
        "tests/test_spec_dashboard.py:161"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Remove the `history` field and the `--history-limit` option from `create_snapshot` and `argument_parser` in `scripts/spec_dashboard.py`. The snapshot holds only records read from the current tree, so no ID absent from that tree enters it. | Run `test_snapshot_has_no_history_field` in `tests/test_spec_dashboard.py` expects no `history` key in the snapshot.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 44
    },
    {
      "id": "PIPE-PAGES-R016.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Remove `history_panels` and the history and per-commit panels from `scripts/spec_dashboard_render.py`, then delete `scripts/spec_dashboard_charts.py`, `scripts/spec_dashboard_history.py`, `scripts/spec_dashboard_history_metrics.py`, and `scripts/spec_dashboard_history_views.py` with their tests. No state-transition table, chart, metric or panel is rendered",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a81cc87849a5"
      ],
      "verified_by": [
        "tests/test_spec_dashboard.py:169"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Remove `history_panels` and the history and per-commit panels from `scripts/spec_dashboard_render.py`, then delete `scripts/spec_dashboard_charts.py`, `scripts/spec_dashboard_history.py`, `scripts/spec_dashboard_history_metrics.py`, and `scripts/spec_dashboard_history_views.py` with their tests. No state-transition table, chart, metric or panel is rendered. | Run `test_page_has_no_history_panels` in `tests/test_spec_dashboard.py` expects no history, transition or timeline marker in the HTML.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 45
    },
    {
      "id": "PIPE-PAGES-R016.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Render only records present in the current `specs/` tree. A requirement ID that was removed in an earlier commit appears nowhere in the HTML",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a81cc87849a5"
      ],
      "verified_by": [
        "tests/test_spec_dashboard.py:176"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Render only records present in the current `specs/` tree. A requirement ID that was removed in an earlier commit appears nowhere in the HTML. | Run `test_removed_id_absent_from_page` in `tests/test_spec_dashboard.py` expects a removed ID to be absent from the page built from a repository whose history contains it.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 46
    },
    {
      "id": "PIPE-PAGES-R016.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Remove the history scripts from the sparse checkout and the history option from the dashboard call in `.github/workflows/pages_pipeline.yml`. The Pages workflow does not invoke the history modules",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a81cc87849a5"
      ],
      "verified_by": [
        "tests/test_spec_dashboard.py:210"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Remove the history scripts from the sparse checkout and the history option from the dashboard call in `.github/workflows/pages_pipeline.yml`. The Pages workflow does not invoke the history modules. | Run `test_workflow_does_not_reference_history_scripts` in `tests/test_spec_dashboard.py` expects no `spec_dashboard_history` or `spec_dashboard_charts` in the workflow.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 47
    },
    {
      "id": "PIPE-PAGES-R016.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Do not render records whose state is `RETIRED`. `read_records` in `scripts/spec_dashboard_sources.py` drops them, so no row, count, legend entry, link, relationship or percentage includes one",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "9e705970e4c9"
      ],
      "verified_by": [
        "tests/test_spec_dashboard.py:198"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Do not render records whose state is `RETIRED`. `read_records` in `scripts/spec_dashboard_sources.py` drops them, so no row, count, legend entry, link, relationship or percentage includes one. | Run `test_retired_record_is_not_rendered` in `tests/test_spec_dashboard.py` expects one VERIFIED record rendered, the RETIRED ID absent, and one record counted.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 48
    },
    {
      "id": "PIPE-PAGES-R017",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Three states only",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "71203d08a166"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_states.py:28",
        "tests/test_spec_dashboard_states.py:35",
        "tests/test_spec_dashboard_states.py:43"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Three states only.** Rollup of the children below. A requirement row and a spec have one state field with the values `SPECIFIED`, `LANDED` and `VERIFIED`. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 49
    },
    {
      "id": "PIPE-PAGES-R017.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The state legend lists exactly three states, `SPECIFIED`, `LANDED` and `VERIFIED`, each with a one-line definition, in `definitions_panel` in `scripts/spec_dashboard_panels.py`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "71203d08a166"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_states.py:28"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "The state legend lists exactly three states, `SPECIFIED`, `LANDED` and `VERIFIED`, each with a one-line definition, in `definitions_panel` in `scripts/spec_dashboard_panels.py`. | See test-spec.md.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 50
    },
    {
      "id": "PIPE-PAGES-R017.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Every record row shows one state cell. The page has no acceptance column, no release column and no second state label",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "71203d08a166"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_states.py:35"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Every record row shows one state cell. The page has no acceptance column, no release column and no second state label. | See test-spec.md.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 51
    },
    {
      "id": "PIPE-PAGES-R017.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "A `delivery_state` outside the three states, after `RETIRED` is filtered, renders as `INVALID` and counts in one visible invalid-state number",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "71203d08a166"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_states.py:43"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "A `delivery_state` outside the three states, after `RETIRED` is filtered, renders as `INVALID` and counts in one visible invalid-state number. | See test-spec.md.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 52
    },
    {
      "id": "PIPE-PAGES-R018",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Spec delivery is a native menu entry on every documentation site",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2f6747267768",
        "64ce2e92a6da",
        "7eca7920c666",
        "8f6b2234e190",
        "ffddb8aba2bc"
      ],
      "verified_by": [
        "tests/test_spec_delivery_nav.py:21",
        "tests/test_spec_delivery_nav.py:29",
        "tests/test_spec_delivery_nav.py:36",
        "tests/test_spec_delivery_nav.py:42",
        "tests/test_spec_delivery_nav.py:54"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Spec delivery is a native menu entry on every documentation site.** Rollup of the children below. Every page of a site with a spec-delivery page links to it and to the other repositories' pages. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 53
    },
    {
      "id": "PIPE-PAGES-R018.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Add the `spec_delivery` flag to `extra:` in `templates/mkdocs-theme/base.mkdocs.yml` as `!ENV [SPEC_DELIVERY_ENABLED, false]`. Set the variable from `inputs.spec_dashboard_enabled` on the Build Docs step of `.github/workflows/pages_pipeline.yml`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2f6747267768",
        "64ce2e92a6da",
        "7eca7920c666"
      ],
      "verified_by": [
        "tests/test_spec_delivery_nav.py:21"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Add the `spec_delivery` flag to `extra:` in `templates/mkdocs-theme/base.mkdocs.yml` as `!ENV [SPEC_DELIVERY_ENABLED, false]`. Set the variable from `inputs.spec_dashboard_enabled` on the Build Docs step of `.github/workflows/pages_pipeline.yml`. | Run `test_flag_is_env_driven` in `tests/test_spec_delivery_nav.py` expects the `!ENV` flag and the workflow variable.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 54
    },
    {
      "id": "PIPE-PAGES-R018.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Render a `Spec delivery` link in `templates/mkdocs-theme/overrides/main.html`. The link must use `base_url` and `/spec-delivery/`, and the block must render only when the flag is set",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2f6747267768",
        "ffddb8aba2bc"
      ],
      "verified_by": [
        "tests/test_spec_delivery_nav.py:29"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Render a `Spec delivery` link in `templates/mkdocs-theme/overrides/main.html`. The link must use `base_url` and `/spec-delivery/`, and the block must render only when the flag is set. | Run `test_entry_is_root_relative_and_flag_gated` in `tests/test_spec_delivery_nav.py` expects `base_url`, no host, and the flag guard.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 55
    },
    {
      "id": "PIPE-PAGES-R018.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "List the `spec-delivery/` page of each repository in a native `<details>` list inside the same navigation landmark. The list must iterate `extra.ecosystem.sites` and must hold no second repository list",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2f6747267768"
      ],
      "verified_by": [
        "tests/test_spec_delivery_nav.py:36"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "List the `spec-delivery/` page of each repository in a native `<details>` list inside the same navigation landmark. The list must iterate `extra.ecosystem.sites` and must hold no second repository list. | Run `test_menu_iterates_the_single_site_list` in `tests/test_spec_delivery_nav.py` expects the loop over `extra.ecosystem.sites` and no literal repository URL in the template.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 56
    },
    {
      "id": "PIPE-PAGES-R018.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Keep every `extra.ecosystem.sites` URL in `templates/mkdocs-theme/base.mkdocs.yml` equal to its `REPOS` entry in `scripts/skill_graph/model.py`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2f6747267768",
        "8f6b2234e190"
      ],
      "verified_by": [
        "tests/test_spec_delivery_nav.py:42"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Keep every `extra.ecosystem.sites` URL in `templates/mkdocs-theme/base.mkdocs.yml` equal to its `REPOS` entry in `scripts/skill_graph/model.py`. | Run `test_site_urls_match_repos` in `tests/test_spec_delivery_nav.py` expects each site URL to equal the REPOS URL for its slug.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 57
    },
    {
      "id": "PIPE-PAGES-R018.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Style the entry in a `<style>` element inside the block in `templates/mkdocs-theme/overrides/main.html` with a visible focus outline. The override is served from the theme checkout through `custom_dir`, so the theme sync check needs no consumer change",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2f6747267768"
      ],
      "verified_by": [
        "tests/test_spec_delivery_nav.py:54"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Style the entry in a `<style>` element inside the block in `templates/mkdocs-theme/overrides/main.html` with a visible focus outline. The override is served from the theme checkout through `custom_dir`, so the theme sync check needs no consumer change. | Run `test_theme_sync_check_passes_with_entry` in `tests/test_spec_delivery_nav.py` expects an empty drift list.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 58
    },
    {
      "id": "PIPE-PAGES-R019",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The spec-delivery page carries the documentation site's navigation",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "556a2a4e800e"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_nav.py:27",
        "tests/test_spec_dashboard_nav.py:34",
        "tests/test_spec_dashboard_nav.py:41",
        "tests/test_spec_dashboard_nav.py:49",
        "tests/test_spec_dashboard_nav.py:56"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**The spec-delivery page carries the documentation site's navigation.** Rollup of the children below. Readers must move between the documentation and the page without the browser's address bar. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 59
    },
    {
      "id": "PIPE-PAGES-R019.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Add `site_nav(repository)` to `scripts/spec_dashboard_nav.py`. It renders `<nav aria-label=\"Site\">` with the repository name and a `Documentation` link, both to `../`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "556a2a4e800e"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_nav.py:27"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Add `site_nav(repository)` to `scripts/spec_dashboard_nav.py`. It renders `<nav aria-label=\"Site\">` with the repository name and a `Documentation` link, both to `../`. | Run `test_nav_landmark_links_documentation` in `tests/test_spec_dashboard_nav.py` expects the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 60
    },
    {
      "id": "PIPE-PAGES-R019.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Mark the current page in `site_nav` with `aria-current=\"page\"` on the `Spec delivery` entry",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "556a2a4e800e"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_nav.py:34"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Mark the current page in `site_nav` with `aria-current=\"page\"` on the `Spec delivery` entry. | Run `test_current_page_is_marked` in `tests/test_spec_dashboard_nav.py` expects the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 61
    },
    {
      "id": "PIPE-PAGES-R019.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "List every repository in `site_nav` from `ecosystem_components()` in `scripts/spec_dashboard_drilldown.py`. Link each to its level-1 URL and mark the current repository. Define no second list",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "556a2a4e800e"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_nav.py:41"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "List every repository in `site_nav` from `ecosystem_components()` in `scripts/spec_dashboard_drilldown.py`. Link each to its level-1 URL and mark the current repository. Define no second list. | Run `test_repository_links_equal_single_source` in `tests/test_spec_dashboard_nav.py` expects the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 62
    },
    {
      "id": "PIPE-PAGES-R019.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Add `skip_link()` to `scripts/spec_dashboard_nav.py` and wrap the sheet in `<main id=\"main\">` in `render` in `scripts/spec_dashboard_render.py`. Style the bar with the existing tokens in `scripts/spec_dashboard_style.py`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "556a2a4e800e"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_nav.py:49"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Add `skip_link()` to `scripts/spec_dashboard_nav.py` and wrap the sheet in `<main id=\"main\">` in `render` in `scripts/spec_dashboard_render.py`. Style the bar with the existing tokens in `scripts/spec_dashboard_style.py`. | Run `test_skip_link_targets_main` in `tests/test_spec_dashboard_nav.py` expects the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 63
    },
    {
      "id": "PIPE-PAGES-R019.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Add `scripts/spec_dashboard_nav.py` to the sparse checkout in `.github/workflows/pages_pipeline.yml`. The page must keep every existing panel",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "556a2a4e800e"
      ],
      "verified_by": [
        "tests/test_spec_dashboard_nav.py:56"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "Add `scripts/spec_dashboard_nav.py` to the sparse checkout in `.github/workflows/pages_pipeline.yml`. The page must keep every existing panel. | Run `test_page_keeps_existing_panels` in `tests/test_spec_dashboard_nav.py` expects the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 64
    },
    {
      "id": "PIPE-PAGES-R020",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Documentation claims must match the repository",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Documentation claims must match the repository.** Rollup of the children below. The public-surface gate resolves each documented path, command, gate name and count against the tree. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 65
    },
    {
      "id": "PIPE-PAGES-R020.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "65928c5c8223",
        "e50c603b621e",
        "faf488ed3698"
      ],
      "verified_by": [
        "tests/hooks/test_doc_claims.py:36"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add frozen dataclass `DocClaim` (file, line, kind, text) to `pipelines_hooks/docs/claims.py`. The `kind` field takes one of `path`, `command`, `gate`, `count`, `diagram-node`. | Run `test_doc_claim_kind_is_closed` in `tests/hooks/test_doc_claims.py` expects a `ValueError` for any other kind.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 66
    },
    {
      "id": "PIPE-PAGES-R020.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "65928c5c8223",
        "e50c603b621e",
        "faf488ed3698"
      ],
      "verified_by": [
        "tests/hooks/test_doc_claims.py:42"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Add `claim_findings(root, claims)` to `pipelines_hooks/docs/claims.py`. Each kind has one named resolver in `RESOLVERS`: a path must exist, a gate must be in `GATES`, a count must equal the measured count, a diagram node must match a registry name. Each resolver is a replaceable default. | Run `test_resolvers_check_each_kind` in `tests/hooks/test_doc_claims.py` expects one finding per false claim and none for true claims.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 67
    },
    {
      "id": "PIPE-PAGES-R020.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "65928c5c8223",
        "e50c603b621e",
        "faf488ed3698"
      ],
      "verified_by": [
        "tests/hooks/test_doc_claims.py:66",
        "tests/hooks/test_public_surface_claims.py:43",
        "tests/hooks/test_public_surface_claims.py:71"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Call `claim_findings` from `validate` at `pipelines_hooks/docs/public_surface.py:31`. `main` in `pipelines_hooks/cli.py:79` reaches it through `run_gate` at `pipelines_hooks/cli.py:66`. The `public-surface` hook at `.pre-commit-hooks.yaml:183` is the production caller. | Run `test_validate_calls_claim_findings` in `tests/hooks/test_doc_claims.py` expects a claim finding from `validate` on a stale fixture.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 68
    },
    {
      "id": "PIPE-PAGES-R020.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "65928c5c8223",
        "e50c603b621e",
        "faf488ed3698"
      ],
      "verified_by": [
        "tests/hooks/test_doc_claims.py:86",
        "tests/hooks/test_public_surface_claims.py:95"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** When a claim has no resolver or the registry is unreadable, `claim_findings` returns the typed finding `claims-unchecked` with the file and line. It never passes silently. | Run `test_unresolvable_claim_is_reported` in `tests/hooks/test_doc_claims.py` expects the `claims-unchecked` finding.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 69
    },
    {
      "id": "PIPE-PAGES-R020.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "65928c5c8223",
        "e50c603b621e",
        "faf488ed3698"
      ],
      "verified_by": [
        "tests/hooks/test_doc_claims.py:94"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** The gate prints one line `claims: checked N, unresolved M` and one finding per unresolved claim as `file:line kind text`. | Run `test_claims_summary_line` in `tests/hooks/test_doc_claims.py` expects the counts to equal the fixture.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 70
    },
    {
      "id": "PIPE-PAGES-R020.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "65928c5c8223",
        "e50c603b621e",
        "faf488ed3698"
      ],
      "verified_by": [
        "tests/hooks/test_public_surface_claims.py:27"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The entry point is `pipelines-hook public-surface`, run through `main` in `pipelines_hooks/cli.py:79` on a fixture repository whose README names a missing path. The hook must exit 1 and print that path's `file:line`. | Run `test_public_surface_hook_fails_on_stale_claim` in `tests/hooks/test_public_surface_claims.py` expects exit 1 and the finding.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 71
    },
    {
      "id": "PIPE-PAGES-R020.7",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0acc8ec13b85"
      ],
      "verified_by": [
        "tests/hooks/test_public_surface_claims.py:130"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Extend the R020 claim contract with `LocatedFinding` in `pipelines_hooks/docs/claims.py`. Fields are source path, positive line, source digest, rule, observed value, expected value and evidence digest. Findings may describe documentation or code; measured evidence is required. | Run `test_located_finding_schema` in `tests/hooks/test_public_surface_claims.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 72
    },
    {
      "id": "PIPE-PAGES-R020.8",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0acc8ec13b85",
        "cbe3171bc838"
      ],
      "verified_by": [
        "tests/hooks/test_public_surface_claims.py:143"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Validate findings against the exact scanned tree before export. The `located-evidence` default resolves repository-relative paths, verifies line bounds and source digests, and compares observed values with recorded measurements. A textual assertion alone is not measured evidence. | Run `test_located_evidence_matches_tree` in `tests/hooks/test_public_surface_claims.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 73
    },
    {
      "id": "PIPE-PAGES-R020.9",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0acc8ec13b85"
      ],
      "verified_by": [
        "tests/hooks/test_public_surface_claims.py:167"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend the planned `claim_findings` call at `pipelines_hooks/docs/public_surface.py:31`. Add a shared finding validator at the report boundary, reused by skill grading and test quality. `pipelines_hooks/cli.py:59` dispatches the public-surface entry point. There is no production caller of this new validator today. | Run `test_finding_validator_is_wired` in `tests/hooks/test_public_surface_claims.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 74
    },
    {
      "id": "PIPE-PAGES-R020.10",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0acc8ec13b85"
      ],
      "verified_by": [
        "tests/hooks/test_public_surface_claims.py:196"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Return `unsupported-finding` for absent measurements, escaped paths, invalid lines or mismatched source digests. Malformed evidence is `CannotRun` and exit 2; a measured failed rule is exit 1. Never convert an unchecked finding into a clean result. | Run `test_unsupported_finding_refused` in `tests/hooks/test_public_surface_claims.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 75
    },
    {
      "id": "PIPE-PAGES-R020.11",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0acc8ec13b85"
      ],
      "verified_by": [
        "tests/hooks/test_public_surface_claims.py:253"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit deterministic records with repository-relative path, line, rule, source digest, observed and expected values, and evidence digest. Record rejected findings separately with their refusal reason. Export neither absolute machine paths nor source secrets. | Run `test_located_evidence_export` in `tests/hooks/test_public_surface_claims.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 76
    },
    {
      "id": "PIPE-PAGES-R020.12",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0acc8ec13b85",
        "cbe3171bc838"
      ],
      "verified_by": [
        "tests/hooks/test_public_surface_claims.py:282",
        "tests/hooks/test_public_surface_claims.py:333"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Use entry point `pipelines-hook public-surface --root <fixture>` through the CLI and report validator. In `tests/hooks/test_public_surface_claims.py`, verify a measured stale claim exits 1 with an exact location. Missing measurement, out-of-range line and changed source each exit 2. Repairing the claim exits 0. | Run `test_public_surface_located_evidence_cli` in `tests/hooks/test_public_surface_claims.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 77
    },
    {
      "id": "PIPE-PAGES-R020.13",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Extend R020 with `ChangelogPolicy`, `ReleaseSection` and `ChangelogFinding` in new `pipelines_hooks/docs/changelog.py`. Policy declares document path, grammar version, version/tag syntax, URL templates and parser limits. Sections bind version or `Unreleased`, optional date, categories, entries and comparison link to source lines. Findings have closed rules for version, date, category, entry, link, duplicate and order violations. | Run `test_changelog_model` in `tests/hooks/test_changelog_gate.py`. Reject unknown grammar fields and duplicate releases; represent dated releases and an optional unreleased section with exact locations.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 78
    },
    {
      "id": "PIPE-PAGES-R020.14",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** The `changelog-v1` default accepts dated level-two version headings, nonempty categorized bullet entries and resolved version links. Version labels have three dot-separated nonnegative decimal components without leading zeroes except zero itself. Optional hyphen-prefixed prerelease and plus-prefixed build suffixes contain nonempty dot-separated ASCII alphanumeric/hyphen identifiers; digits-only prerelease identifiers have no leading zeroes. Use valid calendar dates in YYYY-MM-DD form. Releases descend by date; a single undated `Unreleased` section may appear first. Categories are Added, Changed, Deprecated, Removed, Fixed and Security. Features use Added and fixes use Fixed; explicit `[Breaking]` entry markers identify incompatible changes. Reject entries outside a category and unknown categories. Empty optional categories are omitted. | Run `test_changelog_grammar` in `tests/hooks/test_changelog_gate.py`. Accept dated categorized releases; independently reject invalid dates/versions, misplaced entries, duplicate headings and unknown categories.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 79
    },
    {
      "id": "PIPE-PAGES-R020.15",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Add `changelog` to `GATES` at `pipelines_hooks/cli.py:13`, dispatched by `run_gate` at `pipelines_hooks/cli.py:59`. Publish a separate shared hook beside `public-surface` in `.pre-commit-hooks.yaml`, catalogue and self-run configuration consumed by `.github/workflows/ci.yml:86`. Extend configuration keys at `pipelines_hooks/core/config.py:21`. Reuse snapshot selection at `pipelines_hooks/core/comparison.py:53` and blob reads at `pipelines_hooks/core/gitenv.py:81`. Preserve existing public-surface behavior. No production caller reaches this checker today. | Run `test_changelog_hook_wiring` in `tests/hooks/test_changelog_gate.py`. The published CLI/hook reads policy and changelog from one Git snapshot and invokes the new grammar checker.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 80
    },
    {
      "id": "PIPE-PAGES-R020.16",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Grammar deviations return located findings and exit 1. Missing declared files, unreadable UTF-8, unsupported policy, exceeded parser limits, unsafe paths or unavailable snapshots raise `CannotRun` and exit 2. An Unreleased-only document, empty or populated, exits 2 with `missing-release-anchor` at its heading; no comparison baseline is invented. Missing or duplicate link definitions and invalid comparison targets fail; no network request is needed. A URL passing syntax checks is not proof of remote availability. Never silently skip a declared file, rewrite history or reformat a repository during checking. | Run `test_changelog_refusals` in `tests/hooks/test_changelog_gate.py`. Missing files and malformed policy exit 2; missing links and malformed release entries exit 1, with path and source line.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 81
    },
    {
      "id": "PIPE-PAGES-R020.17",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit sorted path/line/rule findings, policy and document digests, Git snapshot identity, checked release/category/link counts and typed refusal. Each release link records its declared comparison endpoints. Keep syntax validation distinct from unchecked remote reachability and semantic completeness of release notes. No passing verdict is emitted when the document was unchecked. | Run `test_changelog_evidence` in `tests/hooks/test_changelog_gate.py`. Bind findings to exact Git bytes and explicitly mark network reachability and change completeness as unverified.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 82
    },
    {
      "id": "PIPE-PAGES-R020.18",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Use entry point `pipelines-hook changelog --root <fixture>` in `tests/hooks/test_changelog_gate.py` on a real temporary Git repository with the published hook installed. Valid dated releases with feature, fix and marked breaking entries pass. Independently stage an invalid date, missing comparison link, misplaced bullet and missing file; assert located nonzero exits through CLI and hook. A fresh Git fixture containing only empty Unreleased exits 2 with `missing-release-anchor`, including when a guessed comparison link is supplied. Adding the first valid dated release, its release/tag link and the Unreleased comparison repairs it to exit 0 through both entry points. An unstaged repair cannot hide staged invalid text; a clean committed snapshot remains independent of worktree edits. | Run `test_changelog_cli` in `tests/hooks/test_changelog_gate.py`. Assert valid exit 0, grammar exit 1, missing-file and initial-history exit 2, then a valid first-release repair to exit 0, exact locations, snapshot isolation and no file writes or network calls.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 83
    },
    {
      "id": "PIPE-PAGES-R020.19",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add RuntimeEnvContract, EnvUse and LauncherEnvBinding in new pipelines_hooks/docs/env_documentation.py. Runtime variables bind name, typed default or no-default, purpose, requiredness, source locations and provider provenance to one Git snapshot. Launcher bindings add tracked JSON path, launcher/entrypoint identity, JSON pointer, variable name and a versioned adapter for literal or sourced-value semantics. Declare supported language roots, central providers and finite dynamic-name resolvers. Declare each launcher's applicable runtime-variable set and reconcile declared and discovered launcher files. | Run `test_env_documentation_model` in `tests/hooks/test_env_documentation.py`. Reject duplicate names, unknown fields, contradictory defaults and unmapped launcher bindings.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 84
    },
    {
      "id": "PIPE-PAGES-R020.20",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Reconcile every supported runtime read with matching name/default/purpose/requiredness in both example environment file and README. For every tracked MCP/launcher configuration, check every applicable variable binding against that same contract, including safe defaults and required/sourced semantics. Missing, renamed or unexpected bindings and default/requiredness drift fail. Use syntax-aware Python and declared provider adapters, not regex completeness claims. Secret defaults use an explicit secret/no-default marker; never store credential defaults. | Run `test_env_documentation_behavior` in `tests/hooks/test_env_documentation.py`. Independently corrupt each documentation field and remove, rename or contradict each launcher binding to fail.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 85
    },
    {
      "id": "PIPE-PAGES-R020.21",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Register env-documentation in pipelines_hooks/cli.py:13, dispatched by run_gate at line 59. Its main calls one reconciliation pass over runtime reads, example file, README and declared/discovered launcher JSON bindings before a verdict. Publish the shared/self-run hook consumed by .github/workflows/ci.yml:86. Reuse core/config.py:21, core/comparison.py:53 and core/gitenv.py:81 with the same-snapshot policy seam. Preserve env-sprawl placement checks. No caller reaches this inventory today. | Run `test_env_documentation_wiring` in `tests/hooks/test_env_documentation.py`. Invoke CLI and configured pre-commit with all three consumer surfaces from the same indexed snapshot.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 86
    },
    {
      "id": "PIPE-PAGES-R020.22",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing/inconsistent documentation, missing declared launcher files, malformed JSON or binding drift is exit 1. Unresolved computed names, unbounded enumeration, unknown wrappers, unsupported source languages or launcher dialects, dynamic substitutions, unavailable providers or conflicting runtime defaults are CannotRun exit 2 with located uncertainty. A resolver must prove a finite set with digest-bound evidence. Unmapped discovered launchers cannot be silently skipped. Never execute repository imports, launchers or credential expansion to validate bindings. | Run `test_env_documentation_refusal` in `tests/hooks/test_env_documentation.py`. Malformed and missing launcher JSON fails; unsupported substitutions and computed names refuse without execution.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 87
    },
    {
      "id": "PIPE-PAGES-R020.23",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit all resolved names, example/README locations and each launcher path/identity/JSON pointer with source line, adapter, applicable variable set and safe binding/default/requiredness verdict. Bind source, consumer, policy and provider digests to one snapshot. Record all declared/discovered launchers, unmatched bindings and unresolved reads. Redact credentials and expanded environment values. Unchecked reads or launcher bindings forbid a complete receipt. | Run `test_env_documentation_evidence` in `tests/hooks/test_env_documentation.py`. Check exact third-surface locations/digests, missing binding evidence, uncertainty and secret redaction.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 88
    },
    {
      "id": "PIPE-PAGES-R020.24",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Use entry point pipelines-hook env-documentation --root <fixture> and configured pre-commit on a real Git repository with runtime reads, example file, README and tracked MCP JSON. All three consumer surfaces pass when consistent. Independently corrupt example-file and README metadata to fail. Independently remove/rename a launcher key, change its safe default or required binding, corrupt/delete its JSON file and repair it; assert located exit 1 then 0. Unknown substitution and computed-name cases exit 2. An unstaged launcher repair cannot rescue staged drift; committed-tree checks ignore worktree edits. | Run `test_env_documentation_cli` in `tests/hooks/test_env_documentation.py`. Assert CLI/hook exits 0/1/2 for all three surfaces, exact JSON pointers, snapshot isolation and no launch/import/network execution.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 89
    },
    {
      "id": "PIPE-PAGES-R020.25",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add ProjectConfigInventory and TemplateReceipt in new pipelines_hooks/hygiene/config_inventory.py. A complete declared project set maps four required roles: version-bump, pre-commit, project metadata and pytest configuration, to canonical paths, parser/schema versions, pinned template digests and rendering parameters. Two roles may share one file through distinct validated sections. | Run `test_config_inventory_model` in `tests/hooks/test_config_inventory.py`. Require all four roles for every declared project and reject duplicate effective authorities.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 90
    },
    {
      "id": "PIPE-PAGES-R020.26",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Provide deterministic template rendering and read-only completeness checks. Validate required role fields and rendered managed sections using format parsers; compare template version and parameter digests. Preserve explicitly owned custom sections. Validate the full declared inventory, including unchanged projects; an existing file alone does not prove template origin or conformance. | Run `test_config_inventory_behavior` in `tests/hooks/test_config_inventory.py`. Render all roles twice byte-identically and detect missing files, sections and managed-field drift.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 91
    },
    {
      "id": "PIPE-PAGES-R020.27",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Register config-inventory in pipelines_hooks/cli.py:13 with --check and --render modes. Publish --check as the pre-commit/CI hook; package versioned templates under templates/project-config/. Reuse core/config.py:21 strict schema, core/comparison.py:53 and core/gitenv.py:81. Existing templates contain only the Pages theme; no standard project-config renderer or completeness caller exists. | Run `test_config_inventory_wiring` in `tests/hooks/test_config_inventory.py`. The installed hook invokes check mode; an explicit scratch render runs the same templates and parsers.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 92
    },
    {
      "id": "PIPE-PAGES-R020.28",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing required roles/files, invalid format or managed-section drift exit 1. Unknown templates, ambiguous project discovery, unsupported schemas, unavailable Git bytes or unsafe destinations raise CannotRun exit 2. Rendering requires an explicit destination and refuses existing outputs; checking never overwrites user configuration or creates an authority beside a canonical file. | Run `test_config_inventory_refusal` in `tests/hooks/test_config_inventory.py`. Reject traversal and overwrite, and fail a project omitted from the declared inventory.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 93
    },
    {
      "id": "PIPE-PAGES-R020.29",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Record project/role/path/section, parser and template identity, parameter digest, expected/observed managed-section digests and exact failure location. Record all discovered and declared project roots. A template receipt is reproducibility evidence, not proof of historical authorship. | Run `test_config_inventory_evidence` in `tests/hooks/test_config_inventory.py`. Prove all projects and four roles appear, and drift identifies the affected section.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 94
    },
    {
      "id": "PIPE-PAGES-R020.30",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The entry point is the published CLI and configured hook. Through pipelines-hook config-inventory and configured pre-commit, render templates into a new real Git fixture with two projects, stage outputs and validate successfully. Independently remove bump, pre-commit, metadata and pytest roles; corrupt each format and alter a managed value. Add an undeclared project root. Each invalid inventory must fail with the correct project/role. | Run `test_config_inventory_cli` in `tests/hooks/test_config_inventory.py`. Assert deterministic rendering, per-role failures, complete multi-project coverage and no check-mode writes.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 95
    },
    {
      "id": "PIPE-PAGES-R020.31",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add a versioned validated Pydantic ValidationReport in new pipelines_hooks/core/validation_report.py. It nests repository/snapshot, category, executed test or analyzer identity and stable rule records. Outcomes are pass, fail or skip, each with a reason; failures preserve structured verbosity and located evidence. Invocation status separately records complete or cannot-run, so a skip cannot masquerade as pass. | Run `test_validation_report_model` in `tests/hooks/test_validation_report.py`. Reject unknown outcomes, duplicate record identities and counts inconsistent with records.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 96
    },
    {
      "id": "PIPE-PAGES-R020.32",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Serialize to canonical JSON and deserialize without losing nesting, reasons, evidence, pass/fail/skip metrics or schema version. Render Markdown from the same object; do not parse Markdown as authoritative evidence. Recompute counts and verdict on import. Preserve empty/not-applicable categories as explicit skips and never invent successful tests. | Run `test_validation_report_behavior` in `tests/hooks/test_validation_report.py`. Round-trip mixed nested outcomes and compare every field, stable ordering and recomputed metrics.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 97
    },
    {
      "id": "PIPE-PAGES-R020.33",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Add structured result adapters before text rendering in the R020 claim, R021 repository-validation and R023 skill-grade paths. Register repository-validation in cli.py:13 and let its --report-json and --report-markdown options export the shared object. Preserve existing run_gate exit mapping at cli.py:59. The aggregate consumes R021.27 lint_type.analyze results under explicit lint/import-order/type categories and preserves their rules, reasons and verdicts through JSON/Markdown. Current modules print distinct formats; no common report producer/consumer exists today. | Run `test_validation_report_wiring` in `tests/hooks/test_validation_report.py`. Run aggregate lint-type results through JSON/Markdown and retain all three phase categories, rules and verdicts.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 98
    },
    {
      "id": "PIPE-PAGES-R020.34",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Unknown schema, malformed evidence, stale source digests, mismatched counters or unsupported adapters are CannotRun exit 2. Any failing required rule exits 1 unless cannot-run takes precedence. A skipped required check exits 2; declared non-applicable optional checks remain skips. Optional skips cannot create a full-coverage receipt. Truncated output is not a valid report. | Run `test_validation_report_refusal` in `tests/hooks/test_validation_report.py`. Tampered verdict/counts, required skips and malformed/truncated JSON refuse rather than pass.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 99
    },
    {
      "id": "PIPE-PAGES-R020.35",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Preserve exact rule IDs, repository-relative locations, bounded redacted diagnostics, command identity, duration, source/policy digests and scope. Report original pass/fail/skip counts by category and repository plus invocation status. Bound serialized size and escape Markdown content without executing it. | Run `test_validation_report_evidence` in `tests/hooks/test_validation_report.py`. Retain failure detail and skip reasons through JSON and Markdown; never leak secret payloads.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 100
    },
    {
      "id": "PIPE-PAGES-R020.36",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The entry point is the published CLI and configured hook. Execute repository-validation on real Git fixtures containing passing checks, a real lint failure and a deliberately unavailable optional adapter. Deserialize the produced JSON and render Markdown; compare every nested outcome, reason and metric with the actual analyzer results. Independently trigger real lint, import-order and type findings through the aggregate; each survives serialization in its matching category and gives exit 1 even if health is 100. A required unavailable adapter must give exit 2 in local and CI modes. | Run `test_validation_report_cli` in `tests/hooks/test_validation_report.py`. Assert real lint/import/type round-trip, exit 1 at unchanged health score, repaired exit 0 and required-phase skip exit 2.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 101
    },
    {
      "id": "PIPE-PAGES-R020.37",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add ToolDocMapping in new pipelines_hooks/docs/tool_mapping.py: canonical registry/tool/method IDs, nested method relation, parameter names/types/defaults/requiredness, result schema and request/result examples. Bind registry and generated table locations to source digests. The owner exports registry data; pipelines creates no second tool authority. | Run `test_tool_mapping_model` in `tests/hooks/test_tool_mapping.py`. Reject duplicate identities, missing schema fields and unbound examples.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 102
    },
    {
      "id": "PIPE-PAGES-R020.38",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Extend R010 with exact set equality between the complete published tool/method inventory and documentation rows. Require all parameters, result fields and at least one schema-valid request/result example per method, including nested methods. Explicitly describe void results and empty parameter sets. Reject extra, omitted or stale rows and mismatched defaults. | Run `test_tool_mapping_behavior` in `tests/hooks/test_tool_mapping.py`. Independently remove a tool, nested method, parameter, result or example and fail.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 103
    },
    {
      "id": "PIPE-PAGES-R020.39",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Create tool-mapping in pipelines_hooks/cli.py:13 and call it through run_gate at line 59 and the shared hook. Reuse registry extraction at scripts/skill_graph/eg.py:112 and generation at scripts/skill_graph/render_pages.py:39 through versioned owner adapters. Extend exports to carry full schemas; current method grouping/counts do not prove mapping completeness. Run the checker before artifact upload at .github/workflows/pages_pipeline.yml:244. | Run `test_tool_mapping_wiring` in `tests/hooks/test_tool_mapping.py`. The configured docs CLI/hook consumes the real exported registry and generated mapping.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 104
    },
    {
      "id": "PIPE-PAGES-R020.40",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** A missing mapping row or schema/example mismatch exits 1 with registry identity and document location. Unsupported registry formats, missing producer evidence, ambiguous schemas or stale digests are CannotRun exit 2. Never import arbitrary repository modules or invent examples/results to claim complete coverage. | Run `test_tool_mapping_refusal` in `tests/hooks/test_tool_mapping.py`. Unknown schema and stale registry refuse; an omitted tool is a located failure.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 105
    },
    {
      "id": "PIPE-PAGES-R020.41",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Report exact tool/method set, parameter/result/example counts, registry producer/version/digest, table row/anchor, source snapshot and each comparison. Missing rows locate both the registry declaration and expected table section. Schema-valid examples are not evidence that a deployed method succeeds. | Run `test_tool_mapping_evidence` in `tests/hooks/test_tool_mapping.py`. Locate absent nested rows and preserve the distinction between schema and runtime evidence.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 106
    },
    {
      "id": "PIPE-PAGES-R020.42",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Use entry point pipelines-hook tool-mapping on a real Git fixture whose registered fixture tool exports its contract through the owner producer. Generate and serve its actual reference page; the installed hook passes the full mapping. Independently delete a tool row, nested method, parameter, result or example and assert exit 1 plus exact identity/location; restore to pass. | Run `test_tool_mapping_cli` in `tests/hooks/test_tool_mapping.py`. Assert real producer-to-renderer-to-hook integration and stale-export exit 2.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 107
    },
    {
      "id": "PIPE-PAGES-R020.43",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add GuideMigrationManifest in new pipelines_hooks/docs/guide_migration.py: old/new snapshots, canonical guide path, configurable size limit, complete source block/statement IDs and digests, destination path/anchor and claim-evidence kind for every moved assertion. Track diagrams and code examples as explicit blocks. | Run `test_guide_migration_model` in `tests/hooks/test_guide_migration.py`. Reject duplicate IDs, uncovered source ranges and destinations outside canonical content roots.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 108
    },
    {
      "id": "PIPE-PAGES-R020.44",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Extend R002 by generating a reviewable split into declared architecture/agent/feature/reference pages with a concise linking guide. Account for every source block as retained, moved or explicitly reviewed retirement; no silent deletion. Verify moved claims through R020 resolvers and digest-bound measurements. Unknown factual assertions remain unverified and block a complete-verification receipt. | Run `test_guide_migration_behavior` in `tests/hooks/test_guide_migration.py`. Omitting or changing an assertion without matching evidence fails; unsupported claim kinds remain unresolved.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 109
    },
    {
      "id": "PIPE-PAGES-R020.45",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Register guide-migration in pipelines_hooks/cli.py:13 with check and explicit scratch-render modes. Reuse planned docs/claims.py resolvers attached at docs/public_surface.py:31, containment at docs/public_surface_links.py:29 and corpus navigation at scripts/skill_graph/nav.py. The existing link checker does not split guides or verify every moved fact. Publish the check hook and consume it in the Pages workflow before upload. | Run `test_guide_migration_wiring` in `tests/hooks/test_guide_migration.py`. The real CLI materializes the declared split and the hook checks its served navigation and claim evidence.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 110
    },
    {
      "id": "PIPE-PAGES-R020.46",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing blocks, broken links or oversized output give located failures and exit 1; stale evidence, unsupported claim kinds or unavailable old/new snapshots are CannotRun exit 2. A human approval records review, not machine proof of arbitrary truth. Refuse overwrite in render mode and never rewrite the caller guide during checking. Invalid diagrams fail through the declared renderer. | Run `test_guide_migration_refusal` in `tests/hooks/test_guide_migration.py`. Unresolved assertions and unrenderable diagrams cannot produce complete migration evidence.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 111
    },
    {
      "id": "PIPE-PAGES-R020.47",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit source-to-destination block mapping, before/after digests and lines, retained/retired/moved counts, measured size, resolved navigation and per-claim evidence or unresolved reason. Distinguish byte preservation, editorial review and measured factual verification. Account for all blocks even when some claims cannot be verified. | Run `test_guide_migration_evidence` in `tests/hooks/test_guide_migration.py`. A coverage total equals the original inventory and each moved claim retains its evidence kind.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 112
    },
    {
      "id": "PIPE-PAGES-R020.48",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Use entry point pipelines-hook guide-migration on a real Git fixture with a large guide, measured command/path facts, an unsupported assertion and a diagram. Render the split, serve the generated site and follow the guide links. Omitted blocks, changed claims and broken diagram rendering fail; unsupported facts exit 2. A fully supported, measured fixture passes after repair. | Run `test_guide_migration_cli` in `tests/hooks/test_guide_migration.py`. Assert actual CLI/hook, renderer and served-link behavior without helper-only completion.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 113
    },
    {
      "id": "PIPE-PAGES-R020.49",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add DeploymentDocMatrix in new pipelines_hooks/docs/deployment_docs.py with exactly four pattern IDs: uv-stdio, uv-local-http, local-container-http and remote-container-url. Each binds owner/runtime capability, supported or constrained status, MCP configuration, launch/connect argv, prerequisite/default placeholders and documentation anchors. Container runtime is a declared Docker or Podman variant. | Run `test_deployment_docs_model` in `tests/hooks/test_deployment_docs.py`. Require all four records and parse configuration/command shapes without fabricated capabilities.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 114
    },
    {
      "id": "PIPE-PAGES-R020.50",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Extend R008 beyond stdio: every supported pattern includes valid MCP JSON and executable owner-published launch/connect commands. Validate argv, package/image refs, transport, environment bindings and config-command agreement from the checked registry. Remote URL mode uses a safe example endpoint and separate owner-host launch instructions; never invent a local spawn command for a hosted URL. | Run `test_deployment_docs_behavior` in `tests/hooks/test_deployment_docs.py`. Missing configuration, command or mismatched transport fails independently in every pattern.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 115
    },
    {
      "id": "PIPE-PAGES-R020.51",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Register deployment-docs at pipelines_hooks/cli.py:13, reuse public_surface_quickstart.findings through docs/public_surface.py:31 and R020 launcher-binding validation. Publish the shared hook and invoke it before .github/workflows/pages_pipeline.yml:244 upload. Add owner capability/export adapters; no current checker establishes this four-pattern matrix. | Run `test_deployment_docs_wiring` in `tests/hooks/test_deployment_docs.py`. Configured pre-commit and docs CLI validate the same owner export, JSON and argv matrix.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 116
    },
    {
      "id": "PIPE-PAGES-R020.52",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing records or mismatched examples exit 1. Unknown transport, unavailable owner capability evidence or unsupported command grammar is CannotRun exit 2. An owner-constrained pattern must show a reason and owner evidence, cannot advertise a runnable command and remains visibly unsupported; a contract requiring four runnable patterns remains incomplete. Docs checks never start containers or contact production endpoints. | Run `test_deployment_docs_refusal` in `tests/hooks/test_deployment_docs.py`. Unsupported patterns are explicit constraints, never false pass coverage or invented commands.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 117
    },
    {
      "id": "PIPE-PAGES-R020.53",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit per-pattern support state, owner/contract digest, configuration pointer, command block location, exact parsed argv and safe prerequisite references. Record syntax/contract validation separately from optional exact-version runtime receipts. Redact credentials and keep hosted ownership distinct from client connection setup. | Run `test_deployment_docs_evidence` in `tests/hooks/test_deployment_docs.py`. Export all four patterns and distinguish docs parity from a runtime deployment receipt.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 118
    },
    {
      "id": "PIPE-PAGES-R020.54",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Use entry point pipelines-hook deployment-docs and configured pre-commit on real Git fixtures with all four declared patterns. Run documented supported commands only in owner-controlled disposable acceptance environments with a loopback fixture server; independently parse/validate each MCP configuration and observe the selected transport. Corrupt each pattern in turn to fail; constrained owners produce explicit unsupported evidence. | Run `test_deployment_docs_cli` in `tests/hooks/test_deployment_docs.py`. Assert four-pattern CLI/hook parity and independent owner runtime receipts; documentation alone cannot certify deployment.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 119
    },
    {
      "id": "PIPE-PAGES-R020.55",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Extend R020 ProjectConfigInventory with documentation roles: README, agent guide, canonical content tree/index, changelog and documentation configuration. Bind every declared project, role/path/section, template version/digest, render parameters and navigation edges. Reuse config-inventory ownership; do not create a parallel project list. | Run `test_doc_inventory_model` in `tests/hooks/test_doc_inventory.py`. Require every documentation role for every project and reject duplicate canonical authorities.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 120
    },
    {
      "id": "PIPE-PAGES-R020.56",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Render deterministic templates to new scratch output and validate whole-inventory drift. Check required sections, links from README/guide through index to overview/component/reference pages, document configuration and changelog grammar. Discover canonical paths through policy and compare all declared projects, including unchanged files. Preserve custom content outside managed sections. | Run `test_doc_inventory_behavior` in `tests/hooks/test_doc_inventory.py`. Missing roles, malformed config, stale managed sections and orphan navigation fail independently.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 121
    },
    {
      "id": "PIPE-PAGES-R020.57",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend planned hygiene/config_inventory.py from R020.27 with documentation adapters and templates/project-docs/. Reuse scripts/sync_mkdocs_theme.py:83, scripts/pages_fleet_parity.py:54 and public-surface link checks at docs/public_surface.py:31. Publish config-inventory --check documentation coverage in the same hook and .github/workflows/pages_pipeline.yml:244 pre-upload path. Existing theme sync/parity does not prove all these per-project roles. | Run `test_doc_inventory_wiring` in `tests/hooks/test_doc_inventory.py`. The existing proposed config-inventory entry consumes both configuration and documentation roles once.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 122
    },
    {
      "id": "PIPE-PAGES-R020.58",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Absent roles, invalid config, missing index edges or template drift exit 1. Unknown templates, ambiguous canonical locations, unavailable snapshots or escaping paths are CannotRun exit 2. Never recreate retired docs roots, overwrite custom sections, treat an empty directory as a complete tree or silently omit a project. | Run `test_doc_inventory_refusal` in `tests/hooks/test_doc_inventory.py`. Retired-path fallback and an undiscovered declared project cannot pass.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 123
    },
    {
      "id": "PIPE-PAGES-R020.59",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit project/role/path inventory, template and content digests, managed-section comparisons, navigation graph and exact missing/broken edge locations. Bind the site artifact and report to the same source/config tree. Reuse the structured pass/fail/skip report; historical changelog text remains outside template-owned content. | Run `test_doc_inventory_evidence` in `tests/hooks/test_doc_inventory.py`. Prove every role and project is checked and preserve user-owned prose during rendering.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 124
    },
    {
      "id": "PIPE-PAGES-R020.60",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Use entry point pipelines-hook config-inventory --check on a real two-project Git fixture generated from templates. Build and serve its actual documentation, traverse overview/component/reference links and validate all roles. Independently delete a guide/index/changelog/config, corrupt a navigation target and move content to a retired path; installed CLI/hook must fail then pass after repair. | Run `test_doc_inventory_cli` in `tests/hooks/test_doc_inventory.py`. Assert deterministic generation, real served navigation and whole-inventory drift failures.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 125
    },
    {
      "id": "PIPE-PAGES-R020.61",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add ReadmeHeaderContract in new pipelines_hooks/docs/readme_header.py: project title, unique versioned mark with alt text, concise description, ordered Documentation/Capabilities/Interfaces/Status links and a visible telemetry badge inventory. Bind consumer identity and destinations to scripts/skill_graph/model.py:15 REPOS and declared owner metadata. Classify scope before requiring header fields: the seven consumers validate normally; only the policy-pinned provider identity github.com/Knuckles-Team/pipelines is declared non-applicable. Resolve full host/namespace/repository identity from origin, or a sole remote if origin is absent, without network access. A basename or caller-supplied provider flag cannot select this exception. | Run `test_readme_header_model` in `tests/hooks/test_readme_header.py`. Reject missing/duplicate consumer header fields; only the exact provider identity selects non-applicable scope.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 126
    },
    {
      "id": "PIPE-PAGES-R020.62",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Extend R003/R011 with the same header order in README and served documentation home. Require every declared telemetry badge beside the other top badges, outside collapsed details. Resolve all four navigation targets and retain a unique project mark. Reconcile the obsolete five-core wording with the existing seven-entry REPOS source; do not add a second hard-coded registry. | Run `test_readme_header_behavior` in `tests/hooks/test_readme_header.py`. Missing interface/status links, hidden badges, stale owner counts and reused wrong-project marks fail.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 127
    },
    {
      "id": "PIPE-PAGES-R020.63",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Register readme-header at pipelines_hooks/cli.py:13; reuse public_surface_links at docs/public_surface.py:31 for contained links and scripts/skill_graph/model.py:15 for consumer identities. Add a shared header template beside templates/mkdocs-theme/overrides/main.html:1 and consumer Markdown rendering. Wire header validation into shared/self-run hooks and Pages pre-upload at .github/workflows/pages_pipeline.yml:244. Self-run on the identified provider returns structured skip with reason provider-not-consumer and exit 0 locally and in CI; this is declared non-applicable scope, not an unavailable required consumer check under R020.34. Consumer fixture acceptance still runs in CI. Current theme chrome does not enforce this README header. | Run `test_readme_header_wiring` in `tests/hooks/test_readme_header.py`. The installed provider self-run yields declared non-applicable exit 0; known consumers still execute the shared renderer/checker.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 128
    },
    {
      "id": "PIPE-PAGES-R020.64",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing fields, hidden badges, broken local targets or identity drift within a known consumer exit 1. Unknown repositories, unresolved/ambiguous remote identity, unknown badge provenance, unavailable metadata, unsupported rendering or stale status evidence are CannotRun exit 2. No generic unknown-consumer exemption is allowed. Never invent a green telemetry value or count remote URL syntax as reachability proof. Offline fixtures use pinned badge content, not network calls. | Run `test_readme_header_refusal` in `tests/hooks/test_readme_header.py`. Unknown consumer, same basename under another namespace and unresolved identity exit 2; unavailable telemetry cannot become a measured success.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 129
    },
    {
      "id": "PIPE-PAGES-R020.65",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit header node order, resolved destinations, mark identity/digest, badge visibility and provenance/as-of data, registry digest and served-artifact identity for checked consumers. Provider non-applicable evidence records resolved identity and its source, snapshot, policy/registry digests, provider-not-consumer reason and zero consumer checks; omit header grades and consumer coverage receipts. Separate navigation checks, telemetry freshness and visual presentation. Preserve the source distinction between project identity and shared layout. | Run `test_readme_header_evidence` in `tests/hooks/test_readme_header.py`. Bind seven-owner coverage to its registry; provider skip evidence cannot count as a passed consumer or completed header check.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 130
    },
    {
      "id": "PIPE-PAGES-R020.66",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Use entry point pipelines-hook readme-header on generated README and a real served site in a temporary Git fixture. Browser assertions verify the four ordered links, project mark/alt text and visible telemetry. Break a link, collapse a badge or substitute another project mark; CLI/hook and served checks fail. In disposable Git fixtures run the installed CLI and actual self-run hook with the exact provider remote (exit 0, structured non-applicable, zero consumer checks), an unknown consumer and same-basename different-namespace remote (exit 2), and a known consumer with broken header and a caller provider flag (never skip; fail). No remote contact is needed. | Run `test_readme_header_cli` in `tests/hooks/test_readme_header.py`. Assert real renderer/browser coverage plus provider CLI/self-run exit 0, unknown identity exit 2 and no consumer bypass through a provider flag.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 131
    },
    {
      "id": "PIPE-PAGES-R020.67",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add ThemeImageContract in new pipelines_hooks/docs/image_theme.py: complete discovered image inventory, source/DOM identity, light/dark media selectors or declared dual-theme single asset, alt text, theme backgrounds and semantic diagram endpoints. Bind asset and rendered page digests to the same tree. | Run `test_image_theme_model` in `tests/hooks/test_image_theme.py`. Reject omitted images, missing theme modes and ambiguous diagram edge identities.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 132
    },
    {
      "id": "PIPE-PAGES-R020.68",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Check every declared and discovered README/site image at light and dark prefers-color-scheme settings. Require actual asset loading, visible labels and boundaries, accessible alternatives and consistent semantic arrow direction. Use deterministic pixel/contrast probes for declared foreground/background regions and reviewed render evidence where automatic legibility is insufficient. Media-query text alone is not proof. | Run `test_image_theme_behavior` in `tests/hooks/test_image_theme.py`. Missing dark variant, invisible labels, wrong diagram arrow endpoints and unaccounted images fail.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 133
    },
    {
      "id": "PIPE-PAGES-R020.69",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Register image-theme at pipelines_hooks/cli.py:13 and create a browser-check adapter for rendered artifacts. Reuse the existing light/dark palette at templates/mkdocs-theme/base.mkdocs.yml:35 and shared assets; preserve R009 HTML/CSS diagrams instead of adding a new diagram system. Run the static inventory hook and consume exact-artifact browser evidence before Pages upload at .github/workflows/pages_pipeline.yml:244. Existing palette support does not check individual images. | Run `test_image_theme_wiring` in `tests/hooks/test_image_theme.py`. The production docs check evaluates the actual served artifact under both browser media settings.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 134
    },
    {
      "id": "PIPE-PAGES-R020.70",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing assets, required theme selectors or contrast probes, or reversed declared edges exit 1. Unavailable browser/render evidence, unsupported image analysis, unknown backgrounds or stale artifact digests are CannotRun exit 2. Do not claim arbitrary image legibility from regex or two identical screenshots. Single assets need positive evidence for both modes. | Run `test_image_theme_refusal` in `tests/hooks/test_image_theme.py`. An image lacking trustworthy theme evidence cannot silently pass or disappear from inventory.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 135
    },
    {
      "id": "PIPE-PAGES-R020.71",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Record each image and both media modes, chosen source/currentSrc, load status, geometry, alt text, declared contrast measurements, diagram endpoint checks and screenshot digests. Record manual review scope separately from measured probes; neither substitutes for missing actual renders. Use safe repository-relative evidence references. | Run `test_image_theme_evidence` in `tests/hooks/test_image_theme.py`. Every image has two bound render results with exact failure locations and reasons.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 136
    },
    {
      "id": "PIPE-PAGES-R020.72",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Use entry point pipelines-hook image-theme with a real built site served on loopback and a browser rendering light then dark. Inspect actual image load/currentSrc and declared label/background probes. Delete the dark source, make a label match its background and reverse a diagram edge independently; assert nonzero gate results, then repair. | Run `test_image_theme_cli` in `tests/hooks/test_image_theme.py`. Assert real served dual-media coverage for every image, failed adversarial probes and stale-receipt exit 2.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 137
    },
    {
      "id": "PIPE-PAGES-R021",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Test quality gate for repository validation",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Test quality gate for repository validation.** Rollup of the children below. The gate rejects placeholder tests and unjustified suppressions, and enforces a coverage threshold. Each finding names its rule and location, so the fixer addresses the root cause before the re-test. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 138
    },
    {
      "id": "PIPE-PAGES-R021.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add frozen dataclass `TestQualityFinding` (path, line, rule) to `pipelines_hooks/code/test_quality.py`. The `rule` field takes one of `placeholder-test`, `unjustified-suppression`, `coverage-below-threshold`. | Run `test_finding_rule_is_closed` in `tests/hooks/test_test_quality.py` expects a `ValueError` for any other rule.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 139
    },
    {
      "id": "PIPE-PAGES-R021.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Add `scan(root, threshold)` to `pipelines_hooks/code/test_quality.py`. A test whose body is only `pass`, `...` or `assert True` is a placeholder. A suppression needs a reason of at least 10 characters. The coverage threshold defaults to 80 percent. Each rule is a replaceable default. | Run `test_scan_flags_placeholder_and_bare_suppression` in `tests/hooks/test_test_quality.py` expects one finding per violation.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 140
    },
    {
      "id": "PIPE-PAGES-R021.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** This row creates the call site. Add `test-quality` to `GATES` at `pipelines_hooks/cli.py:33` and a hook entry beside `no-stub` at `.pre-commit-hooks.yaml:141`. `run_gate` at `pipelines_hooks/cli.py:59` is its caller. | Run `test_test_quality_is_registered` in `tests/hooks/test_test_quality.py` expects the name in `GATES` and in the hook file.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 141
    },
    {
      "id": "PIPE-PAGES-R021.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** When no coverage report exists, `main` raises `CannotRun`. `run_gate` maps it to exit 2. The gate never reports a pass without a measured percentage. | Run `test_missing_coverage_report_cannot_run` in `tests/hooks/test_test_quality.py` expects exit 2.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 142
    },
    {
      "id": "PIPE-PAGES-R021.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** The gate prints `test-quality: files N, placeholders M, coverage P%, threshold T%` and one `path:line rule` line per finding. | Run `test_test_quality_summary_line` in `tests/hooks/test_test_quality.py` expects the stated fields.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 143
    },
    {
      "id": "PIPE-PAGES-R021.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The entry point is `pipelines-hook test-quality` through `main` in `pipelines_hooks/cli.py:79`. A fixture repository with a placeholder test and 70 percent coverage must exit 1 and list both findings. | Run `test_test_quality_hook_fails_fixture` in `tests/hooks/test_test_quality_hook.py` expects exit 1 and two findings.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 144
    },
    {
      "id": "PIPE-PAGES-R021.7",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Extend `TestQualityFinding` with `interface-violation`, `missing-property-proof`, `missing-integration-proof` and `orphan-module`. A versioned component declaration names roots, interfaces, allowed edges, entry modules and risky handoff test IDs. Dependency edges carry source location and kind: `eager-runtime`, `deferred-runtime` or `type-only`. Declare permitted type-only edges separately. | Run `test_component_contract_model` in `tests/hooks/test_test_quality_hook.py`. Assert the closed edge kinds and separate runtime/type-only permissions.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 145
    },
    {
      "id": "PIPE-PAGES-R021.8",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** The `declared-boundaries` default checks all statically resolvable runtime imports, including imports inside `def`, `async def` and conditional branches. The `orphan-reach` default follows both eager and deferred runtime edges from declared entry modules. Proven `TYPE_CHECKING` branches produce type-only edges; check their separate permissions but exclude them from runtime reachability. The `handoff-proof` default requires passing property and real-component integration receipts at the scanned commit. | Run `test_component_contract_checks` in `tests/hooks/test_test_quality_hook.py`. Assert allowed lazy imports preserve reachability, forbidden lazy imports fail, and type-only imports cannot prove runtime reachability.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 146
    },
    {
      "id": "PIPE-PAGES-R021.9",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend R021 `test-quality` at `pipelines_hooks/cli.py:14`. Add a static dependency traversal beside `build_eager_graph` at `pipelines_hooks/code/import_graph.py:71`; reuse module discovery and target resolution, not its eager-only walker. Wire the static runtime graph into boundary and orphan checks before the verdict. Keep the eager graph for eager-cycle checks. Publish the hook and self-run configuration consumed by `.github/workflows/ci.yml:86`. No production caller reaches the added pass today. | Run `test_component_checks_are_wired` in `tests/hooks/test_test_quality_hook.py`. Assert the CLI boundary/orphan path consumes the static runtime graph and cycle checks retain the eager graph.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 147
    },
    {
      "id": "PIPE-PAGES-R021.10",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Raise `CannotRun` for malformed declarations, unsupported language adapters or missing, stale or skipped test receipts. Static violations and unproved risky handoffs fail. Unresolved computed imports produce located dynamic-edge uncertainty. Require declared dynamic entry modules; unresolved reachability cannot produce a clean verdict or a definite orphan finding. An unproven type-only guard remains a possible runtime edge. | Run `test_component_proof_refusals` in `tests/hooks/test_test_quality_hook.py`. Assert unresolved dynamic reachability is exit 2, never a false clean or definite orphan; retain receipt refusals.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 148
    },
    {
      "id": "PIPE-PAGES-R021.11",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit declaration and source digests, dependency locations and edge kinds, checked interface permissions, runtime reachability, type-only exclusions, dynamic uncertainty, test IDs, property seeds and outcomes. Integration receipts identify both real components. Bind evidence to the scanned commit and the R020 located-finding contract. | Run `test_component_evidence_receipts` in `tests/hooks/test_test_quality_hook.py`. Assert runtime, type-only and unresolved dynamic evidence remain distinguishable.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 149
    },
    {
      "id": "PIPE-PAGES-R021.12",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Run entry point `pipelines-hook test-quality --root <fixture>` in `tests/hooks/test_test_quality_hook.py`. Execute a real component handoff with imports inside both `def` and `async def`. Allowed lazy edges pass without false orphans; forbidden lazy edges exit 1 at their import lines. A type-only edge cannot make a module runtime-reachable. Computed import uncertainty exits 2. Retain property/integration receipts and the skipped-test and unreachable-module failure cases. | Run `test_component_handoff_cli` and `test_component_lazy_import_cli` in `tests/hooks/test_test_quality_hook.py`. Assert CLI exit codes, exact edge locations, type-only separation and no false orphan for allowed lazy imports.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 150
    },
    {
      "id": "PIPE-PAGES-R021.13",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Extend the finding rule set with `outcome-not-observed`. Add `OutcomeContract` and `OutcomeProof` beside the planned `TestQualityFinding` in `pipelines_hooks/code/test_quality.py`. A contract binds a collected test ID and subject entry point to applicable outcomes: `return-value`, `error-state` or `side-effect`. Each outcome names an observable, expected predicate and bounded counterexample. Proof binds source, test and policy digests to baseline and counterexample results, assertion locations and `pass`, `fail` or `unchecked`. | Run `test_outcome_contract_schema` in `tests/hooks/test_test_quality_outcomes.py`. Reject unknown outcome kinds, empty observables and missing source bindings; accept return, error and side-effect contracts.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 151
    },
    {
      "id": "PIPE-PAGES-R021.14",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** The `observed-outcome` default requires every collected test case in the declared scope to verify its applicable outcomes. Static screening flags absent or constant assertions but cannot prove semantic adequacy. Runtime proof requires the baseline to pass and each declared wrong outcome to fail at the designated outcome assertion. Wrong values, wrong or missing errors, and missing or extra side effects are counterexamples where applicable. Unrelated assertions that still pass yield `outcome-not-observed`. Assertion helpers and exception contexts use explicit adapters rather than an assert-keyword count. | Run `test_outcome_counterexamples` in `tests/hooks/test_test_quality_outcomes.py`. Reject a passing test that ignores the result; accept exact return, error and state assertions that detect their counterexamples.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 152
    },
    {
      "id": "PIPE-PAGES-R021.15",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend the planned `test-quality` entry at `pipelines_hooks/cli.py:14`, dispatched by `run_gate` at `pipelines_hooks/cli.py:59`. Before its verdict, call an outcome runner and checker from `pipelines_hooks/code/test_quality.py`. Read repository policy through `load_config` at `pipelines_hooks/core/config.py:91`; publish the CLI options with the existing R021 hook and CI integration. Use the declared test runner with argument arrays in isolated fixture trees; never alter the caller tree. No production caller reaches this outcome checker today. | Run `test_outcome_checker_wiring` in `tests/hooks/test_test_quality_outcomes.py`. Assert the published CLI invokes the configured runner, validates its receipts and includes outcome findings in its exit code.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 153
    },
    {
      "id": "PIPE-PAGES-R021.16",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** A test lacking an applicable outcome contract or surviving a valid counterexample fails with `outcome-not-observed`. Return `CannotRun` and exit 2 for unsupported assertion adapters, stale receipts, skipped or uncollected cases, unavailable runners or exceeded time limits. A counterexample that fails during import, setup or unrelated assertions is unchecked, not a proof. Explicitly justified not-applicable categories remain visible; an all-empty contract cannot pass. | Run `test_outcome_proof_refusals` in `tests/hooks/test_test_quality_outcomes.py`. Missing contracts and surviving counterexamples exit 1; stale, skipped, setup-failing and timed-out proofs exit 2.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 154
    },
    {
      "id": "PIPE-PAGES-R021.17",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit test and subject IDs, applicable outcome kinds, expected predicates, baseline and counterexample verdicts, assertion locations, source/test/policy digests and refusals. Separate static findings from measured runtime proof. Use R020 located evidence; record bounded execution scope and remaining unmeasured behavior. A passing proof covers only its declared observables and counterexamples, never all possible semantics. | Run `test_outcome_evidence` in `tests/hooks/test_test_quality_outcomes.py`. Assert distinct static/runtime records and digest-bound receipts; never report coverage or assertion count as outcome proof.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 155
    },
    {
      "id": "PIPE-PAGES-R021.18",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Run entry point `pipelines-hook test-quality --root <fixture>` in `tests/hooks/test_test_quality_outcomes.py` with a real fixture command that returns a value, raises a typed error and writes a temporary state file. Exact return, exception and before/after state assertions pass their baseline and fail declared wrong outcomes. A passing test that ignores the command result, a constant assertion and an unrelated assertion each fail admission. A skipped case or counterexample setup failure exits 2. Preserve R021 coverage and handoff prerequisites. | Run `test_outcome_quality_cli` in `tests/hooks/test_test_quality_outcomes.py`. Assert exit 0 for proved outcomes, exit 1 for missing observation and exit 2 for unchecked proof through the real CLI and runner.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 156
    },
    {
      "id": "PIPE-PAGES-R021.19",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add CodeQualityPolicy and AnalyzerInvocation in new pipelines_hooks/code/lint_type.py. Declare supported language profile, complete first-party source/test roots, pinned linter/import-order/type tools, effective configurations and invocation budgets. Initial Python profile uses Ruff lint/import-order diagnostics and mypy type diagnostics through versioned adapters. | Run `test_lint_type_policy_model` in `tests/hooks/test_lint_type_policy.py`. Reject unpinned tools, missing phases and scope omissions.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 157
    },
    {
      "id": "PIPE-PAGES-R021.20",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Run all three required phases on every tracked first-party Python source and test in the selected snapshot. Require zero findings with zero exceptions: no baseline, per-file ignore, inline noqa/type-ignore, disabled required rule or skip may hide a finding. Detect effective config and invocation suppression. This policy governs these code checks; retain PIPE-CONNSPEC-R007 historical prose exemptions and existing separate gate policies. | Run `test_lint_type_policy_behavior` in `tests/hooks/test_lint_type_policy.py`. Independent lint, import-order, type and suppression fixtures fail; a clean supported project passes.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 158
    },
    {
      "id": "PIPE-PAGES-R021.21",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Register lint-type in cli.py:13 and publish shared/self-run hooks consumed by .github/workflows/ci.yml:86. New lint_type.main launches locked tool argument arrays on a materialized disposable Git snapshot; reuse core/comparison.py:53 and core/gitenv.py:81. The current .config/pre-commit.yaml:30 runs pytest, not this combined analyzer path. Import-cycle and test-quality checks do not substitute for any required phase. | Run `test_lint_type_policy_wiring` in `tests/hooks/test_lint_type_policy.py`. Configured pre-commit calls all three real tool phases and the shared report adapter.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 159
    },
    {
      "id": "PIPE-PAGES-R021.22",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** A finding or suppression exits 1. Missing tools, unsupported source languages, incomplete scope, version mismatch, timeout, malformed output or unresolvable tool configuration is CannotRun exit 2, locally and in CI. No tool installation, autofix, network lookup or narrowed fallback occurs during checking. | Run `test_lint_type_policy_refusal` in `tests/hooks/test_lint_type_policy.py`. Unavailable type checker and an unsupported declared language must not return a clean verdict.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 160
    },
    {
      "id": "PIPE-PAGES-R021.23",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit tool versions, exact argument arrays, effective config/source digests, full checked file set, phase outcomes and located diagnostics. Preserve findings from all completed phases when another cannot run. Record configured scope and any unsupported files explicitly. | Run `test_lint_type_policy_evidence` in `tests/hooks/test_lint_type_policy.py`. Prove all three phases ran against identical source bytes and each diagnostic retains its original rule ID.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 161
    },
    {
      "id": "PIPE-PAGES-R021.24",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The entry point is the published CLI and configured hook. Use pipelines-hook lint-type and installed pre-commit on a real Git repository with locked real analyzers. Stage separate unused-import, import-order and type-assignment errors; each must fail at its actual rule/location. Try inline and configuration suppressions, then a clean repair. An unstaged repair cannot hide indexed defects. | Run `test_lint_type_policy_cli` in `tests/hooks/test_lint_type_policy.py`. Assert real analyzer results, zero-exception enforcement, snapshot isolation and no autofix/network writes.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 162
    },
    {
      "id": "PIPE-PAGES-R021.25",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add AnalyzerHealthPolicy and HealthSummary in new pipelines_hooks/code/repository_validation.py using R020 ValidationReport. Scored categories are dead code, secrets, dependency risk, complexity hotspots and untested surfaces. Required report categories also include lint, import-order and type; they affect verdict and fix priority but are excluded from the health arithmetic. Each adapter declares version, scope, rules, severity mapping, requiredness and evidence kind; policy gives positive integer weights to scored categories and declares severity penalties. | Run `test_analyzer_health_model` in `tests/hooks/test_analyzer_health.py`. Accept the five scored and three required unscored categories; reject unknown categories and invalid weights or snapshots.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 163
    },
    {
      "id": "PIPE-PAGES-R021.26",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Aggregate existing measured analyzer results into one deterministic 0\u2013100 health score and prioritized fix list. Deduplicate by repository/category/rule/path/location/evidence identity. Sort fixes by blocking status, severity, category, path, line and rule. A score cannot override a required failure, including lint, import-order or type; missing required code phases yield exit 2 even with complete health-category measurements. Any unchecked scored category makes the authoritative score unavailable; retain partial measurements with coverage indicators. | Run `test_analyzer_health_behavior` in `tests/hooks/test_analyzer_health.py`. Stable permutations yield identical score/order; missing categories cannot inflate health.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 164
    },
    {
      "id": "PIPE-PAGES-R021.27",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Register repository-validation in cli.py:13, with shared hook/catalogue/self-run CI configuration. Adapt supply_chain/gate.py:58 findings and complexity/census.py:main measurements; reuse the planned R021 coverage/test-quality receipts and R020 evidence validator. Add a pinned dead-code adapter where absent. Preserve existing gate verdicts and local Unavailable semantics, but record skips structurally before cli.py:59 could turn them into exit 0. Create the aggregate call from repository_validation.main to lint_type.analyze(snapshot, policy), the structured runner also used by lint_type.main. Collect all three phase results before reporting or computing the exit code; do not re-run or scrape the standalone CLI. No aggregate health caller exists today. | Run `test_analyzer_health_wiring` in `tests/hooks/test_analyzer_health.py`. The aggregate calls the real structured lint-type runner once and exports every phase with existing health adapters.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 165
    },
    {
      "id": "PIPE-PAGES-R021.28",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Required analyzer findings fail with exit 1; missing required analyzers, stale receipts, unknown severity, malformed results or mismatched scope raise CannotRun exit 2. Missing optional adapters are explicit skips and cannot count as healthy. Reject unsupported dependency-risk coverage instead of treating dependency-format checks as vulnerability proof. Never copy an external product score, baseline or suppression policy. | Run `test_analyzer_health_refusal` in `tests/hooks/test_analyzer_health.py`. A clean score cannot mask a secret finding, skipped required adapter or stale coverage receipt.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 166
    },
    {
      "id": "PIPE-PAGES-R021.29",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit counts for both scored and unscored categories, per-finding normalized severity with original rule, score policy/version, arithmetic inputs, checked coverage and ordered repair suggestions. Mark lint/import-order/type as required and unscored; their failures cannot disappear from the report or final verdict. Redact secret values while retaining exact safe locations and evidence digests. Distinguish dead-code candidates from proven unreachable code and measured test coverage from proof of semantic correctness. | Run `test_analyzer_health_evidence` in `tests/hooks/test_analyzer_health.py`. Recompute health from only scored categories; retain required lint/import/type verdicts, priority and evidence.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 167
    },
    {
      "id": "PIPE-PAGES-R021.30",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The entry point is the published CLI and configured hook. Run repository-validation through the installed CLI and configured pre-commit on disposable Git fixtures using real pinned analyzers. Include an unused symbol, dummy secret-shaped fixture token, dependency-risk receipt, complexity hotspot and untested function. Also introduce and repair isolated real lint/import-order/type defects through the aggregate. Export/deserialise mixed results, assert their exact category/rule and exit 1 despite unchanged health score, then repair to exit 0. Preserve deterministic score changes and fix priority for scored-category defects. | Run `test_analyzer_health_cli` in `tests/hooks/test_analyzer_health.py`. Assert real aggregate lint/import/type reachability, failing-to-repaired verdicts, stable health score and required-skip exit 2.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 168
    },
    {
      "id": "PIPE-PAGES-R022",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Scheduled mutation testing reports test gaps",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Scheduled mutation testing reports test gaps.** Rollup of the children below. A scheduled run mutates core modules, and each surviving mutation is reported as a test gap with its module and line. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 169
    },
    {
      "id": "PIPE-PAGES-R022.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add frozen dataclasses `MutationPolicy` (modules, schedule) and `SurvivingMutation` (module, line, operator) to `pipelines_hooks/code/mutation_gaps.py`. The default `modules` value is `pipelines_hooks/core`. | Run `test_policy_defaults` in `tests/hooks/test_mutation_gaps.py` expects the default module list.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 170
    },
    {
      "id": "PIPE-PAGES-R022.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Add `survivors(policy, runner)` to `pipelines_hooks/code/mutation_gaps.py`. It returns one `SurvivingMutation` per mutant the tests did not kill and none for killed mutants. The runner is a replaceable default. | Run `test_only_survivors_are_reported` in `tests/hooks/test_mutation_gaps.py` expects survivors only.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 171
    },
    {
      "id": "PIPE-PAGES-R022.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** This row creates the call site. Add `mutation-gaps` to `GATES` at `pipelines_hooks/cli.py:33`. Add `.github/workflows/mutation.yml` with a weekly schedule that runs `pipelines-hook mutation-gaps`. `run_gate` at `pipelines_hooks/cli.py:59` is the caller. | Run `test_mutation_workflow_runs_gate` in `tests/hooks/test_mutation_gaps.py` expects the cron entry and the gate command.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 172
    },
    {
      "id": "PIPE-PAGES-R022.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** When the runner is absent, `main` raises `Unavailable`, which `run_gate` at `pipelines_hooks/cli.py:66` fails closed in CI. A module with no tests yields the finding `no-tests-for-module`. | Run `test_absent_runner_fails_closed_in_ci` in `tests/hooks/test_mutation_gaps.py` expects exit 2 under `CI=1`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 173
    },
    {
      "id": "PIPE-PAGES-R022.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** The report prints one line `module:line operator` per survivor and one `module: killed K, survived S` line per module. | Run `test_mutation_report_lines` in `tests/hooks/test_mutation_gaps.py` expects the stated lines.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 174
    },
    {
      "id": "PIPE-PAGES-R022.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The entry point is `pipelines-hook mutation-gaps` through `main` in `pipelines_hooks/cli.py:79`. A fixture module with one untested branch must exit 1 and print that module and line. | Run `test_mutation_gaps_hook_reports_untested_branch` in `tests/hooks/test_mutation_gaps_hook.py` expects exit 1 and the line.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 175
    },
    {
      "id": "PIPE-PAGES-R023",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Deterministic skill quality grading",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Deterministic skill quality grading.** Rollup of the children below. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 176
    },
    {
      "id": "PIPE-PAGES-R023.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "68a712a91899",
        "ebef404d2f75"
      ],
      "verified_by": [
        "tests/hooks/test_skill_grade_hook.py:209",
        "tests/hooks/test_skill_grade_hook.py:54"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add `SkillGradePolicy` and `SkillGradeReport` in `pipelines_hooks/docs/skill_grade.py`. Policy fields are schema version, criterion weights and minimum grade. Reports bind repository-relative skill document path and source digest to criterion scores. Link context keeps the containing document directory separate from the repository containment root. Criteria are frontmatter, description, structure, links and file metadata. | Run `test_skill_grade_model` in `tests/hooks/test_skill_grade_hook.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 177
    },
    {
      "id": "PIPE-PAGES-R023.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "68a712a91899",
        "ebef404d2f75"
      ],
      "verified_by": [
        "tests/hooks/test_skill_grade_hook.py:294",
        "tests/hooks/test_skill_grade_hook.py:79"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** The `skill-grade-v1` default assigns 20 points to each criterion and requires 80 of 100. Check required frontmatter keys, a nonempty description naming purpose and use conditions, required body sections, resolved local links and safe UTF-8 file metadata. Resolve local links from the containing skill document directory. Check decoded, normalized targets against the repository root after symlink resolution; allow parent-relative targets that remain inside it. Invalid frontmatter or unsafe paths fail regardless of score. All heuristics and weights are versioned, deterministic and reviewable. | Run `test_skill_grade_criteria` in `tests/hooks/test_skill_grade_hook.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 178
    },
    {
      "id": "PIPE-PAGES-R023.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4061148a6359",
        "68a712a91899",
        "ebef404d2f75"
      ],
      "verified_by": [
        "tests/hooks/test_skill_grade_hook.py:112"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Create `skill-grade` in `GATES` at `pipelines_hooks/cli.py:14`; `run_gate` at `pipelines_hooks/cli.py:59` calls its `main`. Publish it in `.pre-commit-hooks.yaml`, the hook catalogue and `.config/pre-commit.yaml`, consumed by `.github/workflows/ci.yml:86`. Adapt local link checks at `pipelines_hooks/docs/public_surface_links.py:29` to accept a document base independently of the repository root. Preserve root-level README behavior. No production caller reaches the grader today. | Run `test_skill_grade_registration` in `tests/hooks/test_skill_grade_hook.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 179
    },
    {
      "id": "PIPE-PAGES-R023.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "68a712a91899",
        "ebef404d2f75"
      ],
      "verified_by": [
        "tests/hooks/test_skill_grade_hook.py:118",
        "tests/hooks/test_skill_grade_hook.py:249"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Malformed policy, unreadable files or unsupported schema raise `CannotRun`, giving exit 2. A grade below minimum or a hard criterion failure gives exit 1. An empty declared skill set is reported as not applicable, never as a measured passing grade. Out-of-repository document bases, out-of-repository traversal and symlink escapes fail as unsafe paths. External links remain explicitly unchecked by this offline gate. | Run `test_skill_grade_refusals` in `tests/hooks/test_skill_grade_hook.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 180
    },
    {
      "id": "PIPE-PAGES-R023.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "68a712a91899",
        "ebef404d2f75"
      ],
      "verified_by": [
        "tests/hooks/test_skill_grade_hook.py:158",
        "tests/hooks/test_skill_grade_hook.py:250",
        "tests/hooks/test_skill_grade_hook.py:295"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit policy and source digests, each criterion score, measured finding locations, total grade and threshold. Link findings include the source document and repository-relative target or typed refusal. Use the R020 evidence validator. A host may consume this receipt for admission; the gate does not install skills or approve deployment. | Run `test_skill_grade_evidence` in `tests/hooks/test_skill_grade_hook.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 181
    },
    {
      "id": "PIPE-PAGES-R023.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "68a712a91899",
        "ebef404d2f75"
      ],
      "verified_by": [
        "tests/hooks/test_skill_grade_hook.py:177",
        "tests/hooks/test_skill_grade_hook.py:195",
        "tests/hooks/test_skill_grade_hook.py:210"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Use entry point `pipelines-hook skill-grade --root <fixture>` in `tests/hooks/test_skill_grade_hook.py`. A valid skill passes. Broken frontmatter, vague description, missing sections, a broken link and unsafe metadata each produce the matching criterion result. A nested skill with a sibling link and an in-repository parent link passes; missing targets, out-of-repository traversal and escaping symlinks fail. Preserve root README link behavior. Below-threshold and hard failures exit 1; malformed policy exits 2. | Run `test_skill_grade_cli` and `test_nested_skill_links_cli` in `tests/hooks/test_skill_grade_hook.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 182
    },
    {
      "id": "PIPE-PAGES-R023.7",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Extend SkillGradePolicy with a declared external rule-pack inventory: pack ID/version/content digest, origin credit, rule IDs, supported deterministic predicate adapters, target scope, weight and hard-failure flag. Every applied finding identifies both pack and rule. Rule content is data, never executable instructions or downloaded code. | Run `test_external_grade_rules_model` in `tests/hooks/test_external_grade_rules.py`. Reject duplicate rule IDs, unsupported predicate adapters and unpinned rule packs.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 183
    },
    {
      "id": "PIPE-PAGES-R023.8",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Combine reviewed external predicates with local grading criteria through an explicit versioned mapping. Preserve existing mandatory frontmatter/path checks and the default 80/100 threshold; default external rules add diagnostics without changing grade. Any weighted replacement must declare its complete normalized 100-point policy and cannot remove mandatory hard failures. Apply only declared rules and report conflicts; do not infer rules from arbitrary prose. | Run `test_external_grade_rules_behavior` in `tests/hooks/test_external_grade_rules.py`. An applied external rule is identifiable; a conflicting or unmapped heuristic cannot silently alter grade.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 184
    },
    {
      "id": "PIPE-PAGES-R023.9",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend planned docs/skill_grade.py grading before its report export through cli.py:13 skill-grade registration and run_gate at line 59. Reuse R020 located evidence and report serialization. Load pinned rule packs from the checked snapshot via core/gitenv.py:81 and strict config schema at core/config.py:21. Neither skill grading nor external-rule incorporation has a production caller today. | Run `test_external_grade_rules_wiring` in `tests/hooks/test_external_grade_rules.py`. The real skill-grade CLI loads the declared pack and emits its exact rule ID in JSON and Markdown.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 185
    },
    {
      "id": "PIPE-PAGES-R023.10",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Unknown rules, pack digest mismatch, conflicting weights, unsupported predicates, unsafe paths or missing provenance raise CannotRun exit 2. A configured hard-rule violation exits 1. Inapplicable scope is an explicit reasoned skip. Missing rule books are not silently replaced with model guesses, fetched online or executed. | Run `test_external_grade_rules_refusal` in `tests/hooks/test_external_grade_rules.py`. Tampered packs and unsupported prose-only rules refuse; applicable hard failures retain exit 1.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 186
    },
    {
      "id": "PIPE-PAGES-R023.11",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit pack credit/identity/digest, external rule ID, local criterion mapping, source location, predicate measurements and score contribution or diagnostic disposition for each finding. Record every declared but skipped rule and reason; keep external credit distinct from an arXiv research citation. | Run `test_external_grade_rules_evidence` in `tests/hooks/test_external_grade_rules.py`. Round-trip per-finding rule lineage and prove unchanged baseline grading when packs are diagnostic only.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 187
    },
    {
      "id": "PIPE-PAGES-R023.12",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The entry point is the published CLI and configured hook. Through pipelines-hook skill-grade and configured pre-commit, grade a real nested skill in a temporary Git repository with a pinned rule-pack fixture and a deterministic forbidden-heading predicate with hard-failure enabled. A failing heading records the external rule and correct exit; repair passes. Tamper with pack bytes, use an unknown adapter and request an inapplicable rule; assert refusal or explicit skip without weakening local mandatory criteria. | Run `test_external_grade_rules_cli` in `tests/hooks/test_external_grade_rules.py`. Assert installed CLI/hook integration, exact external rule evidence and stable serialized grading.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 188
    },
    {
      "id": "PIPE-PAGES-R024",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Located structural similarity and extraction guidance",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "59dde3729f84"
      ],
      "verified_by": [
        "tests/hooks/test_similarity_guidance_hook.py:104",
        "tests/hooks/test_similarity_guidance_hook.py:120",
        "tests/hooks/test_similarity_guidance_hook.py:134",
        "tests/hooks/test_similarity_guidance_hook.py:149",
        "tests/hooks/test_similarity_guidance_hook.py:187"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Located structural similarity and extraction guidance.** Rollup of the children below. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 189
    },
    {
      "id": "PIPE-PAGES-R024.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "59dde3729f84"
      ],
      "verified_by": [
        "tests/hooks/test_similarity_guidance_hook.py:104"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Reuse the validated clone fields at `pipelines_hooks/clones/dupehound_report.py:66`: both paths, lines, names and finite similarity. Add diagnostic threshold, enforcement threshold, source digests and extraction advice to the report. Rust and Python retain the shared supported-source and exclusion contract. | Run `test_similarity_report_model` in `tests/hooks/test_similarity_guidance_hook.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 190
    },
    {
      "id": "PIPE-PAGES-R024.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "59dde3729f84"
      ],
      "verified_by": [
        "tests/hooks/test_similarity_guidance_hook.py:120"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Keep the reviewed enforcement default at `DUPEHOUND_THRESHOLD` in `pipelines_hooks/clones/contract.py:14` (0.85). Add named diagnostic default 0.80, inclusive: report qualifying pairs with both locations and suggest shared-function extraction. Scores below enforcement remain diagnostic. Advice must not rewrite code or imply that extraction is safe without review. | Run `test_similarity_threshold_boundaries` in `tests/hooks/test_similarity_guidance_hook.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 191
    },
    {
      "id": "PIPE-PAGES-R024.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "59dde3729f84"
      ],
      "verified_by": [
        "tests/hooks/test_similarity_guidance_hook.py:134"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend `main` at `pipelines_hooks/clones/dupehound_gate.py:46`, reached by `pipelines-hook dupehound-changed` through `pipelines_hooks/cli.py:59`. Reuse `command` at `pipelines_hooks/clones/dupehound.py:64` and `verdict` at `pipelines_hooks/clones/dupehound_gate.py:28`. Scan at the diagnostic floor and partition reports before enforcing the existing threshold and reviewed register. Detection is reachable today; diagnostic partition and extraction advice have no production caller today. | Run `test_similarity_reporting_wiring` in `tests/hooks/test_similarity_guidance_hook.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 192
    },
    {
      "id": "PIPE-PAGES-R024.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "59dde3729f84"
      ],
      "verified_by": [
        "tests/hooks/test_similarity_guidance_hook.py:149"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Reuse report validation and `CannotRun` for malformed scores, unsafe paths or scanner failure. Missing scanners remain visibly skipped locally and exit 2 in CI. Reject invalid threshold ordering. Preserve the digest-bound distinct-pair review and rot behavior; a diagnostic setting cannot weaken enforcement. | Run `test_similarity_refusals` in `tests/hooks/test_similarity_guidance_hook.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 193
    },
    {
      "id": "PIPE-PAGES-R024.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "59dde3729f84"
      ],
      "verified_by": [
        "tests/hooks/test_similarity_guidance_hook.py:187"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** For each pair emit both paths and lines, source digests, scanner identity, measured similarity, both thresholds, verdict and extraction suggestion. Record exclusions and reviewed-distinct disposition. Never describe no changed supported source as a full-tree clean scan. | Run `test_similarity_evidence` in `tests/hooks/test_similarity_guidance_hook.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 194
    },
    {
      "id": "PIPE-PAGES-R024.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "59dde3729f84"
      ],
      "verified_by": [
        "tests/hooks/test_similarity_guidance_hook.py:221",
        "tests/hooks/test_similarity_guidance_hook.py:281"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Use entry point `pipelines-hook dupehound-changed --root <fixture> --base-ref <base>` in `tests/hooks/test_similarity_guidance_hook.py`. Commit Rust and Python clone fixtures. Run the pinned scanner through the production CLI, assert located guidance at 0.80 and failure at 0.85. A distinct pair passes; malformed scanner output fails closed in CI. | Run `test_similarity_guidance_cli` in `tests/hooks/test_similarity_guidance_hook.py`; assert the stated result.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 195
    },
    {
      "id": "PIPE-PAGES-R020.73",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add strict Pydantic UserStory, AcceptanceCriteria and Task models in proposed pipelines_hooks/specs/artifacts.py. Schema version 1 must reject extra fields. Each artifact must carry an ID, owner, source references and requirement IDs. Stories contain actor, goal and benefit. Criteria contain observable predicates and proof IDs. Tasks contain producer prerequisites, target paths and proof IDs. | Run `test_spec_artifacts_model` in `tests/hooks/test_spec_artifacts.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 196
    },
    {
      "id": "PIPE-PAGES-R020.74",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** The artifact adapter must emit UTF-8 JSON with schema_version and all three artifact arrays. It must validate unique IDs, typed references and acyclic task prerequisites before rendering the six standard spec files. It must preserve requirement IDs and source provenance across serialization. Durable graph facts remain engine-owned. | Run `test_spec_artifacts_behavior` in `tests/hooks/test_spec_artifacts.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 197
    },
    {
      "id": "PIPE-PAGES-R020.75",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Add a spec-artifacts entry to pipelines_hooks/cli.py:13, dispatched through run_gate at line 59. Proposed artifacts.main must validate generator-skill output before the existing specs/generator.py:93 status consumer reads rendered requirements. Generator skills must invoke this adapter with their output path; direct unvalidated output cannot receive a compatibility receipt. | Run `test_spec_artifacts_wiring` in `tests/hooks/test_spec_artifacts.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 198
    },
    {
      "id": "PIPE-PAGES-R020.76",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** The adapter must refuse unknown schema versions, extra fields, duplicate IDs, missing references and unsafe output paths. Malformed artifacts exit 1; unavailable schema authority exits 2. Checking must not overwrite existing spec sources or change delivery evidence. | Run `test_spec_artifacts_refusal` in `tests/hooks/test_spec_artifacts.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 199
    },
    {
      "id": "PIPE-PAGES-R020.77",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** The adapter must emit schema version and digest, source and output digests, artifact IDs and reference-validation results. A rendered artifact proves schema compatibility only. It must not imply implemented behavior, graph ingestion or runtime acceptance. | Run `test_spec_artifacts_evidence` in `tests/hooks/test_spec_artifacts.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 200
    },
    {
      "id": "PIPE-PAGES-R020.78",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The published spec-artifacts CLI must consume actual generator-skill output in a disposable repository. Deserialize, render, regenerate canonical status and round-trip every artifact field. Inject an unknown field, missing criterion reference and cyclic task dependency independently. Each invalid output must refuse before writing canonical files. | Run `test_spec_artifacts_cli` in `tests/hooks/test_spec_artifacts.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 201
    },
    {
      "id": "PIPE-PAGES-R012.8",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Define the external interchange format as spec-bundle/1 in proposed pipelines_hooks/specs/artifacts.py. A bundle must contain the six standard files within existing capability directories. Its manifest must bind UTF-8 encoding, schema version, canonical IDs, relative paths and source digests. Generated status remains machine-owned. | Run `test_spec_bundle_compatibility_model` in `tests/hooks/test_spec_bundle_compatibility.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 202
    },
    {
      "id": "PIPE-PAGES-R012.9",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** The compatibility adapter must accept conforming spec-bundle/1 files unchanged, including bytes and canonical IDs. It must extend the matching capability directory for a feature. It must refuse a second directory for an already-owned capability. Other external formats remain unsupported until a versioned adapter defines them. | Run `test_spec_bundle_compatibility_behavior` in `tests/hooks/test_spec_bundle_compatibility.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 203
    },
    {
      "id": "PIPE-PAGES-R012.10",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend proposed spec-artifacts at pipelines_hooks/cli.py:13 through run_gate at line 59. Validate the bundle before specs/generator.py:93 and dashboard source ingestion. EG-ORCH-VOCAB-R012 owns graph ingestion. Its owner adapter must consume the identical bundle bytes; the Pages renderer must not invent graph compatibility. | Run `test_spec_bundle_compatibility_wiring` in `tests/hooks/test_spec_bundle_compatibility.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 204
    },
    {
      "id": "PIPE-PAGES-R012.11",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Unknown format versions, escaping paths, missing files, ambiguous ownership or altered input bytes must refuse compatibility. An unavailable external consumer must produce unchecked evidence and exit 2. A Markdown extension alone must not establish supported semantics. | Run `test_spec_bundle_compatibility_refusal` in `tests/hooks/test_spec_bundle_compatibility.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 205
    },
    {
      "id": "PIPE-PAGES-R012.12",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Record input and consumed-file digests, format version, owner mapping and consumer revision. Record canonical generation and graph ingestion separately. External tooling support means only the declared spec-bundle/1 contract, never unspecified compatibility with every generator. | Run `test_spec_bundle_compatibility_evidence` in `tests/hooks/test_spec_bundle_compatibility.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 206
    },
    {
      "id": "PIPE-PAGES-R012.13",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The spec-artifacts CLI must accept a real externally emitted spec-bundle/1 fixture without rewriting it. Canonical generation and the real owner ingestion adapter must read matching bytes. A feature targeting an existing capability must extend it. Unknown versions and duplicate capability directories must fail. | Run `test_spec_bundle_compatibility_cli` in `tests/hooks/test_spec_bundle_compatibility.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 207
    },
    {
      "id": "PIPE-PAGES-R021.31",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Extend proposed repository_validation.py with SkillDependencyAudit records. Each record binds skill path, snapshot digest, declared dependency groups, resolved versions and advisory snapshot. A proposed version-update request must carry old and target versions, finding IDs and provenance. EG-SUPPLY-VOCAB-R002 owns durable vocabulary; SDK-GOVERNED-WRITEBACK-R001 owns authorization. | Run `test_skill_dependency_audit_model` in `tests/hooks/test_skill_dependency_audit.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 208
    },
    {
      "id": "PIPE-PAGES-R021.32",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** The audit must enumerate every dependency declared by the selected skill snapshot. It must invoke the dependency-risk adapter once per resolved inventory. Vulnerabilities must yield graph-stored update proposals through the owner connector. The audit path must never install packages, change locks or apply its own proposal. | Run `test_skill_dependency_audit_behavior` in `tests/hooks/test_skill_dependency_audit.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 209
    },
    {
      "id": "PIPE-PAGES-R021.33",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend the planned repository-validation registration at pipelines_hooks/cli.py:13 and run_gate at line 59. Proposed repository_validation.main must pass the skill inventory to the supply-chain adapter beside supply_chain/gate.py:58. The owner connector must return a durable proposal identity before approval consumers receive it. | Run `test_skill_dependency_audit_wiring` in `tests/hooks/test_skill_dependency_audit.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 210
    },
    {
      "id": "PIPE-PAGES-R021.34",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing dependency declarations, unresolved versions, stale advisory evidence or unavailable owner storage must exit 2. A vulnerability must remain a finding even when proposal storage fails. Installation requests on the audit path must fail. A separate authorized consumer must bind approval to the exact proposal and artifact digest. | Run `test_skill_dependency_audit_refusal` in `tests/hooks/test_skill_dependency_audit.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 211
    },
    {
      "id": "PIPE-PAGES-R021.35",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit skill and inventory digests, advisory identity, affected dependency and version, proposal identity and storage receipt. Preserve approval state separately from the audit result. Record installation effects as zero for this path; a suggested upgrade must not count as applied remediation. | Run `test_skill_dependency_audit_evidence` in `tests/hooks/test_skill_dependency_audit.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 212
    },
    {
      "id": "PIPE-PAGES-R021.36",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The repository-validation CLI must audit a vulnerable fixture skill against pinned advisory evidence. The real owner storage adapter must persist a proposal, verified through independent readback. Observe zero package or lock changes before approval. A stale approval or direct-install attempt must refuse without effects. | Run `test_skill_dependency_audit_cli` in `tests/hooks/test_skill_dependency_audit.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 213
    },
    {
      "id": "PIPE-PAGES-R023.13",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Extend the proposed ValidationReport with a skill inventory and one result per discovered skill. Each result must bind snapshot, skill digest, grade policy, rule lineage, findings and skip reasons. Discover tracked SKILL.md files under every declared skill root; an omitted root must remain a scope error. | Run `test_aggregate_skill_grade_model` in `tests/hooks/test_aggregate_skill_grade.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 214
    },
    {
      "id": "PIPE-PAGES-R023.14",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** One repository-validation invocation must discover and grade every skill in the selected snapshot. It must preserve local criteria and external rule-pack outcomes from R023. Aggregate failures must propagate regardless of health score. An empty inventory must report non-applicability with its checked roots, never a passing grade. | Run `test_aggregate_skill_grade_behavior` in `tests/hooks/test_aggregate_skill_grade.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 215
    },
    {
      "id": "PIPE-PAGES-R023.15",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend planned repository_validation.main to call a structured skill_grade.grade(snapshot, policy) adapter once before its final verdict. Register through pipelines_hooks/cli.py:13 and run_gate at line 59. Reuse the standalone grader contract; neither proposed module exists on this source revision. | Run `test_aggregate_skill_grade_wiring` in `tests/hooks/test_aggregate_skill_grade.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 216
    },
    {
      "id": "PIPE-PAGES-R023.16",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** A hard grading failure or below-threshold grade must produce exit 1. Missing required grader, stale source binding, unsupported rule or incomplete discovery must produce exit 2. Optional skips must remain visible and must not contribute healthy measurements. | Run `test_aggregate_skill_grade_refusal` in `tests/hooks/test_aggregate_skill_grade.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 217
    },
    {
      "id": "PIPE-PAGES-R023.17",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** JSON and Markdown reports must retain every skill, criterion score, external pack and rule ID, finding location and skip. Bind all aggregate results to the same source digest. Report serialization must preserve the standalone grading verdict without recalculation. | Run `test_aggregate_skill_grade_evidence` in `tests/hooks/test_aggregate_skill_grade.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 218
    },
    {
      "id": "PIPE-PAGES-R023.18",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Run the actual repository-validation CLI and installed hook on a repository containing two nested skills. A failing external rule must appear with lineage and fail the aggregate. Repair must pass. Missing grader and escaping skill roots must refuse; an empty declared inventory must remain explicit. | Run `test_aggregate_skill_grade_cli` in `tests/hooks/test_aggregate_skill_grade.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 219
    },
    {
      "id": "PIPE-PAGES-R012.14",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add a versioned capability inventory adapter beside pipelines_hooks/specs/bindings.py. Canonical capability IDs must resolve to the engine-owned registry export. Each binding must identify repository, path, qualified symbol or collected test/tool identity and source digest. Specification requirement IDs remain distinct from capability IDs. | Run `test_capability_inventory_model` in `tests/hooks/test_capability_inventory.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 220
    },
    {
      "id": "PIPE-PAGES-R012.15",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Inventory every first-party function, collected test and registered MCP implementation in declared project roots. Initial language adapters must cover Python AST and Rust syntax, including nested functions and methods. Each item must carry a valid capability binding. Emit function-test-tool coverage for every capability, including missing sets. | Run `test_capability_inventory_behavior` in `tests/hooks/test_capability_inventory.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 221
    },
    {
      "id": "PIPE-PAGES-R012.16",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Create a capability-coverage registration at pipelines_hooks/cli.py:13 and dispatch through run_gate at line 59. Reuse specs/bindings.py test discovery and owner-exported MCP inventories. Add static source adapters before the verdict. Dashboard source declarations must consume the resulting receipt without claiming exhaustive coverage themselves. | Run `test_capability_inventory_wiring` in `tests/hooks/test_capability_inventory.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 222
    },
    {
      "id": "PIPE-PAGES-R012.17",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing or invalid IDs and mismatched source bindings must fail with item locations. Unsupported languages, unresolved generated sources, missing registry exports or incomplete tool inventories must exit 2. The adapter must not mint replacement capability IDs or infer identity from shared code. | Run `test_capability_inventory_refusal` in `tests/hooks/test_capability_inventory.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 223
    },
    {
      "id": "PIPE-PAGES-R012.18",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Report complete discovered counts and identities for functions, tests and tools. Bind the registry revision, source snapshot and adapter versions. Publish unmatched items and per-capability three-way counts. Zero tools must be an explicit project scope fact, never an omitted column. | Run `test_capability_inventory_evidence` in `tests/hooks/test_capability_inventory.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 224
    },
    {
      "id": "PIPE-PAGES-R012.19",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The published capability-coverage CLI must scan real Python and Rust fixture functions, collected tests and registered MCP tools. Remove one function ID and one tool ID independently; each must fail with exact identity. Repair must pass. An unsupported language must refuse exhaustive coverage. | Run `test_capability_inventory_cli` in `tests/hooks/test_capability_inventory.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 225
    },
    {
      "id": "PIPE-PAGES-R012.20",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Define stable capability ID authority and exhaustive language/tool inventory with source-binding semantics. | Run `test_eg7_capability_authority_model` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 226
    },
    {
      "id": "PIPE-PAGES-R012.21",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Every function, test and MCP implementation carries valid capability ID or fails coverage gate. | Run `test_eg7_complete_binding_coverage` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 227
    },
    {
      "id": "PIPE-PAGES-R012.22",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Wire missing-ID refusal in shared gate refusing absent/invalid capability identities. | Run `test_eg7_binding_gate_wiring` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 228
    },
    {
      "id": "PIPE-PAGES-R012.23",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing or invalid capability ID prevents three-way coverage claim, exit 2 for unsupported language adapters. | Run `test_eg7_refusal_missing_identity` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 229
    },
    {
      "id": "PIPE-PAGES-R012.24",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Exhaustive language/tool inventory and three-way source/test/tool coverage proven per capability. | Run `test_eg7_coverage_evidence` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 230
    },
    {
      "id": "PIPE-PAGES-R012.25",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Remove one function ID from real fixture; published CLI exits 1 with missing identity. Repair passes. | Run `test_eg7_identity_enforcement_cli` in `tests/test_spec_dashboard_metadata.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 231
    },
    {
      "id": "PIPE-PAGES-R021.37",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "93cec20a4de6"
      ],
      "verified_by": [
        "tests/hooks/test_structural_limits.py:46"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Extend the existing KISS policy with explicit function-argument and try-body statement limits. Python arguments include positional-only, positional, keyword-only, variadic positional and variadic keyword parameters, including self and cls. Count direct statements in each try body; nested bodies are measured separately. Limits must be nonnegative integers. | Run `test_structural_limits_model` in `tests/hooks/test_structural_limits.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 232
    },
    {
      "id": "PIPE-PAGES-R021.38",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "93cec20a4de6"
      ],
      "verified_by": [
        "tests/hooks/test_structural_limits.py:71"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** The shared build check must fail when either measured count exceeds its configured limit. Equality must pass. Every finding must identify repository-relative path, qualified function, line, measured count and limit. Preserve existing positional-argument and complexity rules as separate predicates. | Run `test_structural_limits_behavior` in `tests/hooks/test_structural_limits.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 233
    },
    {
      "id": "PIPE-PAGES-R021.39",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend pipelines_hooks/kiss/census.py:31 for build enforcement and kiss/staged.py:50 for changed-source admission. Their existing callers are pipelines_hooks/cli.py:59. Arbora must configure both limits and invoke the shared check in its build. Unsupported scanner measurements require a versioned adapter, not guessed values. | Run `test_structural_limits_wiring` in `tests/hooks/test_structural_limits.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 234
    },
    {
      "id": "PIPE-PAGES-R021.40",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing limits in the adopted profile, invalid values or unsupported source measurement must exit 2. A count above either configured limit must exit 1. The checker must not truncate findings or treat an unavailable scanner as measured compliance. | Run `test_structural_limits_refusal` in `tests/hooks/test_structural_limits.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 235
    },
    {
      "id": "PIPE-PAGES-R021.41",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit scanner and policy digests, checked source inventory and one count per function and try body. Separate argument-count failures from try-body failures. Record Arbora consumer configuration and source revision in its adoption receipt. | Run `test_structural_limits_evidence` in `tests/hooks/test_structural_limits.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 236
    },
    {
      "id": "PIPE-PAGES-R021.42",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Run the installed shared CLI through the Arbora build fixture. Test exact-limit and limit-plus-one cases independently for both rules. Include keyword-only, variadic and nested-try cases. Both violations must name their functions and fail the build; repaired functions must pass. | Run `test_structural_limits_cli` in `tests/hooks/test_structural_limits.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 237
    },
    {
      "id": "PIPE-PAGES-R021.43",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add PathPortabilityPolicy in proposed pipelines_hooks/hygiene/path_portability.py. Version 1 covers every tracked package source path under declared build roots. Measure repository-relative paths after NFC normalization: at most 240 UTF-16 code units overall and 255 UTF-8 bytes per component. The overall limit reserves checkout-prefix headroom separately. | Run `test_source_path_portability_model` in `tests/hooks/test_source_path_portability.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 238
    },
    {
      "id": "PIPE-PAGES-R021.44",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Reject absolute paths, traversal, control characters, Windows-invalid characters, trailing spaces or periods and case-folded NFC collisions. Reject CON, PRN, AUX, NUL, COM1-COM9 and LPT1-LPT9, including extensions and case variants. Linux and macOS checks must reject NUL and slash inside components. Sources must never be silently renamed. | Run `test_source_path_portability_behavior` in `tests/hooks/test_source_path_portability.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 239
    },
    {
      "id": "PIPE-PAGES-R021.45",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Register source-path-portability at pipelines_hooks/cli.py:13 and dispatch through run_gate at line 59. Publish a shared pre-commit hook and invoke it before package builds. Inventory Git paths and declared package roots statically; artifact platform tags do not replace source-path validation. | Run `test_source_path_portability_wiring` in `tests/hooks/test_source_path_portability.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 240
    },
    {
      "id": "PIPE-PAGES-R021.46",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** A forbidden name, collision or exceeded bound must exit 1 with the original path and violated rule. Undeclared build roots, undecodable paths or unsupported policy versions must exit 2. Absolute installation-path support requires a separately declared prefix budget; relative checks must not imply arbitrary checkout support. | Run `test_source_path_portability_refusal` in `tests/hooks/test_source_path_portability.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 241
    },
    {
      "id": "PIPE-PAGES-R021.47",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Report policy version, source snapshot, package roots, normalized comparison keys and measured lengths. Retain original path spelling. Report every collision participant and supported platform predicate. Never claim compatibility outside declared roots or prefix assumptions. | Run `test_source_path_portability_evidence` in `tests/hooks/test_source_path_portability.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 242
    },
    {
      "id": "PIPE-PAGES-R021.48",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The published CLI and installed build hook must inspect tracked fixture paths containing reserved names, normalization collisions and over-limit lengths. Each defect must block before building. Exact-boundary legal paths must pass. A check must leave original source paths and bytes unchanged. | Run `test_source_path_portability_cli` in `tests/hooks/test_source_path_portability.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 243
    },
    {
      "id": "PIPE-PAGES-R021.49",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add CoverageClosurePolicy beside proposed code/test_quality.py. Reuse the project inventory and declare every first-party executable source root, runner argv, coverage adapter and timeout. A coverage receipt must bind source, test and policy digests to executable and uncovered line sets for each project. | Run `test_coverage_closure_model` in `tests/hooks/test_coverage_closure.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 244
    },
    {
      "id": "PIPE-PAGES-R021.50",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** A closure request must run the configured coverage producer for every declared project in disposable snapshots. Require zero uncovered executable lines and complete source inventory. Preserve the 80-percent default for ordinary threshold checks; it cannot satisfy closure. Outcome proofs under R021.13-R021.18 remain separate requirements. | Run `test_coverage_closure_behavior` in `tests/hooks/test_coverage_closure.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 245
    },
    {
      "id": "PIPE-PAGES-R021.51",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend the planned test-quality registration at pipelines_hooks/cli.py:13 and run_gate at line 59 with an explicit closure mode. Proposed test_quality.main must invoke the declared runner before evaluating closure. Reuse the existing outcome runner and coverage adapters rather than adding another project registry. | Run `test_coverage_closure_wiring` in `tests/hooks/test_coverage_closure.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 246
    },
    {
      "id": "PIPE-PAGES-R021.52",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Uncovered lines or omitted declared files must fail closure with exit 1. Missing runners, unsupported formats, skipped projects, stale digests or timeouts must exit 2. Generated-source exclusions require an explicit producer mapping; exclusions must not conceal first-party executable paths. | Run `test_coverage_closure_refusal` in `tests/hooks/test_coverage_closure.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 247
    },
    {
      "id": "PIPE-PAGES-R021.53",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit each project, every executable file, executable lines, uncovered lines, runner result and exact digests. Separate threshold result, closure result and semantic outcome proof. A zero-line project must explain its non-executable scope and cannot inflate another project coverage. | Run `test_coverage_closure_evidence` in `tests/hooks/test_coverage_closure.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 248
    },
    {
      "id": "PIPE-PAGES-R021.54",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Run the real test-quality closure CLI on two projects with a planted uncovered branch. The report must list its project, file and line and refuse closure. Add the test and pass. A stale report and skipped second project must refuse despite a high aggregate percentage. | Run `test_coverage_closure_cli` in `tests/hooks/test_coverage_closure.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 249
    },
    {
      "id": "PIPE-PAGES-R020.79",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Extend proposed hygiene/config_inventory.py with a validation behavior manifest. Pin the former central command repository, revision and entry point. Enumerate its validation and test behaviors, inputs, environment and expected exits. Map every behavior to a configured hook in every supported project. | Run `test_validation_behavior_inventory_model` in `tests/hooks/test_validation_behavior_inventory.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 250
    },
    {
      "id": "PIPE-PAGES-R020.80",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** The migration check must compare the complete historical behavior inventory with each project hook configuration. Every behavior needs positive and negative fixtures with matching observations. Intentional retirements require explicit owner decisions and remain visible; an absent mapping must not count as equivalent behavior. | Run `test_validation_behavior_inventory_behavior` in `tests/hooks/test_validation_behavior_inventory.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 251
    },
    {
      "id": "PIPE-PAGES-R020.81",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend the proposed config-inventory registration at pipelines_hooks/cli.py:13 through run_gate at line 59. Reuse the existing project inventory and configured hook parser. Execute the pinned baseline and consumer hooks in disposable trees. Connector spec-hook adoption alone must not establish complete validation coverage. | Run `test_validation_behavior_inventory_wiring` in `tests/hooks/test_validation_behavior_inventory.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 252
    },
    {
      "id": "PIPE-PAGES-R020.82",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing historical revision or unknown former command must exit 2 and leave migration unproved. Missing project mappings or changed observed verdicts must exit 1. Unsupported historical environments must remain unavailable evidence; the checker must not reconstruct behavior from recollection. | Run `test_validation_behavior_inventory_refusal` in `tests/hooks/test_validation_behavior_inventory.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 253
    },
    {
      "id": "PIPE-PAGES-R020.83",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit baseline revision and behavior IDs, complete project-hook mappings, fixture digests and compared outputs/exits. Preserve unknown historical scope explicitly. No historical baseline is supplied by this definition; runtime acceptance requires its independent recovery and pinning. | Run `test_validation_behavior_inventory_evidence` in `tests/hooks/test_validation_behavior_inventory.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 254
    },
    {
      "id": "PIPE-PAGES-R020.84",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The config-inventory CLI must compare a real pinned former command with installed hooks in two fixture projects. Remove one behavior mapping and plant one changed failure exit; both must fail. An unavailable baseline must exit 2, never produce a complete-migration receipt. | Run `test_validation_behavior_inventory_cli` in `tests/hooks/test_validation_behavior_inventory.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 255
    },
    {
      "id": "PIPE-PAGES-R021.55",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add UnitProfile beside proposed code/test_quality.py. Its project inventory must enumerate adapters, retrievers, servers, CLI modules and other declared unit categories. Each external database, API and client seam must name a deterministic double, fixed clock/random seed and expected contract. Integration profiles remain separate. | Run `test_offline_unit_profile_model` in `tests/hooks/test_offline_unit_profile.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 256
    },
    {
      "id": "PIPE-PAGES-R021.56",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** The unit runner must deny outbound network connections and container creation or attachment. It must use isolated temporary state and deterministic doubles for declared external seams. Unit scope must cover every inventoried category. Real-component hot-path integration remains mandatory under its separate profile and cannot use these doubles as delivery proof. | Run `test_offline_unit_profile_behavior` in `tests/hooks/test_offline_unit_profile.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 257
    },
    {
      "id": "PIPE-PAGES-R021.57",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend the planned test-quality registration at pipelines_hooks/cli.py:13 through run_gate at line 59. The proposed outcome runner must apply UnitProfile isolation before test collection and execution. Enforcement must cover subprocesses, not only patched Python socket calls. Consumers must select the unit profile explicitly. | Run `test_offline_unit_profile_wiring` in `tests/hooks/test_offline_unit_profile.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 258
    },
    {
      "id": "PIPE-PAGES-R021.58",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Attempted egress or container access must fail the run with the requesting test or process identity. Missing doubles, omitted categories or unsupported isolation must exit 2. The runner must not retry with network enabled, reuse production credentials or silently skip external-seam tests. | Run `test_offline_unit_profile_refusal` in `tests/hooks/test_offline_unit_profile.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 259
    },
    {
      "id": "PIPE-PAGES-R021.59",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit category and test inventories, double identities, seed/clock policy, isolation mechanism and denied attempts. Bind source and test digests. Separate unit results from required real-component integration receipts; an offline pass must not imply successful external integration. | Run `test_offline_unit_profile_evidence` in `tests/hooks/test_offline_unit_profile.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 260
    },
    {
      "id": "PIPE-PAGES-R021.60",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The actual unit-profile CLI must run adapter, retriever, server and CLI fixtures with deterministic doubles. Plant outbound socket and container-client attempts, including subprocess attempts; each must fail without effects. Repeat clean runs for equal observations, then verify independent integration receipts remain required. | Run `test_offline_unit_profile_cli` in `tests/hooks/test_offline_unit_profile.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 261
    },
    {
      "id": "PIPE-PAGES-R020.85",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add an ontology input profile in proposed pipelines_hooks/docs/ontology_governance.py. It must enumerate tracked ontology roots, supported RDF formats and engine-owned rule IDs. Required rule classes are syntax, namespace ownership, duplicate identity, shape constraints and vocabulary compatibility. Bind generated checks or served verdicts to authority and source digests. | Run `test_ontology_governance_hook_model` in `tests/hooks/test_ontology_governance_hook.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 262
    },
    {
      "id": "PIPE-PAGES-R020.86",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** The Python-only hook must evaluate every declared ontology file using engine-owned generated checks or a pinned served verdict. Python-only describes the local hook process, not a second semantic engine. The hook must preserve each authority rule and located finding; pipelines must not recreate ontology policy. | Run `test_ontology_governance_hook_behavior` in `tests/hooks/test_ontology_governance_hook.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 263
    },
    {
      "id": "PIPE-PAGES-R020.87",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Register ontology-governance at pipelines_hooks/cli.py:13 and dispatch through run_gate at line 59. Publish the pre-commit hook with complete ontology discovery before commit admission. The adapter must consume the generated OntologyInspect/ShaclValidate client or generated offline authority artifacts. Read-only inspection alone does not establish validation. | Run `test_ontology_governance_hook_wiring` in `tests/hooks/test_ontology_governance_hook.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 264
    },
    {
      "id": "PIPE-PAGES-R020.88",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** An authority governance violation must block commit with exit 1. Missing authority, stale verdicts, unsupported formats, unavailable generated rules or incomplete scope must exit 2. Local commit checks must not depend on live network availability; absent pinned offline evidence must refuse rather than invent semantics. | Run `test_ontology_governance_hook_refusal` in `tests/hooks/test_ontology_governance_hook.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 265
    },
    {
      "id": "PIPE-PAGES-R020.89",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit file inventory, input and authority digests, rule IDs, verdict provenance and located violations. Distinguish syntax checks from semantic authority results. Every required rule class must have bound evidence; a successful parser alone must not produce a governance pass. | Run `test_ontology_governance_hook_evidence` in `tests/hooks/test_ontology_governance_hook.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 266
    },
    {
      "id": "PIPE-PAGES-R020.90",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Installed pre-commit must validate a real staged ontology against engine-generated authority fixtures. Plant a shape violation and namespace violation separately; each must block commit with exact rule and location. An unstaged repair must not hide staged defects. Missing authority must refuse without network fallback. | Run `test_ontology_governance_hook_cli` in `tests/hooks/test_ontology_governance_hook.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 267
    },
    {
      "id": "PIPE-PAGES-R021.61",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add TestLayoutPolicy beside proposed code/test_quality.py. Every project must declare unit and integration module roots, shared fixture locations and required category modules. Declare isolation boundaries, reset contracts, two fixed shuffle seeds and a timeout. Discovery must include collected tests beyond files changed in the current patch. | Run `test_test_layout_independence_model` in `tests/hooks/test_test_layout_independence.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 268
    },
    {
      "id": "PIPE-PAGES-R021.62",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** The checker must verify every declared project fixture and module before execution. Run collected tests in declared order, reverse order and both seeded permutations in isolated trees. Compare per-test outcomes and declared state observations. Detect shared state beyond each reset contract. This bounded check must not claim all possible order independence. | Run `test_test_layout_independence_behavior` in `tests/hooks/test_test_layout_independence.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 269
    },
    {
      "id": "PIPE-PAGES-R021.63",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend the planned test-quality entry at pipelines_hooks/cli.py:13 through run_gate at line 59. Reuse proposed config-inventory project roots and the outcome runner. Publish the test-layout profile through the shared hook. Preserve separate real-component integration and recovery acceptance contracts. | Run `test_test_layout_independence_wiring` in `tests/hooks/test_test_layout_independence.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 270
    },
    {
      "id": "PIPE-PAGES-R021.64",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing required fixtures/modules, undeclared shared state or order-dependent outcomes must exit 1. Uncollected tests, unsupported reset enforcement, timeouts or incomplete permutations must exit 2. Tests must not be removed from the inventory to obtain a passing result. | Run `test_test_layout_independence_refusal` in `tests/hooks/test_test_layout_independence.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 271
    },
    {
      "id": "PIPE-PAGES-R021.65",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit full project/layout and collected-test inventories, execution orders, seeds, reset observations and per-test outcomes. Bind policy and source digests. Record only the measured permutation scope and retain integration-profile distinctions. | Run `test_test_layout_independence_evidence` in `tests/hooks/test_test_layout_independence.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 272
    },
    {
      "id": "PIPE-PAGES-R021.66",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The actual test-quality CLI and installed hook must check two projects with shared fixtures. Remove a required module and plant a test consuming previous-test state; each must fail. Restore reset isolation and pass all four orders. A timeout must leave independence unproved. | Run `test_test_layout_independence_cli` in `tests/hooks/test_test_layout_independence.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 273
    },
    {
      "id": "PIPE-PAGES-R021.67",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Add SolutionSizeEvidence to the proposed ValidationReport. Each run must record total first-party source bytes, nonblank lines and syntax-node counts by declared language adapter. Bind baseline and candidate snapshots plus required behavior receipts. Changed-line counts must remain separate from total solution size. | Run `test_solution_size_evidence_model` in `tests/hooks/test_solution_size_evidence.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 274
    },
    {
      "id": "PIPE-PAGES-R021.68",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** The producer must measure every candidate within the same declared scope, including unchanged source. It must exclude generated and vendor content only through explicit producer-bound categories. Adequacy receipts must precede any minimalism comparison. The engine owns choosing among adequate candidates; pipelines supplies measurements only. | Run `test_solution_size_evidence_behavior` in `tests/hooks/test_solution_size_evidence.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 275
    },
    {
      "id": "PIPE-PAGES-R021.69",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend planned repository_validation.main before its report export through pipelines_hooks/cli.py:13 and run_gate at line 59. Reuse source inventory and R020 report serialization. Publish measurements to the owner allocation consumer under EG-DECISION-ENGINE-R136.4. Meristem run receipts must preserve the same source and evidence identities. | Run `test_solution_size_evidence_wiring` in `tests/hooks/test_solution_size_evidence.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 276
    },
    {
      "id": "PIPE-PAGES-R021.70",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing adequacy receipts, mismatched scopes or unsupported syntax adapters must leave comparison unavailable. Smaller size must not override a failing requirement. No shortcut-comment rule is introduced here: the coordinator must resolve the reserved comment-style obligation before that portion can close. | Run `test_solution_size_evidence_refusal` in `tests/hooks/test_solution_size_evidence.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 277
    },
    {
      "id": "PIPE-PAGES-R021.71",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Report absolute and delta size, language adapter versions, source digests, exclusions and adequacy receipt IDs. Include the owner decision identity when available; measurements must not invent the allocation decision. Record unresolved shortcut documentation policy separately from measured size. | Run `test_solution_size_evidence_evidence` in `tests/hooks/test_solution_size_evidence.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 278
    },
    {
      "id": "PIPE-PAGES-R021.72",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The repository-validation CLI must measure two real candidate snapshots, including unchanged modules. A smaller candidate with a failing behavior receipt must remain ineligible. An adequate candidate must yield exact reproducible counts consumed by the owner adapter. Changed-line statistics alone must fail the evidence contract. | Run `test_solution_size_evidence_cli` in `tests/hooks/test_solution_size_evidence.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 279
    },
    {
      "id": "PIPE-PAGES-R021.73",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Extend proposed handoff proof receipts with workflow identity, graph revision, engine decision, execution source, ingestion transaction and readback digest. Medulla owns committed choices and source ingestion. Meristem owns execution and Scion SDK owns governed source effects. Each receipt must bind one end-to-end run identity. | Run `test_graph_workflow_receipt_model` in `tests/hooks/test_graph_workflow_receipt.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 280
    },
    {
      "id": "PIPE-PAGES-R021.74",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** The acceptance flow must load a persisted workflow from the real graph, obtain an engine decision and execute through Meristem. It must ingest resulting knowledge through the owner boundary and verify durable hydration through an independent graph read. A fake engine or catalog must not satisfy this contract. | Run `test_graph_workflow_receipt_behavior` in `tests/hooks/test_graph_workflow_receipt.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 281
    },
    {
      "id": "PIPE-PAGES-R021.75",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend the planned test-quality handoff verifier at pipelines_hooks/cli.py:13 through run_gate at line 59. Consume the owner acceptance receipt joining Meristem graph_orchestrate, execute_workflow and Medulla SourceIngest. The shared gate verifies provenance and outcomes; it must not become a runtime workflow orchestrator. | Run `test_graph_workflow_receipt_wiring` in `tests/hooks/test_graph_workflow_receipt.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 282
    },
    {
      "id": "PIPE-PAGES-R021.76",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing graph-load evidence, mismatched run identities, uncommitted ingestion or absent independent readback must fail acceptance. Unavailable real components or stale source bindings must exit 2. A cached or mocked catalog result must not become a real graph-load receipt. | Run `test_graph_workflow_receipt_refusal` in `tests/hooks/test_graph_workflow_receipt.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 283
    },
    {
      "id": "PIPE-PAGES-R021.77",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emit producer revisions, persisted workflow identity, selected decision, executed step IDs and committed ingestion receipt. Record independent readback query, expected hydrated identities and observed digest. Separate Scion SDK source effects from graph durability and retain failure/cancellation evidence. | Run `test_graph_workflow_receipt_evidence` in `tests/hooks/test_graph_workflow_receipt.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 284
    },
    {
      "id": "PIPE-PAGES-R021.78",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The actual test-quality CLI must consume a real graph-to-Meristem-to-ingestion acceptance run. An independent client must read hydrated identities after commit. Remove readback, substitute a fake catalog or mismatch the decision identity; each must refuse. A passing helper-only test must not satisfy the receipt. | Run `test_graph_workflow_receipt_cli` in `tests/hooks/test_graph_workflow_receipt.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 285
    },
    {
      "id": "PIPE-PAGES-R021.79",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Define coverage runner, declared project/path universe and per-project uncovered-line report contract. | Run `test_pipe9_coverage_runner_model` in `tests/hooks/test_coverage_closure.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 286
    },
    {
      "id": "PIPE-PAGES-R021.80",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Measure uncovered lines by project, declare path scope and produce per-project inventory for closure. | Run `test_pipe9_inventory_behavior` in `tests/hooks/test_coverage_closure.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 287
    },
    {
      "id": "PIPE-PAGES-R021.81",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Wire coverage runner before closure gate decision, refusing incomplete closure with PIPE:14 owner. | Run `test_pipe9_gate_wiring` in `tests/hooks/test_coverage_closure.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 288
    },
    {
      "id": "PIPE-PAGES-R021.82",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Untested paths prevent closure even at 80 percent threshold, exit 1 with per-project location. | Run `test_pipe9_threshold_refusal` in `tests/hooks/test_coverage_closure.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 289
    },
    {
      "id": "PIPE-PAGES-R021.83",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Per-project uncovered-line enumeration and closure decision evidence bound to source. | Run `test_pipe9_closure_evidence` in `tests/hooks/test_coverage_closure.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 290
    },
    {
      "id": "PIPE-PAGES-R021.84",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Coverage report closes with PIPE:14 owner review; missing/incomplete projects fail. | Run `test_pipe9_closure_cli` in `tests/hooks/test_coverage_closure.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 291
    },
    {
      "id": "PIPE-PAGES-R021.85",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Define workflow-load and SourceIngest producer receipts plus Meristem execution consumer definition. | Run `test_pipe10_workflow_model` in `tests/hooks/test_graph_workflow_receipt.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 292
    },
    {
      "id": "PIPE-PAGES-R021.86",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Join graph-load/execution/hydration/readback contract with independent verification. | Run `test_pipe10_readback_behavior` in `tests/hooks/test_graph_workflow_receipt.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 293
    },
    {
      "id": "PIPE-PAGES-R021.87",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Bind Medulla producer to Meristem consumer, independent readback in gate, no runtime orchestrator. | Run `test_pipe10_gate_wiring` in `tests/hooks/test_graph_workflow_receipt.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 294
    },
    {
      "id": "PIPE-PAGES-R021.88",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing graph-load or independent readback proof prevents acceptance receipt, exit 2. | Run `test_pipe10_readback_refusal` in `tests/hooks/test_graph_workflow_receipt.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 295
    },
    {
      "id": "PIPE-PAGES-R021.89",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Hot-path receipt joining producer/consumer/readback with durable source bindings. | Run `test_pipe10_receipt_evidence` in `tests/hooks/test_graph_workflow_receipt.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 296
    },
    {
      "id": "PIPE-PAGES-R021.90",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** graph_orchestrate \u2192 SourceIngest \u2192 independent readback through published CLI. | Run `test_pipe10_cli_proof` in `tests/hooks/test_graph_workflow_receipt.py`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 297
    },
    {
      "id": "PIPE-PAGES-R025",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Packaging role-to-extra closure contracts and build gates",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Packaging role-to-extra closure contracts and build gates.** Rollup of the children below. Declare supported package role/extra combinations and ensure build gates prove dependency closure for each role. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 298
    },
    {
      "id": "PIPE-PAGES-R025.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [
        "tests/hooks/test_packaging_roles.py:113"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Define role/extra inventory and closure assertions. | Run packaging gate test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 299
    },
    {
      "id": "PIPE-PAGES-R025.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [
        "tests/hooks/test_packaging_roles.py:121"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Build gate verifies role-specific closure. | Run role verification test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 300
    },
    {
      "id": "PIPE-PAGES-R025.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Import harness binds gate to packaging workflow. | Run integration test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 301
    },
    {
      "id": "PIPE-PAGES-R025.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [
        "tests/hooks/test_packaging_roles.py:136",
        "tests/hooks/test_packaging_roles.py:151"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Out-of-extra imports and role violations fail. | Run violation test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 302
    },
    {
      "id": "PIPE-PAGES-R025.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [
        "tests/hooks/test_packaging_roles.py:167"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Closure evidence proves package constraint. | Run evidence test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 303
    },
    {
      "id": "PIPE-PAGES-R025.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [
        "tests/hooks/test_packaging_roles.py:177"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** `uvx pipelines-hook` validates role matrix. | Run `test_packaging_role_closure_cli`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 304
    },
    {
      "id": "PIPE-PAGES-R026",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "User story and artifact schema generation contracts",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**User story and artifact schema generation contracts.** Rollup of the children below. Bind generator skills to UserStory, AcceptanceCriteria and Task Pydantic schema contracts. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 305
    },
    {
      "id": "PIPE-PAGES-R026.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Three artifact model schemas with versioned generator. | Run schema validation test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 306
    },
    {
      "id": "PIPE-PAGES-R026.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Generator emits valid schemas matching contract. | Run generator test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 307
    },
    {
      "id": "PIPE-PAGES-R026.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Consumer deserialization validates artifact models. | Run consumer test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 308
    },
    {
      "id": "PIPE-PAGES-R026.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Malformed artifacts and schema mismatch fail. | Run refusal test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 309
    },
    {
      "id": "PIPE-PAGES-R026.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Emitted schemas round-trip through validation. | Run round-trip test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 310
    },
    {
      "id": "PIPE-PAGES-R026.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** `uvx pipelines-hook` validates generated artifacts. | Run `test_artifact_schema_cli`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 311
    },
    {
      "id": "PIPE-PAGES-R027",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Specification tooling compatibility and layout standard",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Specification tooling compatibility and layout standard.** Rollup of the children below. Support external artifact formats and reconcile with current directory standards. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 312
    },
    {
      "id": "PIPE-PAGES-R027.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** External format/version contract. | Run format test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 313
    },
    {
      "id": "PIPE-PAGES-R027.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Unchanged-file interoperability fixture passes. | Run interop test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 314
    },
    {
      "id": "PIPE-PAGES-R027.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Ingestion classifies standard layout. | Run classification test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 315
    },
    {
      "id": "PIPE-PAGES-R027.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Incompatible format and layout failures fail. | Run compat test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 316
    },
    {
      "id": "PIPE-PAGES-R027.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Standard layout and version agreement proven. | Run agreement test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 317
    },
    {
      "id": "PIPE-PAGES-R027.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** `uvx pipelines-hook` validates format support. | Run `test_spec_format_compat_cli`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 318
    },
    {
      "id": "PIPE-PAGES-R028",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Release coordination with multi-phase version-bump policy",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Release coordination with multi-phase version-bump policy.** Rollup of the children below. Configure phase ordering, inter-phase delays and live status reporting. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 319
    },
    {
      "id": "PIPE-PAGES-R028.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Phase/wait policy with typed status contract. | Run phase test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 320
    },
    {
      "id": "PIPE-PAGES-R028.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Coordinator executes phases with configurable delays. | Run execution test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 321
    },
    {
      "id": "PIPE-PAGES-R028.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** CLI/UI consumes live project-status stream. | Run stream test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 322
    },
    {
      "id": "PIPE-PAGES-R028.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing policy and status event failures fail. | Run event test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 323
    },
    {
      "id": "PIPE-PAGES-R028.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Phase transitions and wait periods recorded. | Run transition test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 324
    },
    {
      "id": "PIPE-PAGES-R028.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Coordinator CLI observes configured phases. | Run `test_release_phase_coordination_cli`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 325
    },
    {
      "id": "PIPE-PAGES-R029",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Skill-scoped dependency audit and version-update proposal workflow",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Skill-scoped dependency audit and version-update proposal workflow.** Rollup of the children below. Inventory skill dependencies, bind reports to Medulla proposals and control installation. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 326
    },
    {
      "id": "PIPE-PAGES-R029.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Skill inventory snapshot and version-update proposal. | Run inventory test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 327
    },
    {
      "id": "PIPE-PAGES-R029.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Audit supplies durable proposal with provenance. | Run audit test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 328
    },
    {
      "id": "PIPE-PAGES-R029.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Approval gate prevents direct skill install. | Run approval test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 329
    },
    {
      "id": "PIPE-PAGES-R029.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Unauthorized installs and audit gaps fail. | Run auth test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 330
    },
    {
      "id": "PIPE-PAGES-R029.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Proposal ID and audit binding proven. | Run binding test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 331
    },
    {
      "id": "PIPE-PAGES-R029.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Vulnerable skill yields zero install until approved. | Run `test_skill_dependency_audit_cli`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 332
    },
    {
      "id": "PIPE-PAGES-R030",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Project-version reference discovery and code-enhancer binding",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Project-version reference discovery and code-enhancer binding.** Rollup of the children below. Define discoverable scope and require safe static inventory completeness. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 333
    },
    {
      "id": "PIPE-PAGES-R030.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Reference discovery policy and inventory-completeness contract. | Run discovery test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 334
    },
    {
      "id": "PIPE-PAGES-R030.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Code-enhancer compares discovered vs. configured. | Run comparison test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 335
    },
    {
      "id": "PIPE-PAGES-R030.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Unmapped reference refusal integrated in workflow. | Run refusal test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 336
    },
    {
      "id": "PIPE-PAGES-R030.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Undeclared version references fail without evaluation. | Run undeclared test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 337
    },
    {
      "id": "PIPE-PAGES-R030.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Discovered set and mapping gaps located. | Run gap test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 338
    },
    {
      "id": "PIPE-PAGES-R030.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Undeclared reference blocks, then passes after mapping. | Run `test_version_reference_discovery_cli`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 339
    },
    {
      "id": "PIPE-PAGES-R023.19",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Aggregate skill grader call contract and lineage preservation",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Aggregate skill grader call contract and lineage preservation.** Same repository-analysis invocation discovers skills, calls grader and includes results in aggregate. | Run `test_aggregate_skill_grade_cli`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 340
    },
    {
      "id": "PIPE-PAGES-R031",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Package source-path portability and cross-platform legality",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2",
        "4061148a6359",
        "742c49315101",
        "c175cd490b06"
      ],
      "verified_by": [
        "tests/hooks/test_hygiene_published_evidence.py:30",
        "tests/hooks/test_hygiene_published_evidence.py:44",
        "tests/hooks/test_source_path_portability.py:103",
        "tests/hooks/test_source_path_portability.py:123",
        "tests/hooks/test_source_path_portability.py:132"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Package source-path portability and cross-platform legality.** Rollup of the children below. Define path policy and wire pre-commit refusal for illegal paths. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 341
    },
    {
      "id": "PIPE-PAGES-R031.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2"
      ],
      "verified_by": [
        "tests/hooks/test_source_path_portability.py:25"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Path-length, reserved-name and normalization rules. | Run rules test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 342
    },
    {
      "id": "PIPE-PAGES-R031.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2"
      ],
      "verified_by": [
        "tests/hooks/test_source_path_portability.py:41"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Portability check rejects Windows/macOS violations. | Run platform test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 343
    },
    {
      "id": "PIPE-PAGES-R031.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2",
        "4061148a6359"
      ],
      "verified_by": [
        "tests/hooks/test_hygiene_published_evidence.py:30",
        "tests/hooks/test_source_path_portability.py:67",
        "tests/hooks/test_source_path_portability.py:77"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Shared check in build and pre-commit gates. | Run gate test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 344
    },
    {
      "id": "PIPE-PAGES-R031.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2"
      ],
      "verified_by": [
        "tests/hooks/test_source_path_portability.py:103",
        "tests/hooks/test_source_path_portability.py:123",
        "tests/hooks/test_source_path_portability.py:132"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Reserved names and too-long paths fail without sanitizing. | Run sanitize test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 345
    },
    {
      "id": "PIPE-PAGES-R031.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2"
      ],
      "verified_by": [
        "tests/hooks/test_source_path_portability.py:142"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Policy version and violation locations proven. | Run location test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 346
    },
    {
      "id": "PIPE-PAGES-R031.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2"
      ],
      "verified_by": [
        "tests/hooks/test_hygiene_published_evidence.py:44",
        "tests/hooks/test_source_path_portability.py:161"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Reserved name and long path both fail then pass. | Run `test_path_portability_cli`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 347
    },
    {
      "id": "PIPE-PAGES-R032",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Lossless OWL/RDF workflow export-import with version refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Lossless OWL/RDF workflow export-import with version refusal.** Rollup of the children below. Preserve original export-time condition and define exact version comparison to prevent silent forward/backward compatibility moves. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 348
    },
    {
      "id": "PIPE-PAGES-R032.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Define export-time coordinator decision condition and version refusal semantics. | Run export-import model test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 349
    },
    {
      "id": "PIPE-PAGES-R032.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Lossless workflow round-trip and exact version comparison without weakening freshness. | Run round-trip behavior test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 350
    },
    {
      "id": "PIPE-PAGES-R032.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Wire to existing skill-package owner for export/import contract. | Run export wiring test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 351
    },
    {
      "id": "PIPE-PAGES-R032.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Version move without strict comparison or loss of export condition prevents import. | Run version refusal test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 352
    },
    {
      "id": "PIPE-PAGES-R032.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Export-time condition and version comparison verified per round-trip. | Run version comparison evidence test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 353
    },
    {
      "id": "PIPE-PAGES-R032.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Test equal/older/newer export flows without R100 freshness weakening. | Run `test_eg56_export_import_cli`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 354
    },
    {
      "id": "PIPE-PAGES-R033",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Installer skill entry binding with supported IDE/agent target matrix",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Installer skill entry binding with supported IDE/agent target matrix.** Rollup of the children below. Bind installer contract explicitly to skill/command and per-target configuration/parser/client proof. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 355
    },
    {
      "id": "PIPE-PAGES-R033.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Define installer entry, supported target/version matrix and per-target binding contract. | Run installer model test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 356
    },
    {
      "id": "PIPE-PAGES-R033.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Bind existing installer contract to skill/command with per-target proof. | Run target binding behavior test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 357
    },
    {
      "id": "PIPE-PAGES-R033.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Link CLI.py registration to versioned harness adapters and target configuration. | Run harness wiring test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 358
    },
    {
      "id": "PIPE-PAGES-R033.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Supported targets cannot be unaccounted for; missing per-target proof fails. | Run target proof refusal test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 359
    },
    {
      "id": "PIPE-PAGES-R033.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Target set and per-target configuration/parser/client proof locations bound. | Run target coverage evidence test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 360
    },
    {
      "id": "PIPE-PAGES-R033.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Per-target configuration/parser/client proof verified via published CLI. | Run `test_au96_target_binding_cli`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 361
    },
    {
      "id": "PIPE-PAGES-R034",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Single-binary portable deployment with zero external-service dependency parity",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Single-binary portable deployment with zero external-service dependency parity.** Rollup of the children below. Extend portable deployment definitions with concrete single binary/image profile and capability/refusal parity matrix. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 362
    },
    {
      "id": "PIPE-PAGES-R034.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Define portable deployment profile with zero external-service dependency specification. | Run portable profile model test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 363
    },
    {
      "id": "PIPE-PAGES-R034.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Concrete single binary/image with external-dependency-free acceptance and parity. | Run dependency-free behavior test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 364
    },
    {
      "id": "PIPE-PAGES-R034.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Extend deployment package definitions with capability/refusal parity matrix. | Run parity matrix wiring test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 365
    },
    {
      "id": "PIPE-PAGES-R034.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Incomplete profiles or missing parity matrix prevent single-binary deployment claim. | Run parity refusal test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 366
    },
    {
      "id": "PIPE-PAGES-R034.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Dependency inventory and clustered capability/refusal parity proven. | Run parity evidence test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 367
    },
    {
      "id": "PIPE-PAGES-R034.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Single binary/image deployment without external services verified. | Run `test_eg53_portable_deployment_cli`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 368
    },
    {
      "id": "PIPE-PAGES-R035",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Stable prompt JSON/Pydantic disk formatting with difference oracle",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2",
        "4061148a6359",
        "7228a30b5eb2"
      ],
      "verified_by": [
        "tests/hooks/test_hygiene_published_evidence.py:63",
        "tests/hooks/test_hygiene_published_evidence.py:76",
        "tests/hooks/test_prompt_format.py:108",
        "tests/hooks/test_prompt_format.py:121",
        "tests/hooks/test_prompt_format.py:142"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Stable prompt JSON/Pydantic disk formatting with difference oracle.** Rollup of the children below. Define stable prompt format and exact difference semantics retaining new semantic roundtrip coverage. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 369
    },
    {
      "id": "PIPE-PAGES-R035.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2"
      ],
      "verified_by": [
        "tests/hooks/test_prompt_format.py:33"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Define stable prompt JSON and Pydantic disk format with difference oracle. | Run prompt format model test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 370
    },
    {
      "id": "PIPE-PAGES-R035.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2"
      ],
      "verified_by": [
        "tests/hooks/test_prompt_format.py:44"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Establish exact difference oracle and semantic roundtrip coverage. | Run roundtrip behavior test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 371
    },
    {
      "id": "PIPE-PAGES-R035.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2",
        "4061148a6359"
      ],
      "verified_by": [
        "tests/hooks/test_hygiene_published_evidence.py:63",
        "tests/hooks/test_prompt_format.py:65"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Link R094.2-.7 exports/adopts to disk serializer and difference oracle. | Run serializer wiring test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 372
    },
    {
      "id": "PIPE-PAGES-R035.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2"
      ],
      "verified_by": [
        "tests/hooks/test_prompt_format.py:142",
        "tests/hooks/test_prompt_format.py:86"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Semantic roundtrip cannot weaken earlier R094 export coverage. | Run coverage refusal test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 373
    },
    {
      "id": "PIPE-PAGES-R035.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2"
      ],
      "verified_by": [
        "tests/hooks/test_prompt_format.py:108"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Disk-format semantics and difference oracle proof bound to snapshots. | Run oracle evidence test.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 374
    },
    {
      "id": "PIPE-PAGES-R035.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2"
      ],
      "verified_by": [
        "tests/hooks/test_hygiene_published_evidence.py:76",
        "tests/hooks/test_prompt_format.py:121",
        "tests/hooks/test_prompt_format.py:170",
        "tests/hooks/test_prompt_format.py:197"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Equal/older/newer disk format round-trip verified via published CLI. | Run `test_au121_roundtrip_cli`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 375
    },
    {
      "id": "PIPE-PAGES-R021.91",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Record former validate behaviors and their deployment state. | Complete inventory lists every validation action.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 376
    },
    {
      "id": "PIPE-PAGES-R021.92",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Map each behavior to every supported project hook. | Hook adopters configure and pass both success and failure cases.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 377
    },
    {
      "id": "PIPE-PAGES-R021.93",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Require configured pre-commit parity before hook passes. | Pre-commit configuration names every mapped behavior for all projects.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 378
    },
    {
      "id": "PIPE-PAGES-R021.94",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing historical baseline cannot mask incomplete coverage. | Baseline gaps remain visible in inventory and findings.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 379
    },
    {
      "id": "PIPE-PAGES-R021.95",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Bind behavior inventory and baseline to source snapshot. | Baseline state appears in all hook findings.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 380
    },
    {
      "id": "PIPE-PAGES-R021.96",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Installed hook rejects unmapped project behavior. | Test missing behavior in pre-commit configuration.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 381
    },
    {
      "id": "PIPE-PAGES-R037",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Unit-test profile with enforced external determinism",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Unit-test profile with enforced external determinism.** Rollup of the children below. Unit tests must isolate external dependencies and refuse network or container access. | Rollup is minimum state of children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 382
    },
    {
      "id": "PIPE-PAGES-R037.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Define unit-test profile with declared external dependency categories. | Profile specifies doubles for database, API, client code.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 383
    },
    {
      "id": "PIPE-PAGES-R037.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Enforce deterministic doubles for all declared external seams. | Unit runner rejects planted network and container attempts.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 384
    },
    {
      "id": "PIPE-PAGES-R037.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Wire unit profile enforcement into test-quality gate. | Profile adoption gates must reject unmocked external dependencies.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 385
    },
    {
      "id": "PIPE-PAGES-R037.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing doubles or network egress causes unit test fail. | Runner cannot silently skip external dependency mocking.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 386
    },
    {
      "id": "PIPE-PAGES-R037.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Record declared external categories, discovered doubles and test scope. | Evidence separates unit isolation from integration tests.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 387
    },
    {
      "id": "PIPE-PAGES-R037.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Installed gate blocks unmocked network access in tests. | Test planted database and API calls.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 388
    },
    {
      "id": "PIPE-PAGES-R038",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Python-only pre-commit hook for ontology governance validation",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Python-only pre-commit hook for ontology governance validation.** Rollup of the children below. Python hook consumes Medulla-owned ontology checks with fail-closed authority. | Rollup is minimum state of children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 389
    },
    {
      "id": "PIPE-PAGES-R038.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Define Python-only execution boundary and governance rule set. | Hook declares ontology file inputs and check outputs.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 390
    },
    {
      "id": "PIPE-PAGES-R038.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Hook consumes Medulla-generated verdicts without local semantic authority. | Failed verdict causes commit refusal via hook exit.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 391
    },
    {
      "id": "PIPE-PAGES-R038.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Pre-commit hook integration consumes Medulla's published check service. | Hook reaches Medulla service identity and pins verdict version.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 392
    },
    {
      "id": "PIPE-PAGES-R038.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Unavailable Medulla service causes hook to fail closed. | Missing verdicts block commits rather than permit them.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 393
    },
    {
      "id": "PIPE-PAGES-R038.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Record Medulla verdict identity, pinned version and applied rules. | Evidence separates local execution from remote verdict authority.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 394
    },
    {
      "id": "PIPE-PAGES-R038.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Planted ontology violation blocks commit through installed hook. | Test proves local authority cannot override Medulla.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 395
    },
    {
      "id": "PIPE-PAGES-R039",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Complete project test-layout inventory with isolation and order policies",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2",
        "4061148a6359"
      ],
      "verified_by": [
        "tests/hooks/test_hygiene_published_evidence.py:127",
        "tests/hooks/test_hygiene_published_evidence.py:141",
        "tests/hooks/test_test_layout_independence.py:102",
        "tests/hooks/test_test_layout_independence.py:121",
        "tests/hooks/test_test_layout_independence.py:138"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Complete project test-layout inventory with isolation and order policies.** Rollup of the children below. Every project declares fixtures, modules and test independence requirements. | Rollup is minimum state of children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 396
    },
    {
      "id": "PIPE-PAGES-R039.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2"
      ],
      "verified_by": [
        "tests/hooks/test_test_layout_independence.py:56",
        "tests/hooks/test_test_layout_independence.py:75"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Define project layout inventory with shared fixtures and modules. | Inventory lists required fixtures, modules and isolation requirements.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 397
    },
    {
      "id": "PIPE-PAGES-R039.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2"
      ],
      "verified_by": [
        "tests/hooks/test_test_layout_independence.py:102",
        "tests/hooks/test_test_layout_independence.py:121",
        "tests/hooks/test_test_layout_independence.py:152",
        "tests/hooks/test_test_layout_independence.py:165",
        "tests/hooks/test_test_layout_independence.py:83"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Enforce test independence via fixture-isolation gate. | Tests must pass regardless of test order.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 398
    },
    {
      "id": "PIPE-PAGES-R039.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2",
        "4061148a6359"
      ],
      "verified_by": [
        "tests/hooks/test_hygiene_published_evidence.py:127",
        "tests/hooks/test_test_layout_independence.py:68"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Wire inventory check into test-quality gate. | Gate verifies every project's fixture and module declarations.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 399
    },
    {
      "id": "PIPE-PAGES-R039.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2"
      ],
      "verified_by": [
        "tests/hooks/test_test_layout_independence.py:138",
        "tests/hooks/test_test_layout_independence.py:178",
        "tests/hooks/test_test_layout_independence.py:251",
        "tests/hooks/test_test_layout_independence.py:269"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing fixtures or test order dependencies cause gate fail. | Gate refuses fixtures listed outside declared project inventory.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 400
    },
    {
      "id": "PIPE-PAGES-R039.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2"
      ],
      "verified_by": [
        "tests/hooks/test_test_layout_independence.py:190"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Record project inventory, discovered fixtures and independence check results. | Evidence documents failed isolation and order-dependency tests.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 401
    },
    {
      "id": "PIPE-PAGES-R039.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2a00d9d10fb2"
      ],
      "verified_by": [
        "tests/hooks/test_hygiene_published_evidence.py:141",
        "tests/hooks/test_test_layout_independence.py:215"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Gate blocks planted fixture dependency in test suite. | Test proves missing fixture causes isolation failure.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 402
    },
    {
      "id": "PIPE-PAGES-R040",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Coverage-decrease refusal in Meristem proposal and admission",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Coverage-decrease refusal in Meristem proposal and admission.** Rollup of the children below. Meristem must reject every enhancement or refactor decreasing test coverage. | Rollup is minimum state of children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 403
    },
    {
      "id": "PIPE-PAGES-R040.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Extend approval criteria with baseline and candidate evidence. | Proposal must carry coverage baseline and candidate measurements.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 404
    },
    {
      "id": "PIPE-PAGES-R040.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Reject proposals where coverage decreases from baseline. | Gate compares candidate metrics against baseline deterministically.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 405
    },
    {
      "id": "PIPE-PAGES-R040.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Wire coverage check into Meristem proposal admission. | Baseline and candidate evidence bind to revision.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 406
    },
    {
      "id": "PIPE-PAGES-R040.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing or stale coverage evidence causes proposal rejection. | Unmeasured coverage proposals fail rather than pass.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 407
    },
    {
      "id": "PIPE-PAGES-R040.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Record baseline and candidate coverage with proposal identity. | Evidence preserves graph authorization and materialization receipt.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 408
    },
    {
      "id": "PIPE-PAGES-R040.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Gate rejects proposal that decreases coverage metrics. | Test planted coverage decrease in candidate revision.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 409
    },
    {
      "id": "PIPE-PAGES-R041",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Configured structural limits with named-function failure reporting",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Configured structural limits with named-function failure reporting.** Rollup of the children below. Build failures name each violating function and state limit. | Rollup is minimum state of children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 410
    },
    {
      "id": "PIPE-PAGES-R041.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** Define function-argument-count and try-block-statement-count limits. | Configuration specifies nonnegative integer limits for each.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 411
    },
    {
      "id": "PIPE-PAGES-R041.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** Build fails when function or try-block exceeds limit. | Every violation identifies repository-relative path and function.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 412
    },
    {
      "id": "PIPE-PAGES-R041.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** Wire limits into shared KISS gate and Arbora build. | Arbora configuration pins both limits and invokes check.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 413
    },
    {
      "id": "PIPE-PAGES-R041.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** Missing configuration or unsupported measurement causes build failure. | Missing limits exit 2; violations above limits exit 1.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 414
    },
    {
      "id": "PIPE-PAGES-R041.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** Record policy digest, per-function count and configured limits. | Evidence identifies repository-relative path and qualified function.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 415
    },
    {
      "id": "PIPE-PAGES-R041.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** Build fails on function exceeding argument-count limit. | Test keyword-only, variadic and nested-try function cases.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 416
    },
    {
      "id": "PIPE-PAGES-R042",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "One generated architecture explorer, always current",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "07557fa5390a",
        "07e22bc44394",
        "0a82ba72ff9d",
        "0c089432fdc8",
        "1127e9047bfa"
      ],
      "verified_by": [
        "tests/test_architecture_explorer.py:1006",
        "tests/test_architecture_explorer.py:1030",
        "tests/test_architecture_explorer.py:105",
        "tests/test_architecture_explorer.py:1086",
        "tests/test_architecture_explorer.py:1107"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**One generated architecture explorer, always current.** The canonical architecture explorer is published at `https://knuckles-team.github.io/.github/architecture/`. The organization site builds it with this generator in github mode every 30 minutes and on a `specs-changed` repository dispatch; the reusable `notify_org_site.yml` is the one implementation that sends that dispatch, and each core repository calls it from `.github/workflows/org-site.yml` on every push to main with no path filter. It does nothing, and exits 0, until both optional `org_site_app_id` and `org_site_app_private_key` secrets exist (the org secrets `ORG_SITE_APP_ID` and `ORG_SITE_APP_PRIVATE_KEY` reach it through `secrets: inherit`), then mints a GitHub App token for `.github` with a SHA-pinned `actions/create-github-app-token` and posts with it; a failed mint or post only warns. Github mode scans every public, unarchived organization repository that has `specs/`, so a new repository appears and a removed repository, row or connector part disappears on the next build. The explorer places each row on the deepest architecture part, lists each row that it cannot place under an Unmapped part and fails the build until a part owns it (the reviewed allowlist stays empty, so a new row needs a part in `model.json`, for example WEBUI-APPS-R050 on the composed deployment acceptance part), and stamps its corner with the build time and the head commit of every scanned repository. A pinned layered layout engine precomputes every level, so the page needs no runtime layout. Each core repository site serves `/architecture/` as a redirect to the canonical explorer that keeps the `#<node>` anchor, and the shared theme links it from every page at the node of the current repository. A content page that shows the static runtime diagram must also link the explorer. | `tests/test_architecture_explorer.py` places fixture rows, proves a deleted row disappears, reconciles discovery, fits the connector fleet, checks the stamp and builds the page and redirect variants offline; `tests/test_pages_pipeline_contract.py` and `tests/test_spec_delivery_nav.py` check the workflow step, the dispatch and the theme link; `tests/test_sync_mkdocs_theme.py::test_check_requires_the_diagram_to_link_the_explorer` checks the diagram link.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 417
    },
    {
      "id": "PIPE-PAGES-R042.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Index",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "22a4c85e6a09"
      ],
      "verified_by": [
        "tests/test_architecture_explorer.py:539",
        "tests/test_architecture_explorer.py:562"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Index.** The build emits one compact search index in the page: every spec row as ID, title, owning repository, spec family, status and the node it maps to; every node as name, description and code paths; and the retired-ID aliases read from each repository's `.config/spec-aliases.toml`. Repeated strings are stored once in shared tables, so the index adds no row text beyond the title; search also reads each row's description from the page's own rows (R042.6). | `tests/test_architecture_explorer.py::test_search_index_covers_every_row_and_maps_it_to_a_node` and `tests/test_architecture_explorer.py::test_search_index_carries_repository_aliases`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 418
    },
    {
      "id": "PIPE-PAGES-R042.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Ranking",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "22a4c85e6a09"
      ],
      "verified_by": [
        "tests/test_architecture_explorer.py:572",
        "tests/test_architecture_explorer.py:583"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Ranking.** A search box ranks client-side with no dependency: an exact ID (or retired alias) first, then rows whose title words match every term, then node descriptions and node names. A query shaped like an ID matches by ID only, with the exact row followed by its sub-rows. A title shared by many rows ranks below the one unique row, so the owning row of a capability comes first. | `tests/test_architecture_explorer.py::test_a_capability_search_ranks_the_owning_row_first` and `tests/test_architecture_explorer.py::test_an_id_search_is_exact`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 419
    },
    {
      "id": "PIPE-PAGES-R042.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Deep links",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "22a4c85e6a09"
      ],
      "verified_by": [
        "tests/test_architecture_explorer.py:604"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Deep links.** The page opens at `#q=<query>` (the top result is selected and the ranked list stays open) and at `#node=<id>`; the older `#<node>` anchor keeps working so repository redirects and the shared theme link are unchanged. The page writes the matching hash back as the view settles. | `tests/test_architecture_explorer.py::test_deep_links_parse`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 420
    },
    {
      "id": "PIPE-PAGES-R042.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Landing and access",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "22a4c85e6a09",
        "7e98f025d34c"
      ],
      "verified_by": [
        "tests/test_architecture_explorer.py:126",
        "tests/test_architecture_explorer.py:659"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Landing and access.** Choosing a result flies the camera to the owning node with the same fit and openness rules as a part click, zooming in just far enough that every ancestor box is open, highlights the node, and shows the matching rows in its panel with a link to the spec file on GitHub. The `/` key focuses the box; arrow keys, Enter and Escape drive it; the box and list carry combobox and listbox roles with a live result count; the colors follow the light and dark themes. The three outside boxes (people, clients, source systems) are all marked external: the map shows \"external system\" instead of spec counts and no status bar for them, the side panel is headed \"Outside the ecosystem\" and says no spec rows are written for the box and the connected parts own the rows, and no row places on them. | `tests/test_architecture_explorer.py::test_a_q_deep_link_lands_on_the_owning_part_in_a_browser` loads the page in a headless Chromium when one is installed.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 421
    },
    {
      "id": "PIPE-PAGES-R042.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Viewport",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5ca115dab2f1",
        "c1c4645b2f48"
      ],
      "verified_by": [
        "tests/test_architecture_explorer.py:690"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Viewport.** The map fills the browser window at any aspect ratio. The page has no width cap and narrow margins, and the map and side panel take the full height below the toolbar, so the page never scrolls on a desktop screen. The overview layout is at least 1.6 times as wide as it is tall. The overview background bands span the full width of the map at any zoom, with their labels at the layout's right edge. A full-screen button and the `F` key show the map alone, and a panel button hides the side panel; both refit the current view. | `tests/test_architecture_explorer.py::test_the_map_fills_the_viewport_with_full_screen_and_panel_toggle`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 422
    },
    {
      "id": "PIPE-PAGES-R042.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Row description",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "72f7362888b8",
        "9ad2ff194f2a"
      ],
      "verified_by": [
        "tests/test_architecture_explorer.py:778",
        "tests/test_architecture_explorer.py:799",
        "tests/test_architecture_explorer.py:920",
        "tests/test_architecture_explorer.py:936"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Row description.** Each spec row in the panel list shows a short plain-text description under its title: the first sentence of its requirement text in the family's `requirements.md`, at most 160 characters, with markdown removed and a bold lead that only repeats the title skipped. The description is muted and clamped to two lines, is carried on the row in the page, and is matched by search below every title, ID, family and part match. The page holds no other requirement text, so its size grows by at most the description of each row. | `tests/test_architecture_explorer.py::test_description_is_the_first_plain_sentence_capped_at_160`, `tests/test_architecture_explorer.py::test_page_rows_carry_desc_and_never_the_full_text`, `tests/test_architecture_explorer.py::test_page_size_grows_by_a_bounded_amount_per_row` and `tests/test_architecture_explorer.py::test_search_matches_a_description_only_after_title_and_id_matches`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 423
    },
    {
      "id": "PIPE-PAGES-R042.7",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Expandable full spec",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "72f7362888b8",
        "9ad2ff194f2a",
        "bf0cc60fbd80"
      ],
      "verified_by": [
        "tests/test_architecture_explorer.py:336",
        "tests/test_architecture_explorer.py:819",
        "tests/test_architecture_explorer.py:853",
        "tests/test_architecture_explorer.py:961"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Expandable full spec.** A row expands inline from its title button (`aria-expanded`) or a click on the row, and the panel offers Expand all shown and Collapse all over the filtered rows; the status filter, part scope and paging are unchanged. An expanded row shows the full requirement, the acceptance text, the status with `landed_in` commits, `verified_by` test lines and `rollup_of` rows (commits and test files link to GitHub on the default branch), the test-spec lines that name the row, links to the family files, and a Design section with collapsible Plan, design or architecture, and Test spec documents. The build writes one JSON file per family at `spec-details/<repo>/<family>.json` next to the page, replacing any earlier set, and the page fetches a family on its first expand and caches it. The organization hub workflow uploads the page directory, so the files publish with the page. | `tests/test_architecture_explorer.py::test_one_family_json_is_written_per_family_with_full_row_detail`, `tests/test_architecture_explorer.py::test_a_row_whose_family_has_no_plan_still_gets_detail` and `tests/test_architecture_explorer.py::test_expanding_a_row_fetches_its_family_once_and_renders_it_safely`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 424
    },
    {
      "id": "PIPE-PAGES-R042.8",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Safe rendering",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "72f7362888b8"
      ],
      "verified_by": [
        "tests/test_architecture_explorer.py:867",
        "tests/test_architecture_explorer.py:902"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Safe rendering.** Spec markdown is rendered to HTML at build time as a safe subset (headings, paragraphs, lists, code, tables, links) with every source character escaped, so raw HTML never reaches a page or a family file. Only http(s) links and links relative to the family directory (resolved to GitHub) are kept. The page parses the rendered HTML inertly and copies it through a tag allowlist, uses no `innerHTML`, and loads no third-party script; tables and code scroll inside their own block so an expanded row never widens the page. | `tests/test_architecture_explorer.py::test_markdown_escapes_raw_html_and_drops_unsafe_links` and `tests/test_architecture_explorer.py::test_page_never_assigns_markup_and_exposes_the_expand_controls`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 425
    },
    {
      "id": "PIPE-PAGES-R042.9",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Every scanned repository has a part",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "9dd3e4967209",
        "bf0cc60fbd80"
      ],
      "verified_by": [
        "tests/test_architecture_explorer.py:1006",
        "tests/test_architecture_explorer.py:336"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Every scanned repository has a part.** Each repository in the explorer registry that has specs is owned by a part of the model, so its rows place on that part and none rely on the unmapped allowlist. The skill-graphs repository is scanned and owned by the Skill graphs part under the skills box, which describes packaged skill graphs served through the Scion SDK convention and takes the `catalog-content` family. | `tests/test_architecture_explorer.py::test_every_registered_repository_has_a_part_and_its_rows_place_without_the_allowlist`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 426
    },
    {
      "id": "PIPE-PAGES-R042.10",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The explorer links back to the contribution front door",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a97422e107a9"
      ],
      "verified_by": [
        "tests/test_architecture_explorer.py:1030"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**The explorer links back to the contribution front door.** The page footer carries one muted line linking the contribution guide (`CONTRIBUTING.md` in the organization repository) and the organization front door, and states that the explorer is rebuilt on every merge to main and at least every 30 minutes. The header carries no such links. The expanded detail of a `SPECIFIED` row adds an open-work line linking the contribution guide and the owner repository's `specs/<family>/` directory; other statuses do not. | `tests/test_architecture_explorer.py::test_footer_links_the_guide_and_front_door_and_only_specified_rows_point_to_the_guide`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 427
    },
    {
      "id": "PIPE-PAGES-R042.11",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "The explorer states the contribution path in a form a person or an agent finds without guessing",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "dbbaf2116d8c"
      ],
      "verified_by": [
        "tests/test_architecture_explorer.py:1086",
        "tests/test_architecture_explorer.py:1107"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**The explorer states the contribution path in a form a person or an agent finds without guessing.** Below the footer the page carries a collapsed `How to contribute (for people and agents)` block with five ordered steps: the front door, the contribution guide, picking a `SPECIFIED` row, setting up with the `arbora-development` skill, and opening a pull request whose commit carries a `Spec:` trailer. The page head declares `rel=\"help\"` (the contribution guide), `rel=\"start\"` (the front door) and a description that names the front door. Every build writes `llms.txt` beside the page with the front door, the guide, the skills directory, the spec-details file pattern and the same five steps. | `tests/test_architecture_explorer.py::test_contribution_path_is_in_the_page_head_details_and_llms_txt` and `tests/test_architecture_explorer.py::test_a_build_writes_llms_txt_beside_the_page`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 428
    },
    {
      "id": "PIPE-PAGES-R043",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Agent-readiness and static documentation delivery",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afcf5e9611e3"
      ],
      "verified_by": [
        "tests/test_pages_pipeline_contract.py:146",
        "tests/test_pages_readiness.py:195",
        "tests/test_pages_readiness.py:247",
        "tests/test_pages_readiness.py:367",
        "tests/test_pages_readiness.py:377"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Agent-readiness and static documentation delivery.** Rollup of the children below. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 429
    },
    {
      "id": "PIPE-PAGES-R043.1",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afcf5e9611e3"
      ],
      "verified_by": [
        "tests/test_pages_readiness.py:247"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Model.** The readiness validator must consume declared input, schema, readiness manifest, and Markdown mirror manifest without another generator. | Run `tests/test_pages_readiness.py::test_second_build_and_offline_tck_are_idempotent`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 430
    },
    {
      "id": "PIPE-PAGES-R043.2",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Behavior",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afcf5e9611e3"
      ],
      "verified_by": [
        "tests/test_pages_readiness.py:195"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Behavior.** The delivery builder must publish declared Markdown fallbacks and discovery files while preserving existing site directives. | Run `tests/test_pages_readiness.py::test_build_publishes_source_markdown_and_served_mime`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 431
    },
    {
      "id": "PIPE-PAGES-R043.3",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Wiring",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afcf5e9611e3"
      ],
      "verified_by": [
        "tests/test_pages_pipeline_contract.py:146"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Wiring.** The workflow at `.github/workflows/pages_pipeline.yml:253` must invoke the readiness CLI only through explicit opt-in. | Run `tests/test_pages_pipeline_contract.py::test_enabled_path_checks_strict_build_and_runs_owned_tck`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 432
    },
    {
      "id": "PIPE-PAGES-R043.4",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Refusal",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afcf5e9611e3"
      ],
      "verified_by": [
        "tests/test_pages_readiness.py:367"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Refusal.** The validator must reject stale source digests and private capability references before publication. | Run `tests/test_pages_readiness.py::test_stale_source_digest_fails_closed`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 433
    },
    {
      "id": "PIPE-PAGES-R043.5",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Evidence",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afcf5e9611e3"
      ],
      "verified_by": [
        "tests/test_pages_readiness.py:377"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Evidence.** The CLI must report versioned failure results rather than imply successful validation. | Run `tests/test_pages_readiness.py::test_cli_failure_result_is_versioned`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 434
    },
    {
      "id": "PIPE-PAGES-R043.6",
      "kind": "requirement",
      "parent": "PIPE-PAGES",
      "source": "specs/ecosystem-pages-parity/status.json",
      "title": "Hot-path proof",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afcf5e9611e3"
      ],
      "verified_by": [
        "tests/test_pages_readiness.py:836"
      ],
      "parent_title": "PIPE-PAGES \u2014 Ecosystem Pages parity and release receipt",
      "definition": "**Hot-path proof.** The direct script entry must load the sparse readiness package and validate the declared content source. | Run `tests/test_pages_readiness.py::test_direct_entry_requires_and_loads_the_sparse_readiness_package`.",
      "definition_source": "specs/ecosystem-pages-parity/requirements.md",
      "definition_line": 435
    },
    {
      "id": "PIPE-GATES",
      "kind": "spec",
      "parent": null,
      "source": "specs/gates/status.json",
      "title": "PIPE-GATES \u2014 Gate landing policy",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/gates/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/gates/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/specs/third_party_names.toml",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/specs/third_party_names.toml"
        },
        {
          "declared_in": "specs/gates/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "reference/gate-standard.md",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/reference/gate-standard.md"
        },
        {
          "declared_in": "specs/gates/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Failure policy",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/gates/plan.md#failure-policy"
        },
        {
          "declared_in": "specs/gates/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Gate partition",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/gates/plan.md#gate-partition"
        },
        {
          "declared_in": "specs/gates/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Tree-based execution",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/gates/plan.md#tree-based-execution"
        },
        {
          "declared_in": "specs/gates/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/gates/requirements.md"
        }
      ],
      "relations": [],
      "plan_diagrams": [],
      "unparsed_references": []
    },
    {
      "id": "PIPE-GATES-R001",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pre-land fast set and post-land full set",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "54442c92173d"
      ],
      "verified_by": [
        "tests/hooks/test_gate_runner.py:119",
        "tests/hooks/test_gate_runner.py:34",
        "tests/hooks/test_gate_runner.py:45",
        "tests/hooks/test_gate_runner.py:55",
        "tests/hooks/test_gate_runner.py:62"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pre-land fast set and post-land full set.** The eight blocking gates partition into a pre-land fast set and a post-land full set. The fast set is `format`, `hygiene`, `secrets`, `types`, and `tests-fast`; it runs server-side against the changeset's tree in seconds and decides whether the changeset lands. The full set is the remaining blocking gates, `spec`, `tests`, and `supply-chain`; it runs after landing. Landing applies no merge queue. | The partition test asserts both sets' exact membership from the published gate configuration and asserts that the full set is the fast set's complement within the eight blocking gates.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 5
    },
    {
      "id": "PIPE-GATES-R002",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Auto-revert versus fix-forward",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "47057b890626",
        "5792bcbbd148"
      ],
      "verified_by": [
        "tests/hooks/test_landing_policy.py:103",
        "tests/hooks/test_landing_policy.py:111",
        "tests/hooks/test_landing_policy.py:119",
        "tests/hooks/test_landing_policy.py:127",
        "tests/hooks/test_landing_policy.py:133"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Auto-revert versus fix-forward.** A failed post-land gate triggers a recorded decision. The failure class decides it. The gate runner classifies each failure as `product` or `infrastructure`. An infrastructure failure means the gate produced no result, for example a lost runner. An unclassified failure is `product`. Auto-revert is the default; it reverts the failed changeset without operator action. Fix-forward applies only when the owner opens a fix-forward task within 300 s of the failed verdict. A passing re-run never changes the decision for a product failure. An infrastructure failure may re-run once. A passing re-run records `infrastructure-rerun`, and nothing reverts. The decision record carries the gate ID, the changeset ID, the verdict, the failure class, the threshold that fired, and the evidence digest. The record is replayable. | The policy test asserts the decision and the complete record for each failure class and threshold. A product failure whose re-run passes auto-reverts.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 6
    },
    {
      "id": "PIPE-GATES-R003",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Gates run against the engine tree",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Gates run against the engine tree.** Every blocking gate runs against the Medulla tree without a local checkout. The gate reads file content by path and blob digest. Its verdict and evidence digest agree with the same gate run on a materialized checkout of the same revision. No working copy is required to land. | The contract test runs one blocking gate on an engine-tree fixture and on an identical materialized checkout and asserts that both runs produce the same verdict and evidence digest.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 7
    },
    {
      "id": "PIPE-GATES-R004",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Gate verdicts publish to the engine (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Gate verdicts publish to the engine (rollup).** Each blocking gate run must publish its verdict as an EG-SCM-R008 record through the arbora `source.*` HTTP operations. The record binds gate id, input digest, verdict, evidence digest and duration. A publish failure never changes the verdict. Children `.1` and `.2` deliver it. | See each child.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 8
    },
    {
      "id": "PIPE-GATES-R004.1",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wiring.** `run_gate_on` at `pipelines_hooks/gate_runner.py:62` calls `publish_verdict` in `pipelines_hooks/verdict_publish.py` after each gate. It uses plain HTTP and no ecosystem package. The arbora endpoint and token come from the CI environment. With no endpoint, the publish is skipped and logged. | `tests/test_verdict_publish.py::test_gate_run_posts_one_verdict` runs one gate against a fixture endpoint.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 9
    },
    {
      "id": "PIPE-GATES-R004.2",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Hot-path proof.** The test runs the fast gate set against a fixture tree with a fixture arbora endpoint. It observes one verdict record per gate with the tree digest. An endpoint error leaves every verdict unchanged. | `tests/test_verdict_publish.py::test_fast_set_publishes_and_survives_endpoint_error` asserts both cases.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 10
    },
    {
      "id": "PIPE-GATES-R006",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Changeset migration waves with entry and exit criteria (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Changeset migration waves with entry and exit criteria (rollup).** Repositories move to engine changesets in seven ordered waves. A wave starts only when its entry criteria hold and the prior wave has exited. Each wave exits on its own criteria. GitHub stays a byte-identical mirror in every wave. Children `.1` to `.7` name the waves. | Satisfied only when `.1` to `.7` are verified.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 11
    },
    {
      "id": "PIPE-GATES-R006.1",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1: webarchiver",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1: webarchiver.** Entry: EG-SCM-R001 to R004 and EG-SCM-R010 are verified. RM-SCM-R001 and RM-SCM-R002 are verified. ARBORA-OPS-R848.2 and ARBORA-OPS-R849 are verified. Exit: 20 changesets land through `source.land`. Each mirror commit has the tree hash of its changeset. One auto-revert rehearsal of PIPE-GATES-R002 passes. The mirror shows no divergence for 7 days. | `tests/hooks/test_migration_waves.py::test_wave_1_entry_and_exit` evaluates a fixture ledger and asserts each criterion.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 12
    },
    {
      "id": "PIPE-GATES-R006.2",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 2: small connectors",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 2: small connectors.** A small connector has under 10,000 source lines. Entry: wave 1 has exited. EG-SCM-R007 is verified. Exit: every small connector meets the wave 1 exit criteria for itself. | `test_wave_2_entry_and_exit` asserts the size bound and the per-repository exit.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 13
    },
    {
      "id": "PIPE-GATES-R006.3",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 3: the remaining connectors",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 3: the remaining connectors.** Entry: wave 2 has exited. EG-SCM-R011 is verified. Exit: every connector meets the wave 1 exit criteria. Each connector release publishes from the mirror unchanged. | `test_wave_3_entry_and_exit` asserts the criteria.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 14
    },
    {
      "id": "PIPE-GATES-R006.4",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 4: skills, pipelines and the user interfaces",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 4: skills, pipelines and the user interfaces.** Entry: wave 3 has exited. PIPE-GATES-R003 is verified, so every blocking gate runs on the engine tree. Exit: universal-skills, pipelines, Overstory, Tuig and Axil meet the wave 1 exit criteria. | `test_wave_4_entry_and_exit` asserts the criteria.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 15
    },
    {
      "id": "PIPE-GATES-R006.5",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 5: the Scion SDK and the harness",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 5: the Scion SDK and the harness.** Entry: wave 4 has exited. SDK-SCM-R002 and AU-SCM-R001 are verified. Exit: Scion SDK and Meristem meet the wave 1 exit criteria. | `test_wave_5_entry_and_exit` asserts the criteria.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 16
    },
    {
      "id": "PIPE-GATES-R006.6",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 6: arbora",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 6: arbora.** Entry: wave 5 has exited. ARBORA-OPS-R850 and ARBORA-OPS-R851 are verified. Exit: arbora meets the wave 1 exit criteria. One release deploys from a changeset tree. | `test_wave_6_entry_and_exit` asserts the criteria.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 17
    },
    {
      "id": "PIPE-GATES-R006.7",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 7: Medulla, last",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 7: Medulla, last.** Entry: wave 6 has exited. EG-SCM-R009 is verified. One restore of the engine source from the git mirror passes. Exit: Medulla meets the wave 1 exit criteria. A second restore rehearsal passes. | `test_wave_7_entry_and_exit` asserts the criteria and the two restores.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 18
    },
    {
      "id": "PIPE-GATES-R005",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Spec text names no third-party product",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0cb9114aec1"
      ],
      "verified_by": [
        "tests/test_spec_third_party_names.py:50",
        "tests/test_spec_third_party_names.py:87"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Spec text names no third-party product.** `pipelines-hook spec-standard` must refuse a third-party product or project name in authored `specs/**/*.md` text. The denylist is `pipelines_hooks/specs/third_party_names.toml`. Its `[allow]` table lets a connector name its own target system. Inline code, fenced code, URLs, link targets and spec IDs are ignored. Open standards and protocol names are never listed. | `tests/test_spec_third_party_names.py` asserts a finding for each named product, a pass for identifiers, code, links and standards, and the per-repository allowance.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 19
    },
    {
      "id": "PIPE-GATES-R007",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Canonical legacy-concept check",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "afcf5e9611e3"
      ],
      "verified_by": [
        "tests/hooks/test_no_legacy_concepts.py:106",
        "tests/hooks/test_no_legacy_concepts.py:20",
        "tests/hooks/test_no_legacy_concepts.py:64"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Canonical legacy-concept check.** Publish `no-legacy-concepts` from pipelines, not product repositories. Scan tracked Python, Rust and Markdown for the original numeric-pillar marker pattern, retaining historical filename/directory exclusions and path/line diagnostics. Explicit target repositories and worktrees are independent of ambient Git selectors, including the index. Findings fail with exit one; Git/read failures fail closed with exit two. This opt-in gate does not change the eight-gate landing partition. | Real Git fixtures cover detection, exclusions, tracked versus ignored/untracked files, foreign worktrees, polluted Git variables and CLI failure exits.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 20
    },
    {
      "id": "PIPE-GATES-R008",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Lock artifact version mirrors",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "180d570777d4",
        "5ff231c270b1"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central.py:428",
        "tests/hooks/test_lockfile_version_mirrors.py:14"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Lock artifact version mirrors.** Publish opt-in `lockfile-version-mirrors` for an explicit consumer repository root. Compare the self-package literal uv.lock version to project.version (fallback .bumpversion.cfg current_version); accept omitted editable versions and absent artifacts. Direct requirements.txt pins must satisfy project.dependencies and non-pin ranges must match them. This does not replace uv lock --check. | `tests/hooks/test_lockfile_version_mirrors.py` exercises the public CLI, version fallback, editable omission, pins, ranges and missing artifacts.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 21
    },
    {
      "id": "PIPE-GATES-R008.1",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "No version mirror outside `pyproject.toml`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5ff231c270b1"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central.py:428"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**No version mirror outside `pyproject.toml`.** A connector's version is the `[project]` `version` line alone. `connector-standard` (member `connector-files`) fails a tracked `.bumpversion.cfg` and any tracked Python file that spells `__version__ = \"<project version>\"`; code reads package metadata. `pipelines-connector version bump {major,minor,patch}` changes only that line and keeps its trailing comment. | `tests/hooks/test_connector_central.py::test_a_hardcoded_package_version_is_a_finding_and_metadata_is_not` and `::test_bump_changes_pyproject_only_and_keeps_the_comment`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 22
    },
    {
      "id": "PIPE-GATES-R009",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Configured static import boundary",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "180d570777d4"
      ],
      "verified_by": [
        "tests/hooks/test_coupling.py:17"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Configured static import boundary.** Publish opt-in `coupling` over consumer-configured package paths and denied module prefixes with allowed submodule prefixes. Scan tracked Python AST imports using the target repository's own index. Missing policy, paths, invalid source or Git failures refuse with exit two; prohibited imports give located exit-one findings. No file exemptions or sibling discovery. This checks static imports, not dynamic runtime access. | `tests/hooks/test_coupling.py` exercises the public CLI, allowed client imports, forbidden internals, syntax refusal, tracked-only scope and polluted Git selectors.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 23
    },
    {
      "id": "PIPE-GATES-R010",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Connector names agree with the declared fleet name",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a268ca1599c8",
        "cf912c89cd2f"
      ],
      "verified_by": [
        "tests/hooks/test_connector_name.py:11"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Connector names agree with the declared fleet name.** Publish `connector-name` from pipelines. It reads the fleet name a connector declares as its single `agent_connector_sdk.connector` entry point in `pyproject.toml`. It compares that name with the `CONNECTOR` constant of each generated `connector_sources.py` (read by AST, never imported) and each `connector=` literal in a `ConnectorContent` or `IngestBinding` call. A disagreeing literal fails the gate and names the file. An undeclared connector with a literal gets a warning; `--strict` makes it a failure. A repository with neither passes. | `tests/hooks/test_connector_name.py` covers agreement, disagreement, the undeclared warning, `--strict`, a non-connector repository and that a leftover `connector_manifest.yml` is never read.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 24
    },
    {
      "id": "PIPE-GATES-R011",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Shared hooks are current and snapshots accept symlinks",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "147049d18114",
        "270b968a56a4"
      ],
      "verified_by": [
        "tests/hooks/test_jscpd_snapshot.py:13"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Shared hooks are current and snapshots accept symlinks.** `gates_pipeline.yml` keys its pre-commit cache on the config hash and the current pipelines `main` commit. A cache restore then never serves hooks older than pipelines `main`. `jscpd_snapshot.materialize` skips a tracked symlink and keeps its in-tree target. It still refuses every other non-regular entry. | `tests/hooks/test_jscpd_snapshot.py` snapshots a tree with a symlinked root manifest. The workflow cache key names `steps.hook-rev.outputs.sha`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 25
    },
    {
      "id": "PIPE-GATES-R012",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "A connector that imports GraphQL declares it via the Scion SDK extra",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c16b8de6ac2d"
      ],
      "verified_by": [
        "tests/hooks/test_connector_graphql.py:11"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**A connector that imports GraphQL declares it via the Scion SDK extra.** Publish `connector-graphql` from pipelines. It applies to a repository whose non-test Python imports `gql` or `graphql`. Its core dependencies must hold `scion-sdk` (the legacy `agent-connector-sdk` alias remains accepted during transition) with the `graphql` extra. A direct `gql` or `graphql-core` requirement in the core dependencies or any extra is a duplicate. Each finding names the file or section. Findings warn by default; `--strict` makes them failures. A repository without such imports passes, and the Scion SDK itself is exempt. | `tests/hooks/test_connector_graphql.py` covers the declared extra, the missing extra, direct declarations, function-level imports, skipped tests and exempt repositories.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 26
    },
    {
      "id": "PIPE-GATES-R013",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "A connector uses the Scion SDK capability instead of its own copy",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "635e34079332",
        "db468196e870"
      ],
      "verified_by": [
        "tests/hooks/test_sdk_conformance.py:11"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**A connector uses the Scion SDK capability instead of its own copy.** Publish `sdk-conformance` from pipelines. It applies to a repository that depends on `scion-sdk` or the legacy `agent-connector-sdk` alias, other than the Scion SDK. It scans non-test Python, outside `tests`, `scripts`, `examples` and `docs`, and `pyproject.toml`. Each finding cites the Scion SDK row it breaks: `SDK-CENTRALIZED-CAPABILITIES-R001` for a direct `requests` import, a hand-built `httpx` client or call, or an own retry loop; `R008` for TLS verification turned off, a silenced insecure-request warning, or a hand-built SSL context; `R009` for a hand-parsed `env://` or `openbao://` reference; `R016` for an own GraphQL client on the protocol library's `Client` or transports; `R040` for a direct requirement on a package a Scion SDK extra carries, one finding per package. The direct GraphQL library declaration stays with `connector-graphql` (`PIPE-GATES-R012`). Findings warn by default; `--strict` makes them failures, and a repository turns strict on in its own configuration once migrated. | `tests/hooks/test_sdk_conformance.py` covers each pattern and its row, clean Scion SDK use, one finding per pinned package, the skipped paths, non-connector and Scion SDK repositories, the default warning and `--strict`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 27
    },
    {
      "id": "PIPE-GATES-R014",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "A connector ships and serves all five surfaces with a parent-linked ontology",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d98a324dd874",
        "fe1919ed8edb"
      ],
      "verified_by": [
        "tests/hooks/test_connector_surface.py:12"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**A connector ships and serves all five surfaces with a parent-linked ontology.** Publish `connector-surface-audit` from pipelines. It reads one connector checkout, or every repository of a fleet directory at a ref in detached worktrees, and prints one sorted JSON record per connector. Each record holds the `agent_connector_sdk.connector`, `skill_providers`, `prompt_providers` and `ontology_providers` entry points and any plugin group outside the Scion SDK namespace. It holds the counts of `<package>/skills/<name>/SKILL.md`, `<package>/prompts/<name>.json` with an `instructions.core_directive`, `<package>/ontology/*.ttl` and `<package>/ontology/shapes/*.ttl`. It records whether the server source registers that content with the Scion SDK (`ConnectorContent`, `register_connector_content` or `register_ontology_resources`). For each ontology file it records the `owl:Ontology` header, whether `owl:imports` names the parent IRI `http://knuckles.team/kg`, and each declared class as a parent term, linked (a direct or transitive `rdfs:subClassOf` that reaches a parent class) or orphan. The parent classes come from the Medulla parent ontology directory given with `--parent-ontology`. A record is complete when it has no gap. The audit reports by default; `--strict` exits 1 when any record is incomplete. The live surface and the engine pack contents are read by the arbora acceptance `surface_audit.py`, not by this audit. | `tests/hooks/test_connector_surface.py` builds fixture connectors and a fixture parent ontology in a temporary directory. It checks a complete connector, an orphan vocabulary, unserved content, a plugin group outside the SDK namespace, IRIs that hold `#`, literals that hold `.` and `#`, deterministic output and `--strict`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 28
    },
    {
      "id": "PIPE-GATES-R015",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Orphan connector classes get a reviewed parent class",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "147049d18114",
        "e4e8fe71c024",
        "f58ea0355db7"
      ],
      "verified_by": [
        "tests/hooks/test_ontology_orphan_map.py:12"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Orphan connector classes get a reviewed parent class.** Publish `connector-ontology-map` from pipelines. `propose` reads each connector's ontology files at a git ref and the Medulla parent ontology directory. For each orphan root class (the audit's reading of `orphan`) it scores candidate parent classes from an exact match of local name, label or alias, a head-noun match, a curated synonym table, a shared parent property, and a parent class named in the class comment. Each proposal carries its confidence and its reasons. Only an exact match is accepted unreviewed, and an exact match on a generic or BFO class is not. A class with no candidate is listed as a candidate for a new parent class. `decide` turns proposals and a reviewer's overrides into links and refuses an override that names a class the parent ontology lacks, so no parent class is invented. `apply` writes `rdfs:subClassOf` lines into the connector's Turtle text, and `owl:imports` of the parent IRI where the header lacks it, and changes nothing else in the file. `scaffold` writes the connector's `tests/test_ontology_parent_link.py`, which reads the ontology with the standard library only and asserts that the orphan classes are exactly the pending set. | `tests/hooks/test_ontology_orphan_map.py` builds a fixture parent ontology and connector ontologies in a temporary directory. It checks the exact, head-noun and synonym signals, the generic-class rule, the synonym entry that names a missing parent class, the new-parent candidate, the override check, the apply output (links, import, idempotence, unchanged text elsewhere) and deterministic output.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 29
    },
    {
      "id": "PIPE-GATES-R016",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "The composed ontology graph is reachable and bridged",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "03512169cad3",
        "072841d0fc31",
        "0e879efdfea4",
        "10797d760f22",
        "12874ccce7f9"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central.py:388",
        "tests/hooks/test_connector_central.py:408",
        "tests/hooks/test_connector_central.py:419",
        "tests/hooks/test_connector_central.py:491",
        "tests/hooks/test_connector_central.py:505"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**The composed ontology graph is reachable and bridged.** Model: `connector-ontology-map graph-check` composes every Medulla `*.ttl` at a ref (optionally overlaid with the ontology files an extra ref changed) and every fleet connector pack (`<pkg>/ontology/*.ttl`, shapes, and the generated `<pkg>/connector_sources.py`, whose `source_meta` entries, `SCHEMA_MAPPINGS` and `RESOURCES` are read statically by AST without importing the package) into one rdflib graph, with one module per Medulla file and one per pack. Behavior: it reports findings with the codes `PARSE_ERROR`, `ORPHAN_CLASS` (with chain length), `ISLAND_MODULE`, `ISLAND_PACK`, `DANGLING_REFERENCE` (file and line), `PROPERTY_UNTYPED`, `ISOLATED_CLASS` (data-only classes listed, not flagged), `UNBRIDGED_SAME_CONCEPT`, `INGEST_TYPE_MISSING`, `MAPPING_TARGET_MISSING`, `NO_JOIN_KEY`, `CONFLICTING_PARENT`, `DUPLICATE_LABEL` and `CQ_PATH_BROKEN`; it counts connected components of the module graph (reference edges and shared-IRI edges); it evaluates competency questions from a data file, each with the class and property hops it needs, and names every missing hop; and it groups the exact triples to add by owning repository (shared concepts in Medulla, system-specific ones in the pack). Refusal: the exit code is 1 when any finding exists and 0 when clean; `--warn` always exits 0; an unparseable file is a finding and never aborts the run. Evidence: the JSON result (summary per code, pack and module, questions, fix plan, findings) and a Markdown report, deterministic with sorted keys and no timestamps. Hot-path: a read-only pass over `git show` output; no checkout and no network, about 25 seconds for the whole fleet. | `tests/hooks/test_ontology_graph_check.py` builds fixture graphs that exercise every code, the question evaluation with a missing hop, the owner grouping of the fix plan, determinism, the exit codes and the Markdown report, the static declaration read (never imported, a broken declaration is a `PARSE_ERROR`, a legacy manifest is ignored) and the command against a temporary git repository.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 30
    },
    {
      "id": "PIPE-GATES-R016.1",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "An import bridges modules",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "296583a3f006"
      ],
      "verified_by": [
        "tests/hooks/test_ontology_graph_check.py:257"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**An import bridges modules.** In the module graph an `owl:imports` of an ontology IRI joins the importing module to the module that declares that ontology, in both edge sets. An import-only catalog is therefore not an island (EG-ORCH-VOCAB-R008.2). | `tests/hooks/test_ontology_graph_check.py::test_owl_imports_bridges_modules` composes an import-only module and its target and asserts one component.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 31
    },
    {
      "id": "PIPE-GATES-R016.2",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "An individual's type is a reference",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "296583a3f006"
      ],
      "verified_by": [
        "tests/hooks/test_ontology_graph_check.py:271"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**An individual's type is a reference.** A named individual typed by a class joins its module to the module declaring that class. A module holding only individuals is not an island. | `tests/hooks/test_ontology_graph_check.py::test_individual_type_bridges_modules` asserts the edge and one component.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 32
    },
    {
      "id": "PIPE-GATES-R016.3",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Test-fixture ontologies are outside the corpus",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "296583a3f006"
      ],
      "verified_by": [
        "tests/hooks/test_ontology_graph_check.py:282"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Test-fixture ontologies are outside the corpus.** A file under any directory whose name ends in `fixture` or `fixtures` is skipped for Medulla and pack sources, by that path rule and not by file name. | `tests/hooks/test_ontology_graph_check.py::test_fixture_dirs_are_excluded` asserts the rule and the filtered Medulla source listing.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 33
    },
    {
      "id": "PIPE-GATES-R016.4",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "A pack import of Medulla is a finding, never a bridge",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1e870800c5cb"
      ],
      "verified_by": [
        "tests/hooks/test_ontology_graph_check.py:303"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**A pack import of Medulla is a finding, never a bridge.** `owl:imports` joins modules only for Medulla-internal modules; an individual's type likewise bridges Medulla modules only. A pack that imports the Medulla catalog or any ontology a Medulla module declares gets `PACK_IMPORTS_CORE` with file and line. Islands come from class and property edges only. | `tests/hooks/test_ontology_graph_check.py::test_pack_import_of_eg_is_finding_and_not_a_bridge` asserts two components and one finding.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 34
    },
    {
      "id": "PIPE-GATES-R016.5",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Every pack class rolls up to Medulla core",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1e870800c5cb"
      ],
      "verified_by": [
        "tests/hooks/test_ontology_graph_check.py:315"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Every pack class rolls up to Medulla core.** `NOT_ROLLED_UP_TO_CORE` flags a pack class whose `subClassOf`/`equivalentClass` chain never reaches a class declared in a Medulla module; reaching BFO or a pack-local root does not count. It replaces the pack side of `ORPHAN_CLASS`, which stays for Medulla modules. | `tests/hooks/test_ontology_graph_check.py::test_rollup_requires_eg_class_not_bfo_or_pack_root` asserts the flagged set and no pack `ORPHAN_CLASS`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 35
    },
    {
      "id": "PIPE-GATES-R016.6",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "`connector-ontology-map fix` drops imports and stops redeclaration (R1, R2)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1e870800c5cb",
        "6f525f99c1b7",
        "ac14690526b3"
      ],
      "verified_by": [
        "tests/hooks/test_ontology_codemod.py:235",
        "tests/hooks/test_ontology_codemod.py:247",
        "tests/hooks/test_ontology_codemod.py:79",
        "tests/hooks/test_ontology_codemod.py:86"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**`connector-ontology-map fix` drops imports and stops redeclaration (R1, R2).** The subcommand works on one pack dir (`--pack`, applies unless `--dry-run`) or the fleet (`--fleet`, dry-run only) and patches `.ttl` files only. R1 removes the pack's `owl:imports` of a Medulla ontology. R2 removes a pack's `subClassOf`, label and comment triples for an IRI that Medulla also declares and keeps other pack triples. A rewritten file keeps the prefixes the file declares (a `schema:` prefix stays `schema:`), and the codemod writes no `.ttl` file unless every changed file re-parses as Turtle; otherwise it writes nothing and exits non-zero. | `tests/hooks/test_ontology_codemod.py::test_r1_drops_only_the_eg_import`, `::test_r2_removes_redeclared_parent_label_comment_keeps_rest`, `::test_drop_triples_keeps_schema_org_prefix_and_reparses` and `::test_codemod_refuses_to_write_a_file_that_does_not_reparse`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 36
    },
    {
      "id": "PIPE-GATES-R016.7",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Roll-up is mechanical, the residue is reviewed (R3, R4, R5)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1e870800c5cb",
        "6f525f99c1b7"
      ],
      "verified_by": [
        "tests/hooks/test_ontology_codemod.py:186",
        "tests/hooks/test_ontology_codemod.py:205",
        "tests/hooks/test_ontology_codemod.py:96"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Roll-up is mechanical, the residue is reviewed (R3, R4, R5).** R3 adds `subClassOf` to the one Medulla class matching a pack class by name, label or `skos:altLabel` (case-insensitive, singularized); an alias shared by two Medulla classes is ambiguous and goes to review. R4 applies the checked-in override table (`ontology_codemod_overrides.json`), which maps pack-local classes onto the Medulla domain-module classes where one fits; a null or non-Medulla target goes to review. R5 only proposes a head-noun parent into the review queue. | `tests/hooks/test_ontology_codemod.py::test_r3_exact_name_singularized_and_r4_override_and_r5_proposal`, `::test_r3_matches_eg_alt_label_and_sends_shared_alias_to_review` and `::test_overrides_map_the_domain_module_classes`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 37
    },
    {
      "id": "PIPE-GATES-R016.8",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Mappings and dangling references never invent classes (R6, R7)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1e870800c5cb"
      ],
      "verified_by": [
        "tests/hooks/test_ontology_codemod.py:113",
        "tests/hooks/test_ontology_codemod.py:121"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Mappings and dangling references never invent classes (R6, R7).** R6 reports a null `ontology_class` whose type name resolves to a declared class, or has none, in the review queue and patches no manifest. R7 rewrites an undeclared IRI to the single declared class or property with the same normalized name and queues the rest. | `tests/hooks/test_ontology_codemod.py::test_r6_report_only_never_patches_manifest` and `::test_r7_rewrites_unique_match_and_queues_the_rest`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 38
    },
    {
      "id": "PIPE-GATES-R016.9",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Untyped properties and the run contract (R8)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1e870800c5cb"
      ],
      "verified_by": [
        "tests/hooks/test_ontology_codemod.py:134",
        "tests/hooks/test_ontology_codemod.py:144",
        "tests/hooks/test_ontology_codemod.py:157"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Untyped properties and the run contract (R8).** R8 adds a missing domain or range from SHACL shapes and manifest relations only when exactly one candidate exists. Every decision is taken on the original composed graph, so the run is idempotent and independent of input order. The output is per-repo patches, `summary.json` (files and rule counts per repo, findings before and after from a re-run over the patched sources) and `review-queue.json` grouped by repo and rule; `ISOLATED_CLASS` is listed, never fixed. | `tests/hooks/test_ontology_codemod.py::test_r8_infers_only_a_single_candidate`, `::test_idempotent_deterministic_and_projection` and `::test_cli_dry_run_writes_patch_summary_and_queue`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 39
    },
    {
      "id": "PIPE-GATES-R016.10",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Declarations from the retired files (migrate a)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "64c83743091d"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:128",
        "tests/hooks/test_connector_migrate.py:145",
        "tests/hooks/test_connector_migrate.py:152"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Declarations from the retired files (migrate a).** `connector-ontology-map migrate` writes `<pkg>/connector_sources.py` from the manifest, presets and ingest sources by a fixed template: sorted keys, one `source_meta(tool=...)` per tool (a preset and an ingest source on the same tool merge; the ingest id wins), schema mappings and resources as data. No tool function is edited. A source with no tool, id field or valid id is a blocking review item and nothing is written. | `tests/hooks/test_connector_migrate.py::test_declarations_are_generated_sorted_and_loadable`, `::test_record_type_rule_prefers_tool_noun_then_doc_type` and `::test_unresolvable_preset_is_a_blocking_review_item`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 40
    },
    {
      "id": "PIPE-GATES-R016.11",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Cut files and packaging (migrate b)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "072841d0fc31"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:163",
        "tests/hooks/test_connector_migrate.py:261"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Cut files and packaging (migrate b).** The five cut files and their `pyproject` package-data and `MANIFEST.in` entries are deleted; the certification digests of them are dropped. | `tests/hooks/test_connector_migrate.py::test_cut_files_and_packaging_entries_are_removed` and `::test_manifest_schema_mapping_reads_are_redirected_and_certification_digests_dropped`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 41
    },
    {
      "id": "PIPE-GATES-R016.12",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Prompts (migrate c)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:175",
        "tests/hooks/test_connector_migrate.py:176"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Prompts (migrate c).** `extends` and `compose` lines are removed from `prompts/*.json`, keeping the file format; a file that does not strip cleanly is a review item. | `tests/hooks/test_connector_migrate.py::test_prompt_extends_and_compose_are_stripped_keeping_format`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 42
    },
    {
      "id": "PIPE-GATES-R016.13",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Scion SDK floor and version (migrate e)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "e51a658f9189"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:185",
        "tests/hooks/test_connector_migrate.py:195"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Scion SDK floor and version (migrate e).** Every Scion SDK floor below 0.4.1 becomes `>=0.4.1` and the patch version is bumped through the repo's `.bumpversion.cfg` file list; a floor already at 0.4.0 changes nothing. `uv.lock` is refreshed. | `tests/hooks/test_connector_migrate.py::test_sdk_floor_and_patch_bump_follow_the_repo_bump_config` and `::test_floor_already_at_or_above_leaves_version_alone`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 43
    },
    {
      "id": "PIPE-GATES-R016.14",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Tests (migrate f)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "64c83743091d",
        "65d2cf8bb640",
        "fbcdac36c764"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:204",
        "tests/hooks/test_connector_migrate.py:216",
        "tests/hooks/test_connector_migrate.py:262",
        "tests/hooks/test_connector_migrate.py:286",
        "tests/hooks/test_connector_migrate.py:298"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Tests (migrate f).** Tests that read the cut files are rewritten by fixed rules (ingest-source and schema-mapping reads go to the generated module) or deleted (manifest, fingerprint and preset tests); every other match goes to the review list unedited. | `tests/hooks/test_connector_migrate.py::test_tests_are_redirected_or_deleted_by_fixed_rules`, `::test_unmatched_test_goes_to_review_unedited` and `::test_mapping_item_access_follows_the_declaration_model` and `::test_connector_name_read_from_the_manifest_uses_the_entry_point_identity` and `::test_scaffolded_parent_import_assertion_is_dropped_because_r1_removes_the_import` (the scaffolded parent-link test no longer asserts the Medulla import that R1 removes).",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 44
    },
    {
      "id": "PIPE-GATES-R016.15",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Idempotent hard cutover",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "569c0031884d"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:227",
        "tests/hooks/test_connector_migrate.py:240",
        "tests/hooks/test_connector_migrate.py:249"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Idempotent hard cutover.** A second run changes nothing and equal inputs give equal output. Any tracked file still naming a cut file is a blocking review item; the exit code is 2 when any blocking item exists. | `tests/hooks/test_connector_migrate.py::test_second_run_is_a_no_op_and_output_is_deterministic`, `::test_leftover_reference_to_a_cut_file_is_blocking` and `::test_cli_writes_the_report_and_exit_code_follows_blocking_items`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 45
    },
    {
      "id": "PIPE-GATES-R016.16",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Batch driver and verify",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "10797d760f22",
        "3c9520af33c8",
        "64c83743091d",
        "6feb14333fd2",
        "7a345cc4295e"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:1158",
        "tests/hooks/test_connector_migrate.py:372",
        "tests/hooks/test_connector_migrate.py:387",
        "tests/hooks/test_connector_migrate.py:401",
        "tests/hooks/test_connector_migrate.py:408"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Batch driver and verify.** `scripts/connector_migrate_batch.py` runs worktree, migrate, commit, verify, push, PR, `gates` and squash-merge per repo, 4 in flight at most, with a resumable JSON ledger and `review.json`; `scripts/connector_verify.py` starts the server over stdio and checks `connector://resources`, `ontology://` and `shapes://` and that no `manifest://` alias is served. A test that reads the connector name from the manifest is rewritten to `connector_name()` of the entry-point identity. | `tests/hooks/test_connector_migrate.py``::test_driver_dry_run_migrates_commits_verifies_and_records_the_ledger` and `::test_driver_failure_stops_that_repo_and_lands_in_the_ledger` run the driver on a fixture repo with the external commands stubbed; `::test_driver_applies_a_reviewed_per_repo_patch_after_migrate` covers the reviewed one-off `scripts/connector_migrate_patches/<repo>.patch`, applied after migrate and never a codemod rule.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 46
    },
    {
      "id": "PIPE-GATES-R016.17",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Docs (migrate g)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "e51a658f9189"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:466",
        "tests/hooks/test_connector_migrate.py:476"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Docs (migrate g).** In README and docs (`.md`, `.rst`), a line or table row that only names a cut file (a bare bullet, a tree entry with an optional comment, a table row whose first cell is the file) is removed; any other mention stays and is a non-blocking review item. | `tests/hooks/test_connector_migrate.py::test_docs_lines_that_only_name_a_cut_file_are_removed_and_ambiguous_ones_stay` and `::test_migrate_edits_docs_and_leaves_ambiguous_mentions_as_non_blocking_review`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 47
    },
    {
      "id": "PIPE-GATES-R016.18",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Re-bump of a migrated repo",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "e51a658f9189"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:486",
        "tests/hooks/test_connector_migrate.py:733"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Re-bump of a migrated repo.** `migrate --rebump` (driver `--rebump`) raises the Scion SDK floor, bumps the patch version through `.bumpversion.cfg` and refreshes the lock, and changes nothing else; a second run changes nothing. | `tests/hooks/test_connector_migrate.py::test_rebump_raises_the_floor_bumps_the_patch_and_touches_nothing_else`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 48
    },
    {
      "id": "PIPE-GATES-R016.19",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Reference strings (migrate f)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "25a9ac7195f6",
        "2cf12e1a110e"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:562"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Reference strings (migrate f).** In tests, relation and mapping reference assertions follow the live layout: `resources/<C>/relations/<R>` becomes `relations/<C>/<R>`, an `endswith` of `relations/<R>` or `/relations/<R>` becomes `/<R>`, `schema_mappings/` becomes `mappings/`, `manifest:<name>#...` becomes `connector:<name>#...`, `rsplit(\"/relations/\", 1)` becomes `rsplit(\"/\", 1)`, and an Scion SDK floor literal below 0.4.1 becomes 0.4.1; the re-bump applies the same rewrite. | `tests/hooks/test_connector_migrate.py::test_reference_strings_follow_the_live_layout_and_sdk_literals_follow_the_floor` and `::test_rebump_also_points_reference_assertions_at_the_live_layout`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 49
    },
    {
      "id": "PIPE-GATES-R016.20",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Cut reads in tests (migrate f)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "abd6a72f11b7"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:537",
        "tests/hooks/test_connector_migrate.py:622",
        "tests/hooks/test_connector_migrate.py:633"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Cut reads in tests (migrate f).** The fleet-name test, with or without the `manifest_path` fallback, asserts `connector_name(\"<pkg>\")` and drops the fingerprint block; a bare string item naming a cut file is removed; a test function that reads a cut file or `manifest://` is deleted whole with its spec ids reported (non-blocking), and a test file left without tests is deleted. | `tests/hooks/test_connector_migrate.py::test_fleet_name_test_with_manifest_path_fallback_reads_connector_name_instead`, `::test_list_items_naming_cut_files_and_test_functions_reading_them_are_deleted` and `::test_migrate_deletes_cut_tests_and_files_left_without_tests`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 50
    },
    {
      "id": "PIPE-GATES-R016.21",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Source prose and wiring (migrate g)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:644",
        "tests/hooks/test_connector_migrate.py:645"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Source prose and wiring (migrate g).** Docstring, comment and `.ttl` comment mentions of a cut file name `<pkg>.connector_sources`; a `connectors/__init__.py` that is only a docstring gets the fixed docstring; the `manifest_path=` keyword of `ConnectorContent` is removed. | `tests/hooks/test_connector_migrate.py::test_prose_mentions_the_connectors_init_and_manifest_path_follow_the_generated_module`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 51
    },
    {
      "id": "PIPE-GATES-R016.22",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Packaging and generator scripts (migrate b)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:660",
        "tests/hooks/test_connector_migrate.py:661"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Packaging and generator scripts (migrate b).** The `source_connector_providers` entry point and comment blocks naming a cut file leave `pyproject.toml`; cut names leave hook `exclude` patterns; `scripts/generate_tool_schemas.py` and `compute_tool_fingerprints.py` (when they name a cut file), the scripts that only drive them, their pre-commit hooks and `<pkg>/connectors/adapters.py` are deleted, and tests importing a deleted module are deleted. | `tests/hooks/test_connector_migrate.py::test_provider_entry_point_hook_alternatives_scripts_and_adapters_go`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 52
    },
    {
      "id": "PIPE-GATES-R016.23",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Certification and version targets (migrate b, e)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:695",
        "tests/hooks/test_connector_migrate.py:696"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Certification and version targets (migrate b, e).** `ontology/certification.json` is rewritten in canonical format with the cut digests dropped, whatever its previous format; a version-bump target that does not contain the version string is skipped with a non-blocking review item. | `tests/hooks/test_connector_migrate.py::test_certification_is_canonicalized_then_stripped_and_missing_bump_targets_are_skipped`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 53
    },
    {
      "id": "PIPE-GATES-R016.24",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Action tools and list values (migrate a)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "ac8d6790d275"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:713"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Action tools and list values (migrate a).** Without a served-tool list a preset that calls its tool with an `action` is a non-blocking review item (see R016.27); list values inside a source declaration are written as JSON lists, never tuples. | `tests/hooks/test_connector_migrate.py::test_an_action_preset_is_reported_and_lists_in_presets_stay_json_lists`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 54
    },
    {
      "id": "PIPE-GATES-R016.25",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Driver isolation and sync",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1abb4303df99"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:744",
        "tests/hooks/test_connector_migrate.py:773"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Driver isolation and sync.** Each repo gets its own `PRE_COMMIT_HOME`; a re-run of a failed repo starts from a clean `origin/main` worktree; the environment is synced again after migrate so the verify run uses the raised Scion SDK; when `--all-extras` cannot build, sync uses the `sync-args` of the repo's own `connector-pr.yml`. | `tests/hooks/test_connector_migrate.py::test_driver_sync_falls_back_to_the_pr_gate_extras_and_each_repo_gets_its_own_pre_commit_home`, `::test_driver_retry_starts_clean_and_resyncs_after_migrate_with_per_repo_envs`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 55
    },
    {
      "id": "PIPE-GATES-R016.26",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Typed module and test rules",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "16df550a8c49",
        "9667f5c5649c"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:863",
        "tests/hooks/test_connector_migrate.py:884"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Typed module and test rules.** The generated `connector_sources.py` is fully type-annotated and already ruff-formatted (`SOURCES`, `SCHEMA_MAPPINGS`, `RESOURCES`, `specs`), so strict mypy and the formatter hook leave it unchanged. Tests: `assert HUB_IRI in imports` is dropped with the hub import; a `>=X.Y.Z` literal on a line naming the Scion SDK is raised to the floor; a test function naming `source_connector_providers` is deleted with its spec ids reported. The leftover scan skips the frozen `validation/` evidence directory, and verify requires `shapes://` only when `ontology/shapes/*.ttl` exists. | `tests/hooks/test_connector_migrate.py::test_generated_module_is_fully_typed_and_test_rules_follow_the_live_layout` and `::test_validation_evidence_is_not_a_leftover_and_verify_needs_shapes_only_with_shape_files`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 56
    },
    {
      "id": "PIPE-GATES-R016.27",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Action tools resolved from the served tool list",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "16df550a8c49",
        "aaf473b4312d"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:896",
        "tests/hooks/test_connector_migrate.py:984"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Action tools resolved from the served tool list.** The driver lists the tools the connector serves over stdio before migrate (`connector_served_tools.py`, `--served-tools`). A preset with an `action` becomes the one served tool named `<tool prefix>_<action>[_<rest of tool>]`, `<tool>_<action>` or `<server stem>_<action>[_<tool>]` and drops the `action` argument; zero or several candidates are a blocking review item, never a guess. | `tests/hooks/test_connector_migrate.py::test_an_action_preset_resolves_to_the_one_served_split_tool_else_is_a_blocking_review_item`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 57
    },
    {
      "id": "PIPE-GATES-R016.28",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Changelog entry",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "16df550a8c49"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:574",
        "tests/hooks/test_connector_migrate.py:923"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Changelog entry.** A `CHANGELOG.md` with `## [x]` headings gets one fixed entry for the bumped version (Scion SDK floor and declared sources), once; release-version tests pin it. | `tests/hooks/test_connector_migrate.py::test_changelog_gets_one_fixed_entry_for_the_bumped_version`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 58
    },
    {
      "id": "PIPE-GATES-R016.29",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Driver commit loop and reviewed patches",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "16df550a8c49",
        "27ead1c901f9",
        "aaf473b4312d"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:947"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Driver commit loop and reviewed patches.** The commit hooks format the allowlist; a failed commit whose hooks changed the tree is re-staged and retried while each attempt changes something (at most 4, a no-change failure is final), runs with the synced venv first on `PATH` and an ignored missing `.env` created from `.env.example`; an earlier commit ahead of `origin/main` is kept, and nothing to stage with nothing ahead is a no-op recorded as merged only when the cut files are absent on `origin/main`. A pytest abort with `Fatal Python error: Illegal instruction` (host CPU lacks an instruction set a wheel needs) is recorded as `local_tests_skipped` and the PR gates run the tests. A reviewed `<repo>.pre.patch` applies before migrate (`<repo>.patch` still after), both with `git apply --recount` because the whitespace hooks trim blank context lines of a stored patch. | `tests/hooks/test_connector_migrate.py::test_commit_restages_after_a_formatter_hook_stops_when_nothing_changes_and_reports_noop`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 59
    },
    {
      "id": "PIPE-GATES-R016.30",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Mapping reads in tests",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "aaf473b4312d"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:996"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Mapping reads in tests.** `schema_mappings[<key>][\"ontology_class\"]` and `[\"fields\"]` on the generated declaration become attribute reads (the declaration's mappings are models). | `tests/hooks/test_connector_migrate.py::test_mapping_subscripts_on_the_declaration_become_attribute_reads`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 60
    },
    {
      "id": "PIPE-GATES-R016.31",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Scripts that drive a deleted script",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "12a4ba5cbca4"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:1008"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Scripts that drive a deleted script.** The scripts deleted with the cut generators are found to a fixed point (a driver sorting before the script it imports is deleted too) and by module stem as well as file name, so a test importing `from scripts import <deleted>` is deleted with the module-level import it cannot run. | `tests/hooks/test_connector_migrate.py::test_scripts_driving_a_deleted_script_go_to_a_fixed_point_and_tests_importing_them_are_deleted`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 61
    },
    {
      "id": "PIPE-GATES-R016.32",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Prompt key assertions",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "12a4ba5cbca4"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:1032"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Prompt key assertions.** `assert x[\"extends\"] == ...`, `assert x[\"compose\"] == ...` and `assert \"extends\" in x` are dropped from tests, because the prompt no longer carries the stripped keys. | `tests/hooks/test_connector_migrate.py::test_assertions_on_the_stripped_prompt_keys_are_dropped`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 62
    },
    {
      "id": "PIPE-GATES-R016.33",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Package name from `pyproject.toml`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "12a4ba5cbca4"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:1044"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Package name from `pyproject.toml`.** The startup-test form that derives the package from the checkout directory name (`.parent.parent.name.replace(\"-\", \"_\")`) reads `[project].name` instead, so it passes in any worktree directory. | `tests/hooks/test_connector_migrate.py::test_a_startup_test_reads_the_package_name_from_pyproject_not_the_checkout_directory`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 63
    },
    {
      "id": "PIPE-GATES-R016.34",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Empty-source module and file endings",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "12a4ba5cbca4"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:1070"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Empty-source module and file endings.** A connector declaring no source gets `SOURCES: tuple[Any, ...] = ()` and no `source_meta` import (the formatter and ruff leave it unchanged); a test file left by deleting cut tests ends with exactly one newline. | `tests/hooks/test_connector_migrate.py::test_a_connector_without_sources_renders_an_import_free_empty_tuple_and_cut_tests_leave_no_trailing_blank_lines`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 64
    },
    {
      "id": "PIPE-GATES-R016.35",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Hooks a connector's own workflow covers",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "12a4ba5cbca4"
      ],
      "verified_by": [
        "tests/test_connector_release_pipeline.py:100"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Hooks a connector's own workflow covers.** `connector_pr_pipeline.yml` takes a `skip-hooks` input (default `docker-compose-check`); a connector whose hook cannot run on a hosted runner passes it there. The hosted PR gate installs the pinned dupehound itself (R016.40). The reviewed `webarchiver.patch` skips `scanner-versions`. | `tests/test_connector_release_pipeline.py::test_connector_pr_workflow_forwards_skip_hooks_and_the_webarchiver_patch_skips_the_scanner_hook`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 65
    },
    {
      "id": "PIPE-GATES-R016.36",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Entity ids are validated strings",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "2e3dfbb4af02",
        "9a1fb34a84ee"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:1091"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Entity ids are validated strings.** In package source, `Entity(id=r.get(\"id\"), node_type=r.get(\"node_type\"), ...)` (typed `Any \\| None`, while Scion SDK 0.4 requires `str`) reads both through one `_required_text` helper that raises `ValueError` for a missing or empty value; the comment saying validation is left to the Scion SDK goes with it. | `tests/hooks/test_connector_migrate.py::test_entity_ids_read_with_get_become_validated_strings`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 66
    },
    {
      "id": "PIPE-GATES-R016.37",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Provider entry point under either group",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "9a1fb34a84ee"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:1117"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Provider entry point under either group.** The source-provider entry-point table is dropped whether it sits under `agent_connector_sdk.` or `agent_utilities.source_connector_providers`. | `tests/hooks/test_connector_migrate.py::test_the_source_provider_entry_point_is_dropped_under_either_group`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 67
    },
    {
      "id": "PIPE-GATES-R016.38",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Illegal-instruction detection",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "9a1fb34a84ee"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:1128"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Illegal-instruction detection.** The driver looks for the `Fatal Python error: Illegal instruction` header in the full pytest output, not in the 2000-character tail kept in the ledger, so a crash dump that pushes the header out of the tail is still recorded as `local_tests_skipped`. | `tests/hooks/test_connector_migrate.py::test_an_illegal_instruction_abort_is_found_in_the_full_output_not_the_cut_tail`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 68
    },
    {
      "id": "PIPE-GATES-R016.39",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Ontology artifacts are generated at release, not committed",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5ff231c270b1"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central.py:388",
        "tests/hooks/test_connector_central.py:408",
        "tests/hooks/test_connector_central.py:419"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Ontology artifacts are generated at release, not committed.** `pipelines-connector generate` writes `<pkg>/ontology/shapes/connector.shacl.ttl` (one `<Class>GovernanceShape` per `:Class a owl:Class` of `<pkg>/ontology/<ontology_source>.ttl`, sorted, or `[tool.pipelines.ontology] shape_classes`) and `<pkg>/ontology/certification.json` (SHA-256 digests of the committed artifacts and the generated shapes, fixed compatibility, `validated_at` from `SOURCE_DATE_EPOCH` or the last commit time) into the build tree; the same inputs give the same bytes. `python_pipeline.yml` takes `connector` and runs it before the wheel is built; `connector-files` fails a tracked copy of either file. | `tests/hooks/test_connector_central.py::test_generate_is_deterministic_and_derives_shapes_from_declared_classes`, `::test_generate_honours_the_shape_classes_override_and_refuses_a_missing_source` and `::test_python_release_workflow_generates_before_the_build`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 69
    },
    {
      "id": "PIPE-GATES-R016.40",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "The connector PR gate runs dupehound",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5ff231c270b1"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central.py:491",
        "tests/hooks/test_connector_central.py:520"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**The connector PR gate runs dupehound.** `connector_pr_pipeline.yml` passes `scanners: dupehound` to `gates_pipeline.yml`, which builds the pinned dupehound with `scripts/install_scanners.sh <root> dupehound` (cached on the installer) and puts it on PATH before the hooks, so `dupehound-changed` runs instead of failing closed. The installer builds and prints only the named scanners; with none named it installs all four. | `tests/hooks/test_connector_central.py::test_connector_pr_workflow_builds_the_pinned_dupehound_instead_of_skipping_it` and `::test_scanner_installer_installs_only_the_named_scanners`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 70
    },
    {
      "id": "PIPE-GATES-R016.41",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "The repo-local version hook leaves the connector (migrate e)",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "8ac2fce8e6c1"
      ],
      "verified_by": [
        "tests/hooks/test_connector_migrate.py:1137"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**The repo-local version hook leaves the connector (migrate e).** The migrate codemod removes the `check-bumpversion` hook from `.pre-commit-config.yaml`, because `pipelines-connector version` owns the version and the PR runner has no `bump2version`; the other hooks stay, and the version bump through `.bumpversion.cfg` is unchanged until the central-config pass removes that file. A second run changes nothing. | `tests/hooks/test_connector_migrate.py::test_repo_local_check_bumpversion_hook_is_removed_and_the_rest_stays`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 71
    },
    {
      "id": "PIPE-GATES-R016.42",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "The connector PR gate installs the identity catalog from the caller's variable",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "89e96300d187"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central.py:505"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**The connector PR gate installs the identity catalog from the caller's variable.** `connector_pr_pipeline.yml`'s setup command writes the caller's `PROHIBITED_IDENTITY_CATALOG` Actions variable (passed to the setup step by `gates_pipeline.yml`) to `~/.config/agent-utilities/governance/prohibited-identities.json` before the project sync, the way the core repositories' CI does. The `tracked-privacy` member of the `secrets` hook stays fail-closed: a caller without the variable fails with `CANNOT RUN`, and no skip is offered. | `tests/hooks/test_connector_central.py::test_connector_pr_workflow_installs_the_identity_catalog_from_the_callers_variable_and_stays_fail_closed`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 72
    },
    {
      "id": "PIPE-GATES-R016.43",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Home paths are case-sensitive path segments",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a40c555e675c"
      ],
      "verified_by": [
        "tests/hooks/test_privacy.py:32",
        "tests/hooks/test_privacy.py:38"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Home paths are case-sensitive path segments.** `tracked-privacy` flags `/home/<name>/` and `/Users/<name>/` (and `/mnt/<drive>/Users/<name>/`) only with that exact case, and Windows drive paths (`C:\\Users\\<name>`) in any case; a lowercase `/users/me/` API route is not a home path. A stand-in account from the documented list still passes. | `tests/hooks/test_privacy.py::test_privacy_ignores_a_lowercase_users_api_route` and `::test_privacy_still_fires_on_real_home_paths`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 73
    },
    {
      "id": "PIPE-GATES-R016.44",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "The connector repository set is the workspace manifest's `agents` group intersected with the non-archived GitHub repositories",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "313d63c9dbce",
        "7b82e010533f"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_fleet.py:32",
        "tests/hooks/test_connector_central_fleet.py:37"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**The connector repository set is the workspace manifest's `agents` group intersected with the non-archived GitHub repositories.** The batch driver and the census build their repository list from `workspace.yml` and `gh repo list --no-archived`; local checkout directories are never the source, an archived or unlisted repository is excluded, and an explicit repository list is filtered the same way. | `tests/hooks/test_connector_central_fleet.py::test_the_set_is_the_agents_group_of_the_manifest` and `::test_an_archived_repository_is_excluded_and_an_unlisted_local_checkout_never_enters`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 74
    },
    {
      "id": "PIPE-GATES-R016.50",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.g1`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "16bb950f6cf8",
        "8e8272f805dd"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_wave1.py:276",
        "tests/hooks/test_connector_central_wave1.py:284",
        "tests/hooks/test_connector_central_wave1.py:294",
        "tests/hooks/test_connector_central_wave1.py:311"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.g1`.** `connector-ontology-map migrate --central`: entry point value names `<pkg>:connector`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_wave1.py::test_order_lists_every_wave1_rule_and_all_are_registered`, `::test_g1_entry_point_names_the_connector_value`, `::test_g1_tests_asserting_the_entry_point_table_follow_the_connector_value`, `::test_g1_unmatched_value_goes_to_review_and_unreviewed_bootstrap_is_untouched`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 75
    },
    {
      "id": "PIPE-GATES-R016.51",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.g2`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "30ef5ecba1fc",
        "39e835a22c93"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_wave1.py:1521",
        "tests/hooks/test_connector_central_wave1.py:326",
        "tests/hooks/test_connector_central_wave1.py:336"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.g2`.** `connector-ontology-map migrate --central`: console script becomes `agent_connector_sdk.cli:serve`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_wave1.py::test_g2_console_script_becomes_serve`, `::test_g2_unknown_script_value_is_reviewed`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 76
    },
    {
      "id": "PIPE-GATES-R016.52",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.g3`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "56a34a613573",
        "cc72dc4172bc"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_g3_clusters.py:1004",
        "tests/hooks/test_connector_central_g3_clusters.py:1020",
        "tests/hooks/test_connector_central_g3_clusters.py:1039",
        "tests/hooks/test_connector_central_g3_clusters.py:1060",
        "tests/hooks/test_connector_central_g3_clusters.py:1069"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.g3`.** `connector-ontology-map migrate --central`: `mcp_server.py` bootstrap is deleted and its values extracted. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_g3_clusters.py::test_dispatch_with_a_stdio_fallback_else_is_the_sdk_run_loop`, `::test_dispatch_with_extra_stderr_banner_lines_and_an_error_exit`, `::test_dispatch_serving_a_subset_declares_the_transports`, `::test_dispatch_that_changes_what_a_transport_does_is_refused`, `::test_tools_module_imported_from_the_package_becomes_a_dotted_tools_value`, `::test_tools_module_that_is_not_a_package_module_is_refused`, `::test_surface_without_client_declares_no_api`, `::test_verbose_targets_computed_from_the_configuration_is_refused`, `::test_verbose_targets_from_a_function_that_reads_nothing_moves_to_import_time`, `::test_computed_client_class_stays_in_review`, `::test_registrars_become_discovery_of_the_module_namespace`, `::test_registrars_with_another_register_function_in_the_module_are_refused`, `::test_literal_tool_registry_with_derived_tags_is_expressed_as_discovery`, `::test_imported_tool_registry_with_derived_tags_names_that_module`, `::test_manifest_becomes_the_first_verbose_target`, `::test_manifest_keeps_the_given_verbose_targets_after_the_main_client`, `::test_logging_that_reads_anything_else_stays_in_review`, `::test_inert_openapi_import_block_and_its_dead_lists_are_deleted`, `::test_openapi_block_under_a_different_condition_stays_in_review`, `::test_constant_health_payload_with_headers_is_deleted`, `::test_hand_built_server_names_the_registration_context_adapter_to_write`, `::test_comment_mentioning_get_mcp_instance_in_another_module_does_not_block`, `::test_code_using_get_mcp_instance_in_another_module_still_blocks`, `::test_imported_function_called_with_the_server_gets_a_registration_context_adapter`, `::test_server_and_args_must_come_first_in_the_returned_tuple`, `::test_omitted_tools_module_is_not_defaulted_to_mcp_server`, `::test_omitted_tools_module_with_a_package_tools_module_is_refused`, `::test_g3_accepts_forwarded_command_args_and_delegates_the_build_server_wrapper`, `::test_g3_refuses_a_wrapper_that_does_more_than_return_the_server`, `::test_options_dispatch_is_the_sdk_run_loop`, `::test_instructions_variable_and_argv_isolation_are_the_sdk_defaults`, `::test_bootstrap_in_a_second_module_is_extracted_and_the_wrapper_loses_the_reexport`, `::test_g3_deletes_a_main_guard_that_skips_under_pytest`, `::test_tool_registry_with_a_hyphenated_tag_becomes_connector_tool_registry`, `::test_literal_registry_written_in_the_bootstrap_is_inlined`, `::test_imported_registry_with_underived_tags_becomes_a_tuple_of_the_import`, `::test_registry_that_is_not_a_literal_stays_refused`, `::test_register_split_action_tools_becomes_action_tools_and_prefixes`, `::test_action_split_module_stays_when_a_test_still_imports_it`, `::test_serve_action_tools_in_a_tags_guard_and_a_surface_free_bootstrap`, `::test_action_registration_without_a_tool_surface_declares_no_client`, `::test_action_registration_from_outside_the_package_is_refused`, `::test_inline_tools_are_hoisted_and_declared`, `::test_inline_tool_that_reads_the_server_is_refused`, `::test_inline_tool_calling_another_inline_tool_is_refused`, `::test_health_route_that_probes_the_backend_becomes_readiness`, `::test_ready_route_becomes_readiness_beside_the_plain_health_route`, `::test_two_backend_probes_are_refused`, `::test_other_custom_route_becomes_a_declared_route`, `::test_route_with_other_custom_route_keywords_is_refused`, `::test_local_one_parameter_registration_takes_the_registration_context`, `::test_local_registration_function_used_elsewhere_gets_an_adapter_instead`, `::test_calls_with_other_arguments_become_one_register_extras`, `::test_extra_call_reading_a_bootstrap_local_is_refused`, `::test_registration_before_the_tool_surface_is_refused`, `::test_content_that_restates_the_convention_is_dropped`, `::test_content_under_a_subdirectory_becomes_content_root`, `::test_content_under_another_connector_name_is_noted_for_review`, `::test_content_that_is_not_the_package_directory_is_refused`, `::test_discovered_registrars_stay_listed_so_the_unused_import_tidy_keeps_them`, `tests/hooks/test_connector_central_wave1.py::test_g3_bootstrap_is_deleted_and_only_its_imports_are_pruned`, `tests/hooks/test_connector_central_wave1.py::test_g3_registration_beyond_the_plain_surface_goes_to_review_untouched`, `tests/hooks/test_connector_central_wave1.py::test_g3_known_os_environ_lines_are_dropped_with_a_non_blocking_note`, `tests/hooks/test_connector_central_wave1.py::test_g3_any_other_os_environ_key_or_value_stays_blocking`, `tests/hooks/test_connector_central_wave1.py::test_g3_registered_tags_assignment_and_tags_banner_are_deleted_with_the_bootstrap`, `tests/hooks/test_connector_central_wave1.py::test_g3_registered_tags_used_outside_the_bootstrap_stays_blocking`, `tests/hooks/test_connector_central_wave1.py::test_g3_bare_local_function_call_becomes_extra_registrations_in_source_order`, `tests/hooks/test_connector_central_wave1.py::test_g3_bare_call_outside_the_allowed_set_stays_blocking`, `tests/hooks/test_connector_central_wave1.py::test_g3_bare_call_before_the_surface_registration_stays_blocking`, `tests/hooks/test_connector_central_wave1.py::test_g3_version_banner_goes_with_the_version_and_k1_no_longer_blocks`, `tests/hooks/test_connector_central_wave1.py::test_g3_version_banner_is_kept_when_the_version_is_read_elsewhere`, `tests/hooks/test_connector_central_wave1.py::test_g3_copies_surface_keywords_and_a_module_constant_instructions`, `tests/hooks/test_connector_central_wave1.py::test_g3_manifest_keyword_is_reviewed`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 77
    },
    {
      "id": "PIPE-GATES-R016.53",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.g4`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "12874ccce7f9"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_g3_clusters.py:538",
        "tests/hooks/test_connector_central_g3_clusters.py:557",
        "tests/hooks/test_connector_central_g3_clusters.py:573",
        "tests/hooks/test_connector_central_g3_clusters.py:594",
        "tests/hooks/test_connector_central_g3_clusters.py:612"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.g4`.** `connector-ontology-map migrate --central`: package `__init__.py` declares `connector = Connector(...)`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_g3_clusters.py::test_g4_deletes_the_tests_that_import_the_scaffold_helpers`, `::test_g4_keeps_the_scaffold_when_a_read_sits_outside_a_test`, `::test_g4_deletes_tests_that_read_the_package_through_the_scaffold`, `::test_g4_deletes_a_test_file_whose_every_test_is_scaffold_only`, `::test_g4_keeps_a_scaffold_only_file_that_another_file_imports`, `::test_g4_does_not_repeat_the_g3_reason_when_there_is_nothing_to_extract`, `tests/hooks/test_connector_central_wave1.py::test_g4_init_declares_the_connector`, `tests/hooks/test_connector_central_wave1.py::test_g4_without_an_extractable_bootstrap_is_reviewed`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 78
    },
    {
      "id": "PIPE-GATES-R016.54",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.g5`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_g3_clusters.py:492",
        "tests/hooks/test_connector_central_g3_clusters.py:493",
        "tests/hooks/test_connector_central_wave1.py:628",
        "tests/hooks/test_connector_central_wave1.py:639",
        "tests/hooks/test_connector_central_wave1.py:649"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.g5`.** `connector-ontology-map migrate --central`: `__main__.py` calls `run()`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_g3_clusters.py::test_g5_main_with_a_docstring_and_future_import_is_the_plain_entry`, `tests/hooks/test_connector_central_wave1.py::test_g5_main_calls_run`, `tests/hooks/test_connector_central_wave1.py::test_g5_main_that_runs_the_mcp_server_in_another_way_is_reviewed`, `tests/hooks/test_connector_central_wave1.py::test_g5_main_that_runs_the_package_cli_is_left_alone`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 79
    },
    {
      "id": "PIPE-GATES-R016.55",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.g6`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_wave1.py:570",
        "tests/hooks/test_connector_central_wave1.py:571",
        "tests/hooks/test_connector_central_wave1.py:579"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.g6`.** `connector-ontology-map migrate --central`: the repo's own `/health` route is deleted. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_wave1.py::test_g6_health_route_is_deleted_with_the_bootstrap`, `::test_g6_stray_health_route_elsewhere_is_reported`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 80
    },
    {
      "id": "PIPE-GATES-R016.56",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.g7`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "313d63c9dbce",
        "74ad5d0baab0"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_wave1.py:670",
        "tests/hooks/test_connector_central_wave1.py:682",
        "tests/hooks/test_connector_central_wave1.py:694",
        "tests/hooks/test_connector_central_wave1.py:706",
        "tests/hooks/test_connector_central_wave1.py:719"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.g7`.** `connector-ontology-map migrate --central`: tests importing deleted bootstrap functions are deleted or reviewed. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_wave1.py::test_g7_test_calling_the_deleted_entry_point_is_deleted`, `::test_g7_three_tuple_unpack_becomes_build_server_in_a_function`, `::test_g7_args_are_kept_when_read_and_the_old_tags_slot_is_dropped`, `::test_g7_star_target_and_module_level_unpack`, `::test_g7_other_names_in_the_import_are_kept`, `::test_g7_test_reading_middlewares_is_deleted_with_a_non_blocking_item`, `::test_g7_patching_tests_are_deleted_one_by_one_and_unused_imports_pruned`, `::test_g7_class_loses_its_unexpressible_methods_and_goes_when_none_are_left`, `::test_g7_a_docstring_or_comment_naming_the_function_is_not_a_use`, `::test_g7_module_attribute_call_becomes_build_server_and_the_dead_import_goes`, `::test_g7_subscript_of_the_result_and_a_literal_argv_patch`, `::test_g7_other_uses_of_the_result_are_refused_untouched`, `::test_g7_orphaned_fixture_is_pruned_but_a_fixture_use_blocks`, `::test_g7_module_level_use_next_to_a_test_use_keeps_the_file_untouched`, `::test_g7_deleting_tests_is_idempotent`, `::test_g7_rewrite_is_idempotent_and_leaves_no_stale_import`, `::test_g7_with_k1_and_k4_a_package_version_assert_leaves_nothing_blocking`, `::test_g7_scaffold_test_is_left_to_rule_h`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 81
    },
    {
      "id": "PIPE-GATES-R016.57",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.h`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_wave1.py:1325",
        "tests/hooks/test_connector_central_wave1.py:1326",
        "tests/hooks/test_connector_central_wave1.py:1338",
        "tests/hooks/test_connector_central_wave1.py:1350",
        "tests/hooks/test_connector_central_wave1.py:1369"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.h`.** `connector-ontology-map migrate --central`: scaffold tests and conftest env lines are deleted by fingerprint. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_wave1.py::test_h_scaffold_test_matching_a_fingerprint_is_deleted`, `::test_h_unmatched_file_is_left_and_reported_with_its_hash`, `::test_h_ontology_parent_link_with_pending_entries_is_reviewed`, `::test_h_conftest_env_line_only_file_is_deleted_and_fixture_conftest_keeps_its_fixtures`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 82
    },
    {
      "id": "PIPE-GATES-R016.58",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.k1`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "efa9b98ace15"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_fixes7b.py:34",
        "tests/hooks/test_connector_central_fixes7b.py:63",
        "tests/hooks/test_connector_central_i1_clusters.py:209",
        "tests/hooks/test_connector_central_i1_clusters.py:221",
        "tests/hooks/test_connector_central_i1_clusters.py:230"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.k1`.** `connector-ontology-map migrate --central`: `__version__` assignments are deleted. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_fixes7b.py::test_k1_a_non_test_module_reading_the_version_through_an_alias_is_reviewed`, `tests/hooks/test_connector_central_i1_clusters.py::test_k1_in_module_readers_use_installed_metadata`, `tests/hooks/test_connector_central_i1_clusters.py::test_k1_reader_in_a_module_that_binds_the_alias_uses_another_alias`, `tests/hooks/test_connector_central_i1_clusters.py::test_k1_assigned_elsewhere_is_reviewed`, `tests/hooks/test_connector_central_i1_clusters.py::test_k1_import_of_version_with_author_and_credits`, `tests/hooks/test_connector_central_i1_clusters.py::test_k1_test_attribute_reads_use_installed_metadata`, `tests/hooks/test_connector_central_i1_clusters.py::test_k1_non_test_attribute_read_is_reviewed`, `tests/hooks/test_connector_central_i1_clusters.py::test_k1_test_reading_all_that_lists_version_is_reviewed`, `tests/hooks/test_connector_central_wave1.py::test_k1_version_assignments_are_deleted`, `tests/hooks/test_connector_central_wave1.py::test_k1_version_still_read_in_the_module_is_reviewed`, `tests/hooks/test_connector_central_wave1.py::test_k1_connector_importer_gets_metadata_version`, `tests/hooks/test_connector_central_wave1.py::test_k1_test_importer_with_other_use_is_reviewed`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 83
    },
    {
      "id": "PIPE-GATES-R016.59",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.k2`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_wave1.py:981",
        "tests/hooks/test_connector_central_wave1.py:982",
        "tests/hooks/test_connector_central_wave1.py:993"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.k2`.** `connector-ontology-map migrate --central`: `.bumpversion.cfg` reduced (then deleted by n). A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_wave1.py::test_k2_bumpversion_reduced_to_pyproject_only`, `::test_k2_without_pyproject_section_is_reviewed`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 84
    },
    {
      "id": "PIPE-GATES-R016.60",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.k3`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_wave1.py:1003",
        "tests/hooks/test_connector_central_wave1.py:1004",
        "tests/hooks/test_connector_central_wave1.py:1015"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.k3`.** `connector-ontology-map migrate --central`: README package-version lines are deleted. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_wave1.py::test_k3_readme_package_version_line_is_deleted`, `::test_k3_prose_mentions_are_left`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 85
    },
    {
      "id": "PIPE-GATES-R016.61",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.k4`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_fixes7b.py:147",
        "tests/hooks/test_connector_central_fixes7b.py:148",
        "tests/hooks/test_connector_central_fixes7b.py:157",
        "tests/hooks/test_connector_central_fixes7b.py:171",
        "tests/hooks/test_connector_central_i1_clusters.py:316"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.k4`.** `connector-ontology-map migrate --central`: `__version__` assertions in tests are deleted. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_fixes7b.py::test_k4_version_tests_left_with_only_dead_setup_are_deleted_and_noted`, `::test_k4_keeps_other_tests_and_drops_only_the_setup_that_fed_the_assertion`, `::test_k4_keeps_assignments_with_side_effects_or_later_reads`, `tests/hooks/test_connector_central_i1_clusters.py::test_k4_presence_checks_of_version_are_deleted`, `tests/hooks/test_connector_central_i1_clusters.py::test_k4_class_left_without_tests_is_deleted`, `tests/hooks/test_connector_central_wave1.py::test_k4_version_assertions_are_deleted`, `tests/hooks/test_connector_central_wave1.py::test_k4_other_comparisons_are_left`, `tests/hooks/test_connector_central_wave1.py::test_k4_not_none_and_bare_version_asserts_are_deleted`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 86
    },
    {
      "id": "PIPE-GATES-R016.62",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.i1`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_i1_clusters.py:121",
        "tests/hooks/test_connector_central_i1_clusters.py:122",
        "tests/hooks/test_connector_central_i1_clusters.py:136",
        "tests/hooks/test_connector_central_i1_clusters.py:144",
        "tests/hooks/test_connector_central_i1_clusters.py:156"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.i1`.** `connector-ontology-map migrate --central`: `connector_sources.declaration()` is deleted and call sites use `load_declaration`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_i1_clusters.py::test_i1_typed_declaration_cluster_is_migrated`, `::test_i1_typed_declaration_without_docstring_is_migrated`, `::test_i1_typed_declaration_with_package_call_sites`, `::test_i1_nested_import_keeps_its_indentation`, `tests/hooks/test_connector_central_wave1.py::test_i1_declaration_is_deleted_and_call_sites_use_load_declaration`, `tests/hooks/test_connector_central_wave1.py::test_i1_module_attribute_and_connector_constant_users_are_rewritten`, `tests/hooks/test_connector_central_wave1.py::test_i1_modified_declaration_body_is_reviewed`, `tests/hooks/test_connector_central_wave1.py::test_i1_callable_passed_around_is_reviewed_untouched`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 87
    },
    {
      "id": "PIPE-GATES-R016.63",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.i2`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_i1_clusters.py:179",
        "tests/hooks/test_connector_central_i1_clusters.py:180",
        "tests/hooks/test_connector_central_wave1.py:1102",
        "tests/hooks/test_connector_central_wave1.py:1124"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.i2`.** `connector-ontology-map migrate --central`: identical schema-mapping field dicts become `FIELD_SETS`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_i1_clusters.py::test_i1_then_i2_groups_the_shared_fields_of_an_annotated_module`, `tests/hooks/test_connector_central_wave1.py::test_i2_identical_field_dicts_become_field_sets`, `tests/hooks/test_connector_central_wave1.py::test_i2_without_repeated_dicts_or_literals_nothing_changes`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 88
    },
    {
      "id": "PIPE-GATES-R016.64",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.l1`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_wave1.py:1141",
        "tests/hooks/test_connector_central_wave1.py:1142",
        "tests/hooks/test_connector_central_wave1.py:1153"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.l1`.** `connector-ontology-map migrate --central`: conventional provider entry-point tables are deleted. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_wave1.py::test_l1_conventional_provider_tables_and_their_comment_are_deleted`, `::test_l1_non_conventional_value_stays_and_is_reviewed`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 89
    },
    {
      "id": "PIPE-GATES-R016.65",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.l2`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c2b8fce00aac"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_wave1.py:1166",
        "tests/hooks/test_connector_central_wave1.py:1174",
        "tests/hooks/test_connector_central_wave1.py:1186"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.l2`.** `connector-ontology-map migrate --central`: empty content `__init__.py` markers are deleted. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_wave1.py::test_l2_empty_marker_deleted_when_package_data_covers_the_content`, `::test_l2_missing_package_data_glob_is_added`, `::test_l2_non_empty_marker_is_kept`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 90
    },
    {
      "id": "PIPE-GATES-R016.66",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.l3`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_wave1.py:1196",
        "tests/hooks/test_connector_central_wave1.py:1197",
        "tests/hooks/test_connector_central_wave1.py:1216",
        "tests/hooks/test_connector_central_wave1.py:1228",
        "tests/hooks/test_connector_central_wave1.py:1238"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.l3`.** `connector-ontology-map migrate --central`: the lazy-import scaffold is deleted from `__init__.py`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_wave1.py::test_l3_tests_asserting_the_deleted_scaffold_are_deleted`, `::test_l3_scaffold_is_deleted_with_the_connector_and_test_imports_follow`, `::test_l3_unresolvable_name_keeps_the_scaffold_and_is_reviewed`, `::test_l3_scaffold_with_extra_code_is_not_deleted`, `::test_l3_scaffold_survives_when_the_bootstrap_was_not_migrated`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 91
    },
    {
      "id": "PIPE-GATES-R016.67",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Wave 1 (Scion SDK 0.5) rule `w1.l4`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a879bf2fe9bb",
        "ac8367c08c89",
        "cd9696207d4c",
        "db468196e870",
        "f4b1cc173371"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_fixes7b.py:110",
        "tests/hooks/test_connector_central_wave1.py:1259",
        "tests/hooks/test_connector_central_wave1.py:1270",
        "tests/hooks/test_connector_central_wave1.py:1280",
        "tests/hooks/test_connector_central_wave1.py:1295"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Wave 1 (Scion SDK 0.5) rule `w1.l4`.** `connector-ontology-map migrate --central`: Scion SDK floor, merged extras and dropped one-element extras. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_fixes7b.py::test_l4_extras_of_a_dropped_one_element_extra_move_to_the_pin`, `tests/hooks/test_connector_central_wave1.py::test_l4_sdk_floor_merged_extras_and_dropped_one_element_extras`, `tests/hooks/test_connector_central_wave1.py::test_l4_pin_uses_base_sdk_pin_for_the_plain_mcp_extra`, `tests/hooks/test_connector_central_wave1.py::test_l4_multi_element_extra_stays_and_missing_dependency_is_reviewed`, `tests/hooks/test_connector_central_wave1.py::test_l4_an_all_extra_naming_the_deleted_mcp_extra_is_dropped_with_it`, `tests/hooks/test_connector_central_wave1.py::test_l4_repairs_an_already_migrated_repo_whose_all_extra_dangles`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 92
    },
    {
      "id": "PIPE-GATES-R016.68",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Auth standardization rule `auth.r1`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_auth.py:123",
        "tests/hooks/test_connector_central_auth.py:124",
        "tests/hooks/test_connector_central_auth.py:133",
        "tests/hooks/test_connector_central_auth.py:457",
        "tests/hooks/test_connector_central_auth.py:474"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Auth standardization rule `auth.r1`.** `connector-ontology-map migrate --central`: static bearer token declaration. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_auth.py::test_r1_bearer_rewrite`, `::test_r1_unmatched_shape_goes_to_review_untouched`, `::test_no_scheme_rule_is_one_review_item`, `::test_second_run_changes_nothing`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 93
    },
    {
      "id": "PIPE-GATES-R016.69",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Auth standardization rule `auth.r2`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_auth.py:146",
        "tests/hooks/test_connector_central_auth.py:147",
        "tests/hooks/test_connector_central_auth.py:155"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Auth standardization rule `auth.r2`.** `connector-ontology-map migrate --central`: API key in a fixed header declaration. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_auth.py::test_r2_api_key_header_rewrite`, `::test_r2_authorization_token_prefix_and_extra_setting_review`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 94
    },
    {
      "id": "PIPE-GATES-R016.70",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Auth standardization rule `auth.r3`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_auth.py:171",
        "tests/hooks/test_connector_central_auth.py:172",
        "tests/hooks/test_connector_central_auth.py:180"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Auth standardization rule `auth.r3`.** `connector-ontology-map migrate --central`: API key in a query parameter declaration. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_auth.py::test_r3_api_key_query_rewrite`, `::test_r3_default_url_goes_to_review`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 95
    },
    {
      "id": "PIPE-GATES-R016.71",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Auth standardization rule `auth.r4`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_auth.py:198",
        "tests/hooks/test_connector_central_auth.py:199",
        "tests/hooks/test_connector_central_auth.py:207"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Auth standardization rule `auth.r4`.** `connector-ontology-map migrate --central`: basic user and password declaration. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_auth.py::test_r4_basic_rewrite`, `::test_r4_and_r11_evidence_is_several_rules`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 96
    },
    {
      "id": "PIPE-GATES-R016.72",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Auth standardization rule `auth.r5`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_auth.py:227",
        "tests/hooks/test_connector_central_auth.py:228",
        "tests/hooks/test_connector_central_auth.py:241"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Auth standardization rule `auth.r5`.** `connector-ontology-map migrate --central`: client credentials declaration. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_auth.py::test_r5_client_credentials_rewrite`, `::test_r5_without_a_literal_token_url_goes_to_review`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 97
    },
    {
      "id": "PIPE-GATES-R016.73",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Auth standardization rule `auth.r6`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_auth.py:259",
        "tests/hooks/test_connector_central_auth.py:260",
        "tests/hooks/test_connector_central_auth.py:273"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Auth standardization rule `auth.r6`.** `connector-ontology-map migrate --central`: refresh token declaration. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_auth.py::test_r6_refresh_token_rewrite`, `::test_r6_two_token_urls_go_to_review`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 98
    },
    {
      "id": "PIPE-GATES-R016.74",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Auth standardization rule `auth.r7`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c2b8fce00aac"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_auth.py:299"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Auth standardization rule `auth.r7`.** `connector-ontology-map migrate --central`: per-thread delegation holder is deleted. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_auth.py::test_r7_delegation_holder_is_review_with_delegation_proposal`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 99
    },
    {
      "id": "PIPE-GATES-R016.75",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Auth standardization rule `auth.r8`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c2b8fce00aac"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_auth.py:308"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Auth standardization rule `auth.r8`.** `connector-ontology-map migrate --central`: delegation wrappers are deleted for `delegation=True`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_auth.py::test_r8_delegation_wrappers_are_review`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 100
    },
    {
      "id": "PIPE-GATES-R016.76",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Auth standardization rule `auth.r9`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_auth.py:318",
        "tests/hooks/test_connector_central_auth.py:319",
        "tests/hooks/test_connector_central_auth.py:327"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Auth standardization rule `auth.r9`.** `connector-ontology-map migrate --central`: resolved TLS profile becomes `tls=\"<name>\"`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_auth.py::test_r9_tls_profile_becomes_tls_name`, `::test_r9_missing_tls_profile_is_review`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 101
    },
    {
      "id": "PIPE-GATES-R016.77",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Auth standardization rule `auth.r10`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c2b8fce00aac"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_auth.py:336"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Auth standardization rule `auth.r10`.** `connector-ontology-map migrate --central`: hand-configured requests session is deleted. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_auth.py::test_r10_hand_configured_session_is_review`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 102
    },
    {
      "id": "PIPE-GATES-R016.78",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Auth standardization rule `auth.r11`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1abb4303df99"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_auth.py:356",
        "tests/hooks/test_connector_central_auth.py:367"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Auth standardization rule `auth.r11`.** `connector-ontology-map migrate --central`: cookie login becomes `SessionLogin`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_auth.py::test_r11_session_login_rewrite`, `::test_r11_two_login_paths_are_reviewed_with_an_exact_fallback_reason`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 103
    },
    {
      "id": "PIPE-GATES-R016.79",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Auth standardization rule `auth.r12`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_auth.py:381",
        "tests/hooks/test_connector_central_auth.py:382",
        "tests/hooks/test_connector_central_auth.py:392"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Auth standardization rule `auth.r12`.** `connector-ontology-map migrate --central`: global client singleton becomes `client_factory`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_auth.py::test_r12_singleton_becomes_factory_with_close_alias`, `::test_r12_non_singleton_has_no_close_alias`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 104
    },
    {
      "id": "PIPE-GATES-R016.80",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Auth standardization rule `auth.r13`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_auth.py:400",
        "tests/hooks/test_connector_central_auth.py:401",
        "tests/hooks/test_connector_central_auth.py:410",
        "tests/hooks/test_connector_central_auth.py:422",
        "tests/hooks/test_connector_central_auth.py:467"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Auth standardization rule `auth.r13`.** `connector-ontology-map migrate --central`: local-only tool becomes `NoAuth()`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_auth.py::test_r13_local_tool_without_url_deletes_unused_auth`, `::test_r13_noauth_for_public_api_with_url_only`, `::test_r13_imported_auth_is_not_deleted`, `::test_no_auth_py_is_silent`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 105
    },
    {
      "id": "PIPE-GATES-R016.81",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Auth standardization rule `auth.r14`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_auth.py:431",
        "tests/hooks/test_connector_central_auth.py:432",
        "tests/hooks/test_connector_central_auth.py:445"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Auth standardization rule `auth.r14`.** `connector-ontology-map migrate --central`: plaintext setting becomes `allow_plaintext_env`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_auth.py::test_r14_allow_plaintext_setting_becomes_env_name`, `::test_r14_unknown_extra_flag_is_review`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 106
    },
    {
      "id": "PIPE-GATES-R016.82",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Ingest (Scion SDK 0.5.2) rule `ingest.i1`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_ingest.py:216",
        "tests/hooks/test_connector_central_ingest.py:217",
        "tests/hooks/test_connector_central_ingest.py:234",
        "tests/hooks/test_connector_central_ingest.py:245",
        "tests/hooks/test_connector_central_ingest.py:254"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Ingest (Scion SDK 0.5.2) rule `ingest.i1`.** `connector-ontology-map migrate --central`: duplicated ingest plumbing is deleted. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_ingest.py::test_i1_deletes_standard_plumbing_only`, `::test_i1_name_insensitive_match`, `::test_i1_connector_mismatch_derives_from_the_sdk_identity`, `::test_i1_nonstandard_body_goes_to_review`, `::test_no_kg_ingest_is_a_silent_no_op`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 107
    },
    {
      "id": "PIPE-GATES-R016.83",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Ingest (Scion SDK 0.5.2) rule `ingest.i2`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_ingest.py:271",
        "tests/hooks/test_connector_central_ingest.py:272",
        "tests/hooks/test_connector_central_ingest.py:283",
        "tests/hooks/test_connector_central_ingest.py:293"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Ingest (Scion SDK 0.5.2) rule `ingest.i2`.** `connector-ontology-map migrate --central`: `STREAM = SourceStream...` replaces `_BINDING`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_ingest.py::test_i2_for_package_stream_and_imports`, `::test_i2_explicit_binding_before_wave1_entry_point`, `::test_i2_without_i1_plan_does_nothing`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 108
    },
    {
      "id": "PIPE-GATES-R016.84",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Ingest (Scion SDK 0.5.2) rule `ingest.i3`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_ingest.py:310",
        "tests/hooks/test_connector_central_ingest.py:311",
        "tests/hooks/test_connector_central_ingest.py:329",
        "tests/hooks/test_connector_central_ingest.py:342",
        "tests/hooks/test_connector_central_ingest.py:534"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Ingest (Scion SDK 0.5.2) rule `ingest.i3`.** `connector-ontology-map migrate --central`: ingest call sites use `STREAM.entities` and `STREAM.documents`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_ingest.py::test_i3_rewrites_call_sites_and_deletes_helper_tests`, `::test_i3_function_local_relative_import`, `::test_i3_aliased_import_or_monkeypatch_goes_to_review_untouched`, `::test_all_rules_idempotent`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 109
    },
    {
      "id": "PIPE-GATES-R016.85",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Ingest (Scion SDK 0.5.2) rule `ingest.i4`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1bd2f8fcfb6c"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_ingest.py:360",
        "tests/hooks/test_connector_central_ingest.py:370"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Ingest (Scion SDK 0.5.2) rule `ingest.i4`.** `connector-ontology-map migrate --central`: exact dispatch tables become stream mappers. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_ingest.py::test_i4_dispatch_table_is_noted`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 110
    },
    {
      "id": "PIPE-GATES-R016.86",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Ingest (Scion SDK 0.5.2) rule `ingest.i5`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1bd2f8fcfb6c"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_ingest.py:377",
        "tests/hooks/test_connector_central_ingest.py:386"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Ingest (Scion SDK 0.5.2) rule `ingest.i5`.** `connector-ontology-map migrate --central`: exact mapper bodies become `RecordMap`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_ingest.py::test_i5_mapper_functions_are_noted`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 111
    },
    {
      "id": "PIPE-GATES-R016.87",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Ingest (Scion SDK 0.5.2) rule `ingest.i6`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "072841d0fc31"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_ingest.py:411",
        "tests/hooks/test_connector_central_ingest.py:423"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Ingest (Scion SDK 0.5.2) rule `ingest.i6`.** `connector-ontology-map migrate --central`: local helpers equal to Scion SDK helpers are replaced. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_ingest.py::test_i6_helper_equal_to_sdk_is_replaced`, `::test_i6_helper_that_differs_is_kept`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 112
    },
    {
      "id": "PIPE-GATES-R016.88",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Ingest (Scion SDK 0.5.2) rule `ingest.i7`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_ingest.py:443",
        "tests/hooks/test_connector_central_ingest.py:444"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Ingest (Scion SDK 0.5.2) rule `ingest.i7`.** `connector-ontology-map migrate --central`: checkpointed paging goes to review. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_ingest.py::test_i7_paging_is_review_and_stops_i1`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 113
    },
    {
      "id": "PIPE-GATES-R016.89",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Ingest (Scion SDK 0.5.2) rule `ingest.i8`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1bd2f8fcfb6c",
        "8d8cc8f2e3ba"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_ingest.py:465",
        "tests/hooks/test_connector_central_ingest.py:476"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Ingest (Scion SDK 0.5.2) rule `ingest.i8`.** `connector-ontology-map migrate --central`: best-effort wrapper and split document stream options. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_ingest.py::test_i8_best_effort_wrapper_is_review_and_stops_i1`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 114
    },
    {
      "id": "PIPE-GATES-R016.90",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Ingest (Scion SDK 0.5.2) rule `ingest.i9`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1bd2f8fcfb6c"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_ingest.py:500",
        "tests/hooks/test_connector_central_ingest.py:515"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Ingest (Scion SDK 0.5.2) rule `ingest.i9`.** `connector-ontology-map migrate --central`: media and mixed change sets use `STREAM.media` and `STREAM.batch`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_ingest.py::test_i9_media_change_set_is_review_and_stops_i1`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 115
    },
    {
      "id": "PIPE-GATES-R016.91",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.n`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_pipelines.py:142",
        "tests/hooks/test_connector_central_pipelines.py:143",
        "tests/hooks/test_connector_central_pipelines.py:162",
        "tests/hooks/test_connector_central_pipelines.py:176"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.n`.** `connector-ontology-map migrate --central`: version lives in `pyproject.toml` only. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_pipelines.py::test_n_removes_bumpversion_readme_line_literal_and_test_assertion`, `::test_n_resolves_dynamic_version_from_bumpversion`, `::test_n_reviews_version_still_read_and_leaves_file`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 116
    },
    {
      "id": "PIPE-GATES-R016.92",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.o`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4f7150db2361",
        "85d002cae68d",
        "8e8272f805dd",
        "bd6eef95bcc3",
        "f74978beb345"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_fixes7.py:261",
        "tests/hooks/test_connector_central_fixes7.py:273",
        "tests/hooks/test_connector_central_pipelines.py:186",
        "tests/hooks/test_connector_central_pipelines.py:204",
        "tests/hooks/test_connector_central_pipelines.py:226"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.o`.** `connector-ontology-map migrate --central`: container files are rendered, not committed. The rendered template is the standard: a developer `debug.Dockerfile`, a `../.env.example` env file, an image variable with a default, a health probe that only adds a timeout, `ENTRYPOINT` for `CMD`, the `ARG PORT` default and a combined mcp+agent compose file differ non-functionally and are replaced; a published port other than 8000 is read from the compose file into the table `port`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_pl_clusters.py::test_o_nonfunctional_compose_and_dockerfile_differences_are_normalised`, `::test_o_an_image_variable_with_a_default_becomes_the_required_digest_form`, `::test_o_an_env_example_env_file_is_dropped_as_not_functional`, `::test_o_the_sdist_names_of_a_single_stage_dockerfile_are_not_part_of_its_form`, `tests/hooks/test_connector_central_fixes7.py::test_generations_scan_set_is_the_drivers_set_not_the_directories`, `::test_generations_recorded_entries_survive_while_one_repo_carries_them`, `tests/hooks/test_connector_central_pipelines.py::test_o_removes_rendered_files_and_wires_callers`, `tests/hooks/test_connector_central_pipelines.py::test_o_ports_exceptions_into_the_container_table`, `tests/hooks/test_connector_central_pipelines.py::test_o_unexpected_difference_is_blocking_and_files_stay`, `tests/hooks/test_connector_central_pipelines.py::test_o_accepts_the_dist_extra_that_rule_l4_dropped`, `tests/hooks/test_connector_central_pipelines.py::test_o_other_extra_difference_stays_blocking`, `tests/hooks/test_connector_central_pipelines.py::test_o_accepts_a_stale_semver_on_the_dist_own_pin`, `tests/hooks/test_connector_central_pipelines.py::test_o_another_package_pin_difference_stays_blocking`, `tests/hooks/test_connector_central_pipelines.py::test_o_ports_compose_limits_only_when_they_differ_from_the_template`, `tests/hooks/test_connector_central_pipelines.py::test_o_default_limits_leave_the_render_and_table_unchanged`, `tests/hooks/test_connector_central_pipelines.py::test_container_limits_table_rejects_unknown_keys`, `tests/hooks/test_connector_central_pipelines.py::test_render_without_config_mounts_has_no_volumes_block`, `tests/hooks/test_connector_central_pipelines.py::test_render_writes_each_config_mount_as_a_read_only_bind_between_restart_and_env_file`, `tests/hooks/test_connector_central_pipelines.py::test_o_ports_committed_read_only_binds_into_the_container_table`, `tests/hooks/test_connector_central_pipelines.py::test_o_unknown_workflow_shape_is_blocking`, `tests/hooks/test_connector_central_pipelines.py::test_second_run_changes_nothing`, `tests/hooks/test_connector_central_pl_clusters.py::test_generation_table_entries_each_occur_in_several_repositories`, `tests/hooks/test_connector_central_pl_clusters.py::test_a_recorded_insertion_rewrite_is_not_applied_twice`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_accepts_the_recorded_single_stage_dockerfile`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_a_changed_single_stage_dockerfile_stays_blocking`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_accepts_the_stub_debug_image_and_stub_compose`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_an_edited_stub_compose_stays_blocking`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_deletes_an_agent_compose_file_whose_agent_image_is_gone`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_keeps_an_agent_compose_file_when_the_dockerfile_still_has_an_agent_stage`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_ports_an_optional_env_file_into_the_container_table`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_accepts_the_mcp_service_with_the_agent_image_variable`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_ports_the_config_mount_and_accepts_the_shared_image_variable`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_accepts_a_config_mount_with_a_default_host_path`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_an_image_default_recorded_in_fewer_than_three_repositories_stays_blocking`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_a_mount_outside_etc_stays_blocking_with_the_reason`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_a_read_write_volume_stays_blocking_with_the_reason`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_reads_a_compose_environment_mapping_as_the_list_the_render_writes`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_an_environment_mapping_with_a_changed_value_stays_blocking`, `tests/hooks/test_connector_central_pl_clusters.py::test_the_debug_host_rewrite_follows_the_host_the_runtime_image_binds`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_a_difference_outside_the_clusters_stays_blocking`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_keeps_the_extras_the_committed_image_installed`, `tests/hooks/test_connector_central_pl_clusters.py::test_install_extras_default_is_unchanged_without_the_key`, `tests/hooks/test_connector_central_pl_clusters.py::test_o_an_edited_older_compose_stays_blocking`, `tests/hooks/test_connector_central_pl_clusters.py::test_rewrites_carry_captured_text_delete_blocks_and_insert_once`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 117
    },
    {
      "id": "PIPE-GATES-R016.93",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.p`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "54057df19bfb"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_pipelines.py:552",
        "tests/hooks/test_connector_central_pipelines.py:562",
        "tests/hooks/test_connector_central_pipelines.py:571",
        "tests/hooks/test_connector_central_pipelines.py:586",
        "tests/hooks/test_connector_central_pipelines.py:598"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.p`.** `connector-ontology-map migrate --central`: ontology artifacts are generated, not committed. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_pipelines.py::test_p_removes_generated_artifacts_when_identical`, `::test_p_subset_of_shapes_writes_shape_classes_and_reviews`, `::test_p_other_test_reading_artifacts_is_blocking_and_files_stay`, `::test_p_deletes_certification_tests`, `tests/hooks/test_connector_central_pl_clusters.py::test_p_names_an_ontology_file_that_is_not_the_ontology_source`, `tests/hooks/test_connector_central_pl_clusters.py::test_p_two_ontology_files_do_not_guess`, `tests/hooks/test_connector_central_pl_clusters.py::test_the_ttl_key_changes_nothing_when_it_is_absent`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 118
    },
    {
      "id": "PIPE-GATES-R016.94",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.q`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "74ad5d0baab0",
        "dce5c83d89db"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_fixes7.py:103",
        "tests/hooks/test_connector_central_fixes7.py:111",
        "tests/hooks/test_connector_central_fixes7.py:118",
        "tests/hooks/test_connector_central_fixes7.py:134",
        "tests/hooks/test_connector_central_fixes7.py:287"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.q`.** `connector-ontology-map migrate --central`: `.pre-commit-config.yaml` is the shared reference. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_fixes7.py::test_q_config_wide_exclude_and_file_path_are_ported`, `::test_q_exclude_that_is_not_a_path_list_is_blocking`, `::test_q_ruff_ignore_args_become_lint_ignore_and_nothing_more`, `::test_q_existing_lint_ignore_is_extended_only_by_missing_codes`, `::test_tidy_fixes_safe_findings_and_reports_the_rest_with_rule_ids`, `tests/hooks/test_connector_central_pipelines.py::test_q_replaces_config_and_lists_unknown_hooks`, `tests/hooks/test_connector_central_pipelines.py::test_q_unparseable_config_is_noted_and_replaced`, `tests/hooks/test_connector_central_pipelines.py::test_q_ports_the_ruff_exclude_to_extend_exclude`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 119
    },
    {
      "id": "PIPE-GATES-R016.95",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.r`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "27777c97c34a",
        "3185d3c28743",
        "4dc52a397e5f"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_fixes7.py:162",
        "tests/hooks/test_connector_central_fixes7.py:175",
        "tests/hooks/test_connector_central_fixes7.py:196",
        "tests/hooks/test_connector_central_fixes7.py:222",
        "tests/hooks/test_connector_central_pipelines.py:651"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.r`.** `connector-ontology-map migrate --central`: `security_sanitizer.py` and `.codespellignore` are provided. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_fixes7.py::test_r_old_words_and_excludes_go_to_the_repo_table_not_the_defaults`, `::test_r_words_already_central_leave_no_table`, `::test_codespell_hook_honours_the_repo_words_and_excludes`, `::test_standard_names_the_failed_members_and_runs_all`, `tests/hooks/test_connector_central_pipelines.py::test_r_deletes_sanitizer_and_moves_codespell_words`, `tests/hooks/test_connector_central_pipelines.py::test_r_conflicting_codespell_table_is_blocking_and_file_stays`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 120
    },
    {
      "id": "PIPE-GATES-R016.96",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.s`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_pipelines.py:785",
        "tests/hooks/test_connector_central_pipelines.py:786",
        "tests/hooks/test_connector_central_pipelines.py:800"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.s`.** `connector-ontology-map migrate --central`: workflow flags: skip-hooks, bump2version, render and rebuild callers. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_pipelines.py::test_s_drops_dupehound_skip_and_bump2version_step`, `::test_s_other_bump2version_shape_goes_to_review`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 121
    },
    {
      "id": "PIPE-GATES-R016.97",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.t`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_pipelines.py:693",
        "tests/hooks/test_connector_central_pipelines.py:694",
        "tests/hooks/test_connector_central_pipelines.py:705"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.t`.** `connector-ontology-map migrate --central`: `.security/*` is provided. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_pipelines.py::test_t_removes_security_dir_and_ports_licenses`, `::test_t_keeps_contract_when_validator_is_tracked`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 122
    },
    {
      "id": "PIPE-GATES-R016.98",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.u`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_pipelines.py:718",
        "tests/hooks/test_connector_central_pipelines.py:719",
        "tests/hooks/test_connector_central_pipelines.py:730"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.u`.** `connector-ontology-map migrate --central`: `scripts/bootstrap.sh` is deleted. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_pipelines.py::test_u_deletes_bootstrap_and_rewrites_setup_line`, `::test_u_other_mention_goes_to_review`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 123
    },
    {
      "id": "PIPE-GATES-R016.99",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.v`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0a48752cbf3"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_pipelines.py:746",
        "tests/hooks/test_connector_central_pipelines.py:747",
        "tests/hooks/test_connector_central_pipelines.py:759",
        "tests/hooks/test_connector_central_pipelines.py:767",
        "tests/hooks/test_connector_central_pipelines.py:776"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.v`.** `connector-ontology-map migrate --central`: `verify_api_integration.py` becomes `connector-api-parity`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_pipelines.py::test_v_ports_baseline_and_deletes_script_and_test`, `::test_v_stale_baseline_is_lowered_and_reviewed`, `::test_v_missing_entry_means_no_table_and_unreadable_baselines_are_blocking`, `::test_v_dynamic_baselines_table_is_blocking`, `tests/hooks/test_connector_central_pl_clusters.py::test_v_extracts_the_exact_100_percent_threshold`, `tests/hooks/test_connector_central_pl_clusters.py::test_v_ports_the_implied_baseline_and_deletes_the_script`, `tests/hooks/test_connector_central_pl_clusters.py::test_v_an_openapi_source_check_stays_blocking`, `tests/hooks/test_connector_central_pl_clusters.py::test_v_a_script_with_another_threshold_is_not_extracted`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 124
    },
    {
      "id": "PIPE-GATES-R016.100",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Connector identity rule `id.name`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1af3f83b7fb7",
        "545ef1911dce",
        "efa9b98ace15"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_fixes7b.py:103",
        "tests/hooks/test_connector_central_fixes7b.py:86",
        "tests/hooks/test_connector_central_identity.py:24",
        "tests/hooks/test_connector_central_identity.py:296",
        "tests/hooks/test_connector_central_identity.py:313"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Connector identity rule `id.name`.** `connector-ontology-map migrate --central`: hard-coded connector names in `kg_*.py` and `mappings/*.yaml` derive from or match the Scion SDK identity. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_fixes7b.py::test_name_constant_that_a_binding_takes_as_connector_derives_from_the_identity`, `::test_two_constants_of_the_same_name_are_reviewed_not_guessed`, `tests/hooks/test_connector_central_identity.py::test_name_mismatch_derives_from_the_sdk_identity_and_mapping_yaml_follows`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 125
    },
    {
      "id": "PIPE-GATES-R016.101",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.w`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c2b8fce00aac"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_identity.py:58"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.w`.** `connector-ontology-map migrate --central`: own pipelines workflow refs are `@main`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_identity.py::test_own_workflow_refs_are_main`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 126
    },
    {
      "id": "PIPE-GATES-R016.102",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.x`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "dea7f89e4bfd"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_pipelines.py:842",
        "tests/hooks/test_connector_central_pipelines.py:850",
        "tests/hooks/test_connector_central_pipelines.py:867",
        "tests/hooks/test_connector_central_pipelines.py:880",
        "tests/hooks/test_connector_central_pipelines.py:891"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.x`.** `connector-ontology-map migrate --central`: unreferenced non-scaffold root files are deleted. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_pipelines.py::test_x_row_and_order`, `::test_x_deletes_unreferenced_files`, `::test_x_referenced_file_stays_with_a_review_item_naming_the_referrers`, `::test_x_match_is_a_whole_name`, `::test_x_dockerignore_stays_while_a_dockerfile_exists`, `::test_x_dockerignore_goes_after_pl_o_removes_the_dockerfile`, `::test_x_mcp_config_is_referenced_by_package_data_and_manifest_globs`, `::test_x_second_run_changes_nothing`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 127
    },
    {
      "id": "PIPE-GATES-R016.103",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.y`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c2b8fce00aac"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_identity.py:74"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.y`.** `connector-ontology-map migrate --central`: `.github/workflows/org-site.yml` notifies the org site (only when pipelines main provides it). A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_identity.py::test_org_site_workflow_is_written_only_when_pipelines_provides_the_shared_one`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 128
    },
    {
      "id": "PIPE-GATES-R016.104",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.z`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "b0453687acf9"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_identity.py:91"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.z`.** `connector-ontology-map migrate --central`: every local spec is indexed in `specs/README.md`. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_identity.py::test_unindexed_local_spec_is_added_to_the_readme_index`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 129
    },
    {
      "id": "PIPE-GATES-R016.105",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.aa`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "03512169cad3",
        "8e8272f805dd"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_identity.py:109",
        "tests/hooks/test_connector_central_identity.py:125"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.aa`.** `connector-ontology-map migrate --central`: the shared MkDocs theme files match the canonical copy. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_identity.py::test_missing_theme_files_are_synced_from_the_canonical_copy_and_a_second_run_is_a_no_op`, `::test_no_mkdocs_site_means_no_theme_files`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 130
    },
    {
      "id": "PIPE-GATES-R016.106",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.ab`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "313d63c9dbce",
        "8e8272f805dd",
        "eee545e082ed"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_identity.py:132",
        "tests/hooks/test_connector_central_identity.py:154",
        "tests/hooks/test_connector_central_identity.py:255"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.ab`.** `connector-ontology-map migrate --central`: the `[[project.authors]]` block is the neutral organisation author. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_identity.py::test_authors_block_becomes_the_neutral_organisation_author_and_passes_the_privacy_classifier`, `::test_authors_block_with_other_fields_is_reviewed_untouched`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 131
    },
    {
      "id": "PIPE-GATES-R016.107",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.ac`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "1aa60109f447",
        "74ad5d0baab0",
        "bc1c1dffa20b",
        "fb079953f3db"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_identity.py:164",
        "tests/hooks/test_connector_central_identity.py:198",
        "tests/hooks/test_connector_central_identity.py:275"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.ac`.** `connector-ontology-map migrate --central`: example credential URIs in docs code and internal hostname literals in `tests/**/*.py`, `README.md`, `docs/**/*.md` and the skill markdown and shell files are the placeholder form the privacy gate accepts (`USER:PASSWORD`, the reserved `.example` name). A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_identity.py::test_example_credential_uris_in_docs_code_become_the_gate_placeholder_form`, `::test_internal_hostnames_in_tests_become_the_reserved_example_form`, `::test_internal_hostnames_in_docs_and_skills_become_the_reserved_example_form`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 132
    },
    {
      "id": "PIPE-GATES-R016.108",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.ad`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c2b8fce00aac"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_identity.py:219"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.ad`.** `connector-ontology-map migrate --central`: the fleet's SHA-pinned `actions/checkout` and `actions/setup-python` replace mutable tags. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_identity.py::test_mutable_checkout_and_setup_python_tags_become_the_fleet_pins`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 133
    },
    {
      "id": "PIPE-GATES-R016.109",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.ae`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "c2b8fce00aac"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_identity.py:239"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.ae`.** `connector-ontology-map migrate --central`: the publication-workflow test expects the shared hook revision `main`, not the old SHA pin. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_identity.py::test_publication_workflow_test_expects_the_shared_main_revision`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 134
    },
    {
      "id": "PIPE-GATES-R016.110",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Pipelines-owned boilerplate rule `pl.af`",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "295d80aff385",
        "74ad5d0baab0",
        "9d2259faab12",
        "fb3e2489a321"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_spelling.py:100",
        "tests/hooks/test_connector_central_spelling.py:108",
        "tests/hooks/test_connector_central_spelling.py:117",
        "tests/hooks/test_connector_central_spelling.py:126",
        "tests/hooks/test_connector_central_spelling.py:137"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Pipelines-owned boilerplate rule `pl.af`.** `connector-ontology-map migrate --central`: codespell findings are fixed or classified. A shape the rule does not match exactly is left untouched and listed in the review report with the reason. | `tests/hooks/test_connector_central_spelling.py::test_doc_typo_is_fixed_but_not_inside_code`, `::test_comment_and_docstring_typos_are_fixed_and_code_is_untouched`, `::test_identifier_goes_to_ignore_words_sorted_lowercase_and_idempotent`, `::test_ignore_words_table_is_created_when_missing`, `::test_string_literal_stays_a_review_item`, `::test_multiple_suggestions_in_a_comment_stay_a_review_item`, `::test_other_file_types_and_generated_files_are_not_rewritten`, `::test_second_run_changes_nothing`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 135
    },
    {
      "id": "PIPE-GATES-R016.111",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "Central driver and verify",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0e879efdfea4",
        "27bde72e9d5c",
        "39e835a22c93",
        "8408c527fc35",
        "d2ee1f62b996"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central_driver.py:102",
        "tests/hooks/test_connector_central_driver.py:117",
        "tests/hooks/test_connector_central_driver.py:128",
        "tests/hooks/test_connector_central_driver.py:153",
        "tests/hooks/test_connector_central_driver.py:83"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**Central driver and verify.** `scripts/connector_migrate_batch.py --central` runs worktree, `migrate --central`, commit, verify, push, PR, `gates` and squash-merge per repo; verify runs the Scion SDK conformance plugin (`-k connector_conformance`), `connector-standard`, `pipelines-connector render --check`, `graph-check`, the repo's fast tests and `scripts/connector_verify.py` (stdio: tools, prompts, `connector://resources`, `ontology://`). `--sdk-path` installs the Scion SDK from a path for the dry run. The patch version is bumped once, only when a rule changed something, so a second run changes nothing. | `tests/hooks/test_connector_central_driver.py::test_central_pass_is_idempotent_and_bumps_once` and `::test_central_driver_flags`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 136
    },
    {
      "id": "PIPE-GATES-R016.112",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "A method call is not an internal hostname",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "54cb9fede351"
      ],
      "verified_by": [
        "tests/hooks/test_privacy_hostnames.py:10"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**A method call is not an internal hostname.** `tracked-privacy` reads `name.lan`, `name.internal`, `name.corp` and `name.arpa` as a hostname only when the name is not the callee of a call; `ipmi.lan(\"print\")` is a method, `ipmi.lan` and `http://a.lan` stay hostnames. | `tests/hooks/test_privacy_hostnames.py::test_a_called_method_is_not_a_hostname`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 137
    },
    {
      "id": "PIPE-GATES-R016.113",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "An endpoint route literal is not a home path",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "7888b25e7587",
        "d2ee1f62b996"
      ],
      "verified_by": [
        "tests/hooks/test_privacy_hostnames.py:19",
        "tests/hooks/test_privacy_hostnames.py:29"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**An endpoint route literal is not a home path.** `tracked-privacy` does not read `/Users/<segment>` as a macOS home path when it is the value assigned to an `endpoint` name (`endpoint = \"/Users/Me\"`) or the container home setting (`home = \"/home/app\"` in the pyproject container table); the same text elsewhere stays a home path. | `tests/hooks/test_privacy_hostnames.py::test_an_endpoint_route_literal_is_not_a_home_path`, `::test_the_container_home_setting_is_not_a_home_path`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 138
    },
    {
      "id": "PIPE-GATES-R016.114",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "A variable reference is not a URI credential",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d2ee1f62b996"
      ],
      "verified_by": [
        "tests/hooks/test_privacy_hostnames.py:37"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**A variable reference is not a URI credential.** `tracked-privacy` does not read `scheme://user:${TOKEN}@host` (or `$TOKEN`, `${{ secrets.X }}`) as a credential-bearing URI: the secret is resolved at run time. A literal secret still fires. | `tests/hooks/test_privacy_hostnames.py::test_a_variable_reference_as_the_uri_secret_is_not_a_credential`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 139
    },
    {
      "id": "PIPE-GATES-R016.115",
      "kind": "requirement",
      "parent": "PIPE-GATES",
      "source": "specs/gates/status.json",
      "title": "The skill gates are a `connector-standard` member",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "cb2d1a651c7f"
      ],
      "verified_by": [
        "tests/hooks/test_connector_skills.py:34",
        "tests/hooks/test_connector_skills.py:40",
        "tests/hooks/test_connector_skills.py:49",
        "tests/hooks/test_connector_skills.py:60",
        "tests/hooks/test_connector_skills.py:78"
      ],
      "parent_title": "PIPE-GATES \u2014 Gate landing policy",
      "definition": "**The skill gates are a `connector-standard` member.** `connector-standard` runs atomicity (atomic skills, dual-mode workflows), cross-agent frontmatter portability and cross-platform path portability over the connector's package `skills` directory, with the universal-skills gate logic ported under `pipelines_hooks/connector/skill_checks`; a connector without skills passes, and `[tool.pipelines.skills] path_exclude` leaves generated reference directories out of the path check. A connector adds no hook and no wrapper script. | `tests/hooks/test_connector_skills.py::test_a_connector_without_skills_passes`, `::test_a_conforming_skill_passes_all_three_checks`, `::test_a_non_portable_frontmatter_fails_and_is_named`, `::test_a_long_path_fails_unless_its_directory_is_excluded`, `::test_connector_standard_runs_the_skills_member`.",
      "definition_source": "specs/gates/requirements.md",
      "definition_line": 140
    },
    {
      "id": "PIPE-RELEASE",
      "kind": "spec",
      "parent": null,
      "source": "specs/ordered-digest-release/status.json",
      "title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/ordered-digest-release/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".config/bumpversion.cfg",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.config/bumpversion.cfg"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".config/bumpversion.cfg:2",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.config/bumpversion.cfg#L2"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".config/bumpversion.cfg:6",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.config/bumpversion.cfg#L6"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".github/actions/maturin-build-wheels/action.yml",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.github/actions/maturin-build-wheels/action.yml"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".github/actions/wheel-readiness/readiness.py:325",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.github/actions/wheel-readiness/readiness.py#L325"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".github/actions/wheel-readiness/targets.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.github/actions/wheel-readiness/targets.py"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".github/workflows/ci.yml:86",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.github/workflows/ci.yml#L86"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".github/workflows/container_pipeline.yml",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.github/workflows/container_pipeline.yml"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".github/workflows/gates_pipeline.yml",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.github/workflows/gates_pipeline.yml"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".github/workflows/python_pipeline.yml",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.github/workflows/python_pipeline.yml"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/ci_replica/fast_tests.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/ci_replica/fast_tests.py"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/ci_replica/test_scope.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/ci_replica/test_scope.py"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/cli.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/cli.py"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/cli.py:13",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/cli.py#L13"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/cli.py:59",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/cli.py#L59"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/cli.py:79",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/cli.py#L79"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/core/comparison.py:53",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/core/comparison.py#L53"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/core/gitenv.py:81",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/core/gitenv.py#L81"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "pipelines_hooks/core/versions_gate.py:10",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/pipelines_hooks/core/versions_gate.py#L10"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "reference/ci-standard.md",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/reference/ci-standard.md"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "templates/workflows/gates-skip.yml",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/templates/workflows/gates-skip.yml"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "tests/hooks/test_project_version_sync.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/tests/hooks/test_project_version_sync.py"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "tests/test_python_wheel_output.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/tests/test_python_wheel_output.py"
        },
        {
          "declared_in": "specs/ordered-digest-release/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": "tests/test_release_source.py",
          "repository": "Knuckles-Team/pipelines",
          "role": "test",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/tests/test_release_source.py"
        },
        {
          "declared_in": "specs/ordered-digest-release/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Candidate model",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/ordered-digest-release/plan.md#candidate-model"
        },
        {
          "declared_in": "specs/ordered-digest-release/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Digest boundary",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/ordered-digest-release/plan.md#digest-boundary"
        },
        {
          "declared_in": "specs/ordered-digest-release/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Portable execution",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/ordered-digest-release/plan.md#portable-execution"
        },
        {
          "declared_in": "specs/ordered-digest-release/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "Qualification",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/ordered-digest-release/plan.md#qualification-and-ordering"
        },
        {
          "declared_in": "specs/ordered-digest-release/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements.md",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/ordered-digest-release/requirements.md"
        }
      ],
      "relations": [],
      "plan_diagrams": [],
      "unparsed_references": []
    },
    {
      "id": "PIPE-RELEASE-R001",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Pipelines publishes images in dependency order with digest pins",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [
        "59dd4e7b91c6"
      ],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Pipelines publishes images in dependency order with digest pins.** pipelines builds each repository's container image with an immutable digest pin, pushes repositories to GitHub in dependency order, and awaits hosted CI on each pushed revision before publishing the next stage, stopping before any downstream publication on failure. | Verified by an integration test with three ordered candidates confirming each stage's hosted CI must pass before the next stage publishes, per FR-3.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 5
    },
    {
      "id": "PIPE-RELEASE-R002",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Release tags point to the exact qualified commit",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0f9f73b150d7",
        "455654369f2f",
        "8b68968bb542",
        "8f6b2234e190",
        "d6a43376acc9"
      ],
      "verified_by": [
        "tests/test_release_version_guard.py:108",
        "tests/test_release_version_guard.py:115",
        "tests/test_release_version_guard.py:128",
        "tests/test_release_version_guard.py:136",
        "tests/test_release_version_guard.py:57"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Release tags point to the exact qualified commit.** pipelines verifies that a published GitHub release tag points to the exact source commit recorded in the qualified candidate manifest, rejecting any mismatch between the tag, the commit, and the published package artifact. Before any build, `python_pipeline.yml` and `maturin_pipeline.yml` run `verify-release-version`, which fails when the pushed tag `vX.Y.Z` differs from the version the build will stamp (`[project].version`, or the maturin manifest's `[package].version` when dynamic), when `.bumpversion.cfg` or `.config/bumpversion.cfg` `current_version` differs, or when that version is already on PyPI (a failed lookup also blocks). | Verified by a negative test that a tag or artifact whose commit does not match the candidate manifest's recorded commit is rejected, per FR-1, and by `tests/test_release_version_guard.py` (`test_stale_version_under_new_tag_is_refused`, `test_version_already_on_pypi_is_refused`, `test_bumpversion_disagreement_is_refused`, `test_maturin_dynamic_version_reads_the_manifest`, `test_every_shared_release_path_runs_the_guard_before_building`).",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 6
    },
    {
      "id": "PIPE-RELEASE-R003",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Release build job sources environment values safely",
      "delivery_state": "LANDED",
      "state": "landed",
      "done": false,
      "landed_in": [
        "3778a909bcad",
        "59dd4e7b91c6",
        "622a53f14803"
      ],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Release build job sources environment values safely.** The release workflow's local build job writes and sources environment variables, including compiler flags such as CFLAGS, in a properly quoted form so a multi-token value is never misinterpreted as a shell command, and the build verifies byte-identical, reproducible wheels as part of its checks. | Verified by a build run whose steps complete via the real product build path rather than aborting early from an environment-sourcing error, and whose reproducibility check confirms byte-identical wheels across independent builds.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 7
    },
    {
      "id": "PIPE-RELEASE-R004",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Release gate fails when a compiled kernel wheel is missing",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "46c29c66d460",
        "928faad60ad2",
        "935d6b72d3b8",
        "9e3899b6ad99"
      ],
      "verified_by": [
        "tests/test_wheel_kernel_completeness.py:212",
        "tests/test_wheel_kernel_completeness.py:229",
        "tests/test_wheel_kernel_completeness.py:242",
        "tests/test_wheel_kernel_completeness.py:324",
        "tests/test_wheel_kernel_completeness.py:333"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Release gate fails when a compiled kernel wheel is missing.** Every published wheel set must hold one wheel with compiled numeric kernel binaries for each supported platform and Python version. The packaging gate must block publication when any combination is absent. | Run `test_missing_kernel_combination_blocks_release` in `tests/test_wheel_kernel_completeness.py`; expects exit 1 naming the missing combination.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 8
    },
    {
      "id": "PIPE-RELEASE-R004.1",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "46c29c66d460",
        "928faad60ad2",
        "935d6b72d3b8",
        "9e3899b6ad99"
      ],
      "verified_by": [
        "tests/test_wheel_kernel_completeness.py:212"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Model.** Add `KernelCell(target, python_tag, wheel)` and `KernelMatrix(required, found)` in new `.github/actions/wheel-readiness/kernels.py`. Existing `TARGETS` in `.github/actions/wheel-readiness/targets.py:7` lists four platforms. The canonical target validator and Maturin publisher require CPython 3.14 (`cp314`); this existing publisher axis is the named default, while callers may pass another reviewed axis explicitly. | Run `test_kernel_matrix_model_is_closed` in `tests/test_wheel_kernel_completeness.py` expects one cell per target and tag.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 9
    },
    {
      "id": "PIPE-RELEASE-R004.2",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Behavior",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "46c29c66d460",
        "928faad60ad2",
        "935d6b72d3b8",
        "9e3899b6ad99"
      ],
      "verified_by": [
        "tests/test_wheel_kernel_completeness.py:229"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Behavior.** Add `required_cells(targets, python_tags)` and `missing_cells(matrix)`. Each wheel counts only when its archive lists at least one compiled extension file (`.so`, `.pyd` or `.dylib`) matching its platform tag. The supported Python range is a named default, replaceable per publisher. | Run `test_wheel_without_binary_is_missing` in `tests/test_wheel_kernel_completeness.py` expects the pure-Python wheel to count as missing.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 10
    },
    {
      "id": "PIPE-RELEASE-R004.3",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Wiring",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "46c29c66d460",
        "928faad60ad2",
        "935d6b72d3b8",
        "9e3899b6ad99"
      ],
      "verified_by": [
        "tests/test_wheel_kernel_completeness.py:324"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Wiring.** Implementation is new `kernels.py`; no production caller today. Call `missing_cells` from `aggregate` at `.github/actions/wheel-readiness/bundle.py:98`, which `main` calls at `.github/actions/wheel-readiness/readiness.py:343` for the release publication step. | Run `test_aggregate_calls_kernel_gate` in `tests/test_wheel_kernel_completeness.py` expects `aggregate` to raise on a missing cell.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 11
    },
    {
      "id": "PIPE-RELEASE-R004.4",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Refusal",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "46c29c66d460",
        "928faad60ad2",
        "935d6b72d3b8",
        "9e3899b6ad99"
      ],
      "verified_by": [
        "tests/test_wheel_kernel_completeness.py:242",
        "tests/test_wheel_kernel_completeness.py:333"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Refusal.** `aggregate` must raise `KernelCellMissing` listing every absent `target/python_tag` pair. It must write no readiness receipt and must not publish. A repository that declares no compiled kernel must abstain with `no-kernel-declared`. | Run `test_missing_cell_refusal_lists_all_pairs` in `tests/test_wheel_kernel_completeness.py` expects every absent pair named.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 12
    },
    {
      "id": "PIPE-RELEASE-R004.5",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Evidence",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "46c29c66d460",
        "928faad60ad2",
        "935d6b72d3b8",
        "9e3899b6ad99"
      ],
      "verified_by": [
        "tests/test_wheel_kernel_completeness.py:345"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Evidence.** The aggregate receipt must carry a `kernel_cells` field with each required cell, its wheel file and its binary file names. A refused run must carry the missing pairs in the refusal message. | Run `test_receipt_records_kernel_cells` in `tests/test_wheel_kernel_completeness.py` expects `kernel_cells` equal to the required set.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 13
    },
    {
      "id": "PIPE-RELEASE-R004.6",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Hot-path proof",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "46c29c66d460",
        "928faad60ad2",
        "935d6b72d3b8",
        "9e3899b6ad99"
      ],
      "verified_by": [
        "tests/test_wheel_kernel_completeness.py:359"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Hot-path proof.** The entry point is the `aggregate` run of `readiness.py` in the release bundle step, reached through `main` at `.github/actions/wheel-readiness/readiness.py:325`. A wheel directory missing one platform build must exit non-zero and write no receipt. | Run `test_release_bundle_blocks_missing_kernel_wheel` in `tests/test_wheel_kernel_completeness.py` expects non-zero exit and no receipt file.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 14
    },
    {
      "id": "PIPE-RELEASE-R005",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Dependency gate blocks circular dependency loops",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Dependency gate blocks circular dependency loops.** The dependency gate must detect loops among root, optional and development dependency groups. It must report each loop with its members and block landing until the loop is broken. | Run `test_dependency_loop_fails_gate` in `tests/hooks/test_dependency_cycles.py`; expects exit 1 naming the loop.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 15
    },
    {
      "id": "PIPE-RELEASE-R005.1",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "6bf8524c1644"
      ],
      "verified_by": [
        "tests/hooks/test_dependency_cycles.py:43"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Model.** Add `DependencyEdge(source_group, target_group, via)` and `DependencyLoop(members)` in new `pipelines_hooks/supply_chain/dependency_cycles.py`. Groups are `root`, each optional extra and each development group. Existing `declared_dependencies` at `pipelines_hooks/supply_chain/dependencies.py:32` flattens groups and loses edges. | Run `test_group_graph_model` in `tests/hooks/test_dependency_cycles.py` expects one node per group.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 16
    },
    {
      "id": "PIPE-RELEASE-R005.2",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Behavior",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "6bf8524c1644"
      ],
      "verified_by": [
        "tests/hooks/test_dependency_cycles.py:59",
        "tests/hooks/test_dependency_cycles.py:71"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Behavior.** Add `group_edges(document)` and `find_loops(edges)`. An edge comes from an `include-group` entry or from the project's own name with an extra. `find_loops` returns strongly connected components of size above one, plus self-loops, as `import_cycles.py:41` does. | Run `test_include_group_cycle_found` in `tests/hooks/test_dependency_cycles.py` expects a two-group loop reported.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 17
    },
    {
      "id": "PIPE-RELEASE-R005.3",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Wiring",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "6bf8524c1644",
        "86d2275e8f65",
        "916078bcf41f",
        "a52f3f5f244f"
      ],
      "verified_by": [
        "tests/hooks/test_dependency_cycles.py:147"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Wiring.** Implementation is new `dependency_cycles.py`; no production caller today. Call `loop_findings` from `dependency_findings` at `pipelines_hooks/supply_chain/dependencies.py:79` next to `_pyproject_findings`. `gate.py:71` calls `dependency_findings`; `supply-chain` is registered at `pipelines_hooks/cli.py:28`. | Run `test_dependency_findings_include_loops` in `tests/hooks/test_dependency_cycles.py` expects a loop finding.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 18
    },
    {
      "id": "PIPE-RELEASE-R005.4",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Refusal",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "6bf8524c1644",
        "86d2275e8f65",
        "916078bcf41f",
        "a52f3f5f244f"
      ],
      "verified_by": [
        "tests/hooks/test_dependency_cycles.py:174",
        "tests/hooks/test_dependency_cycles.py:85"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Refusal.** The gate must emit a finding with rule `SC-DEP-LOOP` per loop and exit 1. The finding must stay until the loop is broken. A manifest that fails to parse must give a typed parse finding, not an empty pass. | Run `test_unparseable_manifest_is_not_a_pass` in `tests/hooks/test_dependency_cycles.py` expects a parse finding.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 19
    },
    {
      "id": "PIPE-RELEASE-R005.5",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Evidence",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "6bf8524c1644"
      ],
      "verified_by": [
        "tests/hooks/test_dependency_cycles.py:190"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Evidence.** Each `SC-DEP-LOOP` finding message must list loop members in sorted order and the manifest path. The gate summary must count loops found. | Run `test_loop_finding_lists_sorted_members` in `tests/hooks/test_dependency_cycles.py` expects sorted members.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 20
    },
    {
      "id": "PIPE-RELEASE-R005.6",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Hot-path proof",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "6bf8524c1644",
        "86d2275e8f65",
        "916078bcf41f",
        "a52f3f5f244f"
      ],
      "verified_by": [
        "tests/hooks/test_dependency_cycles.py:109",
        "tests/hooks/test_dependency_cycles.py:213"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Hot-path proof.** The entry point is `pipelines-hook supply-chain` through `main` in `pipelines_hooks/cli.py:79` on a fixture repository whose `pyproject.toml` has two groups including each other. The hook must exit 1 and print `SC-DEP-LOOP`. | Run `test_supply_chain_hook_blocks_dependency_loop` in `tests/hooks/test_dependency_cycles.py` expects exit 1 and the rule name.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 21
    },
    {
      "id": "PIPE-RELEASE-R006",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "One bump configuration keeps project versions consistent",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**One bump configuration keeps project versions consistent.** Rollup of the children below. The gate checks metadata, source and documentation against one canonical project version. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 22
    },
    {
      "id": "PIPE-RELEASE-R006.1",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "01378f786cba",
        "336628614998",
        "fa4ad80cd25b"
      ],
      "verified_by": [
        "tests/hooks/test_project_version_sync.py:65"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Model.** Add `ProjectVersionInventory`, `VersionLocation` and `VersionCheck` in new `pipelines_hooks/release/project_version.py`. One canonical bump configuration owns current version and each location: repository-relative path, role (`metadata`, `source`, `documentation`), extraction selector, search/replacement templates and expected match count. Checks bind actual and expected values, line locations, configuration digest and Git snapshot. Every role requires at least one explicit location. | Run `test_project_version_inventory` in `tests/hooks/test_project_version_sync.py`. Accept a complete three-role inventory; reject unknown roles, duplicate locations and missing role coverage.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 23
    },
    {
      "id": "PIPE-RELEASE-R006.2",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Behavior",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "01378f786cba",
        "336628614998",
        "fa4ad80cd25b"
      ],
      "verified_by": [
        "tests/hooks/test_project_version_sync.py:89"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Behavior.** The `exact-project-version` default compares every selected value with the canonical current version in the same Git snapshot. Parse metadata, literal source assignments and marked documentation text without imports or execution. Require selectors and bump templates to identify exactly the declared occurrences and preserve all other text. Validate template/extractor round trips; no implicit version normalization or whole-file version search is allowed. Historical release notes and dependency versions are outside the inventory unless explicitly declared. | Run `test_project_version_values` in `tests/hooks/test_project_version_sync.py`. Equal values pass; independently changing metadata, source, documentation or canonical current version fails at the exact location.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 24
    },
    {
      "id": "PIPE-RELEASE-R006.3",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Wiring",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "01378f786cba",
        "336628614998",
        "fa4ad80cd25b"
      ],
      "verified_by": [
        "tests/hooks/test_project_version_sync.py:176"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Wiring.** Create `project-version-sync` in `GATES` at `pipelines_hooks/cli.py:13`, called by `run_gate` at `pipelines_hooks/cli.py:59`. Add its shared hook beside `.pre-commit-hooks.yaml:67`, catalogue and self-run configuration consumed by `.github/workflows/ci.yml:86`. Reuse snapshot selection at `pipelines_hooks/core/comparison.py:53` and blob reads at `pipelines_hooks/core/gitenv.py:81`. Inspect the full declared inventory in the index or selected committed tree, including the configuration; never mix worktree bytes. No production caller reaches this gate today. | Run `test_project_version_hook_wiring` in `tests/hooks/test_project_version_sync.py`. The installed CLI and published hook select the same snapshot and fail on an inconsistent unchanged declared surface.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 25
    },
    {
      "id": "PIPE-RELEASE-R006.4",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Refusal",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "01378f786cba",
        "336628614998",
        "fa4ad80cd25b"
      ],
      "verified_by": [
        "tests/hooks/test_project_version_sync.py:127"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Refusal.** Return located `version-mismatch` findings and exit 1 for unequal extracted values. Raise `CannotRun` with a closed reason (`config-missing`, `config-invalid`, `config-ambiguous`, `inventory-incomplete`, `location-unreadable`, `selector-ambiguous`, `unsupported-extraction` or `snapshot-unavailable`) and exit 2 when any declared surface is unchecked. Reject match counts that differ from the declared positive count, duplicate authorities, traversal, symlink entries and dynamic source expressions. Never skip an unreadable surface or repair files during checking. | Run `test_project_version_refusals` in `tests/hooks/test_project_version_sync.py`. Missing, malformed or competing configs and ambiguous extraction exit 2; mismatches exit 1 and cannot produce a passing receipt.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 26
    },
    {
      "id": "PIPE-RELEASE-R006.5",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Evidence",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "01378f786cba",
        "336628614998",
        "fa4ad80cd25b"
      ],
      "verified_by": [
        "tests/hooks/test_project_version_sync.py:158"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Evidence.** Emit sorted role/path/line observations with expected and actual version, selector identity, checked count, configuration and blob digests, snapshot identity and typed refusals. A success record requires every location in every role to be checked. Record index-tree identity locally and commit/tree identity in CI. Print repository-relative locations only; do not publish unrelated source text or local machine paths. | Run `test_project_version_evidence` in `tests/hooks/test_project_version_sync.py`. Evidence identifies the exact checked Git bytes and all three roles; unchecked cases have no successful verdict.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 27
    },
    {
      "id": "PIPE-RELEASE-R006.6",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Hot-path proof",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "01378f786cba",
        "336628614998",
        "975ea62b6b54",
        "fa4ad80cd25b"
      ],
      "verified_by": [
        "tests/hooks/test_project_version_sync.py:189"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Hot-path proof.** Use entry point `pipelines-hook project-version-sync --root <fixture>` in `tests/hooks/test_project_version_sync.py` on a real temporary Git repository. Equal metadata, literal source and marked docs pass. Change and stage each surface independently: the published CLI and hook exit 1 at that line. Malformed, missing and ambiguous configs exit 2. An unstaged repair cannot hide an indexed mismatch; an unstaged mismatch cannot change a clean committed-tree result. Run the configured bump tool in the disposable fixture and prove it updates all three surfaces before the gate passes. | Run `test_project_version_sync_cli` in `tests/hooks/test_project_version_sync.py`. Assert real dispatcher/hook exit codes, exact locations, snapshot isolation, all-surface bumping and unchanged caller files during gate checks.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 28
    },
    {
      "id": "PIPE-RELEASE-R005.7",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Model.** Add RoleExtraManifest in proposed pipelines_hooks/release/role_closure.py. Bind the package owner export by repository, source revision and digest. Its complete supported-role set must equal the manifest role set. Each role names root distribution, extras, entry modules and platform-qualified transitive closure. Mandatory root dependencies include `medulla[full]` under AU-INTEGRATION-R006; pipelines must not invent the supported roles. | Run `test_role_extra_closure_model` in `tests/hooks/test_role_extra_closure.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 29
    },
    {
      "id": "PIPE-RELEASE-R005.8",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Behavior.** Build each declared role artifact and install only its frozen dependency closure in an isolated environment. Resolve environment markers for each declared target. Required imports must include mandatory root and selected-extra dependencies. Forbidden probes cover only imports outside that resolved closure. A package shared with an unselected extra remains allowed when mandatory or transitively required. Each role must supply a packaged positive case and an actually excluded negative case. | Run `test_role_extra_closure_behavior` in `tests/hooks/test_role_extra_closure.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 30
    },
    {
      "id": "PIPE-RELEASE-R005.9",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Wiring.** Register role-closure at pipelines_hooks/cli.py:13 through run_gate at line 59. Proposed role_closure.main must consume the package producer artifact before release readiness aggregation at .github/actions/wheel-readiness/bundle.py:98. Reuse dependency groups from R005 and static boundaries from PIPE-PAGES-R021.7. Static import analysis alone cannot prove installed closure. | Run `test_role_extra_closure_wiring` in `tests/hooks/test_role_extra_closure.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 31
    },
    {
      "id": "PIPE-RELEASE-R005.10",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Refusal.** Missing owner role exports, unresolved dependency markers or versions, incomplete target coverage and stale locks must exit 2. Missing required imports or a successful excluded import must exit 1. If no excluded import exists, report that limitation; never fabricate a negative case or claim that obligation proved. The checker must not install dependencies to repair the candidate. | Run `test_role_extra_closure_refusal` in `tests/hooks/test_role_extra_closure.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 32
    },
    {
      "id": "PIPE-RELEASE-R005.11",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Evidence.** Emit complete role-to-extra mappings, artifact and lock digests, installed distributions and measured import outcomes. Record mandatory base dependencies separately from selected extras. Report every unsupported role explicitly. A smaller artifact must not imply complete supported-role coverage. | Run `test_role_extra_closure_evidence` in `tests/hooks/test_role_extra_closure.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 33
    },
    {
      "id": "PIPE-RELEASE-R005.12",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Hot-path proof.** The role-closure CLI must consume actual built artifacts and the owner role export. Verify set equality for all supported roles and targets. Test two roles with different extras, mandatory dependencies and a shared transitive dependency. The shared dependency must remain importable. Remove one mandatory dependency or omit one exported role; both must block readiness. Each actual excluded import must fail. | Run `test_role_extra_closure_cli` in `tests/hooks/test_role_extra_closure.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 34
    },
    {
      "id": "PIPE-RELEASE-R001.1",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Model.** Add ReleasePhasePolicy in proposed pipelines_hooks/release/phases.py. Declare unique project membership, dependency predecessors, bump argv, delay_seconds and timeout_seconds. Delays must be finite and nonnegative. A version-1 event contains run ID, sequence, phase, project and completion sets. A subscriber buffer holds at most 256 events. The owner inventory determines phase membership and dependency order. | Run `test_release_phase_progress_model` in `tests/hooks/test_release_phase_progress.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 35
    },
    {
      "id": "PIPE-RELEASE-R001.2",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Behavior.** Start the inter-phase monotonic timer after every predecessor project completes its bump, publication and required hosted CI. The next phase must wait the full configured delay after that point. Emit before and after each project transition. Failure or cancellation stops downstream work and preserves completed effects. Paused or restarted runs must start a fresh full delay after revalidating predecessor receipts. | Run `test_release_phase_progress_behavior` in `tests/hooks/test_release_phase_progress.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 36
    },
    {
      "id": "PIPE-RELEASE-R001.3",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Wiring.** Create release-phases at pipelines_hooks/cli.py:13 through run_gate at line 59. Proposed phases.main must consume repository-manager readiness and ordered candidate exports before invoking release producers. Repository-manager retains fleet-order authority. The CLI emits JSON lines to its consuming UI. Overflow disconnects that subscriber with an explicit sequence-gap record; resumption requires a fresh authoritative progress snapshot. | Run `test_release_phase_progress_wiring` in `tests/hooks/test_release_phase_progress.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 37
    },
    {
      "id": "PIPE-RELEASE-R001.4",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Refusal.** Duplicate phase membership, dependency-order violations, invalid delays or missing pinned candidate data must refuse before mutation. A failed bump, CI failure, timeout or cancellation must stop downstream publication. Resumption must bind the prior run and completed artifact digests; it must not silently rerun completed mutations. | Run `test_release_phase_progress_refusal` in `tests/hooks/test_release_phase_progress.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 38
    },
    {
      "id": "PIPE-RELEASE-R001.5",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Evidence.** Record policy digest, finite delay, monotonic start/end values and elapsed wait. Completed means all required project stages passed. Active means currently executing; remaining means not started. Record failed and cancelled sets separately; all five sets must be disjoint and cover the run inventory. A cancelled run must show unstarted projects explicitly. Sequence gaps must not imply continuous observation. | Run `test_release_phase_progress_evidence` in `tests/hooks/test_release_phase_progress.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 39
    },
    {
      "id": "PIPE-RELEASE-R001.6",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Hot-path proof.** The release-phases CLI must execute real bump commands for three disposable projects in two phases. Use a one-second delay and verify elapsed time from final predecessor qualification, independently of CI duration. Observe live set transitions. Failure and cancellation must prevent downstream execution. A slow subscriber must receive a gap and fresh snapshot after the 256-event buffer overflows. | Run `test_release_phase_progress_cli` in `tests/hooks/test_release_phase_progress.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 40
    },
    {
      "id": "PIPE-RELEASE-R006.7",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "a5cc6e652e41"
      ],
      "verified_by": [
        "tests/hooks/test_version_inventory_completeness.py:72"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Model.** Extend ProjectVersionInventory with a versioned static discovery policy. Version 1 discovers project.version metadata, literal module-level __version__ assignments in first-party package roots and marked project-version documentation spans. Other names such as VERSION require an explicit project-version ownership selector. Dependency constants and historical release text remain excluded unless explicitly declared. Every discovered location must map to one canonical bump selector. | Run `test_version_inventory_completeness_model` in `tests/hooks/test_version_inventory_completeness.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 41
    },
    {
      "id": "PIPE-RELEASE-R006.8",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Behavior",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "008269c3085b",
        "a5cc6e652e41"
      ],
      "verified_by": [
        "tests/hooks/test_version_inventory_completeness.py:104"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Behavior.** Compare discovered locations with configured selectors before checking values. An undeclared __version__ assignment within supported package roots must fail even when its value matches. Discovery must not evaluate code or search arbitrary version strings. A dependency constant named VERSION must remain excluded without project-version ownership metadata. Ambiguous assignments and computed project versions must remain unsupported, not guessed. | Run `test_version_inventory_completeness_behavior` in `tests/hooks/test_version_inventory_completeness.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 42
    },
    {
      "id": "PIPE-RELEASE-R006.9",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Wiring.** Extend proposed project_version.main through pipelines_hooks/cli.py:13 and run_gate at line 59. Reuse R006 snapshot selection. Add a code-enhancer consumer binding: owner repository, revision, real entry-point path and function, invocation argv and inventory digest. That entry must invoke project-version-sync before admitting a version proposal. Its concrete owner call site remains unresolved; a generic CLI pass cannot prove consumer integration. | Run `test_version_inventory_completeness_wiring` in `tests/hooks/test_version_inventory_completeness.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 43
    },
    {
      "id": "PIPE-RELEASE-R006.10",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Refusal.** Unmapped discovered references or duplicate mappings must fail with exact locations. Unsupported grammar, missing roots, dynamic assignments or ambiguous canonical authority must exit 2. The consumer must not rewrite undeclared references or broaden discovery to dependency and historical version text. | Run `test_version_inventory_completeness_refusal` in `tests/hooks/test_version_inventory_completeness.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 44
    },
    {
      "id": "PIPE-RELEASE-R006.11",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Evidence.** Emit discovered and configured sets, their difference, per-location role and selector, policy digest and source snapshot. State the exact supported discovery grammar and excluded categories. A pass proves completeness within that grammar only, not every possible textual version mention. | Run `test_version_inventory_completeness_evidence` in `tests/hooks/test_version_inventory_completeness.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 45
    },
    {
      "id": "PIPE-RELEASE-R006.12",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Hot-path proof.** The project-version-sync CLI must inspect a disposable package with a new unmapped module-level __version__ assignment. It must fail, then pass after mapping. An unrelated dependency VERSION constant and historical text must remain unchanged. After resolving its owner binding, the real code-enhancer entry must refuse the same proposal. A missing consumer binding or dynamic expression leaves integration unproved. | Run `test_version_inventory_completeness_cli` in `tests/hooks/test_version_inventory_completeness.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 46
    },
    {
      "id": "PIPE-RELEASE-R001.7",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Model",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Model.** Add MajorUpgradeCandidate to proposed release phase policy. It must enumerate every supported consumer package, prior and target dependency pins, source revisions and compatibility profile. Each receipt must bind package artifact, target major version, Scion SDK certification revision and observed result. One owner inventory must define fleet membership. | Run `test_major_upgrade_pre_pin_model` in `tests/hooks/test_major_upgrade_pre_pin.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 47
    },
    {
      "id": "PIPE-RELEASE-R001.8",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Behavior",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Behavior.** Before any pin write, gather passing Scion SDK certification receipts for every owner-declared consumer package at exact target artifacts. Bind admission to unchanged prior pins and source revisions. Failed or incomplete preflight must leave every pin unchanged. After admission, apply owner-ordered updates with per-repository expected-head checks. This contract does not claim an atomic transaction across repositories. | Run `test_major_upgrade_pre_pin_behavior` in `tests/hooks/test_major_upgrade_pre_pin.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 48
    },
    {
      "id": "PIPE-RELEASE-R001.9",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Wiring.** Extend the proposed release-phases entry at pipelines_hooks/cli.py:13 through run_gate at line 59. Place the Scion SDK compatibility adapter before version-bump argv execution and pin writes. Repository-manager retains fleet rollout admission; Scion SDK retains compatibility semantics. Pipelines must consume those producer receipts without duplicating certification rules. | Run `test_major_upgrade_pre_pin_wiring` in `tests/hooks/test_major_upgrade_pre_pin.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 49
    },
    {
      "id": "PIPE-RELEASE-R001.10",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Refusal",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Refusal.** A failed preflight result must refuse admission with zero pin writes. Missing, stale, skipped or mismatched receipts must exit 2. A changed expected head invalidates admission. After writes begin, failure stops remaining updates and reports already-applied changes explicitly. Resumption requires revalidation; it must neither claim global rollback nor repeat an already-applied update silently. | Run `test_major_upgrade_pre_pin_refusal` in `tests/hooks/test_major_upgrade_pre_pin.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 50
    },
    {
      "id": "PIPE-RELEASE-R001.11",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Evidence",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Evidence.** Record complete owner package inventory, old/new pins, artifacts, certification profiles and all compatibility receipts. Bind admission to expected source heads. Preflight refusals require byte-identical pin evidence. Post-admission reports must distinguish applied, failed and unstarted updates, including exact resulting heads. Import success alone cannot replace package compatibility. | Run `test_major_upgrade_pre_pin_evidence` in `tests/hooks/test_major_upgrade_pre_pin.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 51
    },
    {
      "id": "PIPE-RELEASE-R001.12",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Hot-path proof.** The actual rollout entry must certify two packaged consumers before any writes. One incompatible or missing result must preserve every pin. After passing admission, change a second repository head while the first update completes. The second update must refuse; the receipt must show the first applied and the second unstarted. Revalidation must precede resumption. | Run `test_major_upgrade_pre_pin_cli` in `tests/hooks/test_major_upgrade_pre_pin.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 52
    },
    {
      "id": "PIPE-RELEASE-R001.13",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Versions and container files are derived",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0f2baf0bc01f",
        "520609e0ae33",
        "5b1843a5a360",
        "5ff231c270b1",
        "8a5d41d64229"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central.py:143",
        "tests/hooks/test_connector_central.py:185",
        "tests/hooks/test_connector_central.py:201",
        "tests/hooks/test_connector_central.py:234",
        "tests/hooks/test_connector_central.py:254"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Versions and container files are derived.** The connector release reads the version from `pyproject.toml` alone and holds no `.bumpversion.cfg` file list. `pipelines-connector render` writes `Dockerfile`, `debug.Dockerfile` and `<target>.compose.yml` from `pipelines_hooks/connector/templates` and `[project]` plus the optional `[tool.pipelines.container]` table (`host`, `compose_host`, `port`, `uid`, `home`, `entrypoints`, `sdist_deps`, `builder_apt`, `runtime_apt`, `runtime_copies`, `stage_copies`, `extra_stages`, `extra_runtime_stages`, `debug_apt`, `debug_extras`, `install_extras`, `compose_env`, `env_file_mode`, `env_file_optional`, `image_var`, `restart`, `tmpfs_size`, `publish_port`, `container_name`, `hostname`, `health_timeout`, `health_command_timeout`, `config_mounts`, `state_volumes`, `limits`); `compose_host` is one canonical host-binding field and accepts a validated IPv4/IPv6 literal or a typed `{env, default}` binding whose default is a validated IP; `publish_port` accepts a validated port literal or the same typed binding. The renderer uses Compose long-form ports (`host_ip`, `published`, `target`) so IPv4, IPv6 and typed bindings cannot corrupt short syntax. An unknown or ambiguous key (including the retired `publish_host` alias), malformed environment name/default, invalid selector/value, host-with-port or missing entrypoint refuses, and equal inputs give equal bytes. `container_pipeline.yml` takes `render_connector` and renders before the build; when the canonical `docker/Dockerfile` is absent it also renders only for a recognized connector identity (`agent_connector_sdk.connector` or a tracked `connector_sources.py`), while custom Dockerfile paths remain caller-owned. `--check` and `connector-files` fail a committed rendering. | `tests/hooks/test_connector_central.py::test_render_is_deterministic_and_driven_by_the_table`, `::test_render_preserves_explicit_runtime_contract`, `::test_render_uses_a_validated_compose_host`, `::test_render_resolves_typed_bindings_through_compose`, `::test_render_refuses_invalid_runtime_contract`, `::test_render_refuses_an_invalid_compose_host`, `::test_render_refuses_malformed_typed_bindings`, `::test_render_refuses_the_retired_publish_host_alias`, `::test_render_refuses_an_unknown_table_key_and_a_missing_entrypoint`, `::test_render_writes_files_and_check_fails_on_a_committed_rendering`, `tests/test_container_pipeline_contract.py::test_connector_render_is_selected_only_for_missing_canonical_dockerfile` and `::test_connector_sources_identity_enables_canonical_render`, and `::test_pipelines_connector_command_dispatches_and_refuses_unknown`.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 53
    },
    {
      "id": "PIPE-RELEASE-R001.14",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "A new Scion SDK release rebuilds connector images",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5ff231c270b1"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central.py:335",
        "tests/hooks/test_connector_central.py:353"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**A new Scion SDK release rebuilds connector images.** The rendered image refreshes the detected Scion SDK distribution, accepting the legacy `agent-connector-sdk` alias and the new `scion-sdk` distribution; the migration path emits the new distribution while old consumers remain accepted. The image uses `ARG SDK_VERSION`; `container_pipeline.yml` takes `sdk_version` and optional `sdk_distribution`, passes the version as the build argument and adds `<version>-sdk<sdk_version>` for the legacy distribution or `<version>-sdk-scion-sdk-<sdk_version>` for Scion (with the target suffix). `connector_sdk_rebuild_pipeline.yml` accepts the validated distribution from the dispatch input or payload, resolves the Scion SDK version (input, payload, then PyPI), checks the matching distribution-specific registry tag, and otherwise rebuilds through the container pipeline. | `tests/hooks/test_connector_central.py::test_container_workflow_renders_and_tags_by_sdk_version` and `::test_sdk_rebuild_workflow_skips_a_built_tag_and_rebuilds_through_the_container_pipeline`.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 54
    },
    {
      "id": "PIPE-RELEASE-R007",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Shared gates workflow, tag-only publish guard and fast-tests hook",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3cfd039fe3e2",
        "3d0455152b96",
        "4f1e1f0aff4a",
        "5655978dd7c2",
        "6e39e9664fd1"
      ],
      "verified_by": [
        "tests/hooks/test_fast_tests.py:10",
        "tests/hooks/test_fast_tests.py:27",
        "tests/hooks/test_fast_tests.py:35",
        "tests/hooks/test_fast_tests.py:46",
        "tests/hooks/test_pr_test_scope.py:189"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Shared gates workflow, tag-only publish guard and fast-tests hook.** Rollup of the children below. Implements the pipelines prerequisite of the CI standard; nothing changes for a caller that adds no input. | The rollup is the minimum state of its children.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 55
    },
    {
      "id": "PIPE-RELEASE-R007.1",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Model",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3d0455152b96",
        "4f1e1f0aff4a",
        "5655978dd7c2",
        "6e39e9664fd1",
        "75a70f90aed9"
      ],
      "verified_by": [
        "tests/test_gates_pipeline_contract.py:44",
        "tests/test_gates_pipeline_contract.py:52"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Model.** Add `.github/workflows/gates_pipeline.yml`, a `workflow_call` workflow with exactly the inputs `config`, `test-scope`, `src-root`, `runner`, `rust`, `all-files`, `extra-manual-hooks`, `skip-hooks` and `timeout-minutes`. Every input is optional with a default (`.config/pre-commit.yaml`, `tests`, derived, hosted runner, no Rust, diff scope, none, none, 15), no secrets are declared and no publish step exists, so adopting it needs no `with:` block. | Run `test_gates_workflow_inputs_all_default` in `tests/test_gates_pipeline_contract.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 56
    },
    {
      "id": "PIPE-RELEASE-R007.2",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Behavior",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3d0455152b96",
        "4f1e1f0aff4a"
      ],
      "verified_by": [
        "tests/test_gates_pipeline_contract.py:65"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Behavior.** The `gates` job fetches full history, resolves the pull request base (merge-base fallback), runs the caller's pre-commit file at the commit stage and the pre-push stage with `--from-ref/--to-ref`, or `--all-files` when `all-files` is true, then runs the `pr-test-scope` subset (`NONE` skips, `FULL` runs the tests directory). The job honours `timeout-minutes`. The header carries the copyable caller concurrency block (cancel for pull request and main groups) and `paths-ignore` list. | Run `test_gates_workflow_scopes_to_the_diff_and_caps_time` in `tests/test_gates_pipeline_contract.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 57
    },
    {
      "id": "PIPE-RELEASE-R007.3",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Wiring",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3d0455152b96",
        "4f1e1f0aff4a"
      ],
      "verified_by": [
        "tests/test_gates_pipeline_contract.py:78"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Wiring.** `python_pipeline.yml` gains input `require-tag` (default `false`) and a first step guarded by it, so existing callers are unchanged. `templates/workflows/gates-skip.yml` is the inverse-`paths:` companion that reports the required `gates` check for docs/spec-only changes. Shared hook `fast-tests` is registered in `pipelines_hooks/cli.py` and published at the pre-push stage in `.pre-commit-hooks.yaml`. | Run `test_require_tag_defaults_off_and_guards_the_publish_step` in `tests/test_gates_pipeline_contract.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 58
    },
    {
      "id": "PIPE-RELEASE-R007.4",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Refusal",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4f1e1f0aff4a"
      ],
      "verified_by": [
        "tests/hooks/test_fast_tests.py:46",
        "tests/test_gates_pipeline_contract.py:93"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Refusal.** With `require-tag` true, a ref that is not `refs/tags/v*` fails the job before the build and publish steps and names the ref. `fast-tests` exceeding its cap (default 120 s) fails the hook with exit 1 instead of hanging the push; a non-positive timeout is `CannotRun` (exit 2). | Run `test_require_tag_refuses_a_branch_ref_and_names_it` in `tests/test_gates_pipeline_contract.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 59
    },
    {
      "id": "PIPE-RELEASE-R007.5",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Evidence",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "4f1e1f0aff4a"
      ],
      "verified_by": [
        "tests/hooks/test_fast_tests.py:27",
        "tests/hooks/test_fast_tests.py:35",
        "tests/test_gates_pipeline_contract.py:104"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Evidence.** `fast-tests` states why it ran nothing: `no affected tests` for `NONE`, and that main CI owns the suite for `FULL`. The refusal message of the tag guard names the offending ref. The gates workflow logs the `pr-test-scope` result before running tests. | Run `test_fast_tests_reports_no_affected_tests` in `tests/hooks/test_fast_tests.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 60
    },
    {
      "id": "PIPE-RELEASE-R007.6",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Hot-path proof",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3d0455152b96",
        "4f1e1f0aff4a"
      ],
      "verified_by": [
        "tests/hooks/test_fast_tests.py:10"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Hot-path proof.** Run `pipelines-hook fast-tests --base-ref <base> --src-root pkg` on a real temporary Git repository with one affected and one unrelated failing test: the affected test passes (exit 0), the unrelated test never runs, and breaking the affected module exits 1. A sleeping affected test with `--timeout 2` exits 1. | Run `test_fast_tests_runs_only_the_affected_subset` in `tests/hooks/test_fast_tests.py`. Assert the stated contract through its declared boundary.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 61
    },
    {
      "id": "PIPE-RELEASE-R007.7",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Release bumps keep the Rust scope narrow",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "3cfd039fe3e2"
      ],
      "verified_by": [
        "tests/hooks/test_pr_test_scope.py:189",
        "tests/hooks/test_pr_test_scope.py:197",
        "tests/hooks/test_pr_test_scope.py:207"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Release bumps keep the Rust scope narrow.** `pr-test-scope --lang rust` compares each changed `Cargo.toml` and `Cargo.lock` with the merge base. A change that only moves workspace-member versions maps to no crate. Any other lock change still prints `FULL`. A release bump then keeps the pull-request crate sweep inside its 10-minute budget. | Run the three version-bump tests in `tests/hooks/test_pr_test_scope.py`. A member-version bump prints `NONE`, a registry bump prints `FULL`, and a new dependency names its crate.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 62
    },
    {
      "id": "PIPE-RELEASE-R008",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Python release publishes the wheel and the source distribution together",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "05f3ffe79a66",
        "5433baf91995",
        "8d87cddcb719",
        "c5cad0580cf9"
      ],
      "verified_by": [
        "tests/test_python_sdist_output.py:106",
        "tests/test_python_sdist_output.py:27",
        "tests/test_python_sdist_output.py:47",
        "tests/test_python_sdist_output.py:55",
        "tests/test_python_sdist_output.py:83"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Python release publishes the wheel and the source distribution together.** `publish-python-package` builds the sdist into `dist-sdist/` and keeps `dist/` wheel-only for the wheel guard. The readiness `source` phase must prove the sdist by an isolated wheel rebuild. The publish step must upload both files and refuse an sdist whose version is not the release version. `maturin_pipeline.yml` must build its sdist from the same project as its wheels and publish it with them. `reference/python-release-readiness.md` must state the consumer rule: install wheels only, except for `allow-source-build` packages. A version with a compatible wheel is available. A missing sdist on that version is the advisory `sdist_missing`, not a failure. `partial_publish` applies only while the release run is in progress. | `tests/test_python_sdist_output.py` checks the step order, the proof, the upload set, a real offline sdist build, the maturin sdist job and the documented readiness rule.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 63
    },
    {
      "id": "PIPE-RELEASE-R009",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Release records publish to the engine (rollup)",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Release records publish to the engine (rollup).** After a successful publish, the release workflow must record the release through the arbora `release.record` operation of `ARBORA-OPS-R853`. The record names repository, version, tag, head commit and artifact digests. Children `.1` and `.2` deliver it. | See each child.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 64
    },
    {
      "id": "PIPE-RELEASE-R009.1",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Wiring",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Wiring.** Add a final step `record-release` to `.github/workflows/main_pipeline.yml` after the publish job. It posts the record over plain HTTP. A failure of this step marks the run but never withdraws the release. | `tests/test_release_record_step.py::test_workflow_has_record_step_after_publish` parses the workflow.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 65
    },
    {
      "id": "PIPE-RELEASE-R009.2",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Hot-path proof",
      "delivery_state": "SPECIFIED",
      "state": "specified",
      "done": false,
      "landed_in": [],
      "verified_by": [],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Hot-path proof.** The test runs the step script against a fixture endpoint with two artifact digests. It observes one release record with both digests. | `tests/test_release_record_step.py::test_step_posts_release_with_digests` reads the posted record.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 66
    },
    {
      "id": "PIPE-RELEASE-R010",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Named per-repository source-build allowance",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d0cb9114aec1"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central.py:106",
        "tests/hooks/test_connector_central.py:120",
        "tests/hooks/test_connector_central.py:132",
        "tests/test_wheel_readiness.py:510",
        "tests/test_wheel_readiness.py:517"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Named per-repository source-build allowance.** A consumer repository may name sdist-only dependencies in `[tool.pipelines] allow-source-build`. The default is empty. Wheel readiness adds `--no-binary` only for the listed names. The resolver admits a public sdist only for those names. A wildcard, an invalid name or the published package itself must refuse. The receipt records the list, and the verify step checks it again. | `tests/test_wheel_readiness.py`: the allowance defaults to empty, reads named packages, refuses wildcards and bad names, and refuses the published package.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 67
    },
    {
      "id": "PIPE-RELEASE-R011",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Connector pull request workflow",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "202653782839",
        "242bc1dcb02b",
        "3d0455152b96",
        "8f223cc5bbbd",
        "9e908499d247"
      ],
      "verified_by": [
        "tests/test_connector_release_pipeline.py:19",
        "tests/test_connector_release_pipeline.py:20",
        "tests/test_connector_release_pipeline.py:41",
        "tests/test_connector_release_pipeline.py:42"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Connector pull request workflow.** `connector_pr_pipeline.yml` wraps `gates_pipeline.yml` for a connector. It runs the caller's `.pre-commit-config.yaml` at the commit stage, then the affected unit tests, within 10 minutes. It skips `docker-compose-check`, which needs deployment values. A `setup-command` syncs the lock with all extras and groups, installs `bump2version` and `bun` and puts them on `PATH` (the project packages go on `PYTHONPATH` too, because pre-commit runs under uvx), because the connector hooks are `language: system`. It never publishes. `gates_pipeline.yml` gains the optional input `stages` (default `pre-commit pre-push`). | `tests/test_connector_release_pipeline.py::test_connector_pr_workflow_is_fast_commit_stage_and_never_publishes` and `::test_gates_stage_loop_reads_the_stages_input`.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 68
    },
    {
      "id": "PIPE-RELEASE-R012",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "A connector release publishes PyPI and Docker, and verifies both",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "07ffdeee05fb",
        "08735fb01481",
        "0f2baf0bc01f",
        "154f96235334",
        "23b1e1111638"
      ],
      "verified_by": [
        "tests/hooks/test_distribution_aliases.py:22",
        "tests/test_connector_release_pipeline.py:82",
        "tests/test_connector_release_pipeline.py:83",
        "tests/test_connector_release_pipeline.py:88",
        "tests/test_connector_release_pipeline.py:89"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**A connector release publishes PyPI and Docker, and verifies both.** Each release publishes the PyPI version and the `<version>-mcp` Docker image. The last step of `container_pipeline.yml` fails the run when either is missing after the publish. | `tests/test_connector_release_pipeline.py::test_verification_passes_when_both_artifacts_exist` and `::test_verification_fails_naming_the_missing_artifact`.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 69
    },
    {
      "id": "PIPE-RELEASE-R012.1",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Published-wheel image preflight",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "07ffdeee05fb",
        "08735fb01481",
        "0f2baf0bc01f",
        "154f96235334",
        "23b1e1111638"
      ],
      "verified_by": [
        "tests/test_container_pipeline_contract.py:104",
        "tests/test_container_pipeline_contract.py:173",
        "tests/test_container_pipeline_contract.py:358",
        "tests/test_container_pipeline_contract.py:414",
        "tests/test_container_pipeline_contract.py:434"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Published-wheel image preflight.** The shared release-version action offers an explicit `published-wheel` mode for a named distribution and Python package module. The central container workflow invokes it for each main-branch connector target before the builder, registry login or image build, derives a sole identity from the selected immutable build context when the caller leaves the names empty, selects that target's package extra from the reviewed renderer metadata (including a bare exact pin when MCP is supplied by a base dependency), and skips non-connectors. It verifies the selected immutable source Docker pin (using the provider renderer for an absent canonical connector Dockerfile), project version, public pure-Python wheel SHA256, and exact package file inventory and bytes against committed source plus the deterministic ontology artifacts generated into the release wheel. Missing or extra files, altered bytes, absent package, stale pin, ambiguous wheel, unavailable renderer/generator checkout, unavailable public evidence or an untracked selected custom Dockerfile refuse. It does not claim native ABI qualification. An explicit `release_repair` workflow-call input is false by default; when a caller opts in, only a `workflow_dispatch` at the current immutable `main` HEAD using either the canonical renderer or an explicit `legacy_profile` wheel-only path may proceed. The legacy path requires `render_connector=false`, a tracked canonical Dockerfile with the wheel-only marker and no source copy, and compares the public wheel against the immutable original package source while taking the Dockerfile from the current reviewed main checkout; package name/version metadata must match across both trees. The source SHA must be an ancestor of current main, its checkout and epoch must match, and the guarded container build and public-wheel proof use these explicit immutable source boundaries; the already published version may be republished as a container with the same public-wheel/source-version guard and post-publish verification before registry login/build without republishing PyPI. The default unpublished release guard is unchanged. | `tests/test_public_wheel_guard.py` exercises matching payload, generated ontology payload binding, tracked legacy payload preservation with a separate current Docker source, generated Dockerfile rendering for both connector identities, target-extra selection for connectors with and without MCP extras across generated and tracked Dockerfiles, identity refusal/skip, nonconnector/custom/provider-checkout refusals, wheel-only legacy Dockerfile refusals, inventory and byte tampering, digest refusal before ZIP parsing, committed-source isolation, stale-pin refusal before network and explicit action wiring; `tests/test_container_pipeline_contract.py` exercises main-release ordering, target-extra wiring, connector/nonconnector identity wiring, immutable source checkout/epoch/ancestry and canonical/legacy release-repair opt-in/refusals.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 70
    },
    {
      "id": "PIPE-RELEASE-R013",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Release-standard check",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0f2baf0bc01f",
        "242bc1dcb02b",
        "cf912c89cd2f"
      ],
      "verified_by": [
        "tests/hooks/test_release_standard.py:19",
        "tests/hooks/test_release_standard.py:28",
        "tests/hooks/test_release_standard.py:36",
        "tests/hooks/test_release_standard.py:42",
        "tests/hooks/test_release_standard.py:59"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Release-standard check.** Hook `release-standard` warns when a connector repository (it declares the `agent_connector_sdk.connector` entry point or tracks a `connector_sources.py`; an Scion SDK dependency or a manifest file no longer marks one) lacks a tracked `docker/Dockerfile` or an enabled workflow job that calls `container_pipeline.yml` with either a tracked selected custom Dockerfile or the provider's canonical renderer path. `--strict` blocks. A repository that is not a connector passes. | `tests/hooks/test_release_standard.py` binds the warn, strict, generated-render, custom-path, disabled-job and exempt cases and the entry-point and `connector_sources.py` detection.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 71
    },
    {
      "id": "PIPE-RELEASE-R014",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Release readiness proves runtime profiles concurrently and without bytecode compilation",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "29f674f887fa"
      ],
      "verified_by": [
        "tests/test_wheel_readiness.py:581",
        "tests/test_wheel_readiness.py:611"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Release readiness proves runtime profiles concurrently and without bytecode compilation.** Wheel readiness resolves and installs each runtime profile (base, mcp, agent, all, plus declared ones) in its own disposable home and venv, at most four at a time, and keeps the declared profile order in the receipt. Any failing profile fails the proof. The install passes `--no-compile` because the venv is never imported. The index, public-host, wheel-only and no-cache constraints are unchanged. | `tests/test_wheel_readiness.py::test_profiles_are_proven_concurrently_in_declared_order` and `::test_profile_install_skips_bytecode_compilation`.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 72
    },
    {
      "id": "PIPE-RELEASE-R015",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Release image builds reuse one persistent BuildKit builder per runner pod",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "29f674f887fa"
      ],
      "verified_by": [
        "tests/test_container_pipeline_contract.py:1170"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Release image builds reuse one persistent BuildKit builder per runner pod.** `container_pipeline.yml` does not create and remove a builder in every job. A named builder is created if absent, booted with a bounded wait, replaced when it does not boot, and passed to every build attempt. The local cache is pruned to a bound after the build. The registry `cache-from` and `cache-to` per target and the post-release verification are unchanged. | `tests/test_container_pipeline_contract.py::test_release_builds_use_one_persistent_builder`.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 73
    },
    {
      "id": "PIPE-RELEASE-R016",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "Release builds keep uv downloads and managed interpreters in the runner tool cache",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "29f674f887fa"
      ],
      "verified_by": [
        "tests/test_python_pipeline_contract.py:133"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**Release builds keep uv downloads and managed interpreters in the runner tool cache.** `publish-python-package` points `UV_CACHE_DIR` and `UV_PYTHON_INSTALL_DIR` at the runner tool cache before any uv call. uv keys its cache by package, version and hash, so a lock change misses. No check is skipped. | `tests/test_python_pipeline_contract.py::test_publish_action_persists_uv_cache_in_tool_cache`.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 74
    },
    {
      "id": "PIPE-RELEASE-R017",
      "kind": "requirement",
      "parent": "PIPE-RELEASE",
      "source": "specs/ordered-digest-release/status.json",
      "title": "A pull request builds the image when a container input changes",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "149439ae20cc",
        "2cdfc98f4b32"
      ],
      "verified_by": [
        "tests/test_connector_release_pipeline.py:111",
        "tests/test_connector_release_pipeline.py:112"
      ],
      "parent_title": "PIPE-RELEASE \u2014 Dependency-ordered digest release orchestration",
      "definition": "**A pull request builds the image when a container input changes.** `container_build_check.yml` takes `dockerfile` (default `docker/Dockerfile`), `context` (default `.`) and an optional `target`, and runs `docker buildx build` with no push and no login on the self-hosted runner; it exits cleanly when the Dockerfile is absent. `connector_pr_pipeline.yml` runs the job `container-inputs`, which diffs `origin/<base>...HEAD` and sets `build` only when a changed path is under `docker/`, is a `Dockerfile*`, `.dockerignore`, `pyproject.toml`, `uv.lock`, `package.json`, `pnpm-lock.yaml` or is under `patches/`; it sets `build=false` when `docker/Dockerfile` is absent. The job `container-build` calls the check only when `build` is `true`. | `tests/test_connector_release_pipeline.py::test_connector_pr_builds_the_image_only_when_a_container_input_changes`.",
      "definition_source": "specs/ordered-digest-release/requirements.md",
      "definition_line": 75
    },
    {
      "id": "PIPE-VALIDATION",
      "kind": "spec",
      "parent": null,
      "source": "specs/shared-validation/status.json",
      "title": "PIPE-VALIDATION \u2014 Shared validation",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [],
      "verified_by": [],
      "document": "specs/shared-validation/spec.md",
      "component": "Unassigned",
      "code_refs": [
        {
          "declared_in": "specs/shared-validation/plan.md",
          "evidence": "file exists; coverage not verified",
          "label": ".config/kiss.toml",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.config/kiss.toml"
        },
        {
          "declared_in": "specs/shared-validation/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": ".config/validation.toml",
          "repository": "Knuckles-Team/pipelines",
          "role": "implementation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/.config/validation.toml"
        },
        {
          "declared_in": "specs/shared-validation/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "plan.md",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/shared-validation/plan.md"
        },
        {
          "declared_in": "specs/shared-validation/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "requirements",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/shared-validation/requirements.md"
        },
        {
          "declared_in": "specs/shared-validation/spec.md",
          "evidence": "file exists; coverage not verified",
          "label": "test-spec.md",
          "repository": "Knuckles-Team/pipelines",
          "role": "documentation",
          "url": "https://github.com/Knuckles-Team/pipelines/blob/2bfb34d15ff8c4540d5de6cb83f8031a839ce3e9/specs/shared-validation/test-spec.md"
        }
      ],
      "relations": [],
      "plan_diagrams": [],
      "unparsed_references": []
    },
    {
      "id": "PIPE-VALIDATION-R001",
      "kind": "requirement",
      "parent": "PIPE-VALIDATION",
      "source": "specs/shared-validation/status.json",
      "title": "Bounded shared repository validation",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0a8cf7ab17e8",
        "0f9f73b150d7",
        "21f7b1955972",
        "5ff231c270b1",
        "af9b1ddcb25f"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central.py:440",
        "tests/hooks/test_connector_central.py:459",
        "tests/hooks/test_connector_central.py:467",
        "tests/hooks/test_connector_central.py:478",
        "tests/hooks/test_connector_security_scaffold.py:111"
      ],
      "parent_title": "PIPE-VALIDATION \u2014 Shared validation",
      "definition": "**Bounded shared repository validation.** The validation package runs declared offline checks with structured required and advisory outcomes. | The child requirements below cover the command.",
      "definition_source": "specs/shared-validation/requirements.md",
      "definition_line": 5
    },
    {
      "id": "PIPE-VALIDATION-R001.1",
      "kind": "requirement",
      "parent": "PIPE-VALIDATION",
      "source": "specs/shared-validation/status.json",
      "title": "Strict policy",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "b76625874902"
      ],
      "verified_by": [
        "tests/hooks/test_validation.py:41",
        "tests/hooks/test_validation.py:48"
      ],
      "parent_title": "PIPE-VALIDATION \u2014 Shared validation",
      "definition": "**Strict policy.** `validation/policy.py` rejects unknown keys, duplicate IDs or gates, unsupported gates, missing acceptance mappings, and invalid deadlines before dispatch. | `test_policy_refuses_ambiguous_checks` and `test_policy_accepts_repository_group`.",
      "definition_source": "specs/shared-validation/requirements.md",
      "definition_line": 6
    },
    {
      "id": "PIPE-VALIDATION-R001.2",
      "kind": "requirement",
      "parent": "PIPE-VALIDATION",
      "source": "specs/shared-validation/status.json",
      "title": "Passive events do no work",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "b76625874902"
      ],
      "verified_by": [
        "tests/hooks/test_validation.py:120"
      ],
      "parent_title": "PIPE-VALIDATION \u2014 Shared validation",
      "definition": "**Passive events do no work.** `validation/cli.py` returns an explicit inactive result for post-merge, post-checkout, and post-rewrite without loading policy or dispatching checks. | `test_passive_git_event_does_not_dispatch` uses disposable Git repositories and sentinel tools.",
      "definition_source": "specs/shared-validation/requirements.md",
      "definition_line": 7
    },
    {
      "id": "PIPE-VALIDATION-R001.3",
      "kind": "requirement",
      "parent": "PIPE-VALIDATION",
      "source": "specs/shared-validation/status.json",
      "title": "Required checks fail closed",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "b76625874902"
      ],
      "verified_by": [
        "tests/hooks/test_validation.py:70",
        "tests/hooks/test_validation.py:87"
      ],
      "parent_title": "PIPE-VALIDATION \u2014 Shared validation",
      "definition": "**Required checks fail closed.** `validation/runner.py` reports missing prerequisites separately; required failures, unavailable results, and timeouts block. Advisory outcomes remain visible. | `test_required_and_advisory_outcomes` and `test_missing_git_is_unavailable`.",
      "definition_source": "specs/shared-validation/requirements.md",
      "definition_line": 8
    },
    {
      "id": "PIPE-VALIDATION-R001.4",
      "kind": "requirement",
      "parent": "PIPE-VALIDATION",
      "source": "specs/shared-validation/status.json",
      "title": "Bounded execution",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0f9f73b150d7",
        "af9b1ddcb25f",
        "b76625874902"
      ],
      "verified_by": [
        "tests/hooks/test_validation.py:181",
        "tests/hooks/test_validation.py:202",
        "tests/hooks/test_validation_lifecycle.py:112",
        "tests/hooks/test_validation_lifecycle.py:148"
      ],
      "parent_title": "PIPE-VALIDATION \u2014 Shared validation",
      "definition": "**Bounded execution.** `validation/runner.py` enforces check and run deadlines, terminates its process group, and records measured duration. SIGTERM and SIGINT clean up worker descendants while preserving the runner signal exit; prior signal policies are restored. | `test_deadline_terminates_child_process`, `test_run_budget_marks_remaining_checks`, and `test_runner_signal_cleans_worker_group_and_keeps_signal_exit`.",
      "definition_source": "specs/shared-validation/requirements.md",
      "definition_line": 9
    },
    {
      "id": "PIPE-VALIDATION-R001.5",
      "kind": "requirement",
      "parent": "PIPE-VALIDATION",
      "source": "specs/shared-validation/status.json",
      "title": "Actionable evidence",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "af9b1ddcb25f",
        "b76625874902"
      ],
      "verified_by": [
        "tests/hooks/test_validation.py:100",
        "tests/hooks/test_validation_lifecycle.py:50"
      ],
      "parent_title": "PIPE-VALIDATION \u2014 Shared validation",
      "definition": "**Actionable evidence.** `validation/cli.py` prints grouped concise results and writes a versioned report with check logs, remedies, acceptance IDs, and elapsed time. Published and self-run pre-commit registrations expose advisory output even when the aggregate exit is zero. | `test_summary_matches_evidence` verifies clean and failed runs; `test_advisory_report_is_visible_through_pre_commit` covers advisory fail, unavailable, and timeout through actual pre-commit.",
      "definition_source": "specs/shared-validation/requirements.md",
      "definition_line": 10
    },
    {
      "id": "PIPE-VALIDATION-R001.6",
      "kind": "requirement",
      "parent": "PIPE-VALIDATION",
      "source": "specs/shared-validation/status.json",
      "title": "Retain Meristem ignore acceptance",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "b76625874902"
      ],
      "verified_by": [
        "tests/hooks/test_validation_acceptance.py:27",
        "tests/hooks/test_validation_acceptance.py:49"
      ],
      "parent_title": "PIPE-VALIDATION \u2014 Shared validation",
      "definition": "**Retain Meristem ignore acceptance.** The shared gitignore checker retains all 16 Meristem patterns and rejects tracked build, dist, and target families without confusing ordinary source filenames. | `test_au_ignore_acceptance_is_retained` runs real disposable Git fixtures.",
      "definition_source": "specs/shared-validation/requirements.md",
      "definition_line": 11
    },
    {
      "id": "PIPE-VALIDATION-R001.7",
      "kind": "requirement",
      "parent": "PIPE-VALIDATION",
      "source": "specs/shared-validation/status.json",
      "title": "Standard repo files are provided, not copied",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5ff231c270b1"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central.py:440",
        "tests/hooks/test_connector_central.py:459"
      ],
      "parent_title": "PIPE-VALIDATION \u2014 Shared validation",
      "definition": "**Standard repo files are provided, not copied.** The `connector-standard` hook runs `connector-files`, `connector-codespell`, `connector-security` and `connector-api-parity`. A tracked `scripts/security_sanitizer.py` (the shared `security-sanitizer` inside `secrets` replaces it), `.codespellignore`, `.bumpversion.cfg`, `docker/{Dockerfile,debug.Dockerfile,mcp.compose.yml,agent.compose.yml}`, `.security/{repository_fuzz.py,authenticated_negative.py}`, `.security/security-contract.json`, `scripts/bootstrap.sh`, `scripts/verify_api_integration.py`, `tests/test_verify_api_integration.py`, or the generated ontology files is a finding. | `tests/hooks/test_connector_central.py::test_committed_copies_of_central_files_fail_and_a_clean_repo_passes` and `::test_connector_standard_is_a_group_and_a_published_hook`.",
      "definition_source": "specs/shared-validation/requirements.md",
      "definition_line": 12
    },
    {
      "id": "PIPE-VALIDATION-R001.8",
      "kind": "requirement",
      "parent": "PIPE-VALIDATION",
      "source": "specs/shared-validation/status.json",
      "title": "Ignore-file defaults are shared",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5ff231c270b1"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central.py:467"
      ],
      "parent_title": "PIPE-VALIDATION \u2014 Shared validation",
      "definition": "**Ignore-file defaults are shared.** `connector-codespell` runs codespell over tracked files outside tests and scripts with the shared default word list; extra words come from `[tool.pipelines.codespell] ignore_words` in `pyproject.toml`. Without codespell it fails closed in CI. | `tests/hooks/test_connector_central.py::test_codespell_defaults_are_shared_and_extended_from_pyproject`.",
      "definition_source": "specs/shared-validation/requirements.md",
      "definition_line": 13
    },
    {
      "id": "PIPE-VALIDATION-R001.9",
      "kind": "requirement",
      "parent": "PIPE-VALIDATION",
      "source": "specs/shared-validation/status.json",
      "title": "One reference connector configuration",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "5ff231c270b1",
        "d9ae8754cd03"
      ],
      "verified_by": [
        "tests/hooks/test_connector_central.py:478"
      ],
      "parent_title": "PIPE-VALIDATION \u2014 Shared validation",
      "definition": "**One reference connector configuration.** `templates/connector/pre-commit-config.yaml` is the whole connector pre-commit file: upstream hygiene and ruff hooks plus `connector-standard`, `secrets`, `spec` and `tests-fast` from this repository at `rev: main`, under 60 lines, naming only published hook ids and no copied sanitizer or bumpversion hook. | `tests/hooks/test_connector_central.py::test_reference_connector_config_names_only_published_hooks`.",
      "definition_source": "specs/shared-validation/requirements.md",
      "definition_line": 14
    },
    {
      "id": "PIPE-VALIDATION-R001.10",
      "kind": "requirement",
      "parent": "PIPE-VALIDATION",
      "source": "specs/shared-validation/status.json",
      "title": "The security scaffold is provided",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "0a8cf7ab17e8"
      ],
      "verified_by": [
        "tests/hooks/test_connector_security_scaffold.py:111",
        "tests/hooks/test_connector_security_scaffold.py:133",
        "tests/hooks/test_connector_security_scaffold.py:143",
        "tests/hooks/test_connector_security_scaffold.py:40",
        "tests/hooks/test_connector_security_scaffold.py:56"
      ],
      "parent_title": "PIPE-VALIDATION \u2014 Shared validation",
      "definition": "**The security scaffold is provided.** `pipelines-connector security {fuzz,authenticated-negative} OUT` writes the bounded fuzz and workflow control-plane evidence (privileged trigger, broad permissions, secret in shell, mutable action or container reference; a third-party action must be pinned to a commit SHA, while the organization's own shared workflows `Knuckles-Team/pipelines/.github/workflows/<file>.yml@main` are referenced at `main`, never pinned, and are the only branch reference allowed) that `.security/repository_fuzz.py` and `.security/authenticated_negative.py` copies wrote. `pipelines-connector security contract [--out PATH]` prints the effective contract: the packaged default hooks and license policy plus `[tool.pipelines.security] license_allowed / license_denied`; an unknown key or an allow/deny overlap is refused. The `connector-security` member of `connector-standard` runs both checks against the contract thresholds. A tracked `.security/security-contract.json` is a finding unless `scripts/security_contract.py` is tracked, because that validator still reads the file. | `tests/hooks/test_connector_security_scaffold.py::test_fuzz_and_negative_checks_write_the_evidence_the_contract_expects`, `::test_a_risky_workflow_is_a_finding_and_fails_the_check`, `::test_the_organizations_own_shared_workflows_are_allowed_at_main`, `::test_every_other_branch_or_tag_reference_stays_a_mutable_action`, `::test_contract_is_the_shared_default_plus_pyproject_license_additions`, `::test_contract_refuses_unknown_keys_and_an_allow_deny_overlap` and `::test_committed_security_files_are_findings_unless_a_legacy_validator_reads_the_contract`.",
      "definition_source": "specs/shared-validation/requirements.md",
      "definition_line": 15
    },
    {
      "id": "PIPE-VALIDATION-R001.11",
      "kind": "requirement",
      "parent": "PIPE-VALIDATION",
      "source": "specs/shared-validation/status.json",
      "title": "`scripts/bootstrap.sh` is not provided",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "21f7b1955972"
      ],
      "verified_by": [
        "tests/hooks/test_connector_security_scaffold.py:162",
        "tests/hooks/test_connector_security_scaffold.py:171"
      ],
      "parent_title": "PIPE-VALIDATION \u2014 Shared validation",
      "definition": "**`scripts/bootstrap.sh` is not provided.** A tracked `scripts/bootstrap.sh` is a finding naming its replacement: `uv sync --locked` installs the pinned Python from `.python-version` and the locked environment, and `uvx pre-commit install --hook-type pre-commit --hook-type pre-push` installs the hooks. No pipelines script replaces it. | `tests/hooks/test_connector_security_scaffold.py::test_committed_bootstrap_script_is_a_finding_that_names_what_replaces_it`.",
      "definition_source": "specs/shared-validation/requirements.md",
      "definition_line": 16
    },
    {
      "id": "PIPE-VALIDATION-R001.12",
      "kind": "requirement",
      "parent": "PIPE-VALIDATION",
      "source": "specs/shared-validation/status.json",
      "title": "API-to-MCP parity is a shared check",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "21f7b1955972"
      ],
      "verified_by": [
        "tests/hooks/test_connector_security_scaffold.py:210",
        "tests/hooks/test_connector_security_scaffold.py:221",
        "tests/hooks/test_connector_security_scaffold.py:233",
        "tests/hooks/test_connector_security_scaffold.py:247",
        "tests/hooks/test_connector_security_scaffold.py:260"
      ],
      "parent_title": "PIPE-VALIDATION \u2014 Shared validation",
      "definition": "**API-to-MCP parity is a shared check.** The `connector-api-parity` member of `connector-standard` (also `pipelines-connector api-parity`) measures the share of public `api_client*.py` methods that an MCP tool in `mcp_server.py` or its sibling `mcp/*.py` calls through `client`, `api` or `self`, including a `resolve_action(.., <NAME>_ACTIONS)` catalog dispatched with `getattr`. A tool is a `.tool`-decorated function or one named with a `[tool.pipelines.api_integration] tool_prefixes` prefix. Coverage below `baseline` (default 0.0) fails; coverage below 100 always lists the unmapped methods. A repository without a client or a server passes; an unknown key or an invalid value is refused. | `tests/hooks/test_connector_security_scaffold.py::test_parity_counts_decorated_tools_and_catalog_dispatch_and_prefixed_tools_only_when_configured`, `::test_parity_fails_below_the_pyproject_baseline_and_lists_unmapped_methods`, `::test_parity_passes_without_a_client_or_server_and_refuses_bad_configuration` and `::test_a_committed_parity_script_is_a_finding_and_standard_runs_every_member`.",
      "definition_source": "specs/shared-validation/requirements.md",
      "definition_line": 17
    },
    {
      "id": "PIPE-VALIDATION-R002",
      "kind": "requirement",
      "parent": "PIPE-VALIDATION",
      "source": "specs/shared-validation/status.json",
      "title": "Privacy identity provenance",
      "delivery_state": "VERIFIED",
      "state": "verified",
      "done": true,
      "landed_in": [
        "d718d2c96c8c"
      ],
      "verified_by": [
        "tests/hooks/test_privacy_provenance.py:25",
        "tests/hooks/test_privacy_provenance.py:33",
        "tests/hooks/test_privacy_provenance.py:53",
        "tests/hooks/test_privacy_provenance.py:75",
        "tests/hooks/test_privacy_provenance.py:82"
      ],
      "parent_title": "PIPE-VALIDATION \u2014 Shared validation",
      "definition": "**Privacy identity provenance.** Match Git-display-name-only candidates in identity fields or explicit attribution. Account, host, home-path, email, explicit override and prohibited-catalog identities remain strict everywhere. Independent strict provenance wins when sources overlap. No product-name allowlist applies. A bare personal name outside attribution can pass when Git display name is its sole source. | `tests/hooks/test_privacy_provenance.py` exercises the real CLI, contextual attribution, independent sources, same-line leaks and catalog precedence. Existing catalog refusal tests remain required.",
      "definition_source": "specs/shared-validation/requirements.md",
      "definition_line": 19
    }
  ],
  "github": {
    "issues": {
      "available": true,
      "items": []
    },
    "pull_requests": {
      "available": true,
      "items": [
        {
          "number": 366,
          "title": "chore(deps): pin pydantic 2.14.1 so the hooks co-install with scion-sdk",
          "html_url": "https://github.com/Knuckles-Team/pipelines/pull/366",
          "created_at": "2026-10-28T22:41:23Z",
          "updated_at": "2026-10-28T23:18:29Z"
        },
        {
          "number": 283,
          "title": "[Blocked draft] Strict architecture story data contract and activity cache",
          "html_url": "https://github.com/Knuckles-Team/pipelines/pull/283",
          "created_at": "2026-10-26T04:42:29Z",
          "updated_at": "2026-10-26T05:17:53Z"
        },
        {
          "number": 282,
          "title": "Preview only: source-bound architecture visual stories",
          "html_url": "https://github.com/Knuckles-Team/pipelines/pull/282",
          "created_at": "2026-10-26T03:58:18Z",
          "updated_at": "2026-10-26T14:27:35Z"
        }
      ]
    }
  },
  "spec_edges": []
}
