Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
f6d965e
docs(prd): start PRD-616 startup warm-up execution
jonit-dev Oct 15, 2026
95b64c1
feat(playtest): measure pipeline work after warm-up
jonit-dev Oct 15, 2026
a5a05b3
test(abyss): add native warm-up entry
jonit-dev Oct 15, 2026
d897ce8
feat(core): warm output pipeline before first frame
jonit-dev Oct 15, 2026
80196d6
fix(core): observe renderer-owned node builds
jonit-dev Oct 15, 2026
d4b5ee5
fix(core): cover world pass for scoped warmups
jonit-dev Oct 15, 2026
3741182
fix(core): select covered output warm-up
jonit-dev Oct 15, 2026
57924ad
test(abyss): assert streamed chunk warm-up reuse
jonit-dev Oct 15, 2026
d570b76
docs(prd616): record streamed census fixture
jonit-dev Oct 15, 2026
b2691b9
fix(core): fail closed on incomplete chunk warmup
jonit-dev Oct 15, 2026
5237d52
docs(prd616): record local verification gates
jonit-dev Oct 15, 2026
fae449a
test(core): fix pipeline census typecheck
jonit-dev Oct 15, 2026
c0120ff
test(abyss): mark first visible proof frames
jonit-dev Oct 15, 2026
1903248
test(abyss): census streamed world chunk
jonit-dev Oct 15, 2026
c3b7d1a
docs(prd616): record verified startup evidence
jonit-dev Oct 15, 2026
1a34a53
test(abyss): isolate streamed chunk scope
jonit-dev Oct 15, 2026
965589f
fix(prd616): repair warmup contract fixtures
jonit-dev Oct 15, 2026
c03c9c4
test(abyss): prepare first-visible frame collector
jonit-dev Oct 15, 2026
72918da
test(prd616): reject stale startup samples
jonit-dev Oct 15, 2026
a7c16b0
fix: make world warm-up evidence truthful
jonit-dev Oct 15, 2026
fb236e6
fix(abyss): capture first world draw cpu
jonit-dev Oct 15, 2026
bb78337
fix(core): retro-tag warm-up node builds
jonit-dev Oct 15, 2026
b235006
fix(core): restore warm-up render state on failure
jonit-dev Oct 15, 2026
5c2bdaa
fix(abyss): gate first world cpu after warmup
jonit-dev Oct 15, 2026
016ec33
docs(prd616): record verified baseline rebuilds
jonit-dev Oct 15, 2026
d616d98
test(core): correct warm-up fixture signatures
jonit-dev Oct 15, 2026
a536d05
fix(core): reuse stock renderer state restoration
jonit-dev Oct 15, 2026
2ce000e
docs: record verified PRD-616 startup acceptance
jonit-dev Oct 15, 2026
957cb82
fix(core): refresh scoped world passes within the same frame
jonit-dev Oct 15, 2026
acc3aff
fix(core): preserve world visibility during scoped warm-up
jonit-dev Oct 15, 2026
7ba2e31
test: finish PRD-616 with fully resident world proof
jonit-dev Oct 15, 2026
ec86ed7
fix(core): refresh scoped world passes once through nested post renders
jonit-dev Oct 15, 2026
70ee367
fix(abyss): await startup and use headed WebGPU for replay proof
jonit-dev Oct 15, 2026
cec31f3
test: isolate audio worker build exit fixture
jonit-dev Oct 15, 2026
e5c1107
Merge remote-tracking branch 'origin/develop' into perf/prd616-warmup
jonit-dev Oct 16, 2026
6378f1e
ci(templates): give rain's software-adapter lane a 60-minute cap
jonit-dev Oct 16, 2026
b579988
fix(core): match warm-up scopes through the drawn chain
jonit-dev Oct 16, 2026
252c17d
Merge branch 'develop' into perf/prd616-warmup
jonit-dev Oct 16, 2026
cea0036
Merge branch 'develop' into perf/prd616-warmup
jonit-dev Oct 16, 2026
dce0c2a
fix(ci): wait for starter movement
jonit-dev Oct 16, 2026
953a57f
fix(ci): pin Windows packaging tools
jonit-dev Oct 16, 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
13 changes: 10 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -764,11 +764,14 @@ jobs:
timeout: 60_000,
});
await page.keyboard.down("ArrowRight");
await page.waitForTimeout(3_000);
const moved = await page.waitForFunction(() => {
const position = Number(document.body.innerText.match(/POSITION\n(-?\d+)/)?.[1]);
return Number.isFinite(position) && Math.abs(position) >= 1;
}, undefined, { timeout: 60_000 }).then(() => true, () => false);
await page.keyboard.up("ArrowRight");
const text = await page.locator("body").innerText();
const position = Number(text.match(/POSITION\n(-?\d+)/)?.[1]);
if (!Number.isFinite(position) || Math.abs(position) < 1 || errors.length > 0) {
if (!moved || !Number.isFinite(position) || Math.abs(position) < 1 || errors.length > 0) {
throw new Error(`Scaffold smoke failed: ${JSON.stringify({ text, errors })}`);
}
await browser.close();
Expand Down Expand Up @@ -804,7 +807,11 @@ jobs:
# Hosted on purpose: template legs use hosted while the balancer routes builds and tests
# to the local pool, avoiding one routing variable sending the whole burst to a single pool.
runs-on: ubuntu-24.04
timeout-minutes: 30
# rain relaunches the page for each of its five GPU-free scenarios. On the hosted SwiftShader
# adapter each launch now takes about 7 minutes, against about 1 minute on develop (runs
# 38818830914 and 38824021621), so five launches exceed the 30-minute cap. Only rain gets the
# larger cap until that software launch cost is reduced; every other leg keeps 30 minutes.
timeout-minutes: ${{ matrix.template == 'rain' && 60 || 30 }}
env:
TN_CI_SHA: ${{ needs.scope.outputs.candidate_sha }}
TN_PLAYTEST_ALLOW_SOFTWARE: "1"
Expand Down
39 changes: 30 additions & 9 deletions .github/workflows/native-platforms.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1536,15 +1536,36 @@ jobs:
# The release container is a ZIP on macOS and Windows and desktop-distribution.mjs shells
# out to `zip -r -q`. A missing archiver must be a red job, never a silent pass.
if [ "${{ matrix.platform }}" = "Windows" ]; then
# The community feed drops requests now and then ("package was not found" for a listed
# version, run 37079046851). Retry twice; makensis -VERSION below still fails closed.
for attempt in 1 2 3; do
choco install zip -y --no-progress && choco install nsis --version=3.11.0 -y --no-progress && break
[ "$attempt" = 3 ] || sleep 30
done
nsis='/c/Program Files (x86)/NSIS'
"$nsis/makensis.exe" -VERSION
cygpath -w "$nsis" >> "$GITHUB_PATH"
# Pinned upstream archives keep the Windows packaging proof independent of Chocolatey's feed.
root=$(cygpath -u "$RUNNER_TEMP")
tools="$root/tn-packaging-tools"
mkdir -p "$tools/nsis" "$tools/zip"
curl -fsSL --retry 2 --retry-all-errors --retry-delay 3 --connect-timeout 15 --max-time 120 \
-o "$tools/nsis.zip" \
'https://downloads.sourceforge.net/project/nsis/NSIS%203/3.11/nsis-3.11.zip'
curl -fsSL --retry 2 --retry-all-errors --retry-delay 3 --connect-timeout 15 --max-time 120 \
-o "$tools/zip.zip" \
'https://fossies.org/windows/misc/zip300xn-x64.zip'
printf '%s %s\n' \
'c7d27f780ddb6cffb4730138cd1591e841f4b7edb155856901cdf5f214394fa1' "$tools/nsis.zip" \
'63f32f1f797680d9c68379d36cff4373674d405527d7fa2b4bbd34edcc3370d2' "$tools/zip.zip" \
| sha256sum --check
export TN_NSIS_ARCHIVE="$(cygpath -w "$tools/nsis.zip")"
export TN_NSIS_DEST="$(cygpath -w "$tools/nsis")"
export TN_ZIP_ARCHIVE="$(cygpath -w "$tools/zip.zip")"
export TN_ZIP_DEST="$(cygpath -w "$tools/zip")"
powershell.exe -NoLogo -NoProfile -NonInteractive -Command '
$ErrorActionPreference = "Stop"
Expand-Archive -LiteralPath $env:TN_NSIS_ARCHIVE -DestinationPath $env:TN_NSIS_DEST -Force
Expand-Archive -LiteralPath $env:TN_ZIP_ARCHIVE -DestinationPath $env:TN_ZIP_DEST -Force
'
nsis="$tools/nsis/nsis-3.11"
export NSISDIR="$(cygpath -w "$nsis")"
"$nsis/Bin/makensis.exe" -VERSION
printf 'NSISDIR=%s\n' "$NSISDIR" >> "$GITHUB_ENV"
cygpath -w "$nsis/Bin" >> "$GITHUB_PATH"
cygpath -w "$tools/zip" >> "$GITHUB_PATH"
PATH="$tools/zip:$PATH"
# The starter sets app.icon, so desktop-distribution.mjs shells out to rcedit to embed
# the icon and version strings in the PE resources. rcedit is not on the runner image.
# Pin the release: `latest` would make the packaged identity move under us.
Expand Down
Loading
Loading