{
  "schema_version": 1,
  "id": "atlas:learning-graph:0.1-candidate",
  "version": "0.1-learning-graph-candidate",
  "status": "field_trial",
  "generated_at": "2026-08-15T12:00:00Z",
  "preview_release_id": "atlas:release:0.1-preview",
  "preview_manifest_sha256": "2d0fabcd426772067106746384a2fa3e4cf8e49215243cf182f6bfc2fb782320",
  "foundations_release_id": "atlas:release:0.1-foundations-candidate",
  "foundations_manifest_sha256": "388fe857d481957bbc45f5f9fe9de52a1d1d8154a604c4c835a5e373c955f0f0",
  "media_catalog_id": "atlas:media:vector-meridian:0.1-candidate",
  "media_manifest_sha256": "596e196dfc6f2a2af3f9b05e2bd9b8bf13c45a7eac4750692fdd05d0131db769",
  "nodes": [
    {
      "id": "atlas:release:0.1-preview",
      "kind": "content_version",
      "title": "Ephemerent Atlas 0.1 — Foundations preview",
      "summary": "Immutable release manifest",
      "artifact_ref": "../releases/atlas-0.1.json",
      "content_hash": "ca6e02b6e464e3e80f0117b269d34ca84c660baba43bd423d67175ec657b8dbb",
      "source_ids": [
        "source:atlas-method-v2"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "atlas:release:0.1-foundations-candidate",
      "kind": "content_version",
      "title": "Ephemerent Atlas Foundations field trial",
      "summary": "Immutable release manifest",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json",
      "content_hash": "3100490d9028193948481d28889cf1c227d519814542ced51d7f528840237bdb",
      "source_ids": [
        "source:atlas-method-v2"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "atlas:media:vector-meridian:0.1-candidate",
      "kind": "content_version",
      "title": "Vector Meridian media catalog",
      "summary": "Immutable release manifest",
      "artifact_ref": "../releases/atlas-0.1-vector-meridian-candidate.json",
      "content_hash": "8084bd9c13b8fdf9c4556a69fcfba0dc5cfb9b148e2ae361c1040647d17683eb",
      "source_ids": [
        "source:atlas-method-v2"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:atlas-method",
      "kind": "source",
      "title": "Ephemerent Atlas curriculum method",
      "summary": "Ephemerent Education",
      "artifact_ref": "../releases/atlas-0.1.json#source=source:atlas-method",
      "content_hash": "fe09049268f83504290c6be7d89e64b0282527747b10bef4aa86bfc1ccd0707e",
      "source_ids": [
        "source:atlas-method"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:openstax-prealgebra",
      "kind": "source",
      "title": "Prealgebra 2e",
      "summary": "OpenStax",
      "artifact_ref": "../releases/atlas-0.1.json#source=source:openstax-prealgebra",
      "content_hash": "ec994f1b47609892ac1720895732dbdd61adecef6dce7883c761ed6e7775aa67",
      "source_ids": [
        "source:openstax-prealgebra"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:openstax-algebra",
      "kind": "source",
      "title": "Algebra and Trigonometry 2e",
      "summary": "OpenStax",
      "artifact_ref": "../releases/atlas-0.1.json#source=source:openstax-algebra",
      "content_hash": "3d5a417eeec0dc89ed0c2544383459d357a33c4572675555100faed63a2ef6b1",
      "source_ids": [
        "source:openstax-algebra"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:openstax-calculus",
      "kind": "source",
      "title": "Calculus, Volume 1",
      "summary": "OpenStax",
      "artifact_ref": "../releases/atlas-0.1.json#source=source:openstax-calculus",
      "content_hash": "cb1ad3d484e7708f85fd3ef15331da72f9931fb466bc0082368c3a062a2b2a1a",
      "source_ids": [
        "source:openstax-calculus"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:openstax-statistics",
      "kind": "source",
      "title": "Introductory Statistics 2e",
      "summary": "OpenStax",
      "artifact_ref": "../releases/atlas-0.1.json#source=source:openstax-statistics",
      "content_hash": "ef6eb43c0950564a20779cf6369776081ca05ee11ad327a95323c655561f11cf",
      "source_ids": [
        "source:openstax-statistics"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:python-tutorial",
      "kind": "source",
      "title": "The Python Tutorial",
      "summary": "Python Software Foundation",
      "artifact_ref": "../releases/atlas-0.1.json#source=source:python-tutorial",
      "content_hash": "fc2978fae33606d70ca84e9a10e241bcb315093a8d1fcaf495bb6f19f04bfe1a",
      "source_ids": [
        "source:python-tutorial"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:open-data-structures",
      "kind": "source",
      "title": "Open Data Structures",
      "summary": "Pat Morin",
      "artifact_ref": "../releases/atlas-0.1.json#source=source:open-data-structures",
      "content_hash": "dbdaaaaf85cdacae76dd4d55c8048f974a66b470c04f7f748cd138d345a3dc79",
      "source_ids": [
        "source:open-data-structures"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:rust-book",
      "kind": "source",
      "title": "The Rust Programming Language",
      "summary": "The Rust Project Developers",
      "artifact_ref": "../releases/atlas-0.1.json#source=source:rust-book",
      "content_hash": "0fe1b100648001b8cedec95ca5e6d9d13888ca5579851969e557704da836a50a",
      "source_ids": [
        "source:rust-book"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:google-ml",
      "kind": "source",
      "title": "Machine Learning Crash Course",
      "summary": "Google for Developers",
      "artifact_ref": "../releases/atlas-0.1.json#source=source:google-ml",
      "content_hash": "860aa1a631d3a1b7849379fd84e8a3b6d85b3ea91d2d412f779c6b5e09f827cd",
      "source_ids": [
        "source:google-ml"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:openstax-physics",
      "kind": "source",
      "title": "University Physics",
      "summary": "OpenStax",
      "artifact_ref": "../releases/atlas-0.1.json#source=source:openstax-physics",
      "content_hash": "303061a00924d233acf766eac59ca1529f2267f3df39d6bfb47cd4e100ba4012",
      "source_ids": [
        "source:openstax-physics"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:atlas-method-v2",
      "kind": "source",
      "title": "Ephemerent Atlas curriculum and evidence method",
      "summary": "Ephemerent Education",
      "artifact_ref": "source:source:atlas-method-v2",
      "content_hash": "6a57ca60df17c603ca14b2b3ce3b0649f143650a52d565b45e49412b569fec4f",
      "source_ids": [
        "source:atlas-method-v2"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:openstax-prealgebra-ratios",
      "kind": "source",
      "title": "Prealgebra 2e, section 5.6 — Ratios and Rate",
      "summary": "OpenStax",
      "artifact_ref": "source:source:openstax-prealgebra-ratios",
      "content_hash": "8d4792d3caf14b2283dcc608c0a50a40da5212b08bd0dd9c8fc82021468e540c",
      "source_ids": [
        "source:openstax-prealgebra-ratios"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:openstax-prealgebra-measurement",
      "kind": "source",
      "title": "Prealgebra 2e, section 7.5 — Systems of Measurement",
      "summary": "OpenStax",
      "artifact_ref": "source:source:openstax-prealgebra-measurement",
      "content_hash": "4d4b5c52c4d93e03f2bc295c41c274fd7eea94ab8c057544f57a41993b7fc407",
      "source_ids": [
        "source:openstax-prealgebra-measurement"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:openstax-prealgebra-scale",
      "kind": "source",
      "title": "Prealgebra 2e, section 9.3 — Similar Figures",
      "summary": "OpenStax",
      "artifact_ref": "source:source:openstax-prealgebra-scale",
      "content_hash": "cd7696bdc394628f0c8b0d995c0ea0628d965c1bab7b1ccf7f28d5765c55f271",
      "source_ids": [
        "source:openstax-prealgebra-scale"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:python-tutorial-control",
      "kind": "source",
      "title": "The Python Tutorial, sections 4.2 and 4.8 — for statements and defining functions",
      "summary": "Python Software Foundation",
      "artifact_ref": "source:source:python-tutorial-control",
      "content_hash": "f47bf5a3a3fd529a1d30102fc46da350618c8f3e9a33b9392d9c023cdda5bdaa",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:python-reference-simple",
      "kind": "source",
      "title": "Python Language Reference, section 7 — Simple statements",
      "summary": "Python Software Foundation",
      "artifact_ref": "source:source:python-reference-simple",
      "content_hash": "843458966c550804b36449dcd3cc74b53c2efa29c5a2ef06399d1c3b15f44aec",
      "source_ids": [
        "source:python-reference-simple"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:openstax-physics-units",
      "kind": "source",
      "title": "University Physics Volume 1, section 1.2 — Units and Standards",
      "summary": "OpenStax",
      "artifact_ref": "source:source:openstax-physics-units",
      "content_hash": "b4adb999e54758e1373ebe8103b77521d7ad1d81c86041148475e296ef496018",
      "source_ids": [
        "source:openstax-physics-units"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:openstax-physics-uncertainty",
      "kind": "source",
      "title": "University Physics Volume 1, section 1.6 — Significant Figures",
      "summary": "OpenStax",
      "artifact_ref": "source:source:openstax-physics-uncertainty",
      "content_hash": "70a3c738229adc955e3122e20b43c978bdeb0c4dda1cb58b007b4aea936328d6",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:drfsp-paper-v3",
      "kind": "source",
      "title": "Distribution-Robust Functional Subset Projection for Structured Neural Network Width Compression",
      "summary": "Ephemerent Research",
      "artifact_ref": "source:source:drfsp-paper-v3",
      "content_hash": "6a7e5faea9f5a1e11f05d2e02393c3adc89772d8fd4ed99e8eae85289a161a97",
      "source_ids": [
        "source:drfsp-paper-v3"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:video:modern-llms-from-scratch",
      "kind": "source",
      "title": "Modern LLM's from scratch",
      "summary": "Vector Meridian",
      "artifact_ref": "source:source:video:modern-llms-from-scratch",
      "content_hash": "21870247ee15848c809204aea4daa9a4d25facd9b832e987b273de9139f27841",
      "source_ids": [
        "source:video:modern-llms-from-scratch"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:video:kimi-k3",
      "kind": "source",
      "title": "How Kimi K3 Nearly Caught Claude Fable — Inside the 2.8T Model",
      "summary": "Vector Meridian",
      "artifact_ref": "source:source:video:kimi-k3",
      "content_hash": "0a52130f7bb0639148501917db6c857ac982aa7f97a7e4cabfd3e97205a72efc",
      "source_ids": [
        "source:video:kimi-k3"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:video:ai-history",
      "kind": "source",
      "title": "Who Really Invented AI? The History Everyone Gets Wrong",
      "summary": "Vector Meridian",
      "artifact_ref": "source:source:video:ai-history",
      "content_hash": "c189760760bc9bff943f9240edf5d0ab73b629c9bb690ff59f1d86956cc5eef8",
      "source_ids": [
        "source:video:ai-history"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:video:jepa",
      "kind": "source",
      "title": "Yann LeCun Thinks AI Is Learning the Wrong Way — JEPA Explained",
      "summary": "Vector Meridian",
      "artifact_ref": "source:source:video:jepa",
      "content_hash": "5174d7e3835dc3d8671860a84605f0351903652758cce36b046ba021e1112725",
      "source_ids": [
        "source:video:jepa"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:video:security-incident",
      "kind": "source",
      "title": "An AI Hacked Hugging Face to Cheat — Then Claude Mythos Escaped",
      "summary": "Vector Meridian",
      "artifact_ref": "source:source:video:security-incident",
      "content_hash": "25489dcdcdc70ad1d1307f7c18f477c0d51c9a6af1170497bb4655b76ac59d99",
      "source_ids": [
        "source:video:security-incident"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:video:j-space",
      "kind": "source",
      "title": "Anthropic Found a Hidden Mind Inside Claude? J-Space Explained",
      "summary": "Vector Meridian",
      "artifact_ref": "source:source:video:j-space",
      "content_hash": "f79f1e5e4c432c5ac96f2a8e02d7a9995e8055096ca0d2498edde63eac2cf459",
      "source_ids": [
        "source:video:j-space"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "source:video:looped-transformers",
      "kind": "source",
      "title": "Looped Transformers Explained: Why This 3B Model Beats Models 4× Bigger",
      "summary": "Vector Meridian",
      "artifact_ref": "source:source:video:looped-transformers",
      "content_hash": "b41d152b2be4a9046595d341236433935afb2e8a95918f61c109f874ee2c3b57",
      "source_ids": [
        "source:video:looped-transformers"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "concept:quantities-ratios-and-scale",
      "kind": "concept",
      "title": "Quantities, ratios, and scale",
      "summary": "Treat numbers as measured relationships rather than marks on a page.",
      "artifact_ref": "../releases/atlas-0.1.json#node=concept:quantities-ratios-and-scale",
      "content_hash": "bb5da663645777409c9622b0cb90e84c0e92abef87f3ff835cf582750668ad17",
      "source_ids": [
        "source:openstax-prealgebra"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "concept:functions-as-dependence",
      "kind": "concept",
      "title": "Functions as dependence",
      "summary": "Read a function as a dependable relationship between changing quantities.",
      "artifact_ref": "../releases/atlas-0.1.json#node=concept:functions-as-dependence",
      "content_hash": "7d9f0960b39b9912898e9b0e882cae4b27f79c9bc85f7e9aa120d936f00b7232",
      "source_ids": [
        "source:openstax-algebra"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "concept:vectors-and-coordinate-change",
      "kind": "concept",
      "title": "Vectors and coordinate change",
      "summary": "Separate a geometric direction from the coordinates used to describe it.",
      "artifact_ref": "../releases/atlas-0.1.json#node=concept:vectors-and-coordinate-change",
      "content_hash": "2f462d8a9d91ca8ce05f1ed351db865562c3e298c599f0facf8f73d79c715d53",
      "source_ids": [
        "source:openstax-algebra"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "concept:change-and-accumulation",
      "kind": "concept",
      "title": "Change and accumulation",
      "summary": "See derivatives and integrals as two views of how local change builds a whole.",
      "artifact_ref": "../releases/atlas-0.1.json#node=concept:change-and-accumulation",
      "content_hash": "09018436827deaa66079f9a6fe625d79a492d9b9e6054b181708bc5ad635c14a",
      "source_ids": [
        "source:openstax-calculus"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "concept:probability-as-evidence",
      "kind": "concept",
      "title": "Probability as evidence",
      "summary": "Use distributions to reason about uncertainty without pretending it disappears.",
      "artifact_ref": "../releases/atlas-0.1.json#node=concept:probability-as-evidence",
      "content_hash": "b3289dde905b8d540e84941a74cf8a400db904fa317ba39098041a9eac813e85",
      "source_ids": [
        "source:openstax-statistics"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "concept:procedures-and-state",
      "kind": "concept",
      "title": "Procedures and state",
      "summary": "Read programs as precise transformations of state, beginning with Python.",
      "artifact_ref": "../releases/atlas-0.1.json#node=concept:procedures-and-state",
      "content_hash": "7f30d31870ee0fbfb165c30ee16f6521c841603cb3262a7385bf355a226f7aa5",
      "source_ids": [
        "source:python-tutorial"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "concept:data-and-invariants",
      "kind": "concept",
      "title": "Data and invariants",
      "summary": "Choose representations by the promises your program must preserve.",
      "artifact_ref": "../releases/atlas-0.1.json#node=concept:data-and-invariants",
      "content_hash": "cde35800599ff15cd072078f3003057540192bd16cf0e8ccc9ab7ca672dc8732",
      "source_ids": [
        "source:open-data-structures"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "concept:algorithms-and-cost",
      "kind": "concept",
      "title": "Algorithms and cost",
      "summary": "Compare procedures by how their required work grows, not by one stopwatch reading.",
      "artifact_ref": "../releases/atlas-0.1.json#node=concept:algorithms-and-cost",
      "content_hash": "479ba4f2bca4d1e48740d12569155d9a4bb233dfdcdf485441d0d1b0600bd93b",
      "source_ids": [
        "source:open-data-structures"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "concept:ownership-and-systems",
      "kind": "concept",
      "title": "Ownership and systems",
      "summary": "Use Rust ownership to make resource lifetime and aliasing part of the program's structure.",
      "artifact_ref": "../releases/atlas-0.1.json#node=concept:ownership-and-systems",
      "content_hash": "fa7ffdf8d50608fd87e197a9672ac4665dcd638dc6811355591da9faf3ec7061",
      "source_ids": [
        "source:rust-book"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "concept:learning-systems-and-evaluation",
      "kind": "concept",
      "title": "Learning systems and evaluation",
      "summary": "Treat a trained model as one component in an evidence-producing system.",
      "artifact_ref": "../releases/atlas-0.1.json#node=concept:learning-systems-and-evaluation",
      "content_hash": "530cc3eb4ddcb8688d893d801878a4eccdf43b07b7ed69831eb519f381ccf306",
      "source_ids": [
        "source:google-ml"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "concept:measurement-and-uncertainty",
      "kind": "concept",
      "title": "Measurement and uncertainty",
      "summary": "Build physical claims from operational measurements and honest uncertainty.",
      "artifact_ref": "../releases/atlas-0.1.json#node=concept:measurement-and-uncertainty",
      "content_hash": "6e91870f973d3615403a9e962051e20ecbe165c18ebe534d9057190071d53232",
      "source_ids": [
        "source:openstax-physics"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "concept:motion-and-interaction",
      "kind": "concept",
      "title": "Motion and interaction",
      "summary": "Describe motion first, then explain changes in motion through interactions.",
      "artifact_ref": "../releases/atlas-0.1.json#node=concept:motion-and-interaction",
      "content_hash": "0d18ed2d5d495b612adb5d092d1d10c32ef4d56cb8a5a0ba55ad304cda64e52f",
      "source_ids": [
        "source:openstax-physics"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "concept:energy-and-conservation",
      "kind": "concept",
      "title": "Energy and conservation",
      "summary": "Track change with a ledger that remains stable across different mechanisms.",
      "artifact_ref": "../releases/atlas-0.1.json#node=concept:energy-and-conservation",
      "content_hash": "27c066836e8977fddecaa618ea7083ff0e3c8558d483901c9ad7fded54ac0588",
      "source_ids": [
        "source:openstax-physics"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "concept:waves-and-information",
      "kind": "concept",
      "title": "Waves and information",
      "summary": "Understand waves as propagating patterns that carry energy and information.",
      "artifact_ref": "../releases/atlas-0.1.json#node=concept:waves-and-information",
      "content_hash": "d34d4bd2b3ff0ae42d0bb2b17b0fbbdea613e4023769133308eb8e53c753e04a",
      "source_ids": [
        "source:openstax-physics"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "concept:fields-models-and-limits",
      "kind": "concept",
      "title": "Fields, models, and limits",
      "summary": "Use fields to describe local influence and treat every physical model as a scoped approximation.",
      "artifact_ref": "../releases/atlas-0.1.json#node=concept:fields-models-and-limits",
      "content_hash": "459bc93e5ad0b45b48f96e3e41cc85a0078f5dba02b6f09c69e7e72502c494ec",
      "source_ids": [
        "source:openstax-physics"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "lesson:quantities-ratios-and-scale:v2",
      "kind": "lesson",
      "title": "Quantities, ratios, and scale",
      "summary": "Learn to read a number as a measured relationship, preserve that relationship through conversion, and use units to expose impossible answers.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#lesson=lesson:quantities-ratios-and-scale:v2",
      "content_hash": "c0c4506fb5ec4fdc7fd140c79b7d4efeb4c2b70d620dd6be1678072330921640",
      "source_ids": [
        "source:openstax-prealgebra-ratios",
        "source:openstax-prealgebra-measurement",
        "source:openstax-prealgebra-scale"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "objective:scale:interpret-quantity",
      "kind": "learning_objective",
      "title": "Distinguish a bare number from a quantity and identify the dimension and unit carried by a quantity.",
      "summary": "Distinguish a bare number from a quantity and identify the dimension and unit carried by a quantity.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#objective=objective:scale:interpret-quantity",
      "content_hash": "4cdab185cce125283ebf00c69af93f6319838c33e6d474782aaec759bbdb7915",
      "source_ids": [
        "source:openstax-prealgebra-ratios",
        "source:openstax-prealgebra-measurement",
        "source:openstax-prealgebra-scale"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "objective:scale:apply-ratio",
      "kind": "learning_objective",
      "title": "Use a unit rate or scale factor to move between representations without reversing the relationship.",
      "summary": "Use a unit rate or scale factor to move between representations without reversing the relationship.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#objective=objective:scale:apply-ratio",
      "content_hash": "6b15a47e6c109fe149e9f676694306f73085d0ab5e09662c0df1bd5a3f93c28e",
      "source_ids": [
        "source:openstax-prealgebra-ratios",
        "source:openstax-prealgebra-measurement",
        "source:openstax-prealgebra-scale"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "objective:scale:check-dimensions",
      "kind": "learning_objective",
      "title": "Test a calculation for dimensional consistency and repair a mismatched conversion.",
      "summary": "Test a calculation for dimensional consistency and repair a mismatched conversion.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#objective=objective:scale:check-dimensions",
      "content_hash": "55d006665c2d241919363125bcc7b0b01905176f9aef82ec0752de3309ebb75d",
      "source_ids": [
        "source:openstax-prealgebra-ratios",
        "source:openstax-prealgebra-measurement",
        "source:openstax-prealgebra-scale"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:opening",
      "kind": "content_block",
      "title": "block:scale:opening",
      "summary": "Orient · A number cannot tell you what was measured",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:opening",
      "content_hash": "ae358e74469e437e4d091b9901cb687c345ff0536bacd957a9259f34cf99d460",
      "source_ids": [
        "source:openstax-prealgebra-measurement"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:quantity-figure",
      "kind": "content_block",
      "title": "One length, three numerical descriptions",
      "summary": "Orient · A number cannot tell you what was measured",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:quantity-figure",
      "content_hash": "6c435e0a3871387b31dfc8b7704ff4919c89f357334e7505b64f3ea2e7d56f9e",
      "source_ids": [
        "source:openstax-prealgebra-measurement"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:units-misconception",
      "kind": "content_block",
      "title": "Units can be added after the calculation, once the numerical answer is known.",
      "summary": "Orient · A number cannot tell you what was measured",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:units-misconception",
      "content_hash": "c4697f425acd01704b108a6ec0faa12d710f86098f02aa15e03d0ab99b295822",
      "source_ids": [
        "source:openstax-prealgebra-measurement"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "misconception:scale:units-decoration",
      "kind": "misconception",
      "title": "Units can be added after the calculation, once the numerical answer is known.",
      "summary": "This loses the relationships that tell you which operations and conversion factors are valid. It can turn a calculator output into a confidently mislabeled claim.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#misconception=misconception:scale:units-decoration",
      "content_hash": "c4697f425acd01704b108a6ec0faa12d710f86098f02aa15e03d0ab99b295822",
      "source_ids": [
        "source:openstax-prealgebra-measurement"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:quantity-check",
      "kind": "content_block",
      "title": "block:scale:quantity-check",
      "summary": "Orient · A number cannot tell you what was measured",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:quantity-check",
      "content_hash": "24b7b9e9cc57539ad0c68357a94f4928740022d9147c23697697673b6c2a8d83",
      "source_ids": [],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:ratio-explanation",
      "kind": "content_block",
      "title": "block:scale:ratio-explanation",
      "summary": "Model · A ratio compares; a scale factor transforms",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:ratio-explanation",
      "content_hash": "a0dde0b0cb24f37db850604f0014bd96e97f880fe43de28b2066b84a2ff406a4",
      "source_ids": [
        "source:openstax-prealgebra-ratios"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:conversion-equation",
      "kind": "content_block",
      "title": "real length = model length × (24 real cm / 1 model cm)",
      "summary": "Model · A ratio compares; a scale factor transforms",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:conversion-equation",
      "content_hash": "7ba48153b9066d630c5451032f27ce81bf7750e1b6877092c36cb1d7d4258919",
      "source_ids": [
        "source:openstax-prealgebra-ratios"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:model-car",
      "kind": "content_block",
      "title": "Worked example — recover a model car's full length",
      "summary": "Model · A ratio compares; a scale factor transforms",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:model-car",
      "content_hash": "c91d21f09b1b9f316836f3a158496d9d5a524e61ffe335ff50b4977376ded4fb",
      "source_ids": [
        "source:openstax-prealgebra-scale"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:factor-direction",
      "kind": "content_block",
      "title": "A 1 to 24 scale always means divide the given number by 24.",
      "summary": "Model · A ratio compares; a scale factor transforms",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:factor-direction",
      "content_hash": "3acee95b2a37618913012077e763bc8a4b8f6d0f5dbb4ae84778ce91584dbe0c",
      "source_ids": [
        "source:openstax-prealgebra-scale"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "misconception:scale:reverse-factor",
      "kind": "misconception",
      "title": "A 1 to 24 scale always means divide the given number by 24.",
      "summary": "The operation depends on the direction of travel. Dividing a real length by 24 finds its model length; multiplying a model length by 24 finds its real length.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#misconception=misconception:scale:reverse-factor",
      "content_hash": "3acee95b2a37618913012077e763bc8a4b8f6d0f5dbb4ae84778ce91584dbe0c",
      "source_ids": [
        "source:openstax-prealgebra-scale"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:model-check",
      "kind": "content_block",
      "title": "block:scale:model-check",
      "summary": "Model · A ratio compares; a scale factor transforms",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:model-check",
      "content_hash": "5de19d381ce5d4aeee09a9b911c4a851ead5c5b8f453b74d891b99c21338f4e1",
      "source_ids": [],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:dimension-explanation",
      "kind": "content_block",
      "title": "block:scale:dimension-explanation",
      "summary": "Formalize · Make the units cancel on purpose",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:dimension-explanation",
      "content_hash": "28c3a2215b09dc130f900927ec93dc4ed9576ec22e2fa87cb73ea192b5f7093b",
      "source_ids": [
        "source:openstax-prealgebra-measurement"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:walking-rate",
      "kind": "content_block",
      "title": "Worked example — convert a walking rate without losing time",
      "summary": "Formalize · Make the units cancel on purpose",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:walking-rate",
      "content_hash": "6139ce7c2b64e47b3e22ca6cbda3471eac74760eca54218146313ad6a21bd5e6",
      "source_ids": [
        "source:openstax-prealgebra-measurement"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:operation-table",
      "kind": "content_block",
      "title": "Dimensional questions to ask before accepting an operation",
      "summary": "Formalize · Make the units cancel on purpose",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:operation-table",
      "content_hash": "d69eb71355d5b80a596418b5a763dcf23f351dfcd0a255104c2f90fef915b440",
      "source_ids": [
        "source:openstax-prealgebra-measurement"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:dimension-check",
      "kind": "content_block",
      "title": "block:scale:dimension-check",
      "summary": "Formalize · Make the units cancel on purpose",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:dimension-check",
      "content_hash": "a2f5fdea86896fd9d4e4382e063bc060649a2bb556af381bd735def8a5153482",
      "source_ids": [],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:lab",
      "kind": "content_block",
      "title": "Real length divided by model length equals the selected scale denominator when both lengths use the same unit.",
      "summary": "Experiment · Hold the object still while its representation changes",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:lab",
      "content_hash": "beef78405090a1863530dd335d1ea6c54e9854f1d05358018401bb0d34bcbb96",
      "source_ids": [
        "source:openstax-prealgebra-scale"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:lab-habit",
      "kind": "content_block",
      "title": "Laboratory habit",
      "summary": "Experiment · Hold the object still while its representation changes",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:lab-habit",
      "content_hash": "419e7f226a4a10ab21c6d435119e41c1c01a3216b0ea7b90e2494918dd66076c",
      "source_ids": [
        "source:atlas-method-v2"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:transfer-setup",
      "kind": "content_block",
      "title": "block:scale:transfer-setup",
      "summary": "Transfer · Audit a blueprint before trusting the answer",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:transfer-setup",
      "content_hash": "1f0960ce469cfbde365cab4bda8eececc23b978e9574d27e15ce2db2d3e9828e",
      "source_ids": [
        "source:openstax-prealgebra-scale"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:scale:transfer-check",
      "kind": "content_block",
      "title": "block:scale:transfer-check",
      "summary": "Transfer · Audit a blueprint before trusting the answer",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:scale:transfer-check",
      "content_hash": "4056738b7796e0f19565521613e71d1dfbf4a09ed7744d01da1575e7632f839a",
      "source_ids": [],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "lesson:procedures-and-state:v2",
      "kind": "lesson",
      "title": "Procedures and state",
      "summary": "Read a small program as a sequence of inspectable state changes, predict a loop before running it, and separate rebinding from mutation.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#lesson=lesson:procedures-and-state:v2",
      "content_hash": "9d7022c853ee23d1d9d98a107625187a2efa37d08994bf196151155ba02d1fbd",
      "source_ids": [
        "source:python-tutorial-control",
        "source:python-reference-simple"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "objective:procedures:trace-state",
      "kind": "learning_objective",
      "title": "Record the relevant state before and after each assignment in a short Python procedure.",
      "summary": "Record the relevant state before and after each assignment in a short Python procedure.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#objective=objective:procedures:trace-state",
      "content_hash": "aece0fd1ee9b464e0992ea6b0d1ba94b9080e89fc841ed120c1957433fb48c27",
      "source_ids": [
        "source:python-tutorial-control",
        "source:python-reference-simple"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "objective:procedures:predict-loop",
      "kind": "learning_objective",
      "title": "Use a loop invariant to predict the result of an accumulation procedure.",
      "summary": "Use a loop invariant to predict the result of an accumulation procedure.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#objective=objective:procedures:predict-loop",
      "content_hash": "e4dea7ae35510a00ad6530b4314de1b87bee644008966648504ad5c068ef8c31",
      "source_ids": [
        "source:python-tutorial-control",
        "source:python-reference-simple"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "objective:procedures:distinguish-mutation",
      "kind": "learning_objective",
      "title": "Distinguish rebinding a local name from mutating an object shared with the caller.",
      "summary": "Distinguish rebinding a local name from mutating an object shared with the caller.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#objective=objective:procedures:distinguish-mutation",
      "content_hash": "a981a3ba968a64f51ecb65a67309f6a04f6f7c2486fb51a96b6dcb18f6a3c857",
      "source_ids": [
        "source:python-tutorial-control",
        "source:python-reference-simple"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:opening",
      "kind": "content_block",
      "title": "block:procedures:opening",
      "summary": "Orient · Debugging begins by slowing time down",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:opening",
      "content_hash": "780518b9272187eb4cbd8115208f112fb87324dddcb3a1526c8cc1717386ddaa",
      "source_ids": [
        "source:python-reference-simple"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:first-code",
      "kind": "content_block",
      "title": "Three statements, read in execution order.",
      "summary": "Orient · Debugging begins by slowing time down",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:first-code",
      "content_hash": "fd2bcbd7fbf16321c1cf2dea3337cac6c6a339b951814a2570c2704cebcdacbd",
      "source_ids": [
        "source:python-reference-simple"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:first-trace",
      "kind": "content_block",
      "title": "State changes one instruction at a time",
      "summary": "Orient · Debugging begins by slowing time down",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:first-trace",
      "content_hash": "ca36002e27324121bc8433b470de2c46cddc52465e658aaf7c692dc4f85ae889",
      "source_ids": [
        "source:python-reference-simple"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:equals-misconception",
      "kind": "content_block",
      "title": "The statement width = width + 3 says that a mathematical equality is always true.",
      "summary": "Orient · Debugging begins by slowing time down",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:equals-misconception",
      "content_hash": "2f0030bf90e54025669326393d7c639357972a8eb160344c4d5261e2fa38e650",
      "source_ids": [
        "source:python-reference-simple"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "misconception:procedures:equals",
      "kind": "misconception",
      "title": "The statement width = width + 3 says that a mathematical equality is always true.",
      "summary": "In an assignment statement, the expression on the right is evaluated using the current state; only then is the target name on the left rebound. It describes a transition, not a timeless equation.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#misconception=misconception:procedures:equals",
      "content_hash": "2f0030bf90e54025669326393d7c639357972a8eb160344c4d5261e2fa38e650",
      "source_ids": [
        "source:python-reference-simple"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:first-check",
      "kind": "content_block",
      "title": "block:procedures:first-check",
      "summary": "Orient · Debugging begins by slowing time down",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:first-check",
      "content_hash": "1a5e86b0302bc3b4db9ab8505651ba0e0742d2c76e05b10a53256f1e240fb245",
      "source_ids": [],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:loop-explanation",
      "kind": "content_block",
      "title": "block:procedures:loop-explanation",
      "summary": "Model · A loop is repeated small work, not one mysterious leap",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:loop-explanation",
      "content_hash": "f041d7be57aeae28117b15c212681c5799bdbdba31956fc56bac0a921b9b442a",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:sum-code",
      "kind": "content_block",
      "title": "A three-iteration accumulation procedure.",
      "summary": "Model · A loop is repeated small work, not one mysterious leap",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:sum-code",
      "content_hash": "bcfac57e999b95ebc7e4b58ba3c9e209aefc7722667283f885973360ec8d5781",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:sum-example",
      "kind": "content_block",
      "title": "Worked example — trace an accumulator",
      "summary": "Model · A loop is repeated small work, not one mysterious leap",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:sum-example",
      "content_hash": "4248211d188529588b1b1c718a8445c5584abae24fd53d4650c91541dc907a2e",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:loop-misconception",
      "kind": "content_block",
      "title": "The loop somehow sees the whole list and jumps directly to 12.",
      "summary": "Model · A loop is repeated small work, not one mysterious leap",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:loop-misconception",
      "content_hash": "3ad59b4598798e0036d2c049fb2e0e5bf8e00187183ef2a31c84c138efe609a4",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "misconception:procedures:loop-at-once",
      "kind": "misconception",
      "title": "The loop somehow sees the whole list and jumps directly to 12.",
      "summary": "That story cannot predict intermediate states, explain an early exit, or locate the iteration where a defect appears.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#misconception=misconception:procedures:loop-at-once",
      "content_hash": "3ad59b4598798e0036d2c049fb2e0e5bf8e00187183ef2a31c84c138efe609a4",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:loop-check",
      "kind": "content_block",
      "title": "block:procedures:loop-check",
      "summary": "Model · A loop is repeated small work, not one mysterious leap",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:loop-check",
      "content_hash": "19ca5e3465d6920becb64fabbd4cbb65273f0db73f7b8a01f12b11f3af706611",
      "source_ids": [],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:function-explanation",
      "kind": "content_block",
      "title": "block:procedures:function-explanation",
      "summary": "Formalize · Function calls create a boundary, not a magical box",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:function-explanation",
      "content_hash": "280776609594cdddc7f3898f0c955bd8871b8b8afe3cdb9c0828564ba7b22813",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:function-code",
      "kind": "content_block",
      "title": "The function builds a new list; it does not append to the argument list.",
      "summary": "Formalize · Function calls create a boundary, not a magical box",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:function-code",
      "content_hash": "7fb865158ae25c30efd18c4ab4b2fbf86ccf5bdbde05b203b22f40ecdf67e3a6",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:function-example",
      "kind": "content_block",
      "title": "Worked example — prove that the input list stays unchanged",
      "summary": "Formalize · Function calls create a boundary, not a magical box",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:function-example",
      "content_hash": "71a51bc1d16128c1ab18ad614f9cc4f8d5aae73844295cb9ebc1bda3ad15e5e4",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:copy-misconception",
      "kind": "content_block",
      "title": "Assigning prices = original automatically creates an independent copy of the list.",
      "summary": "Formalize · Function calls create a boundary, not a magical box",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:copy-misconception",
      "content_hash": "7e2f44c902982fa56821de7925befff1db7bfc78abc0283daad22ee004d0b5d4",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "misconception:procedures:assignment-copies",
      "kind": "misconception",
      "title": "Assigning prices = original automatically creates an independent copy of the list.",
      "summary": "Assignment binds another name to the same object; it does not by itself copy that object's contents.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#misconception=misconception:procedures:assignment-copies",
      "content_hash": "7e2f44c902982fa56821de7925befff1db7bfc78abc0283daad22ee004d0b5d4",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:mutation-check",
      "kind": "content_block",
      "title": "block:procedures:mutation-check",
      "summary": "Formalize · Function calls create a boundary, not a magical box",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:mutation-check",
      "content_hash": "fa44807c8d049b66626a7387edc964c052bc490d70bb4d820380e3f8d540ebe6",
      "source_ids": [],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:lab",
      "kind": "content_block",
      "title": "After each body execution, total equals the sum of every item visited so far.",
      "summary": "Experiment · Predict the next row before revealing it",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:lab",
      "content_hash": "a8b949050320e96cd7f7f72795988469b94ce13cb7fa56af3db353313f98a389",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:static-table",
      "kind": "content_block",
      "title": "Static trace for loop length 3 and input step 2",
      "summary": "Experiment · Predict the next row before revealing it",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:static-table",
      "content_hash": "47f66883379798a502a7c49da59b2b51dd0bb3a9abf46817293b3116135e5935",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:transfer-setup",
      "kind": "content_block",
      "title": "block:procedures:transfer-setup",
      "summary": "Transfer · Trace a conversion function without executing it",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:transfer-setup",
      "content_hash": "e4fc46c6d14ec600eca0a6ee35e41cb65f733d04bd923937ea5b79bbeedaf5e8",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:procedures:transfer-check",
      "kind": "content_block",
      "title": "block:procedures:transfer-check",
      "summary": "Transfer · Trace a conversion function without executing it",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:procedures:transfer-check",
      "content_hash": "b0f34facd91988196ced6d24bc808ae9b0ba0ad19980a35a149ea8ecc9066f4f",
      "source_ids": [],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "lesson:measurement-and-uncertainty:v2",
      "kind": "lesson",
      "title": "Measurement and uncertainty",
      "summary": "Turn an instrument reading into an honest claim by naming the method, separating scatter from offset, and reporting only the precision the evidence supports.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#lesson=lesson:measurement-and-uncertainty:v2",
      "content_hash": "36d948e394f9a1df8445f2d21f856038ce1c7e729512105ddf82be51f67a0e9d",
      "source_ids": [
        "source:openstax-physics-units",
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "objective:measurement:report-result",
      "kind": "learning_objective",
      "title": "Report a measured value with a unit, an uncertainty, and the convention used to estimate that uncertainty.",
      "summary": "Report a measured value with a unit, an uncertainty, and the convention used to estimate that uncertainty.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#objective=objective:measurement:report-result",
      "content_hash": "b8ab586bcc3ad3e42c342556d426e7422542d002ddc68071f175b944b2de3328",
      "source_ids": [
        "source:openstax-physics-units",
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "objective:measurement:diagnose-error",
      "kind": "learning_objective",
      "title": "Distinguish limited resolution and trial-to-trial scatter from a shared offset that repetition alone cannot reveal.",
      "summary": "Distinguish limited resolution and trial-to-trial scatter from a shared offset that repetition alone cannot reveal.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#objective=objective:measurement:diagnose-error",
      "content_hash": "3ea037faed91523be25003dc1fec145ac41dafd04661dd1d660f59612e8e2d2b",
      "source_ids": [
        "source:openstax-physics-units",
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "objective:measurement:compare-precision-accuracy",
      "kind": "learning_objective",
      "title": "Use repeated values and a reference value to compare precision and accuracy without treating them as synonyms.",
      "summary": "Use repeated values and a reference value to compare precision and accuracy without treating them as synonyms.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#objective=objective:measurement:compare-precision-accuracy",
      "content_hash": "70a0750f61d41f58f12b17f741c6b6743b81b2e8d49c35dac05c599001835aa5",
      "source_ids": [
        "source:openstax-physics-units",
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:opening",
      "kind": "content_block",
      "title": "block:measurement:opening",
      "summary": "Orient · A reading becomes evidence only when the procedure travels with it",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:opening",
      "content_hash": "38c4bfedb6924acd146cce563779918dc1c60ac4a89cd6e4c434ac93d2100ba5",
      "source_ids": [
        "source:openstax-physics-units"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:report-equation",
      "kind": "content_block",
      "title": "x = x̂ ± u, with unit and uncertainty convention stated",
      "summary": "Orient · A reading becomes evidence only when the procedure travels with it",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:report-equation",
      "content_hash": "5bbdceecca54d34abb2a1a524d35a1807ca1e160713359c8a141f6a9d9181a0b",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:display-misconception",
      "kind": "content_block",
      "title": "If a calculator or digital instrument prints six decimal places, all six digits are established by the measurement.",
      "summary": "Orient · A reading becomes evidence only when the procedure travels with it",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:display-misconception",
      "content_hash": "fffd04590607c68e9ee14715a0e601db5a7f0cffea72e8c83872c31029e3cb63",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "misconception:measurement:display-certainty",
      "kind": "misconception",
      "title": "If a calculator or digital instrument prints six decimal places, all six digits are established by the measurement.",
      "summary": "Display digits can exceed the resolution and stability of the measuring process. Arithmetic can propagate digits without creating information.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#misconception=misconception:measurement:display-certainty",
      "content_hash": "fffd04590607c68e9ee14715a0e601db5a7f0cffea72e8c83872c31029e3cb63",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:report-check",
      "kind": "content_block",
      "title": "block:measurement:report-check",
      "summary": "Orient · A reading becomes evidence only when the procedure travels with it",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:report-check",
      "content_hash": "b426eae31fb8121b4e4c9fd5e895ab66f5e46ebfecf891009cd157c2e960e613",
      "source_ids": [],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:scatter-explanation",
      "kind": "content_block",
      "title": "block:measurement:scatter-explanation",
      "summary": "Model · Repetition shows scatter; a reference exposes offset",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:scatter-explanation",
      "content_hash": "0a1309aa23ca91eeb159ea992881ce603d4edd226d9411fdc44dab7fa54f1de0",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:cluster-figure",
      "kind": "content_block",
      "title": "Precision and accuracy answer different questions",
      "summary": "Model · Repetition shows scatter; a reference exposes offset",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:cluster-figure",
      "content_hash": "c0658244c45eeeacbcfba5c101c67a155b5ed7c73ca4cb89d65cfdb628b32361",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:diagnostic-table",
      "kind": "content_block",
      "title": "What each diagnostic can and cannot reveal",
      "summary": "Model · Repetition shows scatter; a reference exposes offset",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:diagnostic-table",
      "content_hash": "961755e52bb3807fdec030de123d37c1ecb1bace85a393c9202142eac0aa5e66",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:repeat-misconception",
      "kind": "content_block",
      "title": "Taking more measurements automatically removes every measurement error.",
      "summary": "Model · Repetition shows scatter; a reference exposes offset",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:repeat-misconception",
      "content_hash": "383b8b6d716bc14282568c324a42113c83cc712118728b2c3aab1a607fc3d7a8",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "misconception:measurement:repeat-removes-bias",
      "kind": "misconception",
      "title": "Taking more measurements automatically removes every measurement error.",
      "summary": "More trials can stabilize an estimate of a centre and characterize scatter, but the same offset can shift every trial in the same direction.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#misconception=misconception:measurement:repeat-removes-bias",
      "content_hash": "383b8b6d716bc14282568c324a42113c83cc712118728b2c3aab1a607fc3d7a8",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:error-check",
      "kind": "content_block",
      "title": "block:measurement:error-check",
      "summary": "Model · Repetition shows scatter; a reference exposes offset",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:error-check",
      "content_hash": "2cea5750274c61bf72913a525879cfb8030604bf7c55a8edc577dc88c0cc883c",
      "source_ids": [],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:timing-example",
      "kind": "content_block",
      "title": "Worked example — report repeated timing trials",
      "summary": "Formalize · Compute a summary without pretending it is the whole experiment",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:timing-example",
      "content_hash": "3abaa4f6d7b088784060929180b965de6aa267b4231a933404487ac145240b07",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:percent-equation",
      "kind": "content_block",
      "title": "percent uncertainty = (u / |x̂|) × 100 percent",
      "summary": "Formalize · Compute a summary without pretending it is the whole experiment",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:percent-equation",
      "content_hash": "896c2c0dfa33792692c762da98596ec19ce62a836d2044159193594537190b5e",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:percent-example",
      "kind": "content_block",
      "title": "Worked example — decide whether a stopwatch can separate two results",
      "summary": "Formalize · Compute a summary without pretending it is the whole experiment",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:percent-example",
      "content_hash": "c70b2aeae03ab14bea122b9d99bdab5e8754d6f29889a262eabe1d1c715776f8",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:precision-misconception",
      "kind": "content_block",
      "title": "Precise measurements must be accurate because they agree closely with each other.",
      "summary": "Formalize · Compute a summary without pretending it is the whole experiment",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:precision-misconception",
      "content_hash": "34d167c5b26778e02fd4ccd094052a1810a517c9749a434ec84ce079beca6e4d",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "misconception:measurement:precision-is-accuracy",
      "kind": "misconception",
      "title": "Precise measurements must be accurate because they agree closely with each other.",
      "summary": "Agreement among trials measures repeatability. A shared offset can create a tight cluster far from the accepted reference.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#misconception=misconception:measurement:precision-is-accuracy",
      "content_hash": "34d167c5b26778e02fd4ccd094052a1810a517c9749a434ec84ce079beca6e4d",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:lab",
      "kind": "content_block",
      "title": "Repetition changes the estimate of the cluster and its scatter; a constant zero offset shifts every trial and is only identifiable against a reference or independent calibration.",
      "summary": "Experiment · Hide an offset inside a convincing cluster",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:lab",
      "content_hash": "e0777ce9c0c88c30a30a33b00a6f6f7bb984a0586b0980148b6632c829dbe269",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:lab-habit",
      "kind": "content_block",
      "title": "Laboratory habit",
      "summary": "Experiment · Hide an offset inside a convincing cluster",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:lab-habit",
      "content_hash": "fb772e02967aabbe47d7d9a75e5ab8f7665cae1116094186073f1e42836eec5c",
      "source_ids": [
        "source:atlas-method-v2"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:transfer-setup",
      "kind": "content_block",
      "title": "block:measurement:transfer-setup",
      "summary": "Transfer · Design a comparison that can fail honestly",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:transfer-setup",
      "content_hash": "871be2912e63a25b11afe3c9b455c0d097ef1401a5c39ab8e92245162a817112",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "block:measurement:transfer-check",
      "kind": "content_block",
      "title": "block:measurement:transfer-check",
      "summary": "Transfer · Design a comparison that can fail honestly",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#block=block:measurement:transfer-check",
      "content_hash": "d4731c3dc702fb9e08d27458fe89ae8028266d8aaa80100093c7b59d03e3275d",
      "source_ids": [],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "assessment:scale:quantity-kind",
      "kind": "assessment",
      "title": "Which expressions are quantities with enough information to interpret a measurement? Select every valid expression.",
      "summary": "Select all expressions that pair a magnitude with a unit.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#assessment=assessment:scale:quantity-kind",
      "content_hash": "705691f7479eb11ba053f559e3e488c6c6e1c28c4cea56b96710618b11514fe2",
      "source_ids": [
        "source:openstax-prealgebra-measurement"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "assessment:scale:model-length",
      "kind": "assessment",
      "title": "A 7.5 cm drawing uses a 1 to 40 scale. What real length does it represent in metres?",
      "summary": "Enter a number and a unit.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#assessment=assessment:scale:model-length",
      "content_hash": "3a3081b9314cf96d100224a6349bcbdd9be09b4c7252f11357c423ef304668c0",
      "source_ids": [
        "source:openstax-prealgebra-scale"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "assessment:scale:unit-order",
      "kind": "assessment",
      "title": "Put the conversion steps for 2.4 kilometres to metres in a defensible order.",
      "summary": "Arrange all steps from the starting quantity to the checked result.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#assessment=assessment:scale:unit-order",
      "content_hash": "f51f65b7d9ec8d5894854040509991ee472e99c6ef19c988d5dc4a0113f93128",
      "source_ids": [
        "source:openstax-prealgebra-measurement"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "assessment:scale:transfer",
      "kind": "assessment",
      "title": "On a 1 to 50 blueprint, a doorway is 4.2 cm wide. The safety requirement is at least 2.0 m. What real width does the drawing specify?",
      "summary": "Enter the real width as a number with a metre unit. The feedback will then ask you to compare it with the requirement.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#assessment=assessment:scale:transfer",
      "content_hash": "1683af64a07c1b5c04df2a0161022e97737a6418cbb989beeea9dd8a18467900",
      "source_ids": [
        "source:openstax-prealgebra-scale"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "assessment:procedures:assignment-trace",
      "kind": "assessment",
      "title": "Arrange the reasoning for x = x + 2 when the current x is 5.",
      "summary": "Put all four operations in execution order.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#assessment=assessment:procedures:assignment-trace",
      "content_hash": "57e37b69118aca8c0cbfe7fcc897d36c23c23e1db41642de1d76a408683e6271",
      "source_ids": [
        "source:python-reference-simple"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "assessment:procedures:loop-invariant",
      "kind": "assessment",
      "title": "A loop starts total at 0 and visits [3, 6, 9], adding each item to total. What is total after the second iteration?",
      "summary": "Enter the integer value. Use the unit “integer”.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#assessment=assessment:procedures:loop-invariant",
      "content_hash": "a21461b35820fa968891d09bb605494b56391aec005bed6427e3a74d03ea6c01",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "assessment:procedures:mutation-selection",
      "kind": "assessment",
      "title": "Which statements would mutate the existing list bound to items? Select every statement that changes that object's contents.",
      "summary": "Select all mutating operations.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#assessment=assessment:procedures:mutation-selection",
      "content_hash": "aac5b96f0fa2b7e1cfddeea9ee10c9dff6b4b8d83d1d37c9a67903e5daae011f",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "assessment:procedures:transfer-trace",
      "kind": "assessment",
      "title": "A function starts converted as an empty list, visits temperatures [0, 10], and appends c times 9 divided by 5 plus 32. Submit the two after-iteration states.",
      "summary": "For each row, provide c and converted using the exact displayed values.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#assessment=assessment:procedures:transfer-trace",
      "content_hash": "31f57d1b9c6716fcac4954152dfcc29c90a144c19e756e7870b540d5255fd9d2",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "assessment:measurement:report",
      "kind": "assessment",
      "title": "Five length readings span from 14.2 cm to 14.6 cm. Using half the range as the uncertainty convention, what uncertainty should be reported?",
      "summary": "Enter the uncertainty magnitude and a centimetre unit.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#assessment=assessment:measurement:report",
      "content_hash": "e16b17133d25f7ce34566e51a14efae2299bc6e8b94a28efefe88a2fdaf21c34",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "assessment:measurement:error-sources",
      "kind": "assessment",
      "title": "Which diagnostics can reveal a constant +0.5 cm zero offset? Select every defensible choice.",
      "summary": "Select methods that compare the instrument or procedure with independent information.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#assessment=assessment:measurement:error-sources",
      "content_hash": "730000c386010c5b99cd0134d9d19e88aa574f7616f46a55cd7b1356fd41c921",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "assessment:measurement:cluster",
      "kind": "assessment",
      "title": "A tight cluster of measurements lies far from an accepted reference. Which two-word description fits it?",
      "summary": "Enter the description using the words precise and inaccurate.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#assessment=assessment:measurement:cluster",
      "content_hash": "fad7c8c2d4c066ef4833a3a82f83809c985b7b6eb83f0647c1aec55ba2e3055f",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "assessment:measurement:transfer",
      "kind": "assessment",
      "title": "You compare two pendulums whose mean periods differ by 0.03 s, while each repeated result is reported with ±0.05 s uncertainty. Which conclusions are supported? Select every defensible statement.",
      "summary": "Select statements that respect the reported uncertainty and identify a useful next step.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#assessment=assessment:measurement:transfer",
      "content_hash": "54576d527647d3160091eeaa4385efa2ef29890547156082314f53216e6a69a5",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "simulation:scale-bench-v2",
      "kind": "simulation",
      "title": "Scale bench",
      "summary": "Real length divided by model length equals the selected scale denominator when both lengths use the same unit.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#simulation=simulation:scale-bench-v2",
      "content_hash": "043415215f3e6583cc905605db62cb76afcade64f57c6273556e22318303a63b",
      "source_ids": [
        "source:openstax-prealgebra-scale"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "simulation:procedure-trace-v2",
      "kind": "simulation",
      "title": "Procedure trace",
      "summary": "After each body execution, total equals the sum of every item visited so far.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#simulation=simulation:procedure-trace-v2",
      "content_hash": "80452f5f813e5bf9632cf5355ff7149abcad5fda22ac92adb5f052bc918998e6",
      "source_ids": [
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "simulation:measurement-bench-v2",
      "kind": "simulation",
      "title": "Measurement bench",
      "summary": "Repetition reveals scatter; only comparison with a reference or independent calibration reveals a constant shared offset.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#simulation=simulation:measurement-bench-v2",
      "content_hash": "84ffa75f1b37f4de13ce1c73cec414b7498efafc7ece7e4d82b9aaf6617bcfe4",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "simulation:robust-selection-v1",
      "kind": "simulation",
      "title": "When the average hides a rare failure",
      "summary": "Worst-environment risk ignores prevalence; a weighted mean can prefer the fragile subset below the crossover.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#simulation=simulation:robust-selection-v1",
      "content_hash": "bc981f487df257df5dbd4d1aa5ad6d71866661ebf7d054fe2a4e0b2eaaa58e6a",
      "source_ids": [
        "source:drfsp-paper-v3",
        "source:atlas-method-v2"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "project:climate-signal-ledger-v2",
      "kind": "project",
      "title": "Climate signal ledger",
      "summary": "Build a reproducible notebook that separates long-term change, short-term variation, sampling choices, and uncertainty in one public temperature record.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#project=project:climate-signal-ledger-v2",
      "content_hash": "98be4f9f37c6ec810b7426a246e8e0dda7c7f35900ffa6e2cf8d07a1f968cf80",
      "source_ids": [
        "source:atlas-method-v2",
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "project:small-search-engine-v2",
      "kind": "project",
      "title": "A small search engine",
      "summary": "Build and test an index over a local text collection, then explain the invariants and cost tradeoffs that make retrieval trustworthy.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#project=project:small-search-engine-v2",
      "content_hash": "e2850d6b6df91182c1d387b2fa7ef77ef3daf058804725f90db9c6ce9c4246d9",
      "source_ids": [
        "source:atlas-method-v2",
        "source:python-tutorial-control"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "project:orbital-model-audit-v2",
      "kind": "project",
      "title": "Orbital model audit",
      "summary": "Construct a computational orbit model and make its numerical error, conservation behavior, and domain of validity visible.",
      "artifact_ref": "../releases/atlas-0.1-foundations-candidate.json#project=project:orbital-model-audit-v2",
      "content_hash": "edaed6c0d1a25e3ac15dfa719387722817edf492b78abbff177b3f91d40f5e53",
      "source_ids": [
        "source:atlas-method-v2",
        "source:openstax-physics-units",
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "video:modern-llms-from-scratch",
      "kind": "video",
      "title": "Modern LLM's from scratch",
      "summary": "A field-film introduction to the mathematical, statistical, and systems ideas used to build modern large language models. Catalog metadata is complete; owner-exported captions and independent claim review remain pending.",
      "artifact_ref": "../releases/atlas-0.1-vector-meridian-candidate.json#video=video:modern-llms-from-scratch",
      "content_hash": "8dc4dc9c79e405c55414eef1560a8d99b3af3fb1117d9b2f70fcccf355924d78",
      "source_ids": [
        "source:video:modern-llms-from-scratch"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "chapter:modern-llms-from-scratch:field-film",
      "kind": "video_chapter",
      "title": "From tokens to a learning system",
      "summary": "0–2605000 ms",
      "artifact_ref": "../releases/atlas-0.1-vector-meridian-candidate.json#chapter=chapter:modern-llms-from-scratch:field-film",
      "content_hash": "9171d93a362dc9cca633eef7dd99d75f2911768b6bf1ed43abc80cc2b6228633",
      "source_ids": [
        "source:video:modern-llms-from-scratch"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "video:kimi-k3-inside-the-2-8t-model",
      "kind": "video",
      "title": "How Kimi K3 Nearly Caught Claude Fable — Inside the 2.8T Model",
      "summary": "A time-sensitive model case study covering architecture, evaluation scope, infrastructure, and deployment tradeoffs. The watch page presents the episode as a field-trial record until its claims receive independent review.",
      "artifact_ref": "../releases/atlas-0.1-vector-meridian-candidate.json#video=video:kimi-k3-inside-the-2-8t-model",
      "content_hash": "66c4d4cbb27812e59eb95727884caf8ee5663db0e044d1c39d21cd89c1475aa0",
      "source_ids": [
        "source:video:kimi-k3"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "chapter:kimi-k3:model-case-study",
      "kind": "video_chapter",
      "title": "Read a frontier-model claim at the right scale",
      "summary": "0–2106000 ms",
      "artifact_ref": "../releases/atlas-0.1-vector-meridian-candidate.json#chapter=chapter:kimi-k3:model-case-study",
      "content_hash": "06bc0d6605497e5bc659787e23fbc83bf4caa0517f1312fb27fffdf579c63751",
      "source_ids": [
        "source:video:kimi-k3"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "video:who-really-invented-ai",
      "kind": "video",
      "title": "Who Really Invented AI? The History Everyone Gets Wrong",
      "summary": "A feature-length history that treats artificial intelligence as a distributed lineage and distinguishes theoretical contribution, first publication, engineering practicality, and large-scale demonstration.",
      "artifact_ref": "../releases/atlas-0.1-vector-meridian-candidate.json#video=video:who-really-invented-ai",
      "content_hash": "4f54ba53d5f3b94aa2ceb1103f6b3d6071d71f7eb142b2cc52a1f9f8d9a2150b",
      "source_ids": [
        "source:video:ai-history"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "chapter:ai-history:credit-and-lineage",
      "kind": "video_chapter",
      "title": "Credit, lineage, and the danger of one origin story",
      "summary": "0–5525000 ms",
      "artifact_ref": "../releases/atlas-0.1-vector-meridian-candidate.json#chapter=chapter:ai-history:credit-and-lineage",
      "content_hash": "1bfdf4f66678254d3625fc4ecb9a7ecf9e03a441fc197c29140aff204cb86b5c",
      "source_ids": [
        "source:video:ai-history"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "video:jepa-explained",
      "kind": "video",
      "title": "Yann LeCun Thinks AI Is Learning the Wrong Way — JEPA Explained",
      "summary": "A representation-learning case study following the JEPA program from image and video models toward planning and latent-variable claims. Mathematical and benchmark claims remain visibly time-scoped pending independent review.",
      "artifact_ref": "../releases/atlas-0.1-vector-meridian-candidate.json#video=video:jepa-explained",
      "content_hash": "66ae829a5b9b7135353b86b1d116a075318256a9795a340a0264deeaeb1303b1",
      "source_ids": [
        "source:video:jepa"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "chapter:jepa:representation-and-prediction",
      "kind": "video_chapter",
      "title": "Predict representations, not every visible detail",
      "summary": "0–1974000 ms",
      "artifact_ref": "../releases/atlas-0.1-vector-meridian-candidate.json#chapter=chapter:jepa:representation-and-prediction",
      "content_hash": "7fd2dc4a22c366aac9594eae397c9991d858871ee7c07415d69380f6bfba9b04",
      "source_ids": [
        "source:video:jepa"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "video:ai-evaluation-security-incident",
      "kind": "video",
      "title": "An AI Hacked Hugging Face to Cheat — Then Claude Mythos Escaped",
      "summary": "A time-scoped systems-security case study about evaluation boundaries, capability tunnels, containment, and the difference between observed behavior and sensational interpretation.",
      "artifact_ref": "../releases/atlas-0.1-vector-meridian-candidate.json#video=video:ai-evaluation-security-incident",
      "content_hash": "be52ec7c1ad2e2ce9fedd5f6b8e139868ec75c74e2faa30d1ff121d289bb7e27",
      "source_ids": [
        "source:video:security-incident"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "chapter:security-incident:boundary-is-the-product",
      "kind": "video_chapter",
      "title": "The evaluation boundary is part of the system",
      "summary": "0–1639000 ms",
      "artifact_ref": "../releases/atlas-0.1-vector-meridian-candidate.json#chapter=chapter:security-incident:boundary-is-the-product",
      "content_hash": "c65e82d33d18ee1e8ec3046b792dae37f81d5439aca6b3dbe03d7314c17e8ae2",
      "source_ids": [
        "source:video:security-incident"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "video:j-space-explained",
      "kind": "video",
      "title": "Anthropic Found a Hidden Mind Inside Claude? J-Space Explained",
      "summary": "An interpretability case study distinguishing causal internal representations from much stronger claims about consciousness, feeling, or selfhood.",
      "artifact_ref": "../releases/atlas-0.1-vector-meridian-candidate.json#video=video:j-space-explained",
      "content_hash": "ffeff5d38382e21aac276aca5c3321cc115d0c3a51c2cd204f065f225fb80600",
      "source_ids": [
        "source:video:j-space"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "chapter:j-space:representation-not-consciousness",
      "kind": "video_chapter",
      "title": "A causal representation is not proof of consciousness",
      "summary": "0–995000 ms",
      "artifact_ref": "../releases/atlas-0.1-vector-meridian-candidate.json#chapter=chapter:j-space:representation-not-consciousness",
      "content_hash": "0954a1ed7147e7894af1195f3a060e2bd7debaa7f57ec8fa301c078a14d8f7ed",
      "source_ids": [
        "source:video:j-space"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "video:looped-transformers-explained",
      "kind": "video",
      "title": "Looped Transformers Explained: Why This 3B Model Beats Models 4× Bigger",
      "summary": "An architecture explainer about repeated latent-state updates, adaptive computation, and why evaluation claims must be read with their model, task, and benchmark scope attached.",
      "artifact_ref": "../releases/atlas-0.1-vector-meridian-candidate.json#video=video:looped-transformers-explained",
      "content_hash": "cbb15b69b515c065d39ccd027af2a4dd2991b146d9384a585c966481be163ddf",
      "source_ids": [
        "source:video:looped-transformers"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "chapter:looped-transformers:iterative-state",
      "kind": "video_chapter",
      "title": "Spend computation by updating an internal state",
      "summary": "0–613000 ms",
      "artifact_ref": "../releases/atlas-0.1-vector-meridian-candidate.json#chapter=chapter:looped-transformers:iterative-state",
      "content_hash": "e5b90fa754d6fa331a6c790f58a7f74907b7e521f77405245b651c5e6f73dbba",
      "source_ids": [
        "source:video:looped-transformers"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "claim:quantity-unit-dimension",
      "kind": "claim",
      "title": "A reported physical quantity is interpretable only when its numerical value is paired with a unit and the intended physical dimension is clear.",
      "summary": "Factual claim",
      "artifact_ref": "content/graph/learning-graph.yaml#claim=claim:quantity-unit-dimension",
      "content_hash": "0f2072894564cce4a8b334a842081fb7efb06d4f846f9246efa7c3e116b7352e",
      "source_ids": [
        "source:openstax-physics-units"
      ],
      "review_ids": [],
      "confidence": 0.99,
      "temporal_scope": "evergreen"
    },
    {
      "id": "claim:assignment-updates-state",
      "kind": "claim",
      "title": "An assignment changes program state by binding or rebinding a target to the evaluated expression result; mutation is a distinct operation on an object.",
      "summary": "Factual claim",
      "artifact_ref": "content/graph/learning-graph.yaml#claim=claim:assignment-updates-state",
      "content_hash": "655d3afbd2aa36082dca4f25313272b2afa022b3a98cb9d922214297cd2f1c84",
      "source_ids": [
        "source:python-reference-simple"
      ],
      "review_ids": [],
      "confidence": 0.98,
      "temporal_scope": "Python 3 language reference used by Atlas 0.1"
    },
    {
      "id": "claim:precision-not-accuracy",
      "kind": "claim",
      "title": "Repeated measurements can be tightly grouped while sharing an offset from a reference value, so precision alone does not establish accuracy.",
      "summary": "Derived claim",
      "artifact_ref": "content/graph/learning-graph.yaml#claim=claim:precision-not-accuracy",
      "content_hash": "2c4f48286fe773dda358c02b2efca3d7c52b6ce5b09c6453588fbc0ddde70cf0",
      "source_ids": [
        "source:openstax-physics-uncertainty"
      ],
      "review_ids": [],
      "confidence": 0.98,
      "temporal_scope": "evergreen"
    },
    {
      "id": "competency:quantitative-modeling",
      "kind": "competency",
      "title": "Quantitative modeling",
      "summary": "Interpret quantities, preserve units, use proportional structure, and test dimensional consistency.",
      "artifact_ref": "content/graph/learning-graph.yaml#competency=competency:quantitative-modeling",
      "content_hash": "b309aa6db4bfe3135000e2b3fa3ef8b61270a626024446e4c2efaf69509f4d1b",
      "source_ids": [
        "source:atlas-method-v2"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "competency:computational-reasoning",
      "kind": "competency",
      "title": "Computational reasoning",
      "summary": "Trace state, identify invariants, and distinguish binding from mutation in inspectable procedures.",
      "artifact_ref": "content/graph/learning-graph.yaml#competency=competency:computational-reasoning",
      "content_hash": "cd5ccccabc636a32bb6cd1bfb636da3607568eabaf2cf019426ae6ea41bbc33f",
      "source_ids": [
        "source:atlas-method-v2"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    },
    {
      "id": "competency:measurement-literacy",
      "kind": "competency",
      "title": "Measurement literacy",
      "summary": "Report uncertainty and distinguish resolution, scatter, offset, precision, and accuracy.",
      "artifact_ref": "content/graph/learning-graph.yaml#competency=competency:measurement-literacy",
      "content_hash": "46c2113f7e290e6612f2deb5603bb6fe9415c9b31640c0e7deb392305500677b",
      "source_ids": [
        "source:atlas-method-v2"
      ],
      "review_ids": [],
      "confidence": null,
      "temporal_scope": null
    }
  ],
  "edges": [
    {
      "id": "edge:maps:scale-interpret:quantitative-modeling",
      "from": "objective:scale:interpret-quantity",
      "to": "competency:quantitative-modeling",
      "relation": "MAPS_TO_COMPETENCY",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Foundations field-trial competency mapping, 2026-08-15",
          "method": "ai_drafted",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "ea6abbddce3bafd61477ae8235d19fd017587efabd773a4ae5ae62f7f2172601"
        }
      ]
    },
    {
      "id": "edge:maps:scale-ratio:quantitative-modeling",
      "from": "objective:scale:apply-ratio",
      "to": "competency:quantitative-modeling",
      "relation": "MAPS_TO_COMPETENCY",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Foundations field-trial competency mapping, 2026-08-15",
          "method": "ai_drafted",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "e5bc2658d05f41c77988bc9c552fdcbe440e8fdcdd19f92a20d2c5e6e000a085"
        }
      ]
    },
    {
      "id": "edge:maps:scale-dimensions:quantitative-modeling",
      "from": "objective:scale:check-dimensions",
      "to": "competency:quantitative-modeling",
      "relation": "MAPS_TO_COMPETENCY",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Foundations field-trial competency mapping, 2026-08-15",
          "method": "ai_drafted",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "96a7e7254d7d221af20e30f493c2ac31fdde3f579cfee3a9ac38a028077f0947"
        }
      ]
    },
    {
      "id": "edge:maps:procedures-trace:computational-reasoning",
      "from": "objective:procedures:trace-state",
      "to": "competency:computational-reasoning",
      "relation": "MAPS_TO_COMPETENCY",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Foundations field-trial competency mapping, 2026-08-15",
          "method": "ai_drafted",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "92baa6379757697a6db3eda42858c469474f51f0ee4b944b26258c5b7f96e223"
        }
      ]
    },
    {
      "id": "edge:maps:procedures-loop:computational-reasoning",
      "from": "objective:procedures:predict-loop",
      "to": "competency:computational-reasoning",
      "relation": "MAPS_TO_COMPETENCY",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Foundations field-trial competency mapping, 2026-08-15",
          "method": "ai_drafted",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "e5554abb22b5809cd950eab35bc1952a8a189b6e5c9e51ae70c88f7c18497637"
        }
      ]
    },
    {
      "id": "edge:maps:procedures-mutation:computational-reasoning",
      "from": "objective:procedures:distinguish-mutation",
      "to": "competency:computational-reasoning",
      "relation": "MAPS_TO_COMPETENCY",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Foundations field-trial competency mapping, 2026-08-15",
          "method": "ai_drafted",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "acaaa56b2f7938092d05905d502f77328f929238633b78cccbb9eb7f1ad335e7"
        }
      ]
    },
    {
      "id": "edge:maps:measurement-report:measurement-literacy",
      "from": "objective:measurement:report-result",
      "to": "competency:measurement-literacy",
      "relation": "MAPS_TO_COMPETENCY",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Foundations field-trial competency mapping, 2026-08-15",
          "method": "ai_drafted",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "fa36c6ebf69f56ab69d7401c19151b3f7141cc2a5cef7be2be1fb114b1f48f93"
        }
      ]
    },
    {
      "id": "edge:maps:measurement-error:measurement-literacy",
      "from": "objective:measurement:diagnose-error",
      "to": "competency:measurement-literacy",
      "relation": "MAPS_TO_COMPETENCY",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Foundations field-trial competency mapping, 2026-08-15",
          "method": "ai_drafted",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "2ebbbb0766ba74d0e35d1733415e91c385b2db218cf3be4e2b641e71e23b03eb"
        }
      ]
    },
    {
      "id": "edge:maps:measurement-precision:measurement-literacy",
      "from": "objective:measurement:compare-precision-accuracy",
      "to": "competency:measurement-literacy",
      "relation": "MAPS_TO_COMPETENCY",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Foundations field-trial competency mapping, 2026-08-15",
          "method": "ai_drafted",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "32424d849e0082bba875386ad2641eae58ef6f7b6d3bd8d449ee321bb746f307"
        }
      ]
    },
    {
      "id": "edge:prerequisite_for:concept:quantities-ratios-and-scale:concept:functions-as-dependence",
      "from": "concept:quantities-ratios-and-scale",
      "to": "concept:functions-as-dependence",
      "relation": "PREREQUISITE_FOR",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:prerequisite_for:concept:quantities-ratios-and-scale:concept:functions-as-dependence",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "9a17b963d855f41e96da99a08bb06ac102b56009aca8e232a49ff0ee9a307f4c"
        }
      ]
    },
    {
      "id": "edge:prerequisite_for:concept:functions-as-dependence:concept:vectors-and-coordinate-change",
      "from": "concept:functions-as-dependence",
      "to": "concept:vectors-and-coordinate-change",
      "relation": "PREREQUISITE_FOR",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:prerequisite_for:concept:functions-as-dependence:concept:vectors-and-coordinate-change",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "cd6614ffaf324dd0abbd87d29cc0981196c31a5c91c674e44a0603aa3ad9d91b"
        }
      ]
    },
    {
      "id": "edge:prerequisite_for:concept:vectors-and-coordinate-change:concept:change-and-accumulation",
      "from": "concept:vectors-and-coordinate-change",
      "to": "concept:change-and-accumulation",
      "relation": "PREREQUISITE_FOR",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:prerequisite_for:concept:vectors-and-coordinate-change:concept:change-and-accumulation",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "0b71a0a2a94f107d6c615a21f229b70d409f45a376cf2d7e38d3706b714e642a"
        }
      ]
    },
    {
      "id": "edge:prerequisite_for:concept:change-and-accumulation:concept:probability-as-evidence",
      "from": "concept:change-and-accumulation",
      "to": "concept:probability-as-evidence",
      "relation": "PREREQUISITE_FOR",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:prerequisite_for:concept:change-and-accumulation:concept:probability-as-evidence",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "e40e5a68751a8fa31cd2369d55d42269e34688aa306a30121832e786536e99a4"
        }
      ]
    },
    {
      "id": "edge:prerequisite_for:concept:procedures-and-state:concept:data-and-invariants",
      "from": "concept:procedures-and-state",
      "to": "concept:data-and-invariants",
      "relation": "PREREQUISITE_FOR",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:prerequisite_for:concept:procedures-and-state:concept:data-and-invariants",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "b5a534e1dde10b2e08ce9e7abc1746bfc2b7d8e9e66ad36eb66b3fa709d36b61"
        }
      ]
    },
    {
      "id": "edge:prerequisite_for:concept:data-and-invariants:concept:algorithms-and-cost",
      "from": "concept:data-and-invariants",
      "to": "concept:algorithms-and-cost",
      "relation": "PREREQUISITE_FOR",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:prerequisite_for:concept:data-and-invariants:concept:algorithms-and-cost",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "a790f465af37140a12e9cfbbdb2685240121ce5f846768be8a524eed4a173cc5"
        }
      ]
    },
    {
      "id": "edge:prerequisite_for:concept:algorithms-and-cost:concept:ownership-and-systems",
      "from": "concept:algorithms-and-cost",
      "to": "concept:ownership-and-systems",
      "relation": "PREREQUISITE_FOR",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:prerequisite_for:concept:algorithms-and-cost:concept:ownership-and-systems",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "7bca0466c1af01167bfb2f1502584c920f32a74b5b749903078c7f4f52a82ec9"
        }
      ]
    },
    {
      "id": "edge:prerequisite_for:concept:ownership-and-systems:concept:learning-systems-and-evaluation",
      "from": "concept:ownership-and-systems",
      "to": "concept:learning-systems-and-evaluation",
      "relation": "PREREQUISITE_FOR",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:prerequisite_for:concept:ownership-and-systems:concept:learning-systems-and-evaluation",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "7d443285d96bda10b4ef7914582c6e1035866325632bb184a73b8b832f25b262"
        }
      ]
    },
    {
      "id": "edge:prerequisite_for:concept:measurement-and-uncertainty:concept:motion-and-interaction",
      "from": "concept:measurement-and-uncertainty",
      "to": "concept:motion-and-interaction",
      "relation": "PREREQUISITE_FOR",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:prerequisite_for:concept:measurement-and-uncertainty:concept:motion-and-interaction",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "e80dbaa44f15a890360e149b3977a97ab6beed9ab7848157ffd7457e2c522255"
        }
      ]
    },
    {
      "id": "edge:prerequisite_for:concept:motion-and-interaction:concept:energy-and-conservation",
      "from": "concept:motion-and-interaction",
      "to": "concept:energy-and-conservation",
      "relation": "PREREQUISITE_FOR",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:prerequisite_for:concept:motion-and-interaction:concept:energy-and-conservation",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "5d2a6cd0dd509feb476f34124bd2bb9554c6e9334f6ef644c27a3b1192dc3d3d"
        }
      ]
    },
    {
      "id": "edge:prerequisite_for:concept:energy-and-conservation:concept:waves-and-information",
      "from": "concept:energy-and-conservation",
      "to": "concept:waves-and-information",
      "relation": "PREREQUISITE_FOR",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:prerequisite_for:concept:energy-and-conservation:concept:waves-and-information",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "fd178c360a9355340ec14cde2845195ccae8a6ceb72da6fe1e3c3a572efa9f7c"
        }
      ]
    },
    {
      "id": "edge:prerequisite_for:concept:waves-and-information:concept:fields-models-and-limits",
      "from": "concept:waves-and-information",
      "to": "concept:fields-models-and-limits",
      "relation": "PREREQUISITE_FOR",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:prerequisite_for:concept:waves-and-information:concept:fields-models-and-limits",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "f7837b91bbfe110174113e2c2dba8d98365e81dbb3abc8ff16dd80a66fa822c8"
        }
      ]
    },
    {
      "id": "edge:bridges_to:concept:functions-as-dependence:concept:procedures-and-state",
      "from": "concept:functions-as-dependence",
      "to": "concept:procedures-and-state",
      "relation": "BRIDGES_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:bridges_to:concept:functions-as-dependence:concept:procedures-and-state",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "5dab1a77d9cef8625a8539dc98a2025d27681c03aa302ed6012ed0a222781093"
        }
      ]
    },
    {
      "id": "edge:bridges_to:concept:vectors-and-coordinate-change:concept:motion-and-interaction",
      "from": "concept:vectors-and-coordinate-change",
      "to": "concept:motion-and-interaction",
      "relation": "BRIDGES_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:bridges_to:concept:vectors-and-coordinate-change:concept:motion-and-interaction",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "ec943e0caa5bec55af49ca033a24b61f4541094714dff9136ad5ac03b60a9f69"
        }
      ]
    },
    {
      "id": "edge:bridges_to:concept:probability-as-evidence:concept:learning-systems-and-evaluation",
      "from": "concept:probability-as-evidence",
      "to": "concept:learning-systems-and-evaluation",
      "relation": "BRIDGES_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:bridges_to:concept:probability-as-evidence:concept:learning-systems-and-evaluation",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "430fbb10df58587502950f623625af7637d6d2a3acecea59067e9a7fb5405ade"
        }
      ]
    },
    {
      "id": "edge:bridges_to:concept:algorithms-and-cost:concept:fields-models-and-limits",
      "from": "concept:algorithms-and-cost",
      "to": "concept:fields-models-and-limits",
      "relation": "BRIDGES_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method",
          "locator": "Imported from preview edge edge:bridges_to:concept:algorithms-and-cost:concept:fields-models-and-limits",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "58dc0dc5924b3b9eca014b44302846ca2247af0eeaa9d503616817b9e92e9d9e"
        }
      ]
    },
    {
      "id": "edge:contains:atlas:release:0.1-foundations-candidate:lesson:quantities-ratios-and-scale:v2",
      "from": "atlas:release:0.1-foundations-candidate",
      "to": "lesson:quantities-ratios-and-scale:v2",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Foundations lesson membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "114a2b80d4918fd67045f0ce5326a4365db91f6b40a441714b92951dba7cc432"
        }
      ]
    },
    {
      "id": "edge:teaches:lesson:quantities-ratios-and-scale:v2:objective:scale:interpret-quantity",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "objective:scale:interpret-quantity",
      "relation": "TEACHES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Lesson objective declaration",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "2814ac164282ab7a50f4d77aa53e8999cdebc4e0f71a1a98c4068bf1f0ee42a1"
        }
      ]
    },
    {
      "id": "edge:teaches:lesson:quantities-ratios-and-scale:v2:objective:scale:apply-ratio",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "objective:scale:apply-ratio",
      "relation": "TEACHES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Lesson objective declaration",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "e03c13ff9e68ce0cb18276ed6fe93e86fa382e48b931e5695f9325dc3671aae4"
        }
      ]
    },
    {
      "id": "edge:teaches:lesson:quantities-ratios-and-scale:v2:objective:scale:check-dimensions",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "objective:scale:check-dimensions",
      "relation": "TEACHES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Lesson objective declaration",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "6b428d098088869153e243465fd940954743d66cf054977ed202a5b692b112e1"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:opening",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:opening",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "c48365da4a51602a6da79689ec4e3ccf83c6960998c66614f3f7c190ab267071"
        }
      ]
    },
    {
      "id": "edge:cites:block:scale:opening:source:openstax-prealgebra-measurement",
      "from": "block:scale:opening",
      "to": "source:openstax-prealgebra-measurement",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-prealgebra-measurement",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "bf901622a83f8dd1380a5b221e1d358add222854bd0862b15fc0fa729e7a115c"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:quantity-figure",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:quantity-figure",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "9363ad8cabbad7ae964851093877e635bffe70cf4547597dfa71ede1fbf726b7"
        }
      ]
    },
    {
      "id": "edge:cites:block:scale:quantity-figure:source:openstax-prealgebra-measurement",
      "from": "block:scale:quantity-figure",
      "to": "source:openstax-prealgebra-measurement",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-prealgebra-measurement",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "1b63a3c7afcdd4b0bb71c0b806e1f93cbd9307857d11c47e9ec4bdbb319479bd"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:units-misconception",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:units-misconception",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "ca39c57b21d0d7dec8ddb3b22ac24831b430cefb8065bf628aa647b838e0a483"
        }
      ]
    },
    {
      "id": "edge:cites:block:scale:units-misconception:source:openstax-prealgebra-measurement",
      "from": "block:scale:units-misconception",
      "to": "source:openstax-prealgebra-measurement",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-prealgebra-measurement",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "89dbae64474acd8c4512456db46aa2fe0f475f97cec66d6e4e755658c9e4deb8"
        }
      ]
    },
    {
      "id": "edge:addresses:block:scale:units-misconception:misconception:scale:units-decoration",
      "from": "block:scale:units-misconception",
      "to": "misconception:scale:units-decoration",
      "relation": "ADDRESSES_MISCONCEPTION",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Misconception block mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "c04fc807b34a5605e0529cfa1904e0286ebd3bd47ab6f42e035ac1edb46618be"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:quantity-check",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:quantity-check",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "f53a98aa2900613045a6b33986371ff96d717cbda94f15cd2840a627b9b0f6c5"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:ratio-explanation",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:ratio-explanation",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "8340c872b068430ff244782dbf6106ae9165759498745f1456f7c09e73d89dae"
        }
      ]
    },
    {
      "id": "edge:cites:block:scale:ratio-explanation:source:openstax-prealgebra-ratios",
      "from": "block:scale:ratio-explanation",
      "to": "source:openstax-prealgebra-ratios",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-prealgebra-ratios",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "74cbaa3233ef5f1950e53bb7a10765f915d86520e0a8caa76d8430c3af081e60"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:conversion-equation",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:conversion-equation",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "ecb9be8b47b928535562db4723b6ae8e6a7a5619b0aaec434d28b7f2b0799f28"
        }
      ]
    },
    {
      "id": "edge:cites:block:scale:conversion-equation:source:openstax-prealgebra-ratios",
      "from": "block:scale:conversion-equation",
      "to": "source:openstax-prealgebra-ratios",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-prealgebra-ratios",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "b5c0b281feadbfaadb6fd7f137ddec0004f8d323ab660130cf904c64169f191c"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:model-car",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:model-car",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "aec0fb32a47f7cf44d24fa1eca4839428b02d22fe0b00294f6cfe96027a63519"
        }
      ]
    },
    {
      "id": "edge:cites:block:scale:model-car:source:openstax-prealgebra-scale",
      "from": "block:scale:model-car",
      "to": "source:openstax-prealgebra-scale",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-prealgebra-scale",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "626277612c409fd62084c3935902a080d6ccec44a6399cf6e8d79f40f4b9a985"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:factor-direction",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:factor-direction",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "3ca04192efd92d46ee863d497be3b7290dd20e73b3f143f2d0261a7b74aa92bf"
        }
      ]
    },
    {
      "id": "edge:cites:block:scale:factor-direction:source:openstax-prealgebra-scale",
      "from": "block:scale:factor-direction",
      "to": "source:openstax-prealgebra-scale",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-prealgebra-scale",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "22e3e677250dae275456f30e768ab258610c651738c739a3f5adfb908d3b9b93"
        }
      ]
    },
    {
      "id": "edge:addresses:block:scale:factor-direction:misconception:scale:reverse-factor",
      "from": "block:scale:factor-direction",
      "to": "misconception:scale:reverse-factor",
      "relation": "ADDRESSES_MISCONCEPTION",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Misconception block mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "f2647b9ac73f1b3b5cd44a38d63295780a80615bc0203df90075c3ce0cd8f17b"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:model-check",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:model-check",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "39cc0230b8c8cbd3103f713a0f2147945ebce23c5bbf05ee789c73412c9be032"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:dimension-explanation",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:dimension-explanation",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "bb3de7bd9a2e2e7a6a650a19f96f4841525a89c10b46c4c393afb9484a297d8c"
        }
      ]
    },
    {
      "id": "edge:cites:block:scale:dimension-explanation:source:openstax-prealgebra-measurement",
      "from": "block:scale:dimension-explanation",
      "to": "source:openstax-prealgebra-measurement",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-prealgebra-measurement",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "56727f3ed6b93c49a778e060b9879c984e5a24c27689f0456cafda55e0e7fab1"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:walking-rate",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:walking-rate",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "b2843652d7d6793da69115fabddda537be3348b5b4aa66e2f13d40a02a5494e2"
        }
      ]
    },
    {
      "id": "edge:cites:block:scale:walking-rate:source:openstax-prealgebra-measurement",
      "from": "block:scale:walking-rate",
      "to": "source:openstax-prealgebra-measurement",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-prealgebra-measurement",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "01512569a68ebdcff663e783be49ce6e8fc3ff867312e5571f0d4d34f5d3c03a"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:operation-table",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:operation-table",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "9429c585b9dc56ed2a10ed6840bb42edfea59c0ef867a78d1ccc678d9cde64d7"
        }
      ]
    },
    {
      "id": "edge:cites:block:scale:operation-table:source:openstax-prealgebra-measurement",
      "from": "block:scale:operation-table",
      "to": "source:openstax-prealgebra-measurement",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-prealgebra-measurement",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "08bba42f1347a2b2372e5a5d0d84224805cd7725a4d61e6d0df08e6387b3d7bf"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:dimension-check",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:dimension-check",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "749c615e5bc6154afb01e11208b42117f62a57a83f5ca9bdf96c83194ffe9e92"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:lab",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:lab",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "27b2d7763bff2450a0c8d6104e5a829d9417fb811156c9a19a1245540ead3b93"
        }
      ]
    },
    {
      "id": "edge:cites:block:scale:lab:source:openstax-prealgebra-scale",
      "from": "block:scale:lab",
      "to": "source:openstax-prealgebra-scale",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-prealgebra-scale",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "552715bc6b29cdcdfb2d0a52378a5f7693efa0086139654c03e064b1f447d1f7"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:lab-habit",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:lab-habit",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "d55c328aedce798bd152dd466ed789ee4853457bddca3fbb3412430aa8bab19a"
        }
      ]
    },
    {
      "id": "edge:cites:block:scale:lab-habit:source:atlas-method-v2",
      "from": "block:scale:lab-habit",
      "to": "source:atlas-method-v2",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "dec5a162b0ad75c8dbcde3f5865a1e40ad0a52e77e35c03ff10c7c888bb05ccf"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:transfer-setup",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:transfer-setup",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "a379a7285876366d0e92293f99feaa5dd16f0febec110ec2d86753fd063e26b4"
        }
      ]
    },
    {
      "id": "edge:cites:block:scale:transfer-setup:source:openstax-prealgebra-scale",
      "from": "block:scale:transfer-setup",
      "to": "source:openstax-prealgebra-scale",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-prealgebra-scale",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "0a015a2d7b6d3ed24db6711ac74caa30cf1c13fc689f33561895e624881a98f3"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:block:scale:transfer-check",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "block:scale:transfer-check",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "694e109f2145b0d9f92602371a6e0588168bcb5a15687c4fbe4013716a1df95e"
        }
      ]
    },
    {
      "id": "edge:contains:atlas:release:0.1-foundations-candidate:lesson:procedures-and-state:v2",
      "from": "atlas:release:0.1-foundations-candidate",
      "to": "lesson:procedures-and-state:v2",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Foundations lesson membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "30a287fc60ea9478139bca93f5b95050b2003693e90973ff41815fe09878a2da"
        }
      ]
    },
    {
      "id": "edge:teaches:lesson:procedures-and-state:v2:objective:procedures:trace-state",
      "from": "lesson:procedures-and-state:v2",
      "to": "objective:procedures:trace-state",
      "relation": "TEACHES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Lesson objective declaration",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "d6716038a924d98631f2001bd3df18ca28053bf438cfde5b3b470f29b3ff5f89"
        }
      ]
    },
    {
      "id": "edge:teaches:lesson:procedures-and-state:v2:objective:procedures:predict-loop",
      "from": "lesson:procedures-and-state:v2",
      "to": "objective:procedures:predict-loop",
      "relation": "TEACHES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Lesson objective declaration",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "3db8b130f4d06c261bed5e95472c03d220228b55886e41d9d69de9da2697d9ac"
        }
      ]
    },
    {
      "id": "edge:teaches:lesson:procedures-and-state:v2:objective:procedures:distinguish-mutation",
      "from": "lesson:procedures-and-state:v2",
      "to": "objective:procedures:distinguish-mutation",
      "relation": "TEACHES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Lesson objective declaration",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "77e662ee0141c70c87cb04d64433bd108d63c63e15aac0bde04a856b5b5100e1"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:opening",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:opening",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "59ac261ec17c9cb908d32ffeb8267870bce9580518b86aafdde36c622cf2ddff"
        }
      ]
    },
    {
      "id": "edge:cites:block:procedures:opening:source:python-reference-simple",
      "from": "block:procedures:opening",
      "to": "source:python-reference-simple",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:python-reference-simple",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "698cc4645c723e118d37c6161126e47d87d0dd0e1cc2c6a881f511207a4f0c67"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:first-code",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:first-code",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "0bc9110de430a713d078b108a7a2a709890f104e337deb5fdcde40554889eedf"
        }
      ]
    },
    {
      "id": "edge:cites:block:procedures:first-code:source:python-reference-simple",
      "from": "block:procedures:first-code",
      "to": "source:python-reference-simple",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:python-reference-simple",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "b1abda76ef1f95b9aec2a6a779ae31edcdae8625752ba4908e3010a0d0bf7a02"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:first-trace",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:first-trace",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "f5fe5af021112c6c2bf9e819252aefb0c3c417e59f104de717b0e1c3f94591d0"
        }
      ]
    },
    {
      "id": "edge:cites:block:procedures:first-trace:source:python-reference-simple",
      "from": "block:procedures:first-trace",
      "to": "source:python-reference-simple",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:python-reference-simple",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "14eb4442e35bc6e8bef7e392eb33e82cf9b1c60b05e19a0e71fcad23a579f4c2"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:equals-misconception",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:equals-misconception",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "e0fe129caf59ce54b5c341c2cebdf6436efe30333e01d69b8d3c032ce7670164"
        }
      ]
    },
    {
      "id": "edge:cites:block:procedures:equals-misconception:source:python-reference-simple",
      "from": "block:procedures:equals-misconception",
      "to": "source:python-reference-simple",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:python-reference-simple",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "2e940d304076f3efb9f481f70a97707ec035a5411a8f8c7446ec97a48123091d"
        }
      ]
    },
    {
      "id": "edge:addresses:block:procedures:equals-misconception:misconception:procedures:equals",
      "from": "block:procedures:equals-misconception",
      "to": "misconception:procedures:equals",
      "relation": "ADDRESSES_MISCONCEPTION",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Misconception block mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "c1f3ee6da2596e8aa82641be92699b1820be4710f61fb75c2bf044e934c2b0a0"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:first-check",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:first-check",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "8b035102293f3460e2aea6db1e8dd2cae2d0185d5c74c87c3af5b57acc4308f5"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:loop-explanation",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:loop-explanation",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "4fa46e779650abc5967ba7695401f4a70adfc169477150732f22ca3a5ba3b1a7"
        }
      ]
    },
    {
      "id": "edge:cites:block:procedures:loop-explanation:source:python-tutorial-control",
      "from": "block:procedures:loop-explanation",
      "to": "source:python-tutorial-control",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:python-tutorial-control",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "0ee48fc7888f5d0b0680bd4f68f3c8009ceadb1aded3cf9ab9fea46660861561"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:sum-code",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:sum-code",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "63be4db752f586e5f7954c40c49c0397387dd28abc9749dfc76a79197bbfbd9e"
        }
      ]
    },
    {
      "id": "edge:cites:block:procedures:sum-code:source:python-tutorial-control",
      "from": "block:procedures:sum-code",
      "to": "source:python-tutorial-control",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:python-tutorial-control",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "19f9ab71d55efd6ef28a2382125c5191c2ba55f33c75cf3263aa277768561d0a"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:sum-example",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:sum-example",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "30a1f2f6e48e1da0574c1f1a6a67a906d63218f40080faf9d22a39541e6071c0"
        }
      ]
    },
    {
      "id": "edge:cites:block:procedures:sum-example:source:python-tutorial-control",
      "from": "block:procedures:sum-example",
      "to": "source:python-tutorial-control",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:python-tutorial-control",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "b7743e75a0e57a4d5348023c57661c640db4ecb6dde0bf68a65aa0032e41c8a0"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:loop-misconception",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:loop-misconception",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "4b0752336d2148ab24dccd1c8fea1f39a6baf170a793634a3234391ad8871dcf"
        }
      ]
    },
    {
      "id": "edge:cites:block:procedures:loop-misconception:source:python-tutorial-control",
      "from": "block:procedures:loop-misconception",
      "to": "source:python-tutorial-control",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:python-tutorial-control",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "2d5ed161ddd762afb6dbd784d3c0ad277dafab9c055c6ab7d2bf1716b3574973"
        }
      ]
    },
    {
      "id": "edge:addresses:block:procedures:loop-misconception:misconception:procedures:loop-at-once",
      "from": "block:procedures:loop-misconception",
      "to": "misconception:procedures:loop-at-once",
      "relation": "ADDRESSES_MISCONCEPTION",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Misconception block mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "063f2be26cc86d7d3026a87812d038a12cbf1c02422911cd98d201529ef7a11d"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:loop-check",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:loop-check",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "646ae1429227fbcecfc572cba1f16653763848c89d72ea5d6fedd90339b2ca1f"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:function-explanation",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:function-explanation",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "bb80714a6aec07bbb23c069908e925ed59e84bca5dbe90ce339d951ab0352518"
        }
      ]
    },
    {
      "id": "edge:cites:block:procedures:function-explanation:source:python-tutorial-control",
      "from": "block:procedures:function-explanation",
      "to": "source:python-tutorial-control",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:python-tutorial-control",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "a3b3530d2ba7792756f4b60477544f5d908d4aa51e22fa7e956b3716c4efd997"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:function-code",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:function-code",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "4ecdf0d4e6d02405d006aeb91db600803fb52d86e4e5458a9b1f60be20106e4c"
        }
      ]
    },
    {
      "id": "edge:cites:block:procedures:function-code:source:python-tutorial-control",
      "from": "block:procedures:function-code",
      "to": "source:python-tutorial-control",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:python-tutorial-control",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "df7c691da77a340d9894f63672a00da7af3bf96c15f52203d13488a807b775f6"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:function-example",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:function-example",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "e7c1376e0c3b15962715dbbbbba36ee761e7511afcaaa0d6bf52d536789d5719"
        }
      ]
    },
    {
      "id": "edge:cites:block:procedures:function-example:source:python-tutorial-control",
      "from": "block:procedures:function-example",
      "to": "source:python-tutorial-control",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:python-tutorial-control",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "4e9d354aa46fd4bb991c3d501fc2370f616ba911a1fba5e516d1ef354a9d6d0a"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:copy-misconception",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:copy-misconception",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "7b0ef84f380018ab6086cbf2605336d050dfdaa81433a8ac8e6fe4e62c399206"
        }
      ]
    },
    {
      "id": "edge:cites:block:procedures:copy-misconception:source:python-tutorial-control",
      "from": "block:procedures:copy-misconception",
      "to": "source:python-tutorial-control",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:python-tutorial-control",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "3b67420ef4863fe178fe94d5f029fc3d8bbec20d851ac5803847aac739d3283c"
        }
      ]
    },
    {
      "id": "edge:addresses:block:procedures:copy-misconception:misconception:procedures:assignment-copies",
      "from": "block:procedures:copy-misconception",
      "to": "misconception:procedures:assignment-copies",
      "relation": "ADDRESSES_MISCONCEPTION",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Misconception block mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "3bc9f9532d01ff9ddc3d73c2011cb22237d71975e8df367957544eb5ecc262c4"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:mutation-check",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:mutation-check",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "c1521e4b13947c837385429b8491504a76a7b7a2cd7eba3421d128a13ac42b22"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:lab",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:lab",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "8ee7b9b2518da4a47bbe186a53e2e283741e0673a7da0fca9c390782f4c507d8"
        }
      ]
    },
    {
      "id": "edge:cites:block:procedures:lab:source:python-tutorial-control",
      "from": "block:procedures:lab",
      "to": "source:python-tutorial-control",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:python-tutorial-control",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "fe000e8405bd8ca3c2a747a324c48034c1d225ea958bbde8d88cfb730d946806"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:static-table",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:static-table",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "e47e398b6f27e0205feb1712bab244e41e8938ea9e2870d1aaff1c7a1c5404a1"
        }
      ]
    },
    {
      "id": "edge:cites:block:procedures:static-table:source:python-tutorial-control",
      "from": "block:procedures:static-table",
      "to": "source:python-tutorial-control",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:python-tutorial-control",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "4735e6841e1f9e6f480a3714041654fe7239b01e05b0e552480925ad0c71eba3"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:transfer-setup",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:transfer-setup",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "4c93c5e50e5e3cefbd745026ba43224ebbc5ff40cfff90676bae3d8a8bf4d58b"
        }
      ]
    },
    {
      "id": "edge:cites:block:procedures:transfer-setup:source:python-tutorial-control",
      "from": "block:procedures:transfer-setup",
      "to": "source:python-tutorial-control",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:python-tutorial-control",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "a0493f46d05e919b30dbb6e6e4a4e3c3e7f53a98d8235908348b6323ce2d2e50"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:block:procedures:transfer-check",
      "from": "lesson:procedures-and-state:v2",
      "to": "block:procedures:transfer-check",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "5999948a97cc84c2feece1b2557b07e3da0b06467ce50dada13a12aed3a9ff01"
        }
      ]
    },
    {
      "id": "edge:contains:atlas:release:0.1-foundations-candidate:lesson:measurement-and-uncertainty:v2",
      "from": "atlas:release:0.1-foundations-candidate",
      "to": "lesson:measurement-and-uncertainty:v2",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Foundations lesson membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "6a00aac45afdb7966d1a494570f440e9c75a7eeba55004f51c58ea955abf3a41"
        }
      ]
    },
    {
      "id": "edge:teaches:lesson:measurement-and-uncertainty:v2:objective:measurement:report-result",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "objective:measurement:report-result",
      "relation": "TEACHES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Lesson objective declaration",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "acea0886b0a7c6e12bd32ed9ab90d448727345b9106d932ba6365db4098b3610"
        }
      ]
    },
    {
      "id": "edge:teaches:lesson:measurement-and-uncertainty:v2:objective:measurement:diagnose-error",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "objective:measurement:diagnose-error",
      "relation": "TEACHES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Lesson objective declaration",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "5086282e7be43a4a09971fa48dbcfb017d8e093016e39969b904480de8fa0b80"
        }
      ]
    },
    {
      "id": "edge:teaches:lesson:measurement-and-uncertainty:v2:objective:measurement:compare-precision-accuracy",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "objective:measurement:compare-precision-accuracy",
      "relation": "TEACHES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Lesson objective declaration",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "5df1ea3519e88c1952703ec33438af72105e3daab1f16c8d224dc06d9985c0bd"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:opening",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:opening",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "3057c3139872b63325c05a238bf719b72650913cf4de23111ad7aeb4e3a87308"
        }
      ]
    },
    {
      "id": "edge:cites:block:measurement:opening:source:openstax-physics-units",
      "from": "block:measurement:opening",
      "to": "source:openstax-physics-units",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-physics-units",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "781f2c423d250d6fae902bf9ff0db88428390bfbc803eb6e466e7ab76bae19a6"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:report-equation",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:report-equation",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "56efdcafe21ff4d04365e7a97b97934aaaed70de736215acb406f6db2502febb"
        }
      ]
    },
    {
      "id": "edge:cites:block:measurement:report-equation:source:openstax-physics-uncertainty",
      "from": "block:measurement:report-equation",
      "to": "source:openstax-physics-uncertainty",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-physics-uncertainty",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "9959651e4ef7e10a47bd041dd3575b06f3273c78bfe1342c11e0f9581b973386"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:display-misconception",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:display-misconception",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "6d7a063f7f61594f53b05dc2518e30eaf125341ead24c48b9ce20668e974acce"
        }
      ]
    },
    {
      "id": "edge:cites:block:measurement:display-misconception:source:openstax-physics-uncertainty",
      "from": "block:measurement:display-misconception",
      "to": "source:openstax-physics-uncertainty",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-physics-uncertainty",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "bae46285305d19454d92eab63d5799165310d8eb2dbcd36934b71a6b489496c1"
        }
      ]
    },
    {
      "id": "edge:addresses:block:measurement:display-misconception:misconception:measurement:display-certainty",
      "from": "block:measurement:display-misconception",
      "to": "misconception:measurement:display-certainty",
      "relation": "ADDRESSES_MISCONCEPTION",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Misconception block mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "a7fc53b9017a7bc5d703e3062b88e681cc21d2eb43c2d66dde487a8529c6b870"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:report-check",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:report-check",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "b9b385d2d0c8b59dd5c47fe538422a8617c4621eb6cd7d401f41589a30fcfa88"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:scatter-explanation",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:scatter-explanation",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "75cebd87f1809c9d79a638951a92738d802007cb34a285fe837260c1a38051de"
        }
      ]
    },
    {
      "id": "edge:cites:block:measurement:scatter-explanation:source:openstax-physics-uncertainty",
      "from": "block:measurement:scatter-explanation",
      "to": "source:openstax-physics-uncertainty",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-physics-uncertainty",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "d681f3dbc0e216523909620d9726d750b0788d2c30b0b0c66a8489e226bd0794"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:cluster-figure",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:cluster-figure",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "d0a4930365d23de444701a7ab2b8969f9fcdb19b77b443198499511c55e12f40"
        }
      ]
    },
    {
      "id": "edge:cites:block:measurement:cluster-figure:source:openstax-physics-uncertainty",
      "from": "block:measurement:cluster-figure",
      "to": "source:openstax-physics-uncertainty",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-physics-uncertainty",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "18883729c8f4ffb5a6e71f02b8495215cf710269058b72028d5332507a5da672"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:diagnostic-table",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:diagnostic-table",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "71ea7ca08db59c2a83ff7aa4c2230ee7564ea89ffa311439b6987ec51d94c478"
        }
      ]
    },
    {
      "id": "edge:cites:block:measurement:diagnostic-table:source:openstax-physics-uncertainty",
      "from": "block:measurement:diagnostic-table",
      "to": "source:openstax-physics-uncertainty",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-physics-uncertainty",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "4c3d9df3bb146b6684572c57cddfce7bd24c67b479e01d4691e2cdcec2e3792d"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:repeat-misconception",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:repeat-misconception",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "785e61aa47fc82886c1ffdb7cbf381c8f2dc777d2cf9f7e17b63e4b0da55d458"
        }
      ]
    },
    {
      "id": "edge:cites:block:measurement:repeat-misconception:source:openstax-physics-uncertainty",
      "from": "block:measurement:repeat-misconception",
      "to": "source:openstax-physics-uncertainty",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-physics-uncertainty",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "84e5522e857d49d9fc26d6c29d67cdfada8ad332bb1e290abfa22b1bff0d043f"
        }
      ]
    },
    {
      "id": "edge:addresses:block:measurement:repeat-misconception:misconception:measurement:repeat-removes-bias",
      "from": "block:measurement:repeat-misconception",
      "to": "misconception:measurement:repeat-removes-bias",
      "relation": "ADDRESSES_MISCONCEPTION",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Misconception block mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "aa9c99a16ad63e1bf806401318466b547603dc0748112dbe062b3457aa47cd13"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:error-check",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:error-check",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "e5da2b07d8060da2ed866da85fe10c964317abd2ea4759ab66eac945bc1b4582"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:timing-example",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:timing-example",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "b237bbe8a36ed0d45d7165b15984207f0c5f91b7a214d44e2ce4a41d3c5fe707"
        }
      ]
    },
    {
      "id": "edge:cites:block:measurement:timing-example:source:openstax-physics-uncertainty",
      "from": "block:measurement:timing-example",
      "to": "source:openstax-physics-uncertainty",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-physics-uncertainty",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "5b42c29d28fbd624f7b72da1ef144f3b9ce01014161e97af99125f21d9205391"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:percent-equation",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:percent-equation",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "bd19301ab2439323bf7e7ba8bd88306c11499a547bae6817b317350fe2f9c377"
        }
      ]
    },
    {
      "id": "edge:cites:block:measurement:percent-equation:source:openstax-physics-uncertainty",
      "from": "block:measurement:percent-equation",
      "to": "source:openstax-physics-uncertainty",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-physics-uncertainty",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "17b815fafefde436168042eaeaf7971435317a9b9ea3ec99293027b19f571fe0"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:percent-example",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:percent-example",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "67d148066ce8404f58198d2f896e158fce466b1e5fad3fe55326701f89b11e9b"
        }
      ]
    },
    {
      "id": "edge:cites:block:measurement:percent-example:source:openstax-physics-uncertainty",
      "from": "block:measurement:percent-example",
      "to": "source:openstax-physics-uncertainty",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-physics-uncertainty",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "9910ec79d0cb36a98dde3ca4e8d0332a100c2f9493388c478d69652ce1b759c8"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:precision-misconception",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:precision-misconception",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "7545d7b7bedc06567729eb07f8f70a10b2314b78f60087ffa92d8d24e8c8035e"
        }
      ]
    },
    {
      "id": "edge:cites:block:measurement:precision-misconception:source:openstax-physics-uncertainty",
      "from": "block:measurement:precision-misconception",
      "to": "source:openstax-physics-uncertainty",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-physics-uncertainty",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "2675611d114d95e5525099c580a7d12087cfe79d679369f30b5abad9f48b59ce"
        }
      ]
    },
    {
      "id": "edge:addresses:block:measurement:precision-misconception:misconception:measurement:precision-is-accuracy",
      "from": "block:measurement:precision-misconception",
      "to": "misconception:measurement:precision-is-accuracy",
      "relation": "ADDRESSES_MISCONCEPTION",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Misconception block mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "9ae33c8b28bc2888ab37dbd719e1aee9ffde896e946de058a7f6dbc1962bc299"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:lab",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:lab",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "4fe21c9dfb40dd7059eb0ba98cf8ba4f8637dccbb7c520a4728f420925971211"
        }
      ]
    },
    {
      "id": "edge:cites:block:measurement:lab:source:openstax-physics-uncertainty",
      "from": "block:measurement:lab",
      "to": "source:openstax-physics-uncertainty",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-physics-uncertainty",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "329c38711bbed528565fb314a0a6f6356ca0097e07556fcef20f5446361a1c96"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:lab-habit",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:lab-habit",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "c31d632dfac15f1a75f013a1a1c07bc5b21199016fb0761a8726c4f5bc0b8ec8"
        }
      ]
    },
    {
      "id": "edge:cites:block:measurement:lab-habit:source:atlas-method-v2",
      "from": "block:measurement:lab-habit",
      "to": "source:atlas-method-v2",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "775847f4ccdaeb33ffa7efa436aaa25b7718ed5f53bd96c22e4e39e3bb7d7ca9"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:transfer-setup",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:transfer-setup",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "12de8b7a05146b28209fa24bec5b4eef6c213f65ccb41bac897ab254217fa0e3"
        }
      ]
    },
    {
      "id": "edge:cites:block:measurement:transfer-setup:source:openstax-physics-uncertainty",
      "from": "block:measurement:transfer-setup",
      "to": "source:openstax-physics-uncertainty",
      "relation": "CITES",
      "provenance": [
        {
          "source_id": "source:openstax-physics-uncertainty",
          "locator": "Content-block provenance",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "5c552662fad3088f6888f5bfe1f981051ac92d9fd9825b9a59edeebfc6d75e77"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:block:measurement:transfer-check",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "block:measurement:transfer-check",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Ordered lesson movement",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "44db4cadede0a85feb8b34b5ad3d249a94d8cfe277b89feef0400c6093344bc6"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:scale:quantity-kind:objective:scale:interpret-quantity",
      "from": "assessment:scale:quantity-kind",
      "to": "objective:scale:interpret-quantity",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "3d1854fab88fbb324203af830644f813ad9dce76637be298dce0277a565f666d"
        }
      ]
    },
    {
      "id": "edge:retrieves:assessment:scale:quantity-kind:objective:scale:interpret-quantity",
      "from": "assessment:scale:quantity-kind",
      "to": "objective:scale:interpret-quantity",
      "relation": "RETRIEVES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "286c0c9b09b2a190c8dbba2cc2af23c1bb81c201b2ef91cdac8a8f7ef7a16c13"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:scale:model-length:objective:scale:apply-ratio",
      "from": "assessment:scale:model-length",
      "to": "objective:scale:apply-ratio",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "d08103ec6f4fbfd046595b80c2693c0079c37e0a29f75119b9cd21d1bea52eae"
        }
      ]
    },
    {
      "id": "edge:retrieves:assessment:scale:model-length:objective:scale:apply-ratio",
      "from": "assessment:scale:model-length",
      "to": "objective:scale:apply-ratio",
      "relation": "RETRIEVES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "d800c09b93acd46b498efe7ac2b16d84f683e3ca3f5084d826c8969183d61f95"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:scale:unit-order:objective:scale:check-dimensions",
      "from": "assessment:scale:unit-order",
      "to": "objective:scale:check-dimensions",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "ac673ac011bc1ad13315178a5bbba52e7f85bc1c11f2ad2131ef8122a452ba25"
        }
      ]
    },
    {
      "id": "edge:retrieves:assessment:scale:unit-order:objective:scale:check-dimensions",
      "from": "assessment:scale:unit-order",
      "to": "objective:scale:check-dimensions",
      "relation": "RETRIEVES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "ba500497d2e7d73debb1ce0b0366e5ffca12deb6f1daaadff4149f3fce707eea"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:scale:transfer:objective:scale:interpret-quantity",
      "from": "assessment:scale:transfer",
      "to": "objective:scale:interpret-quantity",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "4186ff4f24f7c3dae266ca9fc5ac81af0b8844fe5630b0034f88f712b22165cf"
        }
      ]
    },
    {
      "id": "edge:transfersto:assessment:scale:transfer:objective:scale:interpret-quantity",
      "from": "assessment:scale:transfer",
      "to": "objective:scale:interpret-quantity",
      "relation": "TRANSFERS_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "d5118ee513e8102c8d6adf39467a2762d23fd3d95fcb485c976ce6900dae4b21"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:scale:transfer:objective:scale:apply-ratio",
      "from": "assessment:scale:transfer",
      "to": "objective:scale:apply-ratio",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "a0b415f9c18687d0a2d8c67cdf8f17bc9b8bc6e43075d4611b54c12de1601dc3"
        }
      ]
    },
    {
      "id": "edge:transfersto:assessment:scale:transfer:objective:scale:apply-ratio",
      "from": "assessment:scale:transfer",
      "to": "objective:scale:apply-ratio",
      "relation": "TRANSFERS_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "0569e599504da7e6f88ee553bc3cd67c2eda27220a7823e100d4ed51beffb503"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:scale:transfer:objective:scale:check-dimensions",
      "from": "assessment:scale:transfer",
      "to": "objective:scale:check-dimensions",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "0afc58c940925e044e90c2d26eef06813769104d1a85e5f6accd67fc46179c35"
        }
      ]
    },
    {
      "id": "edge:transfersto:assessment:scale:transfer:objective:scale:check-dimensions",
      "from": "assessment:scale:transfer",
      "to": "objective:scale:check-dimensions",
      "relation": "TRANSFERS_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "6d4ceae1b30b3e590738e854c47b504380b2a2ef28b2cd1e01cc4c0d9f30d29e"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:procedures:assignment-trace:objective:procedures:trace-state",
      "from": "assessment:procedures:assignment-trace",
      "to": "objective:procedures:trace-state",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "fe568c9862b673146ee3fcf133926808e9d9fc0b919178f6baf285449a843acd"
        }
      ]
    },
    {
      "id": "edge:retrieves:assessment:procedures:assignment-trace:objective:procedures:trace-state",
      "from": "assessment:procedures:assignment-trace",
      "to": "objective:procedures:trace-state",
      "relation": "RETRIEVES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "7002b2faee7e3b168b451f4490a4fc7b8d27aeddd147d4cbf66ba10866ebcd77"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:procedures:loop-invariant:objective:procedures:predict-loop",
      "from": "assessment:procedures:loop-invariant",
      "to": "objective:procedures:predict-loop",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "b39edfd8b979367725b360120958705bd1d62f59804382c80265ae27f13ce671"
        }
      ]
    },
    {
      "id": "edge:retrieves:assessment:procedures:loop-invariant:objective:procedures:predict-loop",
      "from": "assessment:procedures:loop-invariant",
      "to": "objective:procedures:predict-loop",
      "relation": "RETRIEVES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "114ee556452eec596f7c61e7ed40e06a4e39225c6e1d7f68f877f949fc1d97c8"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:procedures:mutation-selection:objective:procedures:distinguish-mutation",
      "from": "assessment:procedures:mutation-selection",
      "to": "objective:procedures:distinguish-mutation",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "65d995de59617584ace49ac52fb5d794c6ba615d634d264a59ac1fe92b95acb0"
        }
      ]
    },
    {
      "id": "edge:retrieves:assessment:procedures:mutation-selection:objective:procedures:distinguish-mutation",
      "from": "assessment:procedures:mutation-selection",
      "to": "objective:procedures:distinguish-mutation",
      "relation": "RETRIEVES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "0304069fc7f712775fe9bd5c6cf629a27bde85a90b20522bb4421dfe5744ab6b"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:procedures:transfer-trace:objective:procedures:trace-state",
      "from": "assessment:procedures:transfer-trace",
      "to": "objective:procedures:trace-state",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "c02d490c84670a5f6b07359c4a892187d46f53e1edbd7aabe132d0aaa4bd79fd"
        }
      ]
    },
    {
      "id": "edge:transfersto:assessment:procedures:transfer-trace:objective:procedures:trace-state",
      "from": "assessment:procedures:transfer-trace",
      "to": "objective:procedures:trace-state",
      "relation": "TRANSFERS_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "c01314558c8ba702d390870d1570ea076286a044f44815cbc956813d412a8d69"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:procedures:transfer-trace:objective:procedures:predict-loop",
      "from": "assessment:procedures:transfer-trace",
      "to": "objective:procedures:predict-loop",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "0dba6fd9dd5a4bc370a3d88e6540d7c2973067dd416c39f50f8880dbb81d9a1b"
        }
      ]
    },
    {
      "id": "edge:transfersto:assessment:procedures:transfer-trace:objective:procedures:predict-loop",
      "from": "assessment:procedures:transfer-trace",
      "to": "objective:procedures:predict-loop",
      "relation": "TRANSFERS_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "79f4e13550bc1170ab52251e10520c65eb66828aab554aaeededb1568b5d05dc"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:procedures:transfer-trace:objective:procedures:distinguish-mutation",
      "from": "assessment:procedures:transfer-trace",
      "to": "objective:procedures:distinguish-mutation",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "a947ccdf3cfc9657ce0678b3bc41b8ab51fa14a9f3f1f7a3607257a4b3b14dc7"
        }
      ]
    },
    {
      "id": "edge:transfersto:assessment:procedures:transfer-trace:objective:procedures:distinguish-mutation",
      "from": "assessment:procedures:transfer-trace",
      "to": "objective:procedures:distinguish-mutation",
      "relation": "TRANSFERS_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "dfc0e800c2f69f57b00d6016afcefec2466cf23f89c88bcd8b7a1bf300201064"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:measurement:report:objective:measurement:report-result",
      "from": "assessment:measurement:report",
      "to": "objective:measurement:report-result",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "bea0191ffed259cde2a19338b18805e3c4cb2c2cf5360ddd949f3b6a2585a5b2"
        }
      ]
    },
    {
      "id": "edge:retrieves:assessment:measurement:report:objective:measurement:report-result",
      "from": "assessment:measurement:report",
      "to": "objective:measurement:report-result",
      "relation": "RETRIEVES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "7506de72d45e4ad5143de972b7a5fb0143656d23986d3fc26b1d3a70458b37b9"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:measurement:error-sources:objective:measurement:diagnose-error",
      "from": "assessment:measurement:error-sources",
      "to": "objective:measurement:diagnose-error",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "102d83ba430a45dc616d83c81a7a9d61b17c969e8ee7a642623a021687560b8d"
        }
      ]
    },
    {
      "id": "edge:retrieves:assessment:measurement:error-sources:objective:measurement:diagnose-error",
      "from": "assessment:measurement:error-sources",
      "to": "objective:measurement:diagnose-error",
      "relation": "RETRIEVES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "7430e4179b501ff9a473ff42032796abd2fd3941c2e03466ebcf8893173f5e01"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:measurement:cluster:objective:measurement:compare-precision-accuracy",
      "from": "assessment:measurement:cluster",
      "to": "objective:measurement:compare-precision-accuracy",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "df0a96d33707e292b6daed7d1b33cb9e7ab6f3aadb524420f7a00d60bc71c515"
        }
      ]
    },
    {
      "id": "edge:retrieves:assessment:measurement:cluster:objective:measurement:compare-precision-accuracy",
      "from": "assessment:measurement:cluster",
      "to": "objective:measurement:compare-precision-accuracy",
      "relation": "RETRIEVES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "5b488e88eb2addab3142ab5847ddc0e73b463c520abff66952582fd53613caf1"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:measurement:transfer:objective:measurement:report-result",
      "from": "assessment:measurement:transfer",
      "to": "objective:measurement:report-result",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "f40aedc77be38195ea21b96ddd81d9afea5ef5157b9bd729146edf6f1516a530"
        }
      ]
    },
    {
      "id": "edge:transfersto:assessment:measurement:transfer:objective:measurement:report-result",
      "from": "assessment:measurement:transfer",
      "to": "objective:measurement:report-result",
      "relation": "TRANSFERS_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "400f4f549e91c1ccf6eac0dd27c309104acae8c2db6cd4f7cfce0e1c8c638813"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:measurement:transfer:objective:measurement:diagnose-error",
      "from": "assessment:measurement:transfer",
      "to": "objective:measurement:diagnose-error",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "41009e4b3d5c757cbbc6f607019adc219367ecd1c7b10168d557f3eebdcbc30f"
        }
      ]
    },
    {
      "id": "edge:transfersto:assessment:measurement:transfer:objective:measurement:diagnose-error",
      "from": "assessment:measurement:transfer",
      "to": "objective:measurement:diagnose-error",
      "relation": "TRANSFERS_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "823c50caab6cb7ee3e24273f10d67a2a8573f42f4fc6cd62771f13cd01340596"
        }
      ]
    },
    {
      "id": "edge:assesses:assessment:measurement:transfer:objective:measurement:compare-precision-accuracy",
      "from": "assessment:measurement:transfer",
      "to": "objective:measurement:compare-precision-accuracy",
      "relation": "ASSESSES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment objective mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "4271bb90f70b26764458e4e514f1983229fed04fc37d95dd130c3af57f807cfe"
        }
      ]
    },
    {
      "id": "edge:transfersto:assessment:measurement:transfer:objective:measurement:compare-precision-accuracy",
      "from": "assessment:measurement:transfer",
      "to": "objective:measurement:compare-precision-accuracy",
      "relation": "TRANSFERS_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Assessment evidence-kind mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "a20c048565b4d51c0f6171b7b373a05505e69e6449597b051ea2b0e558cb68d2"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:quantities-ratios-and-scale:v2:simulation:scale-bench-v2",
      "from": "lesson:quantities-ratios-and-scale:v2",
      "to": "simulation:scale-bench-v2",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Lesson simulation mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "89510a5018004801f2d5ce63b1aed04f6e43e50f1c11a89bf901cf36bce64277"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:procedures-and-state:v2:simulation:procedure-trace-v2",
      "from": "lesson:procedures-and-state:v2",
      "to": "simulation:procedure-trace-v2",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Lesson simulation mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "63ea8d720440b9cbd30ffc05000ee2052ce4ddb275ea538973799c33c3693d1d"
        }
      ]
    },
    {
      "id": "edge:contains:lesson:measurement-and-uncertainty:v2:simulation:measurement-bench-v2",
      "from": "lesson:measurement-and-uncertainty:v2",
      "to": "simulation:measurement-bench-v2",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Lesson simulation mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "3d79374ef5fb5e85fdab8b18c6688f005716510a58839c3e4311650000c15e4c"
        }
      ]
    },
    {
      "id": "edge:applies:simulation:robust-selection-v1:concept:quantities-ratios-and-scale",
      "from": "simulation:robust-selection-v1",
      "to": "concept:quantities-ratios-and-scale",
      "relation": "APPLIES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Concept-anchored supplemental simulation",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "5aa5798d750b27e4337217b078c07a8df3b5eefc84926d42714db68766f0ee69"
        }
      ]
    },
    {
      "id": "edge:applies:simulation:robust-selection-v1:concept:probability-as-evidence",
      "from": "simulation:robust-selection-v1",
      "to": "concept:probability-as-evidence",
      "relation": "APPLIES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Concept-anchored supplemental simulation",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "e9cacc954bd11301074f00d42add7d2e6f51d882c4e2d3d60c8490b70444ea06"
        }
      ]
    },
    {
      "id": "edge:applies:simulation:robust-selection-v1:concept:learning-systems-and-evaluation",
      "from": "simulation:robust-selection-v1",
      "to": "concept:learning-systems-and-evaluation",
      "relation": "APPLIES",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Concept-anchored supplemental simulation",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "ee1936529ce4b1e63a57dd62a49cefb5e684fe59e5b581525868da789b712b9a"
        }
      ]
    },
    {
      "id": "edge:transfers:project:climate-signal-ledger-v2:objective:measurement:diagnose-error",
      "from": "project:climate-signal-ledger-v2",
      "to": "objective:measurement:diagnose-error",
      "relation": "TRANSFERS_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Project evidence mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "70556071265b2c3bb8b5f1d96362f98a9aa30aff19a8475e416260c93794b111"
        }
      ]
    },
    {
      "id": "edge:transfers:project:small-search-engine-v2:objective:procedures:trace-state",
      "from": "project:small-search-engine-v2",
      "to": "objective:procedures:trace-state",
      "relation": "TRANSFERS_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Project evidence mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "1f4f1df43db93282b5898b568c25885e93f4b8a199852204aeb3b0f316d570c2"
        }
      ]
    },
    {
      "id": "edge:transfers:project:orbital-model-audit-v2:objective:measurement:report-result",
      "from": "project:orbital-model-audit-v2",
      "to": "objective:measurement:report-result",
      "relation": "TRANSFERS_TO",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Project evidence mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "491d3a108b1a3de186d134b4b5753852be73ba71afe0b341aee6f9fa53bbda2c"
        }
      ]
    },
    {
      "id": "edge:contains:atlas:media:vector-meridian:0.1-candidate:video:modern-llms-from-scratch",
      "from": "atlas:media:vector-meridian:0.1-candidate",
      "to": "video:modern-llms-from-scratch",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Media catalog membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "b47d790ec7b9366f98999e0417cbe6992e9a8a4cac866aff1bc3fb98f61f3049"
        }
      ]
    },
    {
      "id": "edge:contains:video:modern-llms-from-scratch:chapter:modern-llms-from-scratch:field-film",
      "from": "video:modern-llms-from-scratch",
      "to": "chapter:modern-llms-from-scratch:field-film",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Video chapter membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "45e40036bb7735c4adcc058d734fb82e5aa869c1bf8996b865f7fc7fd6f9ae5b"
        }
      ]
    },
    {
      "id": "edge:illustrates:chapter:modern-llms-from-scratch:field-film:concept:learning-systems-and-evaluation",
      "from": "chapter:modern-llms-from-scratch:field-film",
      "to": "concept:learning-systems-and-evaluation",
      "relation": "ILLUSTRATES",
      "provenance": [
        {
          "source_id": "source:video:modern-llms-from-scratch",
          "locator": "Reviewed chapter mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "525665119f6db006bfdafbe8acd6dfb106ed38fec2d165a04889075942b5c950"
        }
      ]
    },
    {
      "id": "edge:contains:atlas:media:vector-meridian:0.1-candidate:video:kimi-k3-inside-the-2-8t-model",
      "from": "atlas:media:vector-meridian:0.1-candidate",
      "to": "video:kimi-k3-inside-the-2-8t-model",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Media catalog membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "05a4d7deff7e4642bf6254ad58a5c5325c1bb4d7842bf51e437891d20ebf2beb"
        }
      ]
    },
    {
      "id": "edge:contains:video:kimi-k3-inside-the-2-8t-model:chapter:kimi-k3:model-case-study",
      "from": "video:kimi-k3-inside-the-2-8t-model",
      "to": "chapter:kimi-k3:model-case-study",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Video chapter membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "4c6bfff11d1374921f1c88a746d06c600d03742319b2c9e2a885f5b7674b382d"
        }
      ]
    },
    {
      "id": "edge:illustrates:chapter:kimi-k3:model-case-study:concept:learning-systems-and-evaluation",
      "from": "chapter:kimi-k3:model-case-study",
      "to": "concept:learning-systems-and-evaluation",
      "relation": "ILLUSTRATES",
      "provenance": [
        {
          "source_id": "source:video:kimi-k3",
          "locator": "Reviewed chapter mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "9b2a9107aa3a53c16d135fcc1df02c41f7345b1c5d52a79454484659e9ad46fb"
        }
      ]
    },
    {
      "id": "edge:illustrates:chapter:kimi-k3:model-case-study:concept:algorithms-and-cost",
      "from": "chapter:kimi-k3:model-case-study",
      "to": "concept:algorithms-and-cost",
      "relation": "ILLUSTRATES",
      "provenance": [
        {
          "source_id": "source:video:kimi-k3",
          "locator": "Reviewed chapter mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "a2149361f7fa8da7e753dfc75a40dc008b080f7857a5b59ae1df575f85cc1f84"
        }
      ]
    },
    {
      "id": "edge:contains:atlas:media:vector-meridian:0.1-candidate:video:who-really-invented-ai",
      "from": "atlas:media:vector-meridian:0.1-candidate",
      "to": "video:who-really-invented-ai",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Media catalog membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "f71d4a9eb8ac6e718f87e609b44056da1a2358eb8987c6454089c08f164fefb7"
        }
      ]
    },
    {
      "id": "edge:contains:video:who-really-invented-ai:chapter:ai-history:credit-and-lineage",
      "from": "video:who-really-invented-ai",
      "to": "chapter:ai-history:credit-and-lineage",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Video chapter membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "fff333e39b3a929cdcf109ac46aeb892661a051add85da59daa42cb8e55ca142"
        }
      ]
    },
    {
      "id": "edge:illustrates:chapter:ai-history:credit-and-lineage:concept:learning-systems-and-evaluation",
      "from": "chapter:ai-history:credit-and-lineage",
      "to": "concept:learning-systems-and-evaluation",
      "relation": "ILLUSTRATES",
      "provenance": [
        {
          "source_id": "source:video:ai-history",
          "locator": "Reviewed chapter mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "273b9e4cab30e5a2aceaf5537af89c59bc89758e86320bc4d361737720643e0c"
        }
      ]
    },
    {
      "id": "edge:contains:atlas:media:vector-meridian:0.1-candidate:video:jepa-explained",
      "from": "atlas:media:vector-meridian:0.1-candidate",
      "to": "video:jepa-explained",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Media catalog membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "570dd0c2f4067c10ebb6960a9756db63396ba4e0b68129b95e4463739a6159e0"
        }
      ]
    },
    {
      "id": "edge:contains:video:jepa-explained:chapter:jepa:representation-and-prediction",
      "from": "video:jepa-explained",
      "to": "chapter:jepa:representation-and-prediction",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Video chapter membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "1fce9f43c78d004261de45bd7c6e74e3cc1ec24723b6e79670eed130ef742b4e"
        }
      ]
    },
    {
      "id": "edge:illustrates:chapter:jepa:representation-and-prediction:concept:learning-systems-and-evaluation",
      "from": "chapter:jepa:representation-and-prediction",
      "to": "concept:learning-systems-and-evaluation",
      "relation": "ILLUSTRATES",
      "provenance": [
        {
          "source_id": "source:video:jepa",
          "locator": "Reviewed chapter mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "ef9b414cd51de4dd0ff3bd596c8ed18e332e54abab53f9fc4d7d66cb7ff2096b"
        }
      ]
    },
    {
      "id": "edge:contains:atlas:media:vector-meridian:0.1-candidate:video:ai-evaluation-security-incident",
      "from": "atlas:media:vector-meridian:0.1-candidate",
      "to": "video:ai-evaluation-security-incident",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Media catalog membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "3bbc39bd10c412ed3c9d69da85dd78a5df849e00e85dc5fc342f682eb8047419"
        }
      ]
    },
    {
      "id": "edge:contains:video:ai-evaluation-security-incident:chapter:security-incident:boundary-is-the-product",
      "from": "video:ai-evaluation-security-incident",
      "to": "chapter:security-incident:boundary-is-the-product",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Video chapter membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "b9a59e49487c39ce8a54b2b4edad0134cdab4c1d3a5bb18349211e14e5a15d5c"
        }
      ]
    },
    {
      "id": "edge:illustrates:chapter:security-incident:boundary-is-the-product:concept:ownership-and-systems",
      "from": "chapter:security-incident:boundary-is-the-product",
      "to": "concept:ownership-and-systems",
      "relation": "ILLUSTRATES",
      "provenance": [
        {
          "source_id": "source:video:security-incident",
          "locator": "Reviewed chapter mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "b0be1a54ab606cbbc20c26f2fe311a9488712662da16c6f92354a8f013078f1b"
        }
      ]
    },
    {
      "id": "edge:contains:atlas:media:vector-meridian:0.1-candidate:video:j-space-explained",
      "from": "atlas:media:vector-meridian:0.1-candidate",
      "to": "video:j-space-explained",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Media catalog membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "2f314481a2ff4e6fbf264780d844a4ad7190d9bd54cb81dec774ea8bb7508754"
        }
      ]
    },
    {
      "id": "edge:contains:video:j-space-explained:chapter:j-space:representation-not-consciousness",
      "from": "video:j-space-explained",
      "to": "chapter:j-space:representation-not-consciousness",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Video chapter membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "d671a842d750b7feaf4e80638034c990c6895055b7e0be49a9147fed750cb36b"
        }
      ]
    },
    {
      "id": "edge:illustrates:chapter:j-space:representation-not-consciousness:concept:learning-systems-and-evaluation",
      "from": "chapter:j-space:representation-not-consciousness",
      "to": "concept:learning-systems-and-evaluation",
      "relation": "ILLUSTRATES",
      "provenance": [
        {
          "source_id": "source:video:j-space",
          "locator": "Reviewed chapter mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "14afe213785eae01351b50858964c0461a8053cd6bfbc2fd93b461ed5059a5e2"
        }
      ]
    },
    {
      "id": "edge:contains:atlas:media:vector-meridian:0.1-candidate:video:looped-transformers-explained",
      "from": "atlas:media:vector-meridian:0.1-candidate",
      "to": "video:looped-transformers-explained",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Media catalog membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "2a8094c25e4722b254eab3886fe9890628a988da4d7007cc11002afcc1822429"
        }
      ]
    },
    {
      "id": "edge:contains:video:looped-transformers-explained:chapter:looped-transformers:iterative-state",
      "from": "video:looped-transformers-explained",
      "to": "chapter:looped-transformers:iterative-state",
      "relation": "CONTAINS",
      "provenance": [
        {
          "source_id": "source:atlas-method-v2",
          "locator": "Video chapter membership",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "ea6c0a50d1af7419385d26df25f7f4b408efc83369d46f9ab7527ac59508183d"
        }
      ]
    },
    {
      "id": "edge:illustrates:chapter:looped-transformers:iterative-state:concept:algorithms-and-cost",
      "from": "chapter:looped-transformers:iterative-state",
      "to": "concept:algorithms-and-cost",
      "relation": "ILLUSTRATES",
      "provenance": [
        {
          "source_id": "source:video:looped-transformers",
          "locator": "Reviewed chapter mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "494b0754d8c13e9073d57a6117bfae3384f0e65ae112431e467c188684e96382"
        }
      ]
    },
    {
      "id": "edge:illustrates:chapter:looped-transformers:iterative-state:concept:learning-systems-and-evaluation",
      "from": "chapter:looped-transformers:iterative-state",
      "to": "concept:learning-systems-and-evaluation",
      "relation": "ILLUSTRATES",
      "provenance": [
        {
          "source_id": "source:video:looped-transformers",
          "locator": "Reviewed chapter mapping",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "dc0bd4f7ca612a595d80b0623be365fc38f899a9d14c4641ae0e90ed6a950d46"
        }
      ]
    },
    {
      "id": "edge:supported_by:claim:quantity-unit-dimension:source:openstax-physics-units",
      "from": "claim:quantity-unit-dimension",
      "to": "source:openstax-physics-units",
      "relation": "SUPPORTED_BY",
      "provenance": [
        {
          "source_id": "source:openstax-physics-units",
          "locator": "Claim provenance locator",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "5b6dc5061775597055054a5ae6039bc03c8efe107985a6ff4d9070cbd22138c2"
        }
      ]
    },
    {
      "id": "edge:supported_by:claim:assignment-updates-state:source:python-reference-simple",
      "from": "claim:assignment-updates-state",
      "to": "source:python-reference-simple",
      "relation": "SUPPORTED_BY",
      "provenance": [
        {
          "source_id": "source:python-reference-simple",
          "locator": "Claim provenance locator",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "ceac539b21da0dd04aa19266324ff8e59f2091e33655823305b9926ca99944b7"
        }
      ]
    },
    {
      "id": "edge:supported_by:claim:precision-not-accuracy:source:openstax-physics-uncertainty",
      "from": "claim:precision-not-accuracy",
      "to": "source:openstax-physics-uncertainty",
      "relation": "SUPPORTED_BY",
      "provenance": [
        {
          "source_id": "source:openstax-physics-uncertainty",
          "locator": "Claim provenance locator",
          "method": "derived",
          "recorded_at": "2026-08-15T12:00:00Z",
          "confidence": 1,
          "content_hash": "f9056b6353d640f9df7b990c742e544d4443467509b16319af5ac77720b9d86d"
        }
      ]
    }
  ],
  "manifest_sha256": "b03f03f0c7fa94c136b786772948f25a65d00ef12f3404dd16ebe166bd2c141f",
  "benchmarking_studies": [
    {
      "id": "graph:foundations-gate-quality",
      "study_id": "graph-precision-gate-50",
      "cohort_id": "review-workflow-pilot",
      "retention_horizon_days": 0,
      "scoring_rule": "manual precision on sampled claim/entity/relation assertions",
      "evidence_artifact": "content/quality/foundations-50-sample.json",
      "decision_context": "Required before additional lesson conversions."
    },
    {
      "id": "graph:foundations-benchmark-200",
      "study_id": "graph-precision-gate-200",
      "cohort_id": "design-partner-gate",
      "retention_horizon_days": 14,
      "scoring_rule": ">=0.95 precision on stratified 200-item sample",
      "evidence_artifact": "content/quality/foundations-200-sample.json",
      "decision_context": "Required before candidate release transitions, and before any public delivery claims."
    }
  ],
  "release_decision_context": "No expansion decision or superiority language until reviewed claims/competency coverage and learner evidence gates are demonstrated on this manifest and retained through one release commit."
}
