{
  "schemaVersion": 1,
  "kind": "changeContract",
  "summary": {
    "targetCount": 1,
    "relatedCount": 2,
    "obligationCount": 5,
    "unsatisfiedObligationCount": 0,
    "contextFileCount": 4,
    "findingCount": 2
  },
  "targets": [
    {
      "id": "REQ-LOGIN-001",
      "title": "User can sign in",
      "requiredStages": ["doc", "impl", "unit", "int", "qc"],
      "stages": {
        "doc": { "complete": true, "evidence": [{ "path": "docs/login.md", "line": 1 }] },
        "impl": { "complete": true, "evidence": [{ "path": "src/auth.rs", "line": 4 }] },
        "unit": { "complete": true, "evidence": [{ "path": "tests/auth_test.py", "line": 1 }] },
        "int": { "complete": true, "evidence": [{ "path": "tests/login_e2e.cpp", "line": 2 }] },
        "qc": {
          "complete": true,
          "evidence": [
            { "url": "https://github.com/example/repo/issues/42#issuecomment-1234567890" }
          ]
        }
      }
    }
  ],
  "obligations": [
    {
      "requirementId": "REQ-LOGIN-001",
      "stage": "doc",
      "satisfied": true,
      "evidence": [{ "path": "docs/login.md", "line": 1 }]
    },
    {
      "requirementId": "REQ-LOGIN-001",
      "stage": "impl",
      "satisfied": true,
      "evidence": [{ "path": "src/auth.rs", "line": 4 }]
    },
    {
      "requirementId": "REQ-LOGIN-001",
      "stage": "unit",
      "satisfied": true,
      "evidence": [{ "path": "tests/auth_test.py", "line": 1 }]
    },
    {
      "requirementId": "REQ-LOGIN-001",
      "stage": "int",
      "satisfied": true,
      "evidence": [{ "path": "tests/login_e2e.cpp", "line": 2 }]
    },
    {
      "requirementId": "REQ-LOGIN-001",
      "stage": "qc",
      "satisfied": true,
      "evidence": [
        { "url": "https://github.com/example/repo/issues/42#issuecomment-1234567890" }
      ]
    }
  ],
  "related": [
    {
      "id": "REQ-AUDIT-001",
      "title": "Authentication actions are logged",
      "sharedFiles": ["src/auth.rs", "tests/auth_test.py"]
    },
    {
      "id": "REQ-LOGOUT-001",
      "title": "User can end session",
      "sharedFiles": ["tests/auth_test.py"]
    }
  ],
  "contextFiles": [
    {
      "path": "docs/login.md",
      "tags": [{ "requirementId": "REQ-LOGIN-001", "stage": "doc", "line": 1 }]
    },
    {
      "path": "src/auth.rs",
      "resolution": "syntactic",
      "tags": [
        { "requirementId": "REQ-AUDIT-001", "stage": "impl", "line": 4, "enclosingSymbol": "authenticate" },
        { "requirementId": "REQ-LOGIN-001", "stage": "impl", "line": 4, "enclosingSymbol": "authenticate" }
      ]
    },
    {
      "path": "tests/auth_test.py",
      "resolution": "syntactic",
      "tags": [
        { "requirementId": "REQ-LOGIN-001", "stage": "unit", "line": 1, "enclosingSymbol": "test_rejects_empty_password" },
        { "requirementId": "REQ-LOGOUT-001", "stage": "unit", "line": 6, "enclosingSymbol": "test_logout_clears_session" },
        { "requirementId": "REQ-AUDIT-001", "stage": "unit", "line": 11, "enclosingSymbol": "test_rejects_invalid_credentials" },
        { "requirementId": "REQ-AUDIT-001", "stage": "unit", "line": 19 }
      ]
    },
    {
      "path": "tests/login_e2e.cpp",
      "resolution": "syntactic",
      "tags": [{ "requirementId": "REQ-LOGIN-001", "stage": "int", "line": 2, "enclosingSymbol": "login_full_flow" }]
    }
  ],
  "annotations": [],
  "findings": [
    {
      "code": "parse_error",
      "severity": "must",
      "path": "src/audit.cpp",
      "line": 3,
      "message": "Tag-shaped token does not match [stage->REQ-ID]"
    },
    {
      "code": "undeclared_id",
      "severity": "must",
      "requirementId": "REQ-LOGNI-001",
      "path": "src/typos.py",
      "line": 3,
      "message": "Tag references an ID not declared in the manifest"
    }
  ]
}
