{
  "prepared_on": "2026-09-23",
  "package": {
    "name": "replicad-opencascadejs",
    "version": "1.1.0",
    "npm_git_head": "e4b05f67dc4e2393a876ce8c5064a9c93db05bf1",
    "registry_tarball": "https://registry.npmjs.org/replicad-opencascadejs/-/replicad-opencascadejs-1.1.0.tgz",
    "lockfile_integrity": "sha512-s0KHR5V+ivsOE4nZXfuoW70lW0/rldkb3ZDY34LpXOQRFLQN5qVydQm3BRo7boZPdFkkAZBERJ+NzB0DYxrivw==",
    "installed_manifest_matches_pinned_source_excluding_npm_gitHead": true
  },
  "binary": {
    "file": "replicad_single.wasm",
    "bytes": 22980267,
    "sha256": "4c9f22e9f3828dca6f3c95405934cdbe624e593c35266f47f392ab337478dbde",
    "built_site_wasm_matches_installed_package": true
  },
  "container_metadata_observed_on": "2026-09-23",
  "container": {
    "tag": "canary-ebd263f1-single-threaded",
    "index_digest": "sha256:215198af0e2ca4c5f308e5540869f2419784dc290062d3eb03d34e4f22e0188c",
    "index": {
      "schemaVersion": 2,
      "mediaType": "application/vnd.oci.image.index.v1+json",
      "manifests": [
        {
          "mediaType": "application/vnd.oci.image.manifest.v1+json",
          "digest": "sha256:deb9be8470038652c060b47f2d2e7e2e46d899bb896ecabb007bf60307ee2d54",
          "size": 6186,
          "platform": {
            "architecture": "amd64",
            "os": "linux"
          }
        },
        {
          "mediaType": "application/vnd.oci.image.manifest.v1+json",
          "digest": "sha256:a15d11e9a351824fed91aef89162f88a3bbe98a367b1726aa41f9008bd31b587",
          "size": 841,
          "annotations": {
            "vnd.docker.reference.digest": "sha256:deb9be8470038652c060b47f2d2e7e2e46d899bb896ecabb007bf60307ee2d54",
            "vnd.docker.reference.type": "attestation-manifest"
          },
          "platform": {
            "architecture": "unknown",
            "os": "unknown"
          }
        },
        {
          "mediaType": "application/vnd.oci.image.manifest.v1+json",
          "digest": "sha256:b900017985fc32e296e01531a3483d4041fd39c51e9a0be365e97e5295f15da7",
          "size": 6186,
          "platform": {
            "architecture": "arm64",
            "os": "linux"
          }
        },
        {
          "mediaType": "application/vnd.oci.image.manifest.v1+json",
          "digest": "sha256:922edf77324da26bb73e687a2f4926457568d7b1fbd48dd4bb2a9533a3f96f1f",
          "size": 841,
          "annotations": {
            "vnd.docker.reference.digest": "sha256:b900017985fc32e296e01531a3483d4041fd39c51e9a0be365e97e5295f15da7",
            "vnd.docker.reference.type": "attestation-manifest"
          },
          "platform": {
            "architecture": "unknown",
            "os": "unknown"
          }
        }
      ]
    },
    "linux_amd64_manifest_digest": "sha256:deb9be8470038652c060b47f2d2e7e2e46d899bb896ecabb007bf60307ee2d54",
    "linux_amd64_manifest": {
      "schemaVersion": 2,
      "mediaType": "application/vnd.oci.image.manifest.v1+json",
      "config": {
        "mediaType": "application/vnd.oci.image.config.v1+json",
        "digest": "sha256:4070b1a7a19dcf29ec3df26b5df4387f8978865cabc5727ddad8746292132125",
        "size": 17953
      },
      "layers": [
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:6f4ebca3e823b18dac366f72e537b1772bc3522a5c7ae299d6491fb17378410e",
          "size": 29536667
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:995a14091dc3801751b17c422e1aecccea4f38acb5c8bce2a44714f35b9ad498",
          "size": 556000001
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:520073dbac3c65836e5f43a9da88b0c1368e52684ff56f06d2d991c5fc133d2b",
          "size": 4344
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:3dc842d3dc49313e36305b84a9f5a86e32666505b2165d72042551b3da39bab7",
          "size": 230975962
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:987882cc2341e78f6150d98889c2677e7e794f67f7eb1522fea876936b631a5c",
          "size": 93
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:5c7d456fee33b6722b716a2e665cedf890bac852cd56fe7820d377c22387bd50",
          "size": 78419449
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:aba547eaa51ed84ca823ee17f6d47411066bbd93acbf7f25a304c5bc14b347bd",
          "size": 58446282
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:3261f990d411ba92543523d4b1c15ab3bae1d121deece0d1b3fab047f84c75ad",
          "size": 61255410
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:1650de05c3d089beddc05a978693b498f2f9e2ce7ed171dba0d1c5e7da395723",
          "size": 91
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:33e5de752d8b2b2df8d9c66b7b82fb29eb6e081d27c8fe3e32881f047c3d1c1f",
          "size": 8911
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:57d5cbdf682f3b7ecc80e6d3cda1a7ad138172f07f0065ced4caca32ef3a7e10",
          "size": 150
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:c2e39875ff7da174314dfcbbd32e29cd7fd2bab819f518b05fd17c5947f72bbb",
          "size": 10925
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:fd78aebf02a19cab176631d3bb6c22b1a103e4cf178d084ffa2dd9c1b98a15a4",
          "size": 4039
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:656a66a588af3c84662f9da8ac76261514437133586d3023a211e0420a51806d",
          "size": 434467014
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:3cfe6cfff756ac0c60f738ed9e40391c82ee67a0956f1c525e133d76b337a3aa",
          "size": 189
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:da0e1e2b410ac01b2a652663d62cde0d192da816862661cbd8b953855ce09b7e",
          "size": 44319
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:d0283104ff4f5f8d3851e4158961a191b512ebc2cba8bc9231bb06bbec1e399a",
          "size": 69890398
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:6d2cf05016b653e41d39c64a3b8167737d448fb7890c9614fb517fefa2ef0435",
          "size": 295929
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1",
          "size": 32
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:5d7e3ebc1f586322a70875267dfe9dc2bb5552c7ebf35f88ce9a19e61ddfef86",
          "size": 83725
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:ab6906a645445837efe83727a78474a3fdfec2ad3f63bc3c69434fcb8ff71eb4",
          "size": 12625
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:93a20ab3c41a2147335d6a9d3bc72b5b979c026c5173796cac3a40751ccda6d5",
          "size": 17071
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:9de470ca269ad119d6b720d5441b0675937ab76d13842ba0492d62188d705840",
          "size": 4559
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:3a455eda092ae28416f319392d5375f617abd1365b2559f20eb58ec8b6f8d2e3",
          "size": 9138
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1",
          "size": 32
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:9d7a9b7244ec4cd7eeb9e8950e2fc9ed3d44b1f9daf2ecd2f62b30a0ea25bb33",
          "size": 163
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:e64a45aa64bb283d87d2851f6251df8344eba55b8e6595df466ee64b410aed4f",
          "size": 373192539
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1",
          "size": 32
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:d9c33db3873a813cfc5bd39d802002f24e51fdc126fc04569bbfed339d00ec10",
          "size": 481167892
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:b5cd4487c29b89a964c4a5dd2c8d63174dda9f7c7442dad078cc71e10a114709",
          "size": 2455
        },
        {
          "mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
          "digest": "sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1",
          "size": 32
        }
      ]
    },
    "image_config": {
      "architecture": "amd64",
      "config": {
        "Env": [
          "PATH=/opencascade.js/.venv/bin:/usr/local/bin:/usr/bin:/bin:/emsdk:/emsdk/upstream/emscripten:/emsdk/node/22.16.0_64bit/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
          "EMSDK=/emsdk",
          "UV_PYTHON_INSTALL_DIR=/opt/uv-python",
          "OCCT_ROOT=/occt",
          "RAPIDJSON_ROOT=/rapidjson",
          "FREETYPE_ROOT=/freetype",
          "OCJS_OUTPUT_DIR=/src",
          "NX_DAEMON=false",
          "OCJS_CONFIG=single-threaded",
          "THREADING=single-threaded",
          "OCJS_SOURCE_COMMIT=ebd263f15337b440b391492af073662707e86482",
          "SOURCE_DATE_EPOCH=1785713531"
        ],
        "Entrypoint": [
          "/opencascade.js/scripts/docker-entrypoint.sh"
        ],
        "Cmd": [
          "--help"
        ],
        "WorkingDir": "/src",
        "Labels": {
          "maintainer": "kontakt@trzeci.eu",
          "org.label-schema.description": "The official container with Emscripten SDK",
          "org.label-schema.docker.dockerfile": "/docker/Dockerfile",
          "org.label-schema.name": "emscripten",
          "org.label-schema.url": "https://emscripten.org",
          "org.label-schema.vcs-url": "https://github.com/emscripten-core/emsdk",
          "org.opencontainers.image.description": "OpenCASCADE.js single-threaded WASM build image (warm cache, \u22645min link)",
          "org.opencontainers.image.licenses": "LGPL-2.1-only",
          "org.opencontainers.image.ref.name": "ubuntu",
          "org.opencontainers.image.revision": "ebd263f15337b440b391492af073662707e86482",
          "org.opencontainers.image.source": "https://github.com/taucad/opencascade.js",
          "org.opencontainers.image.title": "opencascade.js (single-threaded)",
          "org.opencontainers.image.url": "https://github.com/taucad/opencascade.js",
          "org.opencontainers.image.vendor": "taucad",
          "org.opencontainers.image.version": "3.0.0-canary.ebd263f1"
        },
        "ArgsEscaped": true
      },
      "created": "1970-01-01T00:00:00Z",
      "history": [
        {
          "created": "2026-01-09T07:01:41.875388728Z",
          "created_by": "/bin/sh -c #(nop)  ARG RELEASE",
          "empty_layer": true
        },
        {
          "created": "2026-01-09T07:01:41.904222011Z",
          "created_by": "/bin/sh -c #(nop)  ARG LAUNCHPAD_BUILD_ARCH",
          "empty_layer": true
        },
        {
          "created": "2026-01-09T07:01:41.930116128Z",
          "created_by": "/bin/sh -c #(nop)  LABEL org.opencontainers.image.ref.name=ubuntu",
          "empty_layer": true
        },
        {
          "created": "2026-01-09T07:01:41.959592294Z",
          "created_by": "/bin/sh -c #(nop)  LABEL org.opencontainers.image.version=22.04",
          "empty_layer": true
        },
        {
          "created": "2026-01-09T07:01:44.086160867Z",
          "created_by": "/bin/sh -c #(nop) ADD file:b499000226bd9a7c562ffa8eeb86e2d170f2a563310db6c2d79562ab53e5cb6e in / "
        },
        {
          "created": "2026-01-09T07:01:44.545761589Z",
          "created_by": "/bin/sh -c #(nop)  CMD [\"/bin/bash\"]",
          "empty_layer": true
        },
        {
          "created": "2026-02-13T21:03:22.034607695Z",
          "created_by": "COPY /emsdk /emsdk # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "2026-02-13T21:03:22.185941386Z",
          "created_by": "ENV EMSDK=/emsdk PATH=/emsdk:/emsdk/upstream/emscripten:/emsdk/node/22.16.0_64bit/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "2026-02-13T21:03:22.185941386Z",
          "created_by": "RUN /bin/sh -c echo \"## Create emscripten user (1000:1000)\"     && groupadd --gid 1000 emscripten     && useradd --uid 1000 --gid emscripten --shell /bin/bash --create-home emscripten     && echo \"## Done\" # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "2026-02-13T21:03:51.813619477Z",
          "created_by": "RUN /bin/sh -c echo \"## Update and install packages\"     && apt-get -qq -y update     && DEBIAN_FRONTEND=\"noninteractive\" TZ=\"America/San_Francisco\" apt-get -qq install -y --no-install-recommends         sudo         libxml2         ca-certificates         python3         python3-pip         wget         curl         zip         unzip         git         git-lfs         ssh-client         build-essential         make         ant         libidn12         cmake         openjdk-11-jre-headless     && apt-get -y clean     && apt-get -y autoclean     && apt-get -y autoremove     && rm -rf /var/lib/apt/lists/*     && rm -rf /var/cache/debconf/*-old     && rm -rf /usr/share/doc/*     && rm -rf /usr/share/man/??     && rm -rf /usr/share/man/??_*     && echo \"## Done\" # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "2026-02-13T21:03:51.855992417Z",
          "created_by": "WORKDIR /src",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "2026-02-13T21:03:51.855992417Z",
          "created_by": "ENTRYPOINT [\"/emsdk/docker/entrypoint.sh\"]",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "2026-02-13T21:03:51.855992417Z",
          "created_by": "LABEL maintainer=kontakt@trzeci.eu org.label-schema.name=emscripten org.label-schema.description=The official container with Emscripten SDK org.label-schema.url=https://emscripten.org org.label-schema.vcs-url=https://github.com/emscripten-core/emsdk org.label-schema.docker.dockerfile=/docker/Dockerfile",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "LABEL org.opencontainers.image.title=opencascade.js (deps-base) org.opencontainers.image.description=OS toolchain + dependency clones (emsdk, Node 24, uv, Python 3.14, OCCT, rapidjson, freetype, LLVM 17 \u2014 header-trimmed)",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "RUN /bin/sh -c apt-get update -y &&   apt-get install -y --no-install-recommends     bash     build-essential     ca-certificates     curl     doxygen     git     gnupg     jq     libc6-dev     unzip     xz-utils # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "RUN /bin/sh -c curl -fsSL https://deb.nodesource.com/setup_24.x | bash - &&   apt-get install -y --no-install-recommends nodejs # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ENV UV_PYTHON_INSTALL_DIR=/opt/uv-python",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "RUN /bin/sh -c curl -LsSf https://astral.sh/uv/install.sh |       env UV_INSTALL_DIR=/usr/local/bin INSTALLER_NO_MODIFY_PATH=1 sh &&     uv python install 3.14.4 &&     chmod -R go+rX /opt/uv-python # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ENV PATH=/opencascade.js/.venv/bin:/usr/local/bin:/usr/bin:/bin:/emsdk:/emsdk/upstream/emscripten:/emsdk/node/22.16.0_64bit/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "WORKDIR /opencascade.js/",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "RUN /bin/sh -c uv venv --python 3.14.4 /opencascade.js/.venv # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "RUN /bin/sh -c mkdir -p /opencascade.js/deps &&     ln -s /emsdk /opencascade.js/deps/emsdk # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "COPY DEPS.json pyproject.toml uv.lock /opencascade.js/ # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "COPY scripts/clone-deps.sh /opencascade.js/scripts/clone-deps.sh # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "RUN /bin/sh -c bash scripts/clone-deps.sh --dest /opencascade.js/deps &&     echo \"\u2500\u2500 Trimming LLVM 17 vendored tarball (R10) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\" &&     find /opencascade.js/deps/llvm-17 -mindepth 1 -maxdepth 1       ! -name include       ! -name lib       -exec rm -rf {} + &&     find /opencascade.js/deps/llvm-17/lib -mindepth 1 -maxdepth 1       ! -name clang       -exec rm -rf {} + &&     find /opencascade.js/deps/llvm-17/lib/clang -mindepth 1 -maxdepth 1       ! -name 17       -exec rm -rf {} + &&     find /opencascade.js/deps/llvm-17/lib/clang/17 -mindepth 1 -maxdepth 1       ! -name include       -exec rm -rf {} + &&     echo \"\u2500\u2500 LLVM 17 retained:\" &&     du -sh /opencascade.js/deps/llvm-17 &&     echo \"\u2500\u2500 Purging uv pip cache + apt lists \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\" &&     uv cache clean &&     rm -rf /root/.cache /tmp/* /var/tmp/* &&     apt-get clean # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "RUN /bin/sh -c ln -s /opencascade.js/deps/OCCT      /occt &&     ln -s /opencascade.js/deps/rapidjson /rapidjson &&     ln -s /opencascade.js/deps/freetype  /freetype &&     ln -s /opencascade.js/deps/llvm-17   /llvm-17 # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "COPY package.json package-lock.json nx.json project.json /opencascade.js/ # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "RUN /bin/sh -c npm ci --no-audit --no-fund # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "COPY src ./src # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "COPY tsconfig.json* ./ # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "COPY build-configs ./build-configs # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "COPY build-wasm.sh ./build-wasm.sh # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "COPY scripts/artifact-state.py scripts/cmake-state.py scripts/enumerate-symbols.py scripts/generate-bindings.py scripts/patch-state.py scripts/validate-build.py scripts/generate-api-reference.mjs ./scripts/ # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "COPY scripts/lib ./scripts/lib # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "COPY bindgen-filters.yaml ./bindgen-filters.yaml # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "RUN /bin/sh -c chmod +x build-wasm.sh # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ENV OCCT_ROOT=/occt",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ENV RAPIDJSON_ROOT=/rapidjson",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ENV FREETYPE_ROOT=/freetype",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ENV EMSDK=/emsdk",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ENV OCJS_OUTPUT_DIR=/src",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "RUN /bin/sh -c mkdir -p build/bindings build/sources # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "RUN /bin/sh -c npx nx run ocjs:generate &&     echo \"\u2500\u2500 Pruning generated .cpp/.h sources (kept: .d.ts.json + PCH) \u2500\u2500\u2500\u2500\" &&     find build/bindings -type f -name '*.cpp' -delete &&     find build/bindings -type f -name '*.h' -delete &&     rm -rf /root/.npm/_cacache &&     echo \"\u2500\u2500 Setting non-root execution perms (folded; avoids 2 GB chmod layer) \u2500\u2500\" &&     mkdir -p /opencascade.js/.nx &&     chmod -R go+rwX /opencascade.js/.nx /opencascade.js/build &&     chmod go+w /opencascade.js &&     echo \"\u2500\u2500 Allowing git on vendored OCCT/rapidjson/freetype for non-root runs \u2500\u2500\" &&     git config --system --add safe.directory '*' &&     echo \"\u2500\u2500 Marking .venv/.deps-ready (skip uv pip install on non-root rerun) \u2500\u2500\" &&     touch /opencascade.js/.venv/.deps-ready &&     chmod go+w /opencascade.js/.venv/.deps-ready &&     echo \"\u2500\u2500 Making emsdk libembind.js writable for non-root reset+repatch \u2500\u2500\" &&     chmod go+w /emsdk/upstream/emscripten/src/lib                /emsdk/upstream/emscripten/src/lib/libembind.js # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "WORKDIR /opencascade.js/",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ENV NX_DAEMON=false",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ENV OCJS_CONFIG=single-threaded",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ENV THREADING=single-threaded",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "RUN /bin/sh -c npx nx run ocjs:compile &&     echo \"\u2500\u2500 Pruning compile intermediates (kept: .o files + OCCT .a libs) \u2500\u2500\" &&     find build/bindings -type f -name '*.cpp' -delete &&     find build/bindings -type f -name '*.h' -delete &&     find build -type f -name '*.cpp.o.d' -delete &&     rm -rf build/occt-cmake &&     echo \"\u2500\u2500 Re-applying non-root perms (folded; bindgen-base chmod stale here) \u2500\u2500\" &&     chmod -R go+rwX /opencascade.js/.nx /opencascade.js/build # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ARG REVISION=ebd263f15337b440b391492af073662707e86482",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ARG OCJS_SOURCE_DATE_EPOCH=1785713531",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ARG VERSION=3.0.0-canary.ebd263f1",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ARG SOURCE_URL=https://github.com/taucad/opencascade.js",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ENV OCJS_SOURCE_COMMIT=ebd263f15337b440b391492af073662707e86482 SOURCE_DATE_EPOCH=1785713531",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "LABEL org.opencontainers.image.title=opencascade.js (single-threaded) org.opencontainers.image.description=OpenCASCADE.js single-threaded WASM build image (warm cache, \u22645min link) org.opencontainers.image.source=https://github.com/taucad/opencascade.js org.opencontainers.image.url=https://github.com/taucad/opencascade.js org.opencontainers.image.revision=ebd263f15337b440b391492af073662707e86482 org.opencontainers.image.version=3.0.0-canary.ebd263f1 org.opencontainers.image.licenses=LGPL-2.1-only org.opencontainers.image.vendor=taucad",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "COPY scripts/docker-entrypoint.sh /opencascade.js/scripts/docker-entrypoint.sh # buildkit",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "WORKDIR /src",
          "comment": "buildkit.dockerfile.v0"
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "ENTRYPOINT [\"/opencascade.js/scripts/docker-entrypoint.sh\"]",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        },
        {
          "created": "1970-01-01T00:00:00Z",
          "created_by": "CMD [\"--help\"]",
          "comment": "buildkit.dockerfile.v0",
          "empty_layer": true
        }
      ],
      "os": "linux",
      "rootfs": {
        "type": "layers",
        "diff_ids": [
          "sha256:fbb9bbbaf4d2b027acd15252897d5043386eea7121e0e0433e697714bb14beac",
          "sha256:12c0bbff7bad05e4eaa7f47f77951978ec29dd5422f125cb59ea7f35c2a2921f",
          "sha256:b28d6cb23516a99731649b3390aa8cf5a69eccf9f56c414684c32125b0353baa",
          "sha256:64f9b042f54e1325a89e018ad3cbdd3755e9a5499784a8bd8a2101cf552d5080",
          "sha256:f2a6b8f351484fd36e754c7d2be98707e79c44b18730385f3b6274d5635db4a5",
          "sha256:9c2f9896d617825e3b4427b18034c161919230184032544d0cde5eb19f8c7a84",
          "sha256:f3503c0ac577142f71a5126992246ebfe2fdc87e96421a75dcf708d030db2aba",
          "sha256:a02efaf82b29f47ddc1f92f480952dd4a30b14c30eb2466c6289007e441d7797",
          "sha256:1ff7a158d81b2da33bae4e6008201339b35c323b2efa9cef520e1ae6cd6378bc",
          "sha256:749c9000a7f47b4071a8520586aa974e838c091d0c09fbd26f6c30d572427a18",
          "sha256:c8d6f7c20b92c4e816664bf2233ebccc7c12af7ecde062ec627782bb1d97e781",
          "sha256:ac4a6862114793a81d099f92f2ce72d19c77bd9f5543005d21f19240fa995ea4",
          "sha256:d4638eb43bf57f87b83c956626c9049b3d83a6e96e505c26283de557e5833641",
          "sha256:8977d79dae9b9b566c233649872810a3ac63ab7c0e58650c67552688178223dc",
          "sha256:98b29ba11981f93243ce9951d054d63178dbb5fabfd0aefbde74aef98fd36f98",
          "sha256:a8a8b65c47ca527dd8b1138bc8edb1c1b3e6dfcdbdb51ecdfb61e3fa2007e7f1",
          "sha256:08ffe886340e61258b63c8d5bcf7d9e90fcffff01d3393d4f4609963e630f70f",
          "sha256:21d5465dcda289baaf51c5fd6dc476d46524aa4b8451c8f3cf79eae48143dcc9",
          "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
          "sha256:6040460338c4ee893f2146daaeeb5876b5dbe8e1e99a47b957c5129a0f52dc86",
          "sha256:de662214ad499d46581112d29683e6be6be903d3ccdde2d22b50dfd60090b856",
          "sha256:edc6680197f7971e881cbef15318174db1e3e0bcaadb879da5192f4d3c74f66f",
          "sha256:00095057edece161c05f4cebe839c61f4c85ce27d600e4c391aa0c17781be6ad",
          "sha256:95e65f12185dec6d04a2ea7ce412f703ec5f13a86236ca198a5f3f4030cd62c0",
          "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
          "sha256:9fb4d1618b3521b7990f084d4e2c3b6b2a5c491e342ddd9c86af910b548e595b",
          "sha256:84a519095111bcd33252cb4e13b30a99531e8d1dd440ee7262d52be4323f787a",
          "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
          "sha256:0805414db21c4356fe37428001a393b4b1bd6ed76791eb6958f89a54a069c3a7",
          "sha256:d4e7a3ff77ecd6c64c7d6bf24a755c12d7cba004eb95196e67e2f80370aeae47",
          "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef"
        ]
      }
    }
  },
  "validation": {
    "downloaded_original_snapshots": 7,
    "source_restoration_helper_executed_successfully": true,
    "restored_git_revisions_and_full_fsck_checked": 4,
    "upstream_occt_patch_scripts_applied_successfully": 4,
    "upstream_occt_files_modified": 19,
    "libembind_pre_and_post_patch_hashes_match_upstream": true,
    "full_wasm_rebuild_performed": false,
    "filtered_emscripten_retained_files_byte_identical": 6457,
    "filtered_replicad_retained_files_byte_identical": 15,
    "filtered_delivery_source_build_inputs_reviewed": true,
    "filtered_delivery_full_source_restoration_helper_succeeded": true,
    "filtered_delivery_excludes_emscripten_test_and_unrelated_replicad_paths": true
  },
  "limits": [
    "The published npm package does not include its original build provenance or per-object link manifest.",
    "The container tag was resolved to the recorded immutable digest during this preparation; the npm publisher did not record an original image digest in the package.",
    "Build lineage is supported by exact package/source manifests, commit pins, current container revision labels, original source snapshots and successful patch reconstruction; this is not an independently byte-reproduced binary.",
    "FreeType and RapidJSON are supplied as build inputs; final inclusion of all their code in the shipped WebAssembly was not established."
  ],
  "delivery_filtering": [
    {
      "component": "emscripten",
      "upstream_archive_sha256": "9b304a229e75f33b5931d241a65d331d869e3244a29d13d6c3977edadf402d43",
      "delivery_archive_sha256": "5413bf984eb88546f9759d6b6823d539c41ba3c17aebc2d6db9304fc28498d84",
      "filter": {
        "retained": "All original archive entries except the top-level test directory.",
        "omitted_paths": [
          "test/"
        ],
        "reason": "Upstream test/benchmark inputs and media are not part of the selected CAD compiler/runtime build; excludes unrelated test asset and benchmark license conditions.",
        "retained_file_contents_modified": false,
        "retained_regular_files_verified_byte_identical": 6457,
        "omitted_archive_entries": 5150
      }
    },
    {
      "component": "replicad",
      "upstream_archive_sha256": "92180710da11a6e67ab75eaac8b494b29d32011415c22e29f7fecb1c796da783",
      "delivery_archive_sha256": "60eb2bffddce6516779728b46f9f5519313fe82508613d8bb8b97b61e9a7026b",
      "filter": {
        "retained_paths": [
          "LICENSE",
          "packages/replicad-opencascadejs/LICENSE",
          "packages/replicad-opencascadejs/README.md",
          "packages/replicad-opencascadejs/package.json",
          "packages/replicad-opencascadejs/build-config/",
          "packages/replicad-opencascadejs/build-source/"
        ],
        "omitted_paths": [
          "All other repository paths, including packages/replicad/, docs/, repository-wide development/CI configuration, packages/replicad-opencascadejs/dist/ and packages/replicad-opencascadejs/__tests__/"
        ],
        "reason": "The documented direct OCJS build needs the committed selection YAML, six C++ wrappers, templates and package/license metadata. Other workspace packages, example/documentation assets, prebuilt outputs and tests are not required.",
        "retained_file_contents_modified": false,
        "retained_regular_files_verified_byte_identical": 15,
        "omitted_archive_entries": 482
      }
    }
  ]
}
