Skip to content

Promote develop to main: CI cuts and caches for 0.3.7 - #600

Open
jonit-dev wants to merge 12 commits into
mainfrom
develop
Open

jonit-dev wants to merge 12 commits into
mainfrom
develop

Conversation

@jonit-dev

Copy link
Copy Markdown
Contributor

What is this PR about?

It promotes develop to main with the owner's CI cuts and new caches, so 0.3.7 can ship.

Why does it matter?

Main CI on 57bc89e stays red because the rain engine-cost row hits its 45-minute limit on slow runners. This head moves that row to the nightly, and the release no longer needs a second native evidence run.

Done

  • template-engine-cost, starter scenarios, long scenarios on six kits, benchmark extras and the ARM64 frame comparison run on the nightly.
  • auto-exposure cold boot runs when exposure code changes and on the nightly.
  • native-platforms.yml has no push trigger. The release gate reads its reports from the main CI run.
  • Native Rust crates and Chromium apt packages are cached, and integration legs reuse the compiled workspace.

Checks

  • ✅ Workflow and release specs: 816/816. Native workflow test: 46/46. pnpm typecheck: exit 0.
  • ⚠️ This PR's board is the first CI run of these workflow edits.
  • ⚠️ Nightly-moved jobs no longer gate a release head. The last 6 nightly runs ended red or cancelled.
  • Unverified: the first nightly with these cuts, and the first release gate read of reports from a CI run.

Owner, 2026-11-01. The board drops about 300 job-minutes (engine-cost 180, evidence run about 199 per release).

- native-platforms.yml has no push trigger; the release gate reads its reports from the main CI run.
- template-engine-cost runs on the nightly only; a plan states `nightly`.
- auto-exposure cold boot runs when exposure code changes and on the nightly.
- Scenarios of 500+ scripted ticks on shooter, collectathon, rain, adventure, platformer and kart run on the nightly.
- The starter leg keeps its pristine check; its scenarios and parity pose run on the nightly.
- benchmark keeps count-loc --check; the rest runs on the nightly.
- The Linux ARM64 starter JS frame comparison runs on the nightly.
…re the compiled workspace with integration

Owner, 2026-11-01: "cache whatever else that can be cached". Estimates from the cache audit, not measured:
- native-rust-cache: about 12 job-minutes a board. Only a push saves.
- integration legs take build-artifacts' workspace: about 8-12 job-minutes.
- playwright-debs: about 3-5 job-minutes, and it avoids a slow apt mirror for those packages.
Run 41345897601 test-native: the spec still pinned the trigger PRD-776 removed.
Push board 41347117996: every integration leg failed at 'git rev-parse <candidate>^1'. The cold-boot
narrowing from PRD-776 read a parent that a depth-1 checkout does not have, so the main push board
could not have qualified. A missing parent now keeps cold boot selected for the writer only; the
paths job and both joins fetch full history and still decide exactly.
…tion keeps the cause

Run 41348117470: the Windows startup sample died on an error redaction withheld because it held a
Windows path. Mailbox read and remove retried a lock; the rename did not. The write now retries for
two seconds, the collector's screenshot request uses the same write, and a withheld failure keeps
its error code and syscall so the next one names itself.
…eads promotion as the verdict

The tag run passed --bundle-id dev.threenative.runtime while the packager stamps the consumer's app id,
so the simulator never listed the app and clean-consumer-ios failed the same way on 0.3.6 and 0.3.7.
That job does not gate promotion (owner, 2026-09-23), yet it failed the run, and release:ship stopped
on the run's conclusion after finalize had already made the release public. Ship now waits on the
public release, and still stops on a failed run that never promoted.
…ough an upgrade

Release proof TN_RELEASE_UPGRADE_RED: every 0.3.6 scaffold pins maxFrameMsP95 33 with no reason, and
the PRD-735 rule made that scenario invalid, so pnpm test failed on upgrade. The exact legacy pin now
loads, and the report's budget reason says it passes at 30 fps. Any other loose number still needs a
written reason, and templates still pin none.
…as unused

0.3.7's tag holds a public GitHub release with no npm cohort, and ship refuses to move such a tag.
… main pass goes negative

Field 0 answers for the renderer that drew last and field 27 for the world renderer, so a loading cover over a shadowed world read 4 - 98 = -94 main draws (measured on the platformer kit). The negative summed into the frame main pass, and when it won one sample failed isRuntimeDiagnosticsSample and the whole series with it: TN_PLAYTEST_PERFORMANCE_SAMPLES_MISSING, intermittent because it needs shadow draws above the frame main draws. The overlay also re-reported the world shadow pass, so shadow counts doubled on those frames.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant