Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
f8c2455
fix(build): fail closed on unknown native asset capabilities (VQ-01)
jonit-dev Oct 2, 2026
8d6cd88
test(vq01): qualify packaged QuickJS assets with native screenshot lane
jonit-dev Oct 2, 2026
cedacef
test(vq01): use supported native console diagnostics for capture
jonit-dev Oct 2, 2026
46a759a
test(vq01): replay native admission and require observed startup
jonit-dev Oct 2, 2026
f13f1ad
docs(vq01): publish verified packaged QuickJS screenshot proof
jonit-dev Oct 2, 2026
8d58e0d
Merge branch 'develop' into fix/vq01-native-asset-capabilities
jonit-dev Oct 2, 2026
ba5a300
Merge remote-tracking branch 'origin/develop' into HEAD
jonit-dev Oct 3, 2026
b8ca394
ci: fold integration-native-assets.yml into integration.yml (one work…
jonit-dev Oct 3, 2026
6402308
style: format the published VQ-01 runner summary so root lint passes
jonit-dev Oct 3, 2026
c77049b
Merge branch 'develop' into fix/vq01-native-asset-capabilities
jonit-dev Oct 3, 2026
c29a210
Merge origin/develop into fix/vq01-native-asset-capabilities
jonit-dev Oct 3, 2026
4285a33
docs(PRD-VQ-01): tick Phase 1 and Phase 2 on their own proofs after t…
jonit-dev Oct 3, 2026
03d2903
ci: keep the native-assets lane off develop's world-capture assets fi…
jonit-dev Oct 3, 2026
e62bd7a
fix(typecheck): give the root program one copy of core for the VQ-01 …
jonit-dev Oct 3, 2026
5e5ec98
feat(assets): cook embedded EXT_texture_webp images (PRD-485 phase 1)
jonit-dev Oct 3, 2026
ba1544c
docs(PRD-485): tick embedded WebP cook on its red-green spec
jonit-dev Oct 3, 2026
c2eb972
feat(vq01): make the shared VQ-01 fixture's web proof runnable
jonit-dev Oct 3, 2026
c9d3352
test(vq01): web codec proof passes on WebGPU; the fixture page links …
jonit-dev Oct 3, 2026
8b45941
chore(lint): ignore the VQ-01 fixture's generated cook output
jonit-dev Oct 3, 2026
bd6e40f
docs(PRD-485): reopen the WebP box — the not-smaller guard keeps WebP…
jonit-dev Oct 3, 2026
b0fb105
PRD-VQ-01 Phase 3: qualify the packaged Android V8 fixture on an emul…
jonit-dev Oct 3, 2026
75876bd
docs(PRD-VQ-01): AC-1 ticked on the web and Android runs; AC-2 lifecy…
jonit-dev Oct 3, 2026
ca1bd9c
test(vq01): the lifecycle scenario that leaves and re-enters the asse…
jonit-dev Oct 3, 2026
c284f2a
fix(assets): never retain a WebP through the not-smaller guard (PRD-4…
jonit-dev Oct 3, 2026
7ed40db
fix(core): a cooked model survives being cloned (PRD-485)
jonit-dev Oct 4, 2026
877991c
docs(PRD-485): Phase 1 done — WebP always converts, lumen-hall cooks …
jonit-dev Oct 4, 2026
7ea1f8e
test(vq01): the lifecycle cycle is opt-in, and its growth was a measu…
jonit-dev Oct 4, 2026
4949c25
docs(PRD-VQ-01): AC-2 GPU lifecycle run still grows; recorded open
jonit-dev Oct 4, 2026
81331cc
docs(PRD-485): Phase 2 boxes 1-2 tick — the Fab tree cooks by default
jonit-dev Oct 4, 2026
8483307
docs(PRD-485): reopen the Hornbeam LOD box — foliage virtual geometry…
jonit-dev Oct 4, 2026
42e70f7
fix(assets): a DAG that reduced nothing hands the primitive to AutoLO…
jonit-dev Oct 4, 2026
73ce0f4
docs(PRD-485): Hornbeam far rung 5.13%, web scenario passes
jonit-dev Oct 4, 2026
5b14794
docs(PRD-485): Phase 2 done — Hornbeam passes web and native desktop
jonit-dev Oct 4, 2026
a281d7e
docs(PRD-485): the Fab import step names the default cook, not `"none"`
jonit-dev Oct 4, 2026
d219c5e
fix(assets): deforming geometry keeps its vertex order through the co…
jonit-dev Oct 4, 2026
f27cb22
fix(assets): deforming geometry keeps its positions in source metres …
jonit-dev Oct 4, 2026
7876e4b
docs(PRD-485): metahuman-lab cooks and its face controls pass
jonit-dev Oct 4, 2026
2d9da5e
Merge asset cook into native asset capability work
jonit-dev Oct 4, 2026
06751c2
fix(tests): the VQ native fixture registers its temp directory
jonit-dev Oct 4, 2026
226121b
test: make native asset cook ordering fixture hermetic
jonit-dev Oct 4, 2026
6503086
test: return complete typed native runtime probe fixture
jonit-dev Oct 4, 2026
477129b
Merge commit 'refs/inventory/develop-51fe' into consolidation/assets-…
jonit-dev Oct 4, 2026
03cb49f
Merge origin/develop into fix/vq01-native-asset-capabilities
jonit-dev Oct 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ jobs:
fluid-particles: ${{ steps.filter.outputs.fluid-particles }}
fluid-native: ${{ steps.filter.outputs.fluid-native }}
ik: ${{ steps.filter.outputs.ik }}
native-assets: ${{ steps.filter.outputs.native-assets }}
tone: ${{ steps.filter.outputs.tone }}
vegetation: ${{ steps.filter.outputs.vegetation }}
world-capture: ${{ steps.filter.outputs.world-capture }}
Expand All @@ -70,6 +71,7 @@ jobs:
fluid-native ^packages/core/(src|__tests__)/(fluid|gpu-readback|particles)[^/]*$|^packages/(physics|playtest)/.*$|^examples/prd476-fluid-particles/.*$|^scripts/fluid-collision-proof\.ts$|^scripts/__tests__/fluid-collision-(proof|view)\.spec\.ts$|^package\.json$|^pnpm-(lock|workspace)\.yaml$|^tsconfig[^/]*\.json$|^patches/.*$|^\.github/actions/pnpm/.*$|^scripts/workspace-packages\.ts$|^packages/runtime-native/.*$|^scripts/verify-fluid-collision-native\.ts$|^scripts/__tests__/fluid-collision-native-proof\.spec\.ts$|^\.github/actions/workspace-dist/.*$
fog ^packages/create-threenative/templates/starter/src/render/volumetricFog[A-Za-z]*\.ts$|^packages/create-threenative/templates/starter/src/render/postprocessing\.ts$|^packages/create-threenative/templates/starter/src/scenes/Play\.ts$|^packages/create-threenative/template-assets/worldEnvironment\.ts$|^packages/create-threenative/__tests__/vq-(volumetric-fog|fog-fixture)\.spec\.ts$|^packages/core/src/renderer\.ts$|^packages/core/src/render/chain\.ts$|^examples/abyss-framework/vq-fog/.*$|^examples/abyss-framework/playtests/vq-volumetric-fog\.playtest\.json$|^scripts/verify-volumetric-fog\.ts$|^scripts/__tests__/(verify-volumetric-fog|vq-fog-native-proof)\.spec\.ts$|^packages/runtime-native/include/mystral/webgpu_compat\.h$|^packages/runtime-native/src/webgpu/bindings_presentation\.cpp$|^packages/runtime-native/tests/surface_texture_status_test\.cpp$|^packages/runtime-native/tests/canvas_presentation_test\.cpp$
ik ^examples/integrations/ik/.*$
native-assets ^packages/create-threenative/src/build\.ts$|^packages/create-threenative/src/buildReport\.ts$|^packages/create-threenative/__tests__/vq-native-[^/]*\.spec\.ts$|^packages/assets/src/(compile|report)\.ts$|^packages/core/src/assets\.ts$|^packages/runtime-native/scripts/bundle\.mjs$|^packages/runtime-native/scripts/package-desktop\.mjs$|^packages/runtime-native/scripts/native-build\.mjs$|^packages/runtime-native/scripts/download-deps\.mjs$|^examples/abyss-framework/vq-assets/.*$|^examples/abyss-framework/playtests/vq-native-asset-capabilities\.playtest\.json$|^scripts/verify-native-asset-capabilities\.ts$|^scripts/native-asset-capture-proof\.ts$|^scripts/__tests__/native-asset-capture-proof\.spec\.ts$
tone ^scripts/xvfb\.sh$|^packages/playtest/.*$|^examples/abyss-framework/src/render/toneCalibration\.ts$|^examples/abyss-framework/src/tone-main\.ts$|^examples/abyss-framework/tone\.html$|^examples/abyss-framework/tone\.vite\.config\.ts$|^examples/abyss-framework/playtests/tone\.playtest\.json$|^examples/abyss-framework/package\.json$|^scripts/verify-tone-exposure\.ts$|^scripts/tone-capture-proof\.ts$|^scripts/__tests__/tone-capture-proof\.spec\.ts$|^scripts/non-visual-scenarios\.mjs$|^package\.json$|^pnpm-lock\.yaml$|^\.github/actions/pnpm/.*$|^\.github/actions/playwright-chromium/.*$|^packages/create-threenative/(template-assets|templates/[^/]+/src/render)/(autoExposure|exposure|exposureGraph|exposureReadback|exposureSettings|worldEnvironment)\.ts$
vegetation ^examples/integrations/vegetation/.*$
world-capture ^packages/core/src/world[^/]*\.ts$|^packages/core/__tests__/world-capture-fixture\.spec\.ts$|^packages/playtest/.*$|^packages/assets/.*$|^examples/abyss-framework/src/scenes/WorldProbe\.ts$|^examples/abyss-framework/src/world-main\.ts$|^examples/abyss-framework/src/style\.css$|^examples/abyss-framework/assets/world/.*$|^examples/abyss-framework/index\.html$|^examples/abyss-framework/vite\.config\.ts$|^examples/abyss-framework/threenative\.config\.ts$|^examples/abyss-framework/playtests/phase477-world-capture\.playtest\.json$|^examples/abyss-framework/package\.json$|^scripts/verify-world-capture\.ts$|^scripts/world-capture-manifest\.ts$|^scripts/world-visual-gate\.ts$|^scripts/capture-guard\.ts$|^scripts/__tests__/verify-world-capture\.spec\.ts$|^scripts/__tests__/world-capture-manifest\.spec\.ts$|^scripts/__tests__/world-visual-gate\.spec\.ts$|^package\.json$|^pnpm-lock\.yaml$|^pnpm-workspace\.yaml$|^\.github/actions/pnpm/.*$|^\.github/actions/playwright-chromium/.*$
Expand Down Expand Up @@ -537,6 +539,72 @@ jobs:
artifacts/fluid-consumers/failure.json
artifacts/fluid-consumers/ci-diagnostics.json
if-no-files-found: error

packaged-quickjs:
name: packaged native asset fallback
if: ${{ !github.event.pull_request.draft && needs.paths.outputs.native-assets == 'true' }}
needs: paths
# Match native-platforms starter-linux: this architecture selects QuickJS/wgpu without
# changing any runtime default. Native dependencies use the repository's locked provisioner.
runs-on: ubuntu-24.04-arm
timeout-minutes: 60
env:
CMAKE_BUILD_PARALLEL_LEVEL: '2'
TN_PLAYTEST_ALLOW_SOFTWARE: '1'
TN_PLAYTEST_NATIVE_SCREENSHOT_TIMEOUT_MS: '30000'
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
with:
persist-credentials: false
ref: ${{ github.event.pull_request.head.sha }}
- uses: ./.github/actions/pnpm
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version: '22'
cache: pnpm
- uses: actions/setup-python@v7
with:
python-version: '3.12'
- run: pnpm install --frozen-lockfile
- name: Build this commit's JavaScript packages
uses: ./.github/actions/workspace-dist
with:
save-bundles: 'false'
pack-archives: 'false'
- name: Validate real compressed-source normalization and capture guards
run: >-
pnpm exec vitest run --maxWorkers=1
packages/create-threenative/__tests__/vq-native-asset-capabilities.spec.ts
packages/create-threenative/__tests__/vq-native-fixture.spec.ts
scripts/__tests__/native-asset-capture-proof.spec.ts
- name: Restore checksum-provisioned native dependencies
uses: actions/cache/restore@v4
with:
path: packages/runtime-native/third_party
key: native-third-party-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('packages/runtime-native/scripts/download-deps.mjs', 'packages/runtime-native/scripts/package-android.mjs') }}
- name: Install the existing native lane's system prerequisites
run: >-
sudo apt-get update && sudo apt-get install -y
libasound2-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev
libpulse-dev libudev-dev libx11-dev libxext-dev libxrandr-dev
libxcursor-dev libxi-dev libxfixes-dev libxss-dev libxkbcommon-dev
libgtk-3-dev libwebkit2gtk-4.1-dev libxcomposite-dev xcompmgr
libvulkan1 mesa-vulkan-drivers vulkan-tools xvfb zlib1g-dev
- name: Build the same QuickJS host the normal ARM desktop lane ships
run: pnpm --filter @threenative/runtime-native native:build
- name: Build the real fixture and capture its packaged native executable
env:
THREENATIVE_RUNTIME_BINARY: ${{ github.workspace }}/packages/runtime-native/build/tn-linux/mystral
run: node --import tsx scripts/verify-native-asset-capabilities.ts
- name: Retain raw native captures, artifact identities and decoded payload measurements
if: always()
uses: actions/upload-artifact@v7
with:
name: vq01-native-assets-${{ github.event.pull_request.head.sha }}
path: artifacts/vq01-native-assets/
retention-days: 30
if-no-files-found: warn

exposure:
name: auto-exposure
if: ${{ !github.event.pull_request.draft && needs.paths.outputs.exposure == 'true' }}
Expand Down
1 change: 1 addition & 0 deletions biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
"examples/abyss-vanilla/vite.config.js",
"examples/auto-lod/public/**",
"examples/abyss-framework/public/**",
"examples/abyss-framework/vq-assets/.generated/**",
"examples/csg-doorway/public/**",
"docs/benchmark/sweeps/**",
"docs/benchmark/rounds/**",
Expand Down
Loading
Loading