{
  "schema": "retained-obligation-walkthrough-v1",
  "executed_at_utc": "2026-10-03T09:32:03.416073+00:00",
  "kind": "executed teaching fixture",
  "git_dates": "Fixed synthetic author/committer dates make fixture commits reproducible; these are not execution timestamps.",
  "mapping": "The example author explicitly maps retention config to SW-REQ-241 and selects the fixed retry cases. No automatic discovery is claimed.",
  "acceptance": "not assessed; no approval, CI provider or MCP run",
  "python": "3.14.7",
  "snapshots": [
    {
      "snapshot": "A",
      "git_commit": "33e282532163634bb0137fc66fa6fa3fab00c8fe",
      "git_tree": "a8343572ff8961a87a2b543696720b5780379ff2",
      "command": [
        "python3",
        "verify.py",
        "--config",
        "config.json",
        "--output",
        ".evidence/verification.json",
        "--junit",
        ".evidence/tests.xml"
      ],
      "exit_code": 0,
      "retention_hours": 24,
      "passed_count": 5,
      "failed_count": 0,
      "basis_sha256": "3d05a1648ba26c0a9a338aca9bd4348140cc5431351445fb8fc6a6bd4b589147",
      "inputs_sha256": {
        "reservation.py": "9e0dcf39f02417a58af0537d84278b70ab2fe21737f1ac419b240b1bae2de345",
        "verify.py": "fbcc3a59cc6fd0eca74aaa1fe0d80817d09600c46e26e5fc34d9df0e39533c76",
        "requirement.json": "6bd89b0b06ea4b306e157e5da4a4a34fe1c82e2bba5551795690e7749d77bc95",
        "cases.json": "517a2a570fd175436027bd758e6076c2610276b9f64c4c3ded1aa7c906c6343e",
        "config.json": "29340be45c6beddf962c1d95f565d70ecdd955bf4d51aab8b29a5087a18af27e"
      },
      "proof": {
        "audit_command": [
          "proof",
          "audit",
          "--check",
          "tests_pass",
          "--no-cache",
          "--format",
          "json"
        ],
        "audit_exit_code": 0,
        "run_id": "run-1ec6d97caf7403e0898ebcbf75d3f4dd6f709596ddbf5fd09ceebd8c586fc54e",
        "package_command": [
          "proof",
          "evidence",
          "package",
          "assemble",
          "--run",
          "run-1ec6d97caf7403e0898ebcbf75d3f4dd6f709596ddbf5fd09ceebd8c586fc54e",
          "--base",
          "33e282532163634bb0137fc66fa6fa3fab00c8fe",
          "--pr-repo",
          "https://example.invalid/teaching/retained-obligation",
          "--forge-provider",
          "generic",
          "--change-kind",
          "commit",
          "--change-id",
          "33e282532163634bb0137fc66fa6fa3fab00c8fe"
        ],
        "package_exit_code": 0,
        "scope": "Only tests_pass ran. This is not a full audit or an accepted change.",
        "repository_label": "example.invalid is a reserved teaching identifier, not a hosted repository or remote."
      }
    },
    {
      "snapshot": "B",
      "git_commit": "1cec89a6e69f7633e73a77e3dda945c332460f81",
      "git_tree": "2c5ac163177e876a603ed6ce56d3927d639e635b",
      "command": [
        "python3",
        "verify.py",
        "--config",
        "config.json",
        "--output",
        ".evidence/verification.json",
        "--junit",
        ".evidence/tests.xml"
      ],
      "exit_code": 1,
      "retention_hours": 12,
      "passed_count": 3,
      "failed_count": 2,
      "basis_sha256": "05301fbaea9dff3b76b56e59fefe528a1d574cfbaf4fba52ecd269c5a9a6174e",
      "inputs_sha256": {
        "reservation.py": "9e0dcf39f02417a58af0537d84278b70ab2fe21737f1ac419b240b1bae2de345",
        "verify.py": "fbcc3a59cc6fd0eca74aaa1fe0d80817d09600c46e26e5fc34d9df0e39533c76",
        "requirement.json": "6bd89b0b06ea4b306e157e5da4a4a34fe1c82e2bba5551795690e7749d77bc95",
        "cases.json": "517a2a570fd175436027bd758e6076c2610276b9f64c4c3ded1aa7c906c6343e",
        "config.json": "13ff044d8a30fcc0f72f970c861468b631438da9b60a22ee1a9d7f8a1cf7a86a"
      },
      "proof": {
        "audit_command": [
          "proof",
          "audit",
          "--check",
          "tests_pass",
          "--no-cache",
          "--format",
          "json"
        ],
        "audit_exit_code": 1,
        "run_id": "run-1f0ef807aaf3ade8d71bf8851ac3b96af47cbf9f0868504a159629425a2c7919",
        "package_command": [
          "proof",
          "evidence",
          "package",
          "assemble",
          "--run",
          "run-1f0ef807aaf3ade8d71bf8851ac3b96af47cbf9f0868504a159629425a2c7919",
          "--base",
          "33e282532163634bb0137fc66fa6fa3fab00c8fe",
          "--pr-repo",
          "https://example.invalid/teaching/retained-obligation",
          "--forge-provider",
          "generic",
          "--change-kind",
          "commit",
          "--change-id",
          "1cec89a6e69f7633e73a77e3dda945c332460f81"
        ],
        "package_exit_code": 0,
        "scope": "Only tests_pass ran. This is not a full audit or an accepted change.",
        "repository_label": "example.invalid is a reserved teaching identifier, not a hosted repository or remote."
      }
    },
    {
      "snapshot": "C",
      "git_commit": "08721dd7cda04dc5a52519d2c18ae5e8f45f0c26",
      "git_tree": "a8343572ff8961a87a2b543696720b5780379ff2",
      "command": [
        "python3",
        "verify.py",
        "--config",
        "config.json",
        "--output",
        ".evidence/verification.json",
        "--junit",
        ".evidence/tests.xml"
      ],
      "exit_code": 0,
      "retention_hours": 24,
      "passed_count": 5,
      "failed_count": 0,
      "basis_sha256": "3d05a1648ba26c0a9a338aca9bd4348140cc5431351445fb8fc6a6bd4b589147",
      "inputs_sha256": {
        "reservation.py": "9e0dcf39f02417a58af0537d84278b70ab2fe21737f1ac419b240b1bae2de345",
        "verify.py": "fbcc3a59cc6fd0eca74aaa1fe0d80817d09600c46e26e5fc34d9df0e39533c76",
        "requirement.json": "6bd89b0b06ea4b306e157e5da4a4a34fe1c82e2bba5551795690e7749d77bc95",
        "cases.json": "517a2a570fd175436027bd758e6076c2610276b9f64c4c3ded1aa7c906c6343e",
        "config.json": "29340be45c6beddf962c1d95f565d70ecdd955bf4d51aab8b29a5087a18af27e"
      },
      "proof": {
        "audit_command": [
          "proof",
          "audit",
          "--check",
          "tests_pass",
          "--no-cache",
          "--format",
          "json"
        ],
        "audit_exit_code": 0,
        "run_id": "run-02db3148903871c045b120a8c86af7ce9a556ac7ffce36741dffa7b86b1ee0a7",
        "package_command": [
          "proof",
          "evidence",
          "package",
          "assemble",
          "--run",
          "run-02db3148903871c045b120a8c86af7ce9a556ac7ffce36741dffa7b86b1ee0a7",
          "--base",
          "1cec89a6e69f7633e73a77e3dda945c332460f81",
          "--pr-repo",
          "https://example.invalid/teaching/retained-obligation",
          "--forge-provider",
          "generic",
          "--change-kind",
          "commit",
          "--change-id",
          "08721dd7cda04dc5a52519d2c18ae5e8f45f0c26"
        ],
        "package_exit_code": 0,
        "scope": "Only tests_pass ran. This is not a full audit or an accepted change.",
        "repository_label": "example.invalid is a reserved teaching identifier, not a hosted repository or remote."
      }
    }
  ],
  "proof": {
    "version": "proof 0.1.0-teaching-b845ff313bac\ncommit: b845ff313bacb887c4e9fb78145c681a15f6b3f0",
    "binary_sha256": "939db50a2227aae1506c27648bf01866222fdda78ec978ee0d78ae19ae4690c2"
  },
  "projection_attempt": {
    "command": [
      "proof",
      "evidence",
      "github",
      "render",
      "--package-file",
      "A/package.stdout.json",
      "--live-head",
      "1cec89a6e69f7633e73a77e3dda945c332460f81",
      "--format",
      "json"
    ],
    "exit_code": 1,
    "scope": "Local render attempt only. No --post, no network fetch, no hosted PR. The commit-scoped package may be rejected by the PR projection."
  },
  "basis_comparison": {
    "producer": "teaching runner; explicit file list, not a Proof freshness check",
    "A_to_B_changed_inputs": [
      "config.json"
    ],
    "A_equals_C_behavioral_basis": true,
    "conclusion": "A's pass is historical for the 24h configuration; B changes a declared input. B's failing execution establishes the observed violation."
  },
  "artifacts_sha256": {
    "A/audit-verification.json": "726910617417fcb7934ef5205d9558632f00806e3dc3c62a255aa890066bb375",
    "A/audit.jsonl": "24176643061141457eb9a95fd182fe633a9007999aefd3c7467de713234e670e",
    "A/audit.stderr.txt": "5fb500e376e5fef04761055ec474f85dac7835d70b59d02ddc82b309a73a6e2c",
    "A/package.stderr.txt": "4ecaa0c4809f2461eb77683c5be07b4a6cee0a5605ad978bc93d94d5ceef15dd",
    "A/package.stdout.json": "b737afae44fd3b7b3c8cacb1cfcc369ebf776784189384fc77ebd71272d3b263",
    "A/proof-run.json": "ba6450abdc00ffb85911727e12a6a6881004bd77181cd5b909f3d7e5c637ecda",
    "A/tests.xml": "4f01bf7b550d4e2caa3d6d863b3bba196703db66bad60a5ea763aa1af5c617f0",
    "A/verification.json": "4e113b4382492907b6e16f317c29418a3c9c37f012d4e10d8fd13c50727dd684",
    "A/verification.stderr.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "A-to-B.diff": "1ffe10bd69f2b5bb309041578b491d678d56def602cde6631ea51d9e334d0c57",
    "B/audit-verification.json": "ad5fa53903410cc8474c6aed323a9c8f2a6a5e44f446106bd71f503b7456240b",
    "B/audit.jsonl": "96ca5249dbe6bed0ce12988cb0c160250c4fa0428630fa489d97c76cdc618b25",
    "B/audit.stderr.txt": "5fb500e376e5fef04761055ec474f85dac7835d70b59d02ddc82b309a73a6e2c",
    "B/package.stderr.txt": "acb6d048ccdf8aafd71a6e960dfcaec3b7e7c6f361657af0967283a1d9875ab5",
    "B/package.stdout.json": "8294852aa4015a94e0d3c1e282949a9b8cfcfe21dcdc830f0d605d37caa77546",
    "B/proof-run.json": "1b98fda8c19c73e258d7d0cae48f3cbc855b7b60fae884c0e665014fe1c59495",
    "B/tests.xml": "60724197ee7bb0683951acba5af1b006743c01ba6959f4bd66d7a4b649e62827",
    "B/verification.json": "7558c2b32d55333f1fbb4442613fd79275f46f28b2049b9019531866f8e35d4f",
    "B/verification.stderr.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "B-to-C.diff": "c9c68e1a4abdaf1f2c3c5b7ea125e85b49105563e62804316d3fa9dcaf969725",
    "C/audit-verification.json": "fae4fed0ef251bfa25f82645d07f7827fac30571cd4060f1d21769d63c3b4d2c",
    "C/audit.jsonl": "14a0638b71709c50bbb2193352e6f045aee4e6e716b4e6acf019f41ee8104e11",
    "C/audit.stderr.txt": "5fb500e376e5fef04761055ec474f85dac7835d70b59d02ddc82b309a73a6e2c",
    "C/package.stderr.txt": "d411749c1c9ebb6c993a41b4485e4dd4525c29fe0edbd9514a0e7f649e91cd62",
    "C/package.stdout.json": "ed3ce7f2067c1f0c858c47f0f7c191bec58f48e466ba7ad7ce2fe7a6a13cd7c5",
    "C/proof-run.json": "8424634be18acee288cdafcac9fab0e80f7cb52e7bbc4c4ee2f4815ee419f2ef",
    "C/tests.xml": "4f01bf7b550d4e2caa3d6d863b3bba196703db66bad60a5ea763aa1af5c617f0",
    "C/verification.json": "5e4f78d898ebcd294246a04c82b395174bd825f41cef526dac624b0a2af92b66",
    "C/verification.stderr.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "fixture.bundle": "fc5a726684e6ee88a13c4f323eafed6835e6dccf1461b7592d6815a9cf32500f",
    "projection-attempt.stderr.txt": "c8c8f7709821c80cf478d2d6a2ffaac993cb861cbb62b37814b5657f97a74457",
    "projection-attempt.stdout.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
  }
}
