{
  "receipt": "execution",
  "version": 1,
  "lesson": "workshops/dark-software-factory-v1/README.md",
  "ranWhere": "local: the operator's machine, via `uv run` against the workshop's own lockfile (not Colab)",
  "ranAt": "2026-09-25T18:51:11+00:00",
  "environment": {
    "os": "macOS-26.6.2-arm64-arm-64bit-Mach-O",
    "python": "3.13.7",
    "implementation": "CPython",
    "uvLockSha256": "88998397ff581c5b3277a6185e123a438e6c16e6ebf5402f7486723283d70c73",
    "uv": "uv 0.10.8 (c021be36a 2026-03-03)",
    "sandbox": "seatbelt"
  },
  "inputs": {
    "download": "public/downloads/dark-software-factory-v1.zip",
    "downloadSha256": "adb07700035e7f366208d3b05d84680b3d89d7d103c80270ba643382b2b5b36b",
    "factorySha256": "9496ad8cdc97a9d470599d1e699dae83dc8a72c581f02d619385cb84d92f3138"
  },
  "script": "scripts/receipts/dark-software-factory-workshop-v1.py",
  "notCovered": "The model-built candidates (lessons 3-5, uv run build.py): they need a paid Claude Code account and differ on every run.",
  "steps": [
    {
      "name": "the baseline passes its own contract",
      "command": "uv run factory.py check reference/b0.py --contract b0 --out runs/baseline-01",
      "shownIn": [
        "workshops/dark-software-factory-v1/lessons/01-run-the-baseline.md",
        "workshops/dark-software-factory-v1/README.md"
      ],
      "exitStatus": 0,
      "stdout": "{\"passed\": true, \"report\": \"runs/baseline-01/report.json\", \"released\": false}",
      "stderr": "",
      "expected": {
        "exitStatus": 0,
        "stdoutContains": "\"passed\": true",
        "decisionContains": null
      },
      "decisionSha256": "7c48a334526b4b7f9f127c9baaa47729d1e2875578313679dd1c8ce16566f13a",
      "decision": "ACCEPT",
      "checks": {
        "total": 19,
        "passed": 19
      },
      "boundary": {
        "candidate_has_no_admin_token": true,
        "candidate_code_is_readonly": true,
        "candidate_cannot_reach_public_network": true,
        "candidate_cannot_read_home": true
      },
      "matched": true
    },
    {
      "name": "the baseline is rejected under the C1 contract",
      "command": "uv run factory.py check reference/b0.py --contract c1 --out runs/baseline-against-c1-01",
      "shownIn": [
        "workshops/dark-software-factory-v1/lessons/02-specify-the-change.md"
      ],
      "exitStatus": 1,
      "stdout": "{\"passed\": false, \"report\": \"runs/baseline-against-c1-01/report.json\", \"released\": false}",
      "stderr": "",
      "expected": {
        "exitStatus": 1,
        "stdoutContains": "\"passed\": false",
        "decisionContains": null
      },
      "decisionSha256": "64dae63b23dbb905d244d287ae5e2ba5e95cd8487609f012e50d872698bf1e27",
      "decision": "REJECT",
      "checks": {
        "total": 42,
        "passed": 28
      },
      "boundary": {
        "candidate_has_no_admin_token": true,
        "candidate_code_is_readonly": true,
        "candidate_cannot_reach_public_network": true,
        "candidate_cannot_read_home": true
      },
      "matched": true
    },
    {
      "name": "the C1 reference is released",
      "command": "uv run factory.py release reference/c1.py --contract c1 --out runs/c1-reference-release-01",
      "shownIn": [
        "workshops/dark-software-factory-v1/lessons/04-check-and-release.md",
        "workshops/dark-software-factory-v1/README.md"
      ],
      "exitStatus": 0,
      "stdout": "{\"passed\": true, \"report\": \"runs/c1-reference-release-01/report.json\", \"released\": true}",
      "stderr": "",
      "expected": {
        "exitStatus": 0,
        "stdoutContains": "\"passed\": true, \"released\": true",
        "decisionContains": null
      },
      "decisionSha256": "8a679c008404b7a8d7ef5acf72713c36fd37c8a6801598d20fb7f86456816807",
      "decision": "ACCEPT",
      "checks": {
        "total": 84,
        "passed": 84
      },
      "boundary": {
        "candidate_has_no_admin_token": true,
        "candidate_code_is_readonly": true,
        "candidate_cannot_reach_public_network": true,
        "candidate_cannot_read_home": true
      },
      "matched": true
    },
    {
      "name": "the C2 reference is released",
      "command": "uv run factory.py release reference/c2.py --contract c2 --out runs/c2-reference-release-01",
      "shownIn": [
        "workshops/dark-software-factory-v1/lessons/05-reconcile-and-reject.md",
        "workshops/dark-software-factory-v1/README.md"
      ],
      "exitStatus": 0,
      "stdout": "{\"passed\": true, \"report\": \"runs/c2-reference-release-01/report.json\", \"released\": true}",
      "stderr": "",
      "expected": {
        "exitStatus": 0,
        "stdoutContains": "\"passed\": true, \"released\": true",
        "decisionContains": null
      },
      "decisionSha256": "82dd6a5095109d3b193f5d642a704863efcfedd9d0b52f3cb28d29918775a37b",
      "decision": "ACCEPT",
      "checks": {
        "total": 102,
        "passed": 102
      },
      "boundary": {
        "candidate_has_no_admin_token": true,
        "candidate_code_is_readonly": true,
        "candidate_cannot_reach_public_network": true,
        "candidate_cannot_read_home": true
      },
      "matched": true
    },
    {
      "name": "the negative control's fabricated confirmation is rejected",
      "command": "uv run factory.py negative --out runs/negative-01",
      "shownIn": [
        "workshops/dark-software-factory-v1/lessons/05-reconcile-and-reject.md",
        "workshops/dark-software-factory-v1/README.md",
        "content/articles/dark-software-factory-test-authority.md"
      ],
      "exitStatus": 0,
      "stdout": "{\"passed\": true, \"report\": \"runs/negative-01/report.json\", \"released\": false}",
      "stderr": "",
      "expected": {
        "exitStatus": 0,
        "stdoutContains": "\"passed\": true, \"released\": false",
        "decisionContains": null
      },
      "decisionSha256": "11cc082860fa3689d0be79cb009b122370936a8b7b8f6b851a03f13dfdae74f7",
      "decision": "REJECT",
      "checks": {
        "total": 51,
        "passed": 48
      },
      "boundary": {
        "candidate_has_no_admin_token": true,
        "candidate_code_is_readonly": true,
        "candidate_cannot_reach_public_network": true,
        "candidate_cannot_read_home": true
      },
      "matched": true
    }
  ],
  "allMatched": true
}
