{
  "schema": "d60-surface-validation-v2",
  "course_id": "D60",
  "state": "pass",
  "verification_scope": "Structural build checks; independent tests recorded separately.",
  "counts": {
    "units": 2204,
    "kinds": {
      "exercise": 266,
      "hint": 191,
      "solution": 238,
      "reader_unit": 45,
      "capstone": 1,
      "section": 220,
      "figure": 160,
      "rubric": 1,
      "interpretation": 5,
      "rights_notice": 5,
      "source_code": 4,
      "test_suite": 4,
      "expected_output": 4,
      "verification": 4,
      "definition": 103,
      "remark": 90,
      "source_audit": 178,
      "example": 148,
      "boundary": 22,
      "lemma": 50,
      "proof": 141,
      "corollary": 33,
      "edition_note": 1,
      "proposition": 42,
      "source_omission": 14,
      "theorem": 33,
      "proof_supplement": 8,
      "proof_repair": 3,
      "note": 4,
      "notice": 30,
      "lecture": 30,
      "proof_check": 8,
      "mastery_section": 30,
      "worked_example": 1,
      "question": 4,
      "answer": 2,
      "fact": 2,
      "equation": 3,
      "diagram": 4,
      "construction": 3,
      "source_margin": 52,
      "aside": 17
    },
    "exact_routes": 2166,
    "fallback_routes": 38,
    "practice_units": 278,
    "support_relations": 480,
    "unresolved_support_relations": 0
  },
  "inputs": [
    {
      "path": "backend/v2.3/authorities/D60_FINAL_OWNER_AUTHORITY_20260830.json",
      "bytes": 6037,
      "sha256": "9bb9195906fae3f0cc2062c3aff292be3dd4f6cef595e08baa61b46584e55a85"
    },
    {
      "path": "backend/v2.3/extensions/d60-algebraic-topology-v0.1.0/tables/units.jsonl",
      "bytes": 5475661,
      "sha256": "e0088fd9e8d7d40c299506875b6f741fda4932820521938e446fc0e8a681f25d"
    },
    {
      "path": "backend/v2.3/extensions/d60-algebraic-topology-v0.1.0/tables/relations.jsonl",
      "bytes": 1200090,
      "sha256": "6e4d2477f29b72a424d86a43d55c643726e1874fecfb97eb5823b3d552ea3487"
    },
    {
      "path": "backend/course-capsule-v1/adapters/d60-surface-v1/reader-witness.json",
      "bytes": 273058,
      "sha256": "c2e6fd8add466828dec5000e0b150f537ccaf49294637e9e5866960a379eed53"
    }
  ],
  "reader": {
    "url": "https://kokunoyumeto.github.io/algebraic-topology-id/roberts-001-030-fomberg-001-007-ca01-hints-r01-r06-ca02-ca03-lab01-lab02-lab03-lab04-capstone/",
    "bytes": 16051378,
    "sha256": "f9a35a348402c2651531f3f4378fcb6af3f4fda6f1313cc7e836e06a4f26f0f9",
    "language": "id-ID"
  },
  "checks": {
    "input_hashes": true,
    "native_ids_unique": true,
    "reader_anchor_precision_preserved": true,
    "explicit_support_identity_joins": true,
    "body_content_copied": false
  },
  "outputs": [
    {
      "path": "learning-map.json",
      "bytes": 5164376,
      "sha256": "1bf12beaae50ce8dcb7c50e8f3780d91bf38998433d3f57951df2d872d6715b0"
    },
    {
      "path": "data.js",
      "bytes": 3993136,
      "sha256": "015c59a3a928efb5e6531bdeb433535fd8f61b5514e89b671ac60edd4b99612b"
    },
    {
      "path": "D60.html",
      "bytes": 16111,
      "sha256": "55985acdcffef6050e20b845b14df103dc9128107ba5f2209cbb7ca9dfd842f3"
    },
    {
      "path": "D60-pengajar.html",
      "bytes": 16125,
      "sha256": "62d1d42f8b09d6cb4678a109b0014ed497165295f6014ae1c00e922ea3e2b66f"
    },
    {
      "path": "D60.en.html",
      "bytes": 16044,
      "sha256": "fd4123866a6c0b2f2fb50df0a46ba819b8eb8c903f638f14e8268592b1f48a2b"
    },
    {
      "path": "D60-pengajar.en.html",
      "bytes": 16051,
      "sha256": "884936ab8776d65e00bc0d6fb4456cc1f6e745ec2281b2ffd2a8ba516922381f"
    },
    {
      "path": "d60-ui.js",
      "bytes": 9382,
      "sha256": "6f51560a4ff0be8b7bdd2856b646ce688ce0581eae7335c78bd7010f654d41b4"
    },
    {
      "path": "d60.css",
      "bytes": 2198,
      "sha256": "9ea880dd3c4cfb2b24aefa3cf58c8876bc4d44e7d237201552e1219d7a6ddc90"
    }
  ],
  "limitations": [
    "The interface is bilingual; all linked native reader content in this projection is Indonesian, not a new English translation.",
    "Missing or repeated anchors use an explicitly labelled whole-course fallback, never a guessed fragment.",
    "No recorded support relation means unknown support coverage, not proof that a solution does not exist.",
    "Current native IDs, revisions, source hashes and component rights are retained; no ambiguous supersession branches are flattened.",
    "Teacher alignment here means exact unit/support selection, not a verified syllabus, grading system or new teacher manual.",
    "This reproduces the central projection only, not the complete native textbook production pipeline. Native term/schema limitations remain.",
    "Downloaded plans contain metadata and links, not the full offline textbook. No reading progress is transmitted or stored."
  ]
}
