{
  "title": "Follow an asset across its carriers — Virtual Acoustic Objects",
  "text": "MODAVIS (2026). Follow an asset across its carriers — Virtual Acoustic Objects. Research notebooks, September 2026 · Cuntz worked examples edition. https://modavis.org/editions/2026-09-r5/vao/delivery/",
  "bibtex": "@misc{modavis_vao_delivery_2026_09_r5,\n  author = {{MODAVIS}},\n  title = {Follow an asset across its carriers — Virtual Acoustic Objects},\n  year = {2026},\n  month = {09},\n  version = {2026-09-r5},\n  url = {https://modavis.org/editions/2026-09-r5/vao/delivery/},\n  note = {Content SHA-256: 3e50d57f698c497ca400091f2b270a6c7afff6df620727ff6a33081638e90101}\n}",
  "url": "https://modavis.org/editions/2026-09-r5/vao/delivery/",
  "sha256": "3e50d57f698c497ca400091f2b270a6c7afff6df620727ff6a33081638e90101",
  "edition": "2026-09-r5",
  "date": "2026-09-26",
  "canonicalPayload": "{\"book\":{\"number\":\"01\",\"slug\":\"vao\",\"title\":\"Virtual Acoustic Objects\"},\"chapter\":{\"blocks\":[{\"items\":[{\"detail\":\"A continuous worked example: readable explanations, exact records and the limits of each claim.\",\"href\":\"/notebooks/standards/cuntz/\",\"label\":\"Learn this through the Cuntz organ\"}],\"type\":\"links\"},{\"id\":\"release-and-carrier\",\"text\":\"One semantic release, several useful packages\",\"type\":\"heading\"},{\"text\":\"The VAO 0.5.0 manifest is the semantic contract: it identifies assets, realizations, relationships and the relevant capabilities. A carrier is a particular package of bytes. A bootstrap carrier supplies discovery and evidence material; a preservation carrier supplies the preservation closure; a custom carrier can collect a selected dependency closure. These roles answer different access needs while referring to the same unchanged manifest.\",\"type\":\"p\"},{\"text\":\"An asset expresses a role in the research object, such as an exterior geometry or an audio recording. A realization identifies a particular encoded form with an exact byte size and SHA-256 digest. A distribution tells a resolver where to obtain it. Treating these as distinct avoids confusing a convenient URL, a low-resolution derivative and the scientific asset they serve.\",\"type\":\"p\"},{\"id\":\"exact-resolution\",\"text\":\"Resolve an exact version before selecting material\",\"type\":\"heading\"},{\"text\":\"Discovery can begin with a concept-level landing page or a search result, but reproducible acquisition needs an exact release. The Dynamic Delivery Profile connects external carriers through exact identifiers, including the version PID, record and file identities, carrier ID and descriptor digest where applicable. A resolver checks the actual carrier descriptor and obtains the member path from that descriptor. A filename or an HTTP ETag alone is not the realization identity.\",\"type\":\"p\"},{\"items\":[\"Inspect the release identity and manifest before choosing assets. Record the exact version used.\",\"Select realizations suitable for the task, then compute their required dependency and fallback closure. Dependency and fallback graphs must be acyclic.\",\"Retrieve the identified carrier or member bytes. Verify expected size and digest before exposing a realization as acquired.\",\"Retain an acquisition receipt that distinguishes attempted, failed and verified retrieval. An inaccessible file gets a diagnostic, not an invented successful byte identity.\"],\"type\":\"list\"},{\"boundary\":\"This website verifies the model’s expected byte length and full SHA-256 before passing it to the renderer. That is a file-identity check, not a VAO conformance report.\",\"concept\":\"A checksum is a fingerprint calculated from bytes. Fixity checking compares that fingerprint with a trusted expected value to detect changed or mismatched files.\",\"expanded\":false,\"id\":\"cuntz-fixity\",\"scenario\":\"The published GLB source for this notebook has SHA-256 beginning 19527c2188b08d85. The display derivative has a different digest because its texture and encoding were changed.\",\"sources\":[{\"detail\":\"Published manifest: identities, measurement observations, realization digests, profiles and rights. Exact examples checked against this release.\",\"href\":\"https://doi.org/10.5281/zenodo.22151203\",\"label\":\"Cuntz Positiv · VAO 0.5.0-rc.2\"},{\"detail\":\"The standard contract is separate from the Cuntz dataset content version 0.5.0-rc.2.\",\"href\":\"https://doi.org/10.5281/zenodo.22214248\",\"label\":\"VAO Standard 0.5.0\"}],\"steps\":[{\"text\":\"Check the complete source GLB digest against the exact source realization. Compare the website derivative against its own expected digest, not against the source GLB’s digest.\",\"title\":\"Compare like with like\"},{\"text\":\"A texture conversion or mesh encoding change produces a different file identity. Even reformatting a JSON manifest can change its exact-byte hash without changing its parsed meaning.\",\"title\":\"Notice byte-changing edits\"},{\"text\":\"Matching bytes establish which representation was obtained. The digest does not verify the model’s physical scale, the pipe measurement method or a claim about the sound of 1610.\",\"title\":\"Keep the scientific question separate\"}],\"takeaway\":\"Fixity makes evidence identifiable; it does not independently validate the evidence’s interpretation.\",\"title\":\"What does the model’s SHA-256 prove?\",\"type\":\"example\"},{\"id\":\"selection-example\",\"text\":\"A mobile selection, step by step\",\"type\":\"heading\"},{\"text\":\"Imagine a release with a detailed geometry, a smaller geometry and several audio realizations. A mobile selection asks for a suitable subset and its dependencies; it does not redefine the historical instrument. If the selected geometry depends on a material or coordinate frame, that dependency remains part of the usable selection. If a requested profile needs an unavailable group, the client should report that the profile is not materialized instead of silently treating the partial download as complete.\",\"type\":\"p\"},{\"label\":\"VAO CLI 0.3.1 source workflow · replace the value with an exact VAO version DOI\",\"text\":\"# These commands are documented for source version 0.3.1.\\n# Check your installed version and command help before use.\\nVAO_DOI=\\\"<exact version DOI of your VAO object>\\\"\\nvao resolve \\\"$VAO_DOI\\\" --exact\\nvao inspect \\\"$VAO_DOI\\\" --exact --assets --groups --archive\\nvao select \\\"$VAO_DOI\\\" --kind geometry --quality low --max-bytes 100MiB\",\"type\":\"code\"},{\"text\":\"The placeholder must identify a VAO research object, not the DOI of the standard itself. Selection is a planning step; inspect its result before a fetch or materialization. The archived CLI 0.2.0 is a separate release and must not be assumed to implement the 0.3.1 source workflow. A reproducible record includes the actual CLI version as well as the object version.\",\"type\":\"p\"},{\"boundary\":\"This example explains the selection rule; it does not assert that the published Cuntz GLB uses an external texture or that the web viewer executes a complete VAO.\",\"concept\":\"A dependency is something an item needs to work as declared. Closure means including everything required by the selected items, continuing until no required dependency is missing.\",\"expanded\":false,\"id\":\"cuntz-closure\",\"scenario\":\"Imagine a Cuntz display model delivered with a separate material texture. This is an illustrative delivery scenario; the notebook’s GLB instead embeds its texture.\",\"sources\":[{\"detail\":\"Published manifest: identities, measurement observations, realization digests, profiles and rights. Exact examples checked against this release.\",\"href\":\"https://doi.org/10.5281/zenodo.22151203\",\"label\":\"Cuntz Positiv · VAO 0.5.0-rc.2\"},{\"detail\":\"The standard contract is separate from the Cuntz dataset content version 0.5.0-rc.2.\",\"href\":\"https://doi.org/10.5281/zenodo.22214248\",\"label\":\"VAO Standard 0.5.0\"}],\"steps\":[{\"text\":\"Begin with the geometry realization needed for the task. Selecting its name alone does not guarantee a complete visual representation.\",\"title\":\"Select the model\"},{\"text\":\"If the model needs a texture, include it. If a playback task also requires a sample map and audio files, follow those requirements too. Do not confuse optional enhancements with mandatory dependencies.\",\"title\":\"Follow every declared requirement\"},{\"text\":\"Only after the required bytes are acquired and verified can the selected capability be described as materialized. Record missing resources as missing rather than silently substituting unrelated files.\",\"title\":\"Verify the complete selection\"}],\"takeaway\":\"Closure is the complete set of prerequisites for a chosen task, not necessarily the entire archive.\",\"title\":\"What does “dependency closure” mean for a model?\",\"type\":\"example\"},{\"id\":\"custom-carriers\",\"text\":\"When a smaller package is still the same release\",\"type\":\"heading\"},{\"text\":\"A custom carrier can retain the original manifest bytes and package selected verified realizations under a new carrier identity. That changes delivery without changing the semantic release. Transcoding an audio file or simplifying a geometry is different: the result has new bytes and must be represented as a new realization with its derivation. Renaming a file does not make a derived object scientifically equivalent to its source.\",\"type\":\"p\"},{\"text\":\"The outer archive digest belongs in an external release descriptor rather than inside the archive it hashes. Otherwise the package would require a circular self-hash. VAO also distinguishes hashing the exact manifest bytes from canonicalizing other specified records. Reserializing equivalent JSON can change a byte digest; a verifier must use the hashing procedure defined for the particular artifact.\",\"type\":\"p\"},{\"text\":\"“Downloaded” should identify what was downloaded: a bootstrap, a selected group closure or a preservation carrier. A small verified selection can be entirely appropriate for playback while remaining incomplete for long-term preservation.\",\"title\":\"Completion is a stated scope\",\"type\":\"note\"},{\"items\":[{\"detail\":\"Check syntax, semantics, fixity and the claimed profiles.\",\"href\":\"/notebooks/standards/conformance/\",\"label\":\"Validation layers\"},{\"detail\":\"Choose the implementation for the task and object version.\",\"href\":\"/notebooks/software/clients/\",\"label\":\"Client compatibility\"}],\"type\":\"links\"}],\"intro\":\"A VAO release describes a research object. Its carriers distribute exact realizations of that object’s assets. Keeping those two levels separate supports small downloads without losing the identity of the whole.\",\"slug\":\"delivery\",\"sources\":[{\"detail\":\"Normative standard, profile index, Dynamic Delivery Profile and conformance specification in the versioned release.\",\"href\":\"https://doi.org/10.5281/zenodo.22214248\",\"label\":\"VAO Standard 0.5.0\"},{\"detail\":\"Source documentation inspected on 26 September 2026. This source version was pending release; the separately linked 0.2.0 archive must not be assumed to provide all of these commands or VAO 0.5 behavior.\",\"label\":\"VAO CLI · source README, version 0.3.1\"},{\"detail\":\"Archived release identity, distinct from the later source documentation used for the command example.\",\"href\":\"https://doi.org/10.5281/zenodo.22133810\",\"label\":\"VAO CLI 0.2.0 archive\"}],\"title\":\"Follow an asset across its carriers\"},\"date\":\"2026-09-26\",\"edition\":\"2026-09-r5\",\"figures\":{}}",
  "payload": {
    "edition": "2026-09-r5",
    "date": "2026-09-26",
    "book": {
      "slug": "vao",
      "title": "Virtual Acoustic Objects",
      "number": "01"
    },
    "chapter": {
      "slug": "delivery",
      "title": "Follow an asset across its carriers",
      "intro": "A VAO release describes a research object. Its carriers distribute exact realizations of that object’s assets. Keeping those two levels separate supports small downloads without losing the identity of the whole.",
      "blocks": [
        {
          "type": "links",
          "items": [
            {
              "label": "Learn this through the Cuntz organ",
              "href": "/notebooks/standards/cuntz/",
              "detail": "A continuous worked example: readable explanations, exact records and the limits of each claim."
            }
          ]
        },
        {
          "type": "heading",
          "id": "release-and-carrier",
          "text": "One semantic release, several useful packages"
        },
        {
          "type": "p",
          "text": "The VAO 0.5.0 manifest is the semantic contract: it identifies assets, realizations, relationships and the relevant capabilities. A carrier is a particular package of bytes. A bootstrap carrier supplies discovery and evidence material; a preservation carrier supplies the preservation closure; a custom carrier can collect a selected dependency closure. These roles answer different access needs while referring to the same unchanged manifest."
        },
        {
          "type": "p",
          "text": "An asset expresses a role in the research object, such as an exterior geometry or an audio recording. A realization identifies a particular encoded form with an exact byte size and SHA-256 digest. A distribution tells a resolver where to obtain it. Treating these as distinct avoids confusing a convenient URL, a low-resolution derivative and the scientific asset they serve."
        },
        {
          "type": "heading",
          "id": "exact-resolution",
          "text": "Resolve an exact version before selecting material"
        },
        {
          "type": "p",
          "text": "Discovery can begin with a concept-level landing page or a search result, but reproducible acquisition needs an exact release. The Dynamic Delivery Profile connects external carriers through exact identifiers, including the version PID, record and file identities, carrier ID and descriptor digest where applicable. A resolver checks the actual carrier descriptor and obtains the member path from that descriptor. A filename or an HTTP ETag alone is not the realization identity."
        },
        {
          "type": "list",
          "items": [
            "Inspect the release identity and manifest before choosing assets. Record the exact version used.",
            "Select realizations suitable for the task, then compute their required dependency and fallback closure. Dependency and fallback graphs must be acyclic.",
            "Retrieve the identified carrier or member bytes. Verify expected size and digest before exposing a realization as acquired.",
            "Retain an acquisition receipt that distinguishes attempted, failed and verified retrieval. An inaccessible file gets a diagnostic, not an invented successful byte identity."
          ]
        },
        {
          "type": "example",
          "id": "cuntz-fixity",
          "title": "What does the model’s SHA-256 prove?",
          "concept": "A checksum is a fingerprint calculated from bytes. Fixity checking compares that fingerprint with a trusted expected value to detect changed or mismatched files.",
          "scenario": "The published GLB source for this notebook has SHA-256 beginning 19527c2188b08d85. The display derivative has a different digest because its texture and encoding were changed.",
          "steps": [
            {
              "title": "Compare like with like",
              "text": "Check the complete source GLB digest against the exact source realization. Compare the website derivative against its own expected digest, not against the source GLB’s digest."
            },
            {
              "title": "Notice byte-changing edits",
              "text": "A texture conversion or mesh encoding change produces a different file identity. Even reformatting a JSON manifest can change its exact-byte hash without changing its parsed meaning."
            },
            {
              "title": "Keep the scientific question separate",
              "text": "Matching bytes establish which representation was obtained. The digest does not verify the model’s physical scale, the pipe measurement method or a claim about the sound of 1610."
            }
          ],
          "takeaway": "Fixity makes evidence identifiable; it does not independently validate the evidence’s interpretation.",
          "boundary": "This website verifies the model’s expected byte length and full SHA-256 before passing it to the renderer. That is a file-identity check, not a VAO conformance report.",
          "sources": [
            {
              "label": "Cuntz Positiv · VAO 0.5.0-rc.2",
              "href": "https://doi.org/10.5281/zenodo.22151203",
              "detail": "Published manifest: identities, measurement observations, realization digests, profiles and rights. Exact examples checked against this release."
            },
            {
              "label": "VAO Standard 0.5.0",
              "href": "https://doi.org/10.5281/zenodo.22214248",
              "detail": "The standard contract is separate from the Cuntz dataset content version 0.5.0-rc.2."
            }
          ],
          "expanded": false
        },
        {
          "type": "heading",
          "id": "selection-example",
          "text": "A mobile selection, step by step"
        },
        {
          "type": "p",
          "text": "Imagine a release with a detailed geometry, a smaller geometry and several audio realizations. A mobile selection asks for a suitable subset and its dependencies; it does not redefine the historical instrument. If the selected geometry depends on a material or coordinate frame, that dependency remains part of the usable selection. If a requested profile needs an unavailable group, the client should report that the profile is not materialized instead of silently treating the partial download as complete."
        },
        {
          "type": "code",
          "label": "VAO CLI 0.3.1 source workflow · replace the value with an exact VAO version DOI",
          "text": "# These commands are documented for source version 0.3.1.\n# Check your installed version and command help before use.\nVAO_DOI=\"<exact version DOI of your VAO object>\"\nvao resolve \"$VAO_DOI\" --exact\nvao inspect \"$VAO_DOI\" --exact --assets --groups --archive\nvao select \"$VAO_DOI\" --kind geometry --quality low --max-bytes 100MiB"
        },
        {
          "type": "p",
          "text": "The placeholder must identify a VAO research object, not the DOI of the standard itself. Selection is a planning step; inspect its result before a fetch or materialization. The archived CLI 0.2.0 is a separate release and must not be assumed to implement the 0.3.1 source workflow. A reproducible record includes the actual CLI version as well as the object version."
        },
        {
          "type": "example",
          "id": "cuntz-closure",
          "title": "What does “dependency closure” mean for a model?",
          "concept": "A dependency is something an item needs to work as declared. Closure means including everything required by the selected items, continuing until no required dependency is missing.",
          "scenario": "Imagine a Cuntz display model delivered with a separate material texture. This is an illustrative delivery scenario; the notebook’s GLB instead embeds its texture.",
          "steps": [
            {
              "title": "Select the model",
              "text": "Begin with the geometry realization needed for the task. Selecting its name alone does not guarantee a complete visual representation."
            },
            {
              "title": "Follow every declared requirement",
              "text": "If the model needs a texture, include it. If a playback task also requires a sample map and audio files, follow those requirements too. Do not confuse optional enhancements with mandatory dependencies."
            },
            {
              "title": "Verify the complete selection",
              "text": "Only after the required bytes are acquired and verified can the selected capability be described as materialized. Record missing resources as missing rather than silently substituting unrelated files."
            }
          ],
          "takeaway": "Closure is the complete set of prerequisites for a chosen task, not necessarily the entire archive.",
          "boundary": "This example explains the selection rule; it does not assert that the published Cuntz GLB uses an external texture or that the web viewer executes a complete VAO.",
          "sources": [
            {
              "label": "Cuntz Positiv · VAO 0.5.0-rc.2",
              "href": "https://doi.org/10.5281/zenodo.22151203",
              "detail": "Published manifest: identities, measurement observations, realization digests, profiles and rights. Exact examples checked against this release."
            },
            {
              "label": "VAO Standard 0.5.0",
              "href": "https://doi.org/10.5281/zenodo.22214248",
              "detail": "The standard contract is separate from the Cuntz dataset content version 0.5.0-rc.2."
            }
          ],
          "expanded": false
        },
        {
          "type": "heading",
          "id": "custom-carriers",
          "text": "When a smaller package is still the same release"
        },
        {
          "type": "p",
          "text": "A custom carrier can retain the original manifest bytes and package selected verified realizations under a new carrier identity. That changes delivery without changing the semantic release. Transcoding an audio file or simplifying a geometry is different: the result has new bytes and must be represented as a new realization with its derivation. Renaming a file does not make a derived object scientifically equivalent to its source."
        },
        {
          "type": "p",
          "text": "The outer archive digest belongs in an external release descriptor rather than inside the archive it hashes. Otherwise the package would require a circular self-hash. VAO also distinguishes hashing the exact manifest bytes from canonicalizing other specified records. Reserializing equivalent JSON can change a byte digest; a verifier must use the hashing procedure defined for the particular artifact."
        },
        {
          "type": "note",
          "title": "Completion is a stated scope",
          "text": "“Downloaded” should identify what was downloaded: a bootstrap, a selected group closure or a preservation carrier. A small verified selection can be entirely appropriate for playback while remaining incomplete for long-term preservation."
        },
        {
          "type": "links",
          "items": [
            {
              "label": "Validation layers",
              "href": "/notebooks/standards/conformance/",
              "detail": "Check syntax, semantics, fixity and the claimed profiles."
            },
            {
              "label": "Client compatibility",
              "href": "/notebooks/software/clients/",
              "detail": "Choose the implementation for the task and object version."
            }
          ]
        }
      ],
      "sources": [
        {
          "label": "VAO Standard 0.5.0",
          "href": "https://doi.org/10.5281/zenodo.22214248",
          "detail": "Normative standard, profile index, Dynamic Delivery Profile and conformance specification in the versioned release."
        },
        {
          "label": "VAO CLI · source README, version 0.3.1",
          "detail": "Source documentation inspected on 26 September 2026. This source version was pending release; the separately linked 0.2.0 archive must not be assumed to provide all of these commands or VAO 0.5 behavior."
        },
        {
          "label": "VAO CLI 0.2.0 archive",
          "href": "https://doi.org/10.5281/zenodo.22133810",
          "detail": "Archived release identity, distinct from the later source documentation used for the command example."
        }
      ]
    },
    "figures": {}
  }
}