Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
116 commits
Select commit Hold shift + click to select a range
f80f991
docs: reconcile PRD-269 motion history qualification
jonit-dev Oct 2, 2026
7190452
fix(core): retain temporal history when projection is disabled
jonit-dev Oct 2, 2026
ac9b0f7
docs(prd455): prioritize full-resolution temporal AA milestone
jonit-dev Oct 2, 2026
9113c4f
docs: track original PRD-269 acceptance and core build proof
jonit-dev Oct 2, 2026
1e7d365
fix(render): pass temporal jitter the velocity accessor
jonit-dev Oct 2, 2026
bbbf93c
feat(render): add opt-in temporal AA qualification fixture
jonit-dev Oct 2, 2026
60b1919
fix(render): reject reset history and use bundled capture runner
jonit-dev Oct 2, 2026
fb77d75
docs(prd455): attach diagnostic runtime screenshot progress
jonit-dev Oct 2, 2026
cba3172
fix(playtest): qualify actual temporal frames and reject device loss
jonit-dev Oct 2, 2026
1a269e9
fix(playtest): retain temporal startup diagnostics
jonit-dev Oct 2, 2026
9b6a3c6
fix(render): schedule temporal inputs before resolving history
jonit-dev Oct 2, 2026
d3c6628
docs(prd455): attach verified full-resolution runtime progress
jonit-dev Oct 2, 2026
b1a8a9b
test(core): capture authored batch velocity on WebGPU
jonit-dev Oct 2, 2026
095eca8
test(core): retain first runtime capture and count drawn frames
jonit-dev Oct 2, 2026
8616dff
docs(prd269): attach verified velocity history comparison
jonit-dev Oct 2, 2026
1124d70
test(render): measure matched temporal motion and ghosting
jonit-dev Oct 2, 2026
e8575ae
docs(render): retain measured temporal quality failures
jonit-dev Oct 2, 2026
812faf9
test(render): probe actual temporal velocity inputs
jonit-dev Oct 2, 2026
dd541a4
Merge develop into temporal AA measurement branch
jonit-dev Oct 2, 2026
0564aaa
fix(render): prime unjittered velocity before first temporal pass
jonit-dev Oct 2, 2026
2b9bdf1
fix(render): preserve temporal jitter ownership on rebuild
jonit-dev Oct 2, 2026
5c071b4
test(render): isolate causal temporal colour history
jonit-dev Oct 2, 2026
5a24804
docs(render): retain causal temporal history measurements
jonit-dev Oct 2, 2026
47e188e
fix(core): upload instance motion history before drawing
jonit-dev Oct 2, 2026
4d4891a
docs(prd269): attach verified instance velocity oracle
jonit-dev Oct 2, 2026
e48c31b
merge: validate temporal AA with canonical motion-history repair
jonit-dev Oct 2, 2026
cb9588f
docs: record combined motion-history temporal benchmark
jonit-dev Oct 2, 2026
576deb5
test(render): inspect actual instance draw across recompile
jonit-dev Oct 2, 2026
56ff270
test(render): isolate temporal history interpolation blur
jonit-dev Oct 2, 2026
1270435
fix(test): record numeric instance attribute identity
jonit-dev Oct 2, 2026
6860152
test(render): qualify skinned and same-frame motion history
jonit-dev Oct 2, 2026
d6204f4
docs(prd269): retain verified skinned and ordering GPU evidence
jonit-dev Oct 2, 2026
59483a2
docs: retain history-sampling failure and actual draw evidence
jonit-dev Oct 2, 2026
0c937a1
Merge develop tone qualification into PRD-269
jonit-dev Oct 2, 2026
aabfa02
test(render): trace actual matrix uploads and bound edge excursions
jonit-dev Oct 2, 2026
ac7e789
fix(core): synchronize rebuilt shared attributes across render and co…
jonit-dev Oct 2, 2026
3afcbc6
feat(prd455): compare authored temporal history reconstruction
jonit-dev Oct 2, 2026
9f04617
docs(prd269): record verified recompile velocity evidence
jonit-dev Oct 2, 2026
e638fc4
merge: consume canonical PR393 uploader repair for temporal qualifica…
jonit-dev Oct 2, 2026
d83caaa
docs(prd455): retain combined uploader and cubic quality evidence
jonit-dev Oct 2, 2026
085c977
test(render): measure exact skinned velocity coverage and world-histo…
jonit-dev Oct 2, 2026
b877de1
feat(prd455): isolate temporal luminance weighting in matched experiment
jonit-dev Oct 2, 2026
9ab3a41
Merge branch 'develop' into fix/prd269-projection-optout-velocity
jonit-dev Oct 2, 2026
968a63b
fix(core): retain previous skinned bind inverse for motion history
jonit-dev Oct 2, 2026
1e28719
docs(prd269): qualify exact skinned root-motion coverage
jonit-dev Oct 2, 2026
73c2a68
test(render): measure temporal-off cost and retained attachment lifec…
jonit-dev Oct 2, 2026
0606d8d
Merge PR #393 into #398: preserve canonical motion history with tempo…
jonit-dev Oct 3, 2026
fc8c4bf
Merge remote-tracking branch 'origin/develop' into feat/prd455-tempor…
jonit-dev Oct 3, 2026
ef00728
ci: fold integration-temporal.yml and integration-velocity-history.ym…
jonit-dev Oct 3, 2026
e5ac6f3
Merge remote-tracking branch 'origin/develop' into HEAD
jonit-dev Oct 3, 2026
24d731c
Merge branch 'develop' into feat/prd455-temporal-reconstruction
jonit-dev Oct 3, 2026
004e4b8
fix(render): release owned velocity attachments on temporal teardown
jonit-dev Oct 4, 2026
b32342b
fix(fixtures): resolve frame budget type through core package
jonit-dev Oct 4, 2026
ffa6ea9
Merge develop into temporal reconstruction preserving lifecycle repair
jonit-dev Oct 4, 2026
151d411
Merge develop CI improvements into PR #398
jonit-dev Oct 4, 2026
81b2bab
ci: retain temporal and velocity producer coverage
jonit-dev Oct 4, 2026
dc4c620
Merge current develop worker changes into PR #398
jonit-dev Oct 4, 2026
ea0c307
Merge hosted template concurrency improvement into PR #398
jonit-dev Oct 4, 2026
968698a
Merge remote-tracking branch 'origin/develop' into fix/pr398-temporal…
jonit-dev Oct 5, 2026
e692925
refactor(templates): clear the temporal resolve length and starter do…
jonit-dev Oct 5, 2026
bae1182
docs(verification): store two discovery transcripts as .jsonl.gz
jonit-dev Oct 5, 2026
f8dee5f
fix(conformance): give the scaled temporal diagnostic frames a real f…
jonit-dev Oct 5, 2026
ca3d47e
fix(render): invalidate temporal history after rejected inputs
jonit-dev Oct 5, 2026
f04169f
Merge develop and preserve temporal CI candidate receipts
jonit-dev Oct 5, 2026
f764c8c
feat(templates): measure the per-pixel temporal rejection share
jonit-dev Oct 5, 2026
32ec88d
test(temporal): fail the output-raster contract on a low-resolution p…
jonit-dev Oct 5, 2026
2d01696
test(temporal): measure the history coordinate from the continuous cu…
jonit-dev Oct 5, 2026
78157d1
test(conformance): run the temporal lifecycle route on the native lane
jonit-dev Oct 5, 2026
e3a66f4
test(temporal): add the Phase 2 quality route and capture its baseline
jonit-dev Oct 5, 2026
a6ae659
test(temporal): report the unsupported control counter honestly, prov…
jonit-dev Oct 5, 2026
9598ac7
docs(PRD-455): retract the false repeatability claim and record the t…
jonit-dev Oct 5, 2026
ab0b5d5
fix(temporal): hold the finished frame as the conformance capture
jonit-dev Oct 5, 2026
4fbe39d
fix(temporal): return a replaced pipeline context to its own originals
jonit-dev Oct 5, 2026
487b039
docs(PRD-455): record the measured reveal-ghost cause and the falsifi…
jonit-dev Oct 5, 2026
f1b22c0
fix(temporal): measure the depth-edge bypass out of the history decision
jonit-dev Oct 5, 2026
563d64a
docs(PRD-455): measure the reveal ghost with the blend held to one axis
jonit-dev Oct 5, 2026
8a20ae9
docs(PRD-455): correct two unsupported claims and log the failed comb…
jonit-dev Oct 5, 2026
a0830fe
docs(PRD-455): measure the installed node's current-frame reconstruct…
jonit-dev Oct 5, 2026
844a67c
Merge develop and retain temporal integration receipts
jonit-dev Oct 5, 2026
d8df0e8
Merge immutable temporal checkpoint and repair CPU raster contracts
jonit-dev Oct 5, 2026
9e9ccc8
fix(ci): route temporal rejection counter to its evidence lane
jonit-dev Oct 5, 2026
828a54d
docs(PRD-455): record combined CPU build and typecheck evidence
jonit-dev Oct 5, 2026
6570965
Merge develop PR440 while preserving temporal CPU repairs
jonit-dev Oct 5, 2026
18be602
docs(PRD-455): record PR440 integration CPU evidence
jonit-dev Oct 5, 2026
c5357e3
style(ci): wrap temporal counter source path
jonit-dev Oct 5, 2026
c06daf6
fix(render): preserve linear coverage in temporal resolve
jonit-dev Oct 5, 2026
a4a54f2
docs(PRD-455): correct matched-open pixel accounting
jonit-dev Oct 5, 2026
94c0307
fix(temporal): validate selected samples in prior depth grid
jonit-dev Oct 5, 2026
f73058a
fix(temporal): reconstruct the current frame from its jittered neighb…
jonit-dev Oct 5, 2026
8a0aec6
fix(temporal): combine Gaussian reconstruction with guarded history
jonit-dev Oct 5, 2026
4e94b95
fix(temporal): gate the thin-feature lock by a reactive colour mask
jonit-dev Oct 5, 2026
73fd472
Merge published temporal checkpoint with mandatory RGB clipping
jonit-dev Oct 5, 2026
0642e8e
Merge develop CI template concurrency update into PR398
jonit-dev Oct 6, 2026
8b3d98d
fix(render): bound temporal depth donor texels
jonit-dev Oct 6, 2026
2e9af7d
fix(render): keep temporal reconstruction modules readable
jonit-dev Oct 6, 2026
c2779e9
Merge current develop into PR398 temporal repair lane
jonit-dev Oct 6, 2026
4e86d37
Preserve current colour on native temporal input axes
jonit-dev Oct 6, 2026
ad3f028
feat(render): add bounded raw4 current-footprint candidate
jonit-dev Oct 6, 2026
330590c
test(render): align storage lifetime declaration with TS7
jonit-dev Oct 6, 2026
449ea4d
Merge branch 'develop' into feat/prd455-temporal-reconstruction
jonit-dev Oct 7, 2026
e4d1524
test(render): add opt-in raw4 switch to the temporal motion corpus
jonit-dev Oct 7, 2026
f45434a
fix(deps): repoint develop's importers at the PR-patched three hash
jonit-dev Oct 7, 2026
22b40ec
docs(prd455): record the raw4 hardware corpus result, still failing
jonit-dev Oct 7, 2026
828db02
docs(prd455): gzip cited evidence JSON to return under the evidence b…
jonit-dev Oct 7, 2026
d4ab066
docs(prd269): tick temporal-off cost with hardware proof, record the …
jonit-dev Oct 7, 2026
252c17d
docs(prd269): record that faster motion does not make the rejection c…
jonit-dev Oct 7, 2026
53da706
docs(prd455): record that widening the variance clip does not move th…
jonit-dev Oct 7, 2026
a8b943d
docs(prd455): record the static-camera control that localizes the edg…
jonit-dev Oct 7, 2026
c701f32
feat(render): close PRD-269 with a hardware ghosting verifier and PRD…
jonit-dev Oct 8, 2026
17ced12
fix(render): repair the CI reds the raw4 candidate and the PRD close …
jonit-dev Oct 8, 2026
899696f
fix(ci): run the ghosting verifier on the default WebGPU lane and reg…
jonit-dev Oct 8, 2026
9d97307
docs(prd): make PRD-269 and PRD-455 proofs say exactly what was run
jonit-dev Oct 8, 2026
148049f
Merge branch 'develop' into feat/prd455-temporal-reconstruction
jonit-dev Oct 8, 2026
5fd302c
fix(deps): repoint the importer develop added at the PR-patched three…
jonit-dev Oct 8, 2026
a215800
Merge branch 'develop' into feat/prd455-temporal-reconstruction
jonit-dev Oct 8, 2026
6768ace
fix(deps): repoint the procedural-animals three references at the PR-…
jonit-dev Oct 8, 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
99 changes: 98 additions & 1 deletion .github/workflows/integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,11 @@ jobs:
fluid-particles: ${{ steps.filter.outputs.fluid-particles }}
fluid-native: ${{ steps.filter.outputs.fluid-native }}
ik: ${{ steps.filter.outputs.ik }}
temporal: ${{ steps.filter.outputs.temporal }}
native-assets: ${{ steps.filter.outputs.native-assets }}
tone: ${{ steps.filter.outputs.tone }}
vegetation: ${{ steps.filter.outputs.vegetation }}
velocity: ${{ steps.filter.outputs.velocity }}
world-capture: ${{ steps.filter.outputs.world-capture }}
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
Expand All @@ -85,6 +87,8 @@ jobs:
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$
temporal ^packages/core/src/render/chain\.ts$|^packages/core/src/render/velocity\.ts$|^packages/core/__tests__/temporal-chain\.spec\.ts$|^packages/create-threenative/templates/starter/src/render/temporalAA[^/]*\.ts$|^packages/create-threenative/templates/starter/src/render/temporalResolve[^/]*\.ts$|^packages/create-threenative/templates/starter/src/render/temporalCurrent[^/]*\.ts$|^packages/create-threenative/templates/starter/src/render/temporalRejectionCounter\.ts$|^packages/create-threenative/__tests__/temporal[^/]*\.spec\.ts$|^packages/runtime-native/conformance/scenes/shared/temporal-aa[^/]*\.js$|^packages/runtime-native/conformance/scenes/shared/temporal-velocity-probe\.ts$|^packages/runtime-native/conformance/scenes/shared/temporal-resolve-probe\.ts$|^packages/runtime-native/__tests__/temporal-velocity-probe\.spec\.ts$|^examples/abyss-framework/temporal[^/]*$|^examples/abyss-framework/playtests/temporal-[^/]*\.playtest\.json$|^scripts/verify-temporal-[^/]*\.ts$|^scripts/temporal-aa-[^/]*\.ts$|^scripts/__tests__/temporal-aa-[^/]*\.spec\.ts$
velocity ^packages/core/src/renderProjection\.ts$|^packages/core/src/render/velocity\.ts$|^packages/core/src/render/batched-velocity\.ts$|^packages/core/__tests__/render-velocity\.spec\.ts$|^packages/core/__tests__/instance-velocity-upload\.spec\.ts$|^packages/core/__tests__/velocity-coverage-proof\.spec\.ts$|^packages/core/__tests__/skinned-velocity-bind-history\.spec\.ts$|^packages/core/patches/three@0\.185\.1\.patch$|^packages/playtest/.*$|^examples/abyss-framework/velocity-main\.ts$|^examples/abyss-framework/velocity-cost-main\.ts$|^examples/abyss-framework/velocity-cost\.html$|^examples/abyss-framework/src/render/velocityCost\.ts$|^examples/abyss-framework/playtests/velocity-cost\.playtest\.json$|^scripts/__tests__/velocity-cost-proof\.spec\.ts$|^examples/abyss-framework/src/render/velocityReadback\.ts$|^examples/abyss-framework/src/render/velocityCoverage\.ts$|^examples/abyss-framework/velocity\.html$|^examples/abyss-framework/velocity\.vite\.config\.ts$|^examples/abyss-framework/velocity\.tsconfig\.json$|^examples/abyss-framework/playtests/velocity-history\.playtest\.json$|^scripts/verify-velocity-history\.ts$|^scripts/velocity-capture-proof\.ts$|^scripts/__tests__/velocity-capture-proof\.spec\.ts$|^pnpm-lock\.yaml$
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 @@ -350,6 +354,99 @@ jobs:
path: ${{ github.workspace }}/artifacts/ci-integration-receipts/${{ github.job }}.json
if-no-files-found: error

temporal:
name: temporal
if: ${{ !github.event.pull_request.draft && needs.paths.outputs.temporal == 'true' }}
needs: paths
runs-on: ${{ (github.event.pull_request.head.repo.fork || !vars.TN_RUNNER) && 'ubuntu-24.04' || vars.TN_RUNNER }}
timeout-minutes: 20
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
with:
persist-credentials: false
ref: ${{ inputs.candidate_sha }}
- uses: ./.github/actions/pnpm
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version: '22'
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm --filter @threenative/playtest build
- uses: ./.github/actions/playwright-chromium
- name: Validate actual TRAANode and history lifecycle contracts
run: pnpm exec vitest run packages/core/__tests__/temporal-chain.spec.ts packages/core/__tests__/render-chain.spec.ts packages/core/__tests__/render-velocity.spec.ts packages/create-threenative/__tests__/temporal-aa.spec.ts packages/create-threenative/__tests__/temporal-initial-projection.spec.ts packages/create-threenative/__tests__/temporal-resolve.spec.ts packages/runtime-native/__tests__/temporal-velocity-probe.spec.ts scripts/__tests__/temporal-aa-evidence.spec.ts scripts/__tests__/temporal-aa-quality.spec.ts --maxWorkers=2
- name: Render temporal motion and reset variants
run: node --import tsx scripts/verify-temporal-aa.ts
# The strict 31-arm corpus (verify-temporal-motion.ts) is PRD-537's proof and fails by design until
# a reconstructor clears its edge/reveal gate; this job enforces the shipped ghosting scope.
- name: Measure animated-character ghosting against the zero-velocity control
run: node --import tsx scripts/verify-temporal-ghosting.ts
- name: Retain actual runtime screenshots and adapter evidence
if: always()
uses: actions/upload-artifact@v7
with:
name: temporal-aa-${{ github.run_id }}-${{ github.run_attempt }}-${{ inputs.candidate_sha }}
path: artifacts/temporal-aa
if-no-files-found: error
- name: Record exact current-attempt integration receipt
if: ${{ always() }}
env:
GH_TOKEN: ${{ github.token }}
TN_CI_JOB_RESULT: ${{ job.status }}
run: node "$GITHUB_WORKSPACE/scripts/ci-integration-receipts.mjs" --write
- uses: actions/upload-artifact@v7
if: ${{ always() }}
with:
name: ci-integration-receipt-${{ github.run_id }}-${{ github.run_attempt }}-${{ inputs.candidate_sha }}-${{ github.job }}
path: ${{ github.workspace }}/artifacts/ci-integration-receipts/${{ github.job }}.json
if-no-files-found: error

velocity:
name: velocity
if: ${{ !github.event.pull_request.draft && needs.paths.outputs.velocity == 'true' }}
needs: paths
runs-on: ${{ (github.event.pull_request.head.repo.fork || !vars.TN_RUNNER) && 'ubuntu-24.04' || vars.TN_RUNNER }}
timeout-minutes: 15
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
with:
persist-credentials: false
ref: ${{ inputs.candidate_sha }}
- uses: ./.github/actions/pnpm
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version: '22'
cache: pnpm
- run: pnpm install --frozen-lockfile
- uses: ./.github/actions/playwright-chromium
- name: Build this commit's public bridge and runner
run: pnpm --filter @threenative/playtest build
- name: Verify motion history and fail-closed capture guards
run: pnpm exec vitest run --maxWorkers=1 scripts/__tests__/velocity-capture-proof.spec.ts scripts/__tests__/velocity-cost-proof.spec.ts packages/core/__tests__/velocity-coverage-proof.spec.ts packages/core/__tests__/skinned-velocity-bind-history.spec.ts packages/core/__tests__/render-velocity.spec.ts packages/core/__tests__/instance-velocity-upload.spec.ts packages/core/__tests__/three-static-settled.spec.ts packages/core/__tests__/batched-velocity.spec.ts packages/core/__tests__/render-projection-pipeline.spec.ts packages/core/__tests__/renderProjection.spec.ts
- name: Check the exact source-wired fixture types
run: pnpm exec tsc --noEmit -p examples/abyss-framework/velocity.tsconfig.json
- name: Render actual authored batch velocity and missing-history control
run: pnpm exec tsx scripts/verify-velocity-history.ts
- name: Retain runtime PNGs, readbacks and exact adapter provenance
if: always()
uses: actions/upload-artifact@v7
with:
name: velocity-history-${{ github.run_id }}-${{ github.run_attempt }}-${{ inputs.candidate_sha }}
path: artifacts/velocity-history
if-no-files-found: error
- name: Record exact current-attempt integration receipt
if: ${{ always() }}
env:
GH_TOKEN: ${{ github.token }}
TN_CI_JOB_RESULT: ${{ job.status }}
run: node "$GITHUB_WORKSPACE/scripts/ci-integration-receipts.mjs" --write
- uses: actions/upload-artifact@v7
if: ${{ always() }}
with:
name: ci-integration-receipt-${{ github.run_id }}-${{ github.run_attempt }}-${{ inputs.candidate_sha }}-${{ github.job }}
path: ${{ github.workspace }}/artifacts/ci-integration-receipts/${{ github.job }}.json
if-no-files-found: error

animation:
name: animation
if: ${{ needs.paths.outputs.animation == 'true' && !github.event.pull_request.draft }}
Expand Down Expand Up @@ -953,7 +1050,7 @@ jobs:

completion:
name: Verify required integration receipts
needs: [paths, csg, ik, vegetation, decals, decals-native, tone, animation, animation-native, fog, fog-native, capture, fluid-collision, fluid-collision-native, packaged-quickjs, exposure, cold-boot]
needs: [paths, csg, ik, vegetation, decals, decals-native, tone, animation, animation-native, fog, fog-native, capture, fluid-collision, fluid-collision-native, packaged-quickjs, exposure, cold-boot, temporal, velocity]
if: ${{ always() }}
runs-on: ${{ (github.event.pull_request.head.repo.fork || !vars.TN_RUNNER_LIGHT) && 'ubuntu-24.04' || vars.TN_RUNNER_LIGHT }}
timeout-minutes: 5
Expand Down
Loading
Loading