{
  "schemaVersion": 1,
  "artifactVersion": "2026-09-27.1",
  "status": "source-policy clarification; historical outcomes unchanged",
  "historical": {
    "originalContract": "/studies/agent-dx/score-contract.json",
    "originalContractVersion": "2026-09-17.1",
    "originalContractTreatment": "Preserved unchanged. Its phrase outside the task allowlist conflates surface scope and explicit allowed-change paths; the recovered historical implementation distinguishes them as below.",
    "scopePenalty": "10 minus 2.5 per changed path outside the required surface prefixes, floored at zero. A path may be within a required surface yet prohibited by an explicit path allowlist.",
    "scopeBlocker": "Scope below 7.5 blocks. Exactly 7.5 does not itself block.",
    "explicitPathGuard": "If a task declares allowed_change_paths, any path not matching an entry is prohibited. Entries ending in a slash match prefixes; other entries match exact paths. If no list is declared, this guard supplies no prohibited paths.",
    "otherGuards": "Tampering, critical regression, failed mandatory checks, or no functional checks independently block. Ready also requires deterministic points at least 80 and consistency at least 12.",
    "explicitPathGuardTasks": [
      "Python pagination authentication",
      "Bounded rate-limit retries",
      "Backwards-compatible CLI option",
      "Nullable completion times",
      "Wait for job completion"
    ],
    "surfacePenaltyTasks": [
      "Project priority filter",
      "CLI cursor pagination",
      "JSON-mode process behavior",
      "Idempotent job creation",
      "Backwards-compatible job status"
    ],
    "verification": "Recovered historical suite/repository source revisions have identical grading code. The later frozen source boundary was independently recovered and its digest recomputed; its diff policy, scoring code, and ten task manifests are byte-identical to the historical source. Controlled calls to the authentic policy and score functions confirmed distinct behavior for one benign extra path with otherwise passing evidence. This is not an execution of original submissions.",
    "componentChecks": [
      {
        "task": "Project priority filter",
        "changedPath": "notes/benign.md",
        "unexpectedPaths": 1,
        "prohibitedPaths": 0,
        "scopePoints": 7.5,
        "outcome": "ready"
      },
      {
        "task": "Python pagination authentication",
        "changedPath": "notes/benign.md",
        "unexpectedPaths": 1,
        "prohibitedPaths": 1,
        "scopePoints": 7.5,
        "outcome": "not_ready"
      }
    ],
    "reviewedPolicyFiles": [
      {
        "file": "diff_policy.py",
        "sha256": "5e691af46ffc1a10fa6cc8d31d85324bd73e05901d98346457f8cbf4a4d605ec"
      },
      {
        "file": "score.py",
        "sha256": "20ca83b03813ae195238947cb8bab4d2381a91d0ba2bf8ba84a6bbc987765316"
      }
    ],
    "reviewedBoundarySha256": "be1dfd3a887dab2c5884d2ff91dfadb0cee3b1a1b8aa348cd492af594a1159d1"
  },
  "api": {
    "methods": "/studies/api-patch/methods.json",
    "rule": "Separate Boolean report and frozen-candidate guards. Do not apply the historical weighted thresholds to this cohort."
  },
  "prospective": {
    "rule": "The proposed policy blocks all out-of-scope edits. A successor grader, task contracts, and test evidence must be frozen before collection. This is not a claim that the historical policy did so.",
    "results": null
  },
  "limitations": [
    "Policy-component checks do not establish end-to-end containment or regrade historical outcomes.",
    "The later frozen control boundary has the same inspected policy code and task manifests. This equivalence does not claim the later boundary produced the historical runs."
  ]
}
