Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
346bbd7
CI-OFFLOAD step 2: regen-on-ci workflow (Chrome steps on macos-26, la…
thejackshelton Oct 4, 2026
030f0bd
regen-on-ci: run tw-sweep once on the converged tree instead of in ev…
thejackshelton Oct 4, 2026
297c1c8
regen-on-ci: sweep and push run after skipped rounds (always() with t…
thejackshelton Oct 4, 2026
00a741e
regen-on-ci: warm the regen cache on every master push (PR-scoped cac…
thejackshelton Oct 4, 2026
d53f8fa
HOTSPOT-SPLIT 1/2: per-feature diagnostic codes, faults, property fam…
thejackshelton Oct 4, 2026
b775cf4
HOTSPOT-SPLIT 2/2: per-feature fixture-group and regen-step registrat…
thejackshelton Oct 4, 2026
e635a41
HOTSPOT-SPLIT 1/2: a code, fault, longhand or shorthand claimed by tw…
thejackshelton Oct 4, 2026
5f58eb2
HOTSPOT-SPLIT 1/2: ua.test catalogue boundary covers the catalogue's …
thejackshelton Oct 4, 2026
7130ace
Merge origin/master (#133 anim-vectors) into hotspot-split-parity; .g…
thejackshelton Oct 4, 2026
2157eeb
HOTSPOT-SPLIT 2/2 review: placeSteps refuses steps whose outputs over…
thejackshelton Oct 4, 2026
6d49850
regen: a snapshot never reads the outputs of a step still running bes…
thejackshelton Oct 5, 2026
91a9e5b
digest: SHA-256 through Node's native hash when the core runs under N…
thejackshelton Oct 5, 2026
1735bc1
land: batched landing - one proof per batch of positions, prefix bise…
thejackshelton Oct 5, 2026
a6ad40b
land: release the machine during admission; a stacked child builds on…
thejackshelton Oct 5, 2026
967c3ea
parity platform.ts: import the reference platforms from their own mod…
thejackshelton Oct 5, 2026
6765d58
ua.test: the core loads no module at run time, except digest.ts's doc…
thejackshelton Oct 5, 2026
77c0301
Split the planted translator fault tests into one file per (target, f…
thejackshelton Oct 5, 2026
ab20892
Move the parity determinism shards into 4 chunk files
thejackshelton Oct 5, 2026
8428aee
land: prove master before blaming position 1 and after a partial publ…
thejackshelton Oct 5, 2026
977c489
Land: merge regen-snapshot-race (#143)
thejackshelton Oct 5, 2026
251c2eb
Land: regenerate after merging regen-snapshot-race (#143)
thejackshelton Oct 5, 2026
5d4276d
Merge origin/master (#141 solo rerun) into land-batch; the proof step…
thejackshelton Oct 5, 2026
6d78ce6
NaN-any (PM ruling 2026-10-04): the corpus comparison matches any NaN…
thejackshelton Oct 5, 2026
35e3f17
Merge pull request #143 from compiled-run/regen-snapshot-race
thejackshelton Oct 5, 2026
4578cef
Land: merge land-batch (#145)
thejackshelton Oct 5, 2026
1dcea57
Land: regenerate after merging land-batch (#145)
thejackshelton Oct 5, 2026
1d3a794
Merge pull request #145 from compiled-run/land-batch
thejackshelton Oct 5, 2026
11d6927
land: a graceful stop (STOP_FILE or SIGUSR1) after the current batch;…
thejackshelton Oct 5, 2026
664928b
land: interrupts wait for a publish in progress; the next run proves …
thejackshelton Oct 5, 2026
6f859f6
Board: speed research (measured baselines, ranked recommendations)
thejackshelton Oct 5, 2026
69c1609
land: no device teardown; a red unproved master is logged, never bloc…
thejackshelton Oct 5, 2026
cf33f64
land: supervise() takes over signals before the spawn and buffers an …
thejackshelton Oct 5, 2026
06ec54b
land.test: the fake driver and supervisor write their files atomicall…
thejackshelton Oct 5, 2026
4edc453
land: keep installs when cleaning ignored outputs before a proof
thejackshelton Oct 5, 2026
4886c0d
Land: merge land-clean-hotfix (#155)
thejackshelton Oct 5, 2026
6858567
Land: regenerate after merging land-clean-hotfix (#155)
thejackshelton Oct 5, 2026
41df018
Merge pull request #155 from compiled-run/land-clean-hotfix
thejackshelton Oct 5, 2026
4b1de98
Land: merge land-stop (#148)
thejackshelton Oct 5, 2026
04246e5
Land: merge hotspot-split-dragon (#137)
thejackshelton Oct 5, 2026
555f392
Land: regenerate after merging land-stop (#148)
thejackshelton Oct 5, 2026
9763482
Land: merge hotspot-split-parity (#138)
thejackshelton Oct 5, 2026
c3857cd
Land: regenerate after merging hotspot-split-dragon (#137)
thejackshelton Oct 5, 2026
b422ac4
Land: regenerate after merging hotspot-split-parity (#138)
thejackshelton Oct 5, 2026
3b8e724
Land: merge regen-on-ci (#124)
thejackshelton Oct 5, 2026
6ae73f8
Land: regenerate after merging regen-on-ci (#124)
thejackshelton Oct 5, 2026
ac2c2fa
Merge pull request #148 from compiled-run/land-stop
thejackshelton Oct 5, 2026
23e7e98
Merge pull request #137 from compiled-run/hotspot-split-dragon
thejackshelton Oct 5, 2026
7d6183c
Merge pull request #138 from compiled-run/hotspot-split-parity
thejackshelton Oct 5, 2026
3c551fe
Merge pull request #124 from compiled-run/regen-on-ci
thejackshelton Oct 5, 2026
f086557
Land: merge digest-native-hash (#151)
thejackshelton Oct 5, 2026
11214ca
Land: regenerate after merging digest-native-hash (#151)
thejackshelton Oct 5, 2026
8b114ca
Land: merge ua-narrow-inputs (#152)
thejackshelton Oct 5, 2026
918aa25
Land: regenerate after merging ua-narrow-inputs (#152)
thejackshelton Oct 5, 2026
2a05dcc
Land: merge slow-split-planted (#150)
thejackshelton Oct 5, 2026
455a6b5
Land: regenerate after merging slow-split-planted (#150)
thejackshelton Oct 5, 2026
60f178f
Board: lane contract - regen on CI (#124 landed)
thejackshelton Oct 5, 2026
2c874b8
land: an idle machine is quiet even with a heavy slot held
thejackshelton Oct 5, 2026
0215f5e
Merge pull request #151 from compiled-run/digest-native-hash
thejackshelton Oct 5, 2026
8eb8b7c
Merge pull request #152 from compiled-run/ua-narrow-inputs
thejackshelton Oct 5, 2026
f0ccc71
Merge pull request #150 from compiled-run/slow-split-planted
thejackshelton Oct 5, 2026
f30c261
Board: COMPILE-SPEED - compile times per target, baseline vs now, PRs…
thejackshelton Oct 5, 2026
9177197
translate: a harness cache entry missing its artifact is replaced on …
thejackshelton Oct 5, 2026
378cb19
land: keep the translate harness build caches when cleaning ignored o…
thejackshelton Oct 5, 2026
dd44503
Land: merge native-cache-stale-entry (#164)
thejackshelton Oct 5, 2026
ea4f515
Board: COMPILE-SPEED - Kotlin flag measurements, #164 (stale cache en…
thejackshelton Oct 5, 2026
4426826
Land: regenerate after merging native-cache-stale-entry (#164)
thejackshelton Oct 5, 2026
391e864
Land: merge land-keep-native-cache (#165)
thejackshelton Oct 5, 2026
68070ed
Land: merge land-quiet-idle (#163)
thejackshelton Oct 5, 2026
c480a44
Land: regenerate after merging land-keep-native-cache (#165)
thejackshelton Oct 5, 2026
c78bd4a
Land: merge slow-split-determinism (#154)
thejackshelton Oct 5, 2026
e7b0598
Land: regenerate after merging land-quiet-idle (#163)
thejackshelton Oct 5, 2026
62d62d5
Land: regenerate after merging slow-split-determinism (#154)
thejackshelton Oct 5, 2026
d3f5440
Merge pull request #164 from compiled-run/native-cache-stale-entry
thejackshelton Oct 5, 2026
b45e8ab
Merge pull request #165 from compiled-run/land-keep-native-cache
thejackshelton Oct 5, 2026
9f0cbb0
Merge pull request #163 from compiled-run/land-quiet-idle
thejackshelton Oct 5, 2026
f2e148b
Board: COMPILE-SPEED - #158 review fixes (new head), #164 merged
thejackshelton Oct 5, 2026
75569aa
Merge pull request #154 from compiled-run/slow-split-determinism
thejackshelton Oct 5, 2026
abef4ef
Land: merge nan-any (#147)
thejackshelton Oct 5, 2026
f7edba8
Land: regenerate after merging nan-any (#147)
thejackshelton Oct 5, 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
42 changes: 21 additions & 21 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
# Generated outputs of `pnpm regen` (scripts/regen.ts): a merge keeps this side of each, and `pnpm regen` then rebuilds them
# from the merged sources. The driver needs `pnpm setup:git` once per clone; without it git merges these files as text.
# packages/parity/test/regen.test.ts keeps this list equal to the regen steps' outputs.
packages/dragon/src/css/grammar.generated.ts merge=dragon-generated
# packages/parity/test/regen.test.ts keeps this list equal to the regen steps' outputs, sorted, so features add lines in different places.
THIRD_PARTY_NOTICES.md merge=dragon-generated
packages/dragon/src/ua/*.generated.ts merge=dragon-generated
packages/parity/expected/darwin-arm64/** merge=dragon-generated
packages/parity/emitted/** merge=dragon-generated
packages/parity/expected-fonts/** merge=dragon-generated
packages/dragon/src/profiles/ios.ts merge=dragon-generated
examples/music-player/dragon/north-star-check.json merge=dragon-generated
packages/dragon/src/css/grammar.generated.ts merge=dragon-generated
packages/dragon/src/profiles/android.ts merge=dragon-generated
packages/dragon/src/profiles/web.ts merge=dragon-generated
packages/dragon/src/profiles/ios.ts merge=dragon-generated
packages/dragon/src/profiles/native-lanes.ts merge=dragon-generated
packages/parity/expected-dpr/** merge=dragon-generated
packages/parity/expected-hit/*.hit.json merge=dragon-generated
packages/dragon/src/profiles/web.ts merge=dragon-generated
packages/dragon/src/ua/*.generated.ts merge=dragon-generated
packages/layout/break-vectors/** merge=dragon-generated
packages/layout/generated/** merge=dragon-generated
packages/layout/paint-vectors/*/vectors.json merge=dragon-generated
packages/layout/rt-vectors/animator/** merge=dragon-generated
packages/layout/rt-vectors/hit/** merge=dragon-generated
packages/layout/vectors/*.json merge=dragon-generated
packages/layout/vectors/dpr-*/** merge=dragon-generated
packages/layout/rt-vectors/hit/** merge=dragon-generated
packages/layout/break-vectors/** merge=dragon-generated
packages/parity/emitted/** merge=dragon-generated
packages/parity/expected-breaks/** merge=dragon-generated
packages/parity/expected-pixels/** merge=dragon-generated
packages/parity/expected-dpr/** merge=dragon-generated
packages/parity/expected-fonts/** merge=dragon-generated
packages/parity/expected-frames/** merge=dragon-generated
packages/layout/rt-vectors/animator/** merge=dragon-generated
packages/layout/paint-vectors/*/vectors.json merge=dragon-generated
packages/layout/generated/** merge=dragon-generated
packages/translate/corpus.json merge=dragon-generated
packages/translate/corpus-dpr.json merge=dragon-generated
examples/music-player/dragon/north-star-check.json merge=dragon-generated
packages/wpt/snapshots/** merge=dragon-generated
packages/tailwind-sweep/snapshot/** merge=dragon-generated
packages/parity/expected-glyphs/bottom-scanlines.json merge=dragon-generated
packages/parity/expected-hit/*.hit.json merge=dragon-generated
packages/parity/expected-media/** merge=dragon-generated
packages/parity/expected-pixels/** merge=dragon-generated
packages/parity/expected/darwin-arm64/** merge=dragon-generated
packages/parity/out/lanes.json merge=dragon-generated
packages/tailwind-sweep/snapshot/** merge=dragon-generated
packages/translate/corpus-dpr.json merge=dragon-generated
packages/translate/corpus.json merge=dragon-generated
packages/wpt/snapshots/** merge=dragon-generated
4 changes: 3 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# Pull request checks. Macroscope's correctness review waits for this job (.macroscope/correctness/correctness.md).
# Every branch push runs it too, so a stacked PR based on its parent branch gets a CI run on its head; pr:review and the
# landing driver read the "checks" runs of the head commit, whichever event made them.
# landing driver read the "checks" runs of the head commit, whichever event made them. A push made with GITHUB_TOKEN starts no
# workflow, so regen-on-ci.yml dispatches this one on the branch after pushing its regen commit.
name: ci
on:
pull_request:
branches: [master, 'review/**']
push:
branches-ignore: [master]
workflow_dispatch:
permissions:
contents: read
jobs:
Expand Down
137 changes: 137 additions & 0 deletions .github/workflows/regen-on-ci-round.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
# One round of regen-on-ci.yml: `pnpm regen <args>` on one runner, starting from the branch commit plus the previous round's
# outputs and regen cache. Uploads the cumulative patch against the commit, the cache and the step logs as artifact <name>.
# side chrome (macos-26, where the Chrome captures are byte-identical to the local Mac's): every step except lanes-host.
# side host (xcode-27, Xcode 27.0 and Swift 6.4 like the local Mac): lanes-host only. The host toolchains must equal the ones
# the committed lanes.json records, or the round fails before running anything.
name: regen-on-ci-round
on:
workflow_call:
inputs:
runner: { type: string, required: true }
side: { type: string, required: true }
args: { type: string, required: true }
sha: { type: string, required: true }
prev: { type: string, required: false, default: '' }
name: { type: string, required: true }
outputs:
changed:
description: "'true' when this round changed any file"
value: ${{ jobs.round.outputs.changed }}
permissions:
contents: read
jobs:
round:
runs-on: ${{ inputs.runner }}
timeout-minutes: 300
outputs:
changed: ${{ steps.regen.outputs.changed }}
env:
# Inputs of the wpt and lanes-host cache keys; the same on every runner so the cache carries between rounds.
DRAGON_WPT_DIR: /Users/runner/wpt
JAVA_HOME: /opt/homebrew/opt/openjdk@17
ANDROID_HOME: /opt/homebrew/share/android-commandlinetools
DRAGON_REGEN_JOBS: '2'
HOMEBREW_NO_INSTALL_CLEANUP: '1'
steps:
- name: Check out the branch commit
uses: actions/checkout@v4
with:
ref: ${{ inputs.sha }}
- name: Set up pnpm 10.33.2
uses: pnpm/action-setup@v4
with:
version: 10.33.2
- name: Set up Node 24.15.0 (the local Mac's; a regen cache key includes the Node version)
uses: actions/setup-node@v4
with:
node-version: '24.15.0'
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Restore the regen cache (first round)
if: inputs.prev == ''
uses: actions/cache/restore@v4
with:
path: .git/dragon-regen/v2
key: regen-store-v2-darwin-arm64-node24.15.0-${{ github.run_id }}-${{ inputs.name }}
restore-keys: regen-store-v2-darwin-arm64-node24.15.0-
- name: Download the previous round
if: inputs.prev != ''
uses: actions/download-artifact@v4
with:
name: ${{ inputs.prev }}
path: ${{ runner.temp }}/prev
- name: Apply the previous round's outputs and cache
if: inputs.prev != ''
run: |
if [ -s "$RUNNER_TEMP/prev/outputs.patch" ]; then git apply --binary "$RUNNER_TEMP/prev/outputs.patch"; fi
mkdir -p .git/dragon-regen
tar -xzf "$RUNNER_TEMP/prev/store.tgz" -C .git/dragon-regen
- name: Chrome side - Playwright 1.58.2 Chromium and the pinned WPT copy
if: inputs.side == 'chrome'
run: |
test "$(pnpm --filter @dragon/parity exec playwright --version)" = "Version 1.58.2"
pnpm --filter @dragon/parity exec playwright install chromium
- name: Chrome side - cache the WPT copy
if: inputs.side == 'chrome'
uses: actions/cache@v4
with:
path: /Users/runner/wpt
key: wpt-${{ hashFiles('packages/wpt/wpt.lock') }}
- name: Chrome side - fetch the WPT copy when the cache missed
if: inputs.side == 'chrome'
run: bash scripts/fetch-wpt.sh
- name: Host side - JDK 17 and kotlinc, checked against the toolchains lanes.json records
if: inputs.side == 'host'
run: |
brew install openjdk@17
brew upgrade kotlin || brew install kotlin
cat > "$RUNNER_TEMP/toolchains.mts" <<'EOF'
// The host lanes record their toolchain in lanes.json; a runner with another one would rewrite those rows.
import { readFileSync } from 'node:fs';
import { join } from 'node:path';
const ws = process.env.GITHUB_WORKSPACE!;
const { swiftTool, kotlinTool } = await import(join(ws, 'packages/translate/src/native.ts'));
const lanes = JSON.parse(readFileSync(join(ws, 'packages/parity/out/lanes.json'), 'utf8'));
const want = (target: string): string | null => lanes.targets.find((t: any) => t.target === target)?.lanes.find((l: any) => l.lane === 'layout-vectors-host')?.run?.toolchain ?? null;
const have = { ios: swiftTool()?.version ?? null, android: kotlinTool()?.version ?? null };
let bad = 0;
for (const t of ['ios', 'android'] as const) {
console.log(`${t}: runner ${JSON.stringify(have[t])}, lanes.json ${JSON.stringify(want(t))}`);
if (have[t] === null || have[t] !== want(t)) bad++;
}
if (bad > 0) { console.error('the runner toolchains differ from the committed lanes.json; lanes-host would rewrite its rows'); process.exit(1); }
EOF
node --conditions=dragon-internal "$RUNNER_TEMP/toolchains.mts"
- name: pnpm regen ${{ inputs.args }}
id: regen
run: |
git add -A && before=$(git write-tree)
start=$(date +%s)
pnpm regen ${{ inputs.args }} 2>&1 | tee "$RUNNER_TEMP/regen.log"
code=${PIPESTATUS[0]}
secs=$(( $(date +%s) - start ))
git add -A && after=$(git write-tree)
changed=false; [ "$before" != "$after" ] && changed=true
echo "changed=$changed" >> "$GITHUB_OUTPUT"
mkdir -p "$RUNNER_TEMP/out"
git diff --cached --binary "${{ inputs.sha }}" > "$RUNNER_TEMP/out/outputs.patch"
git diff --cached --stat "${{ inputs.sha }}" | tail -1
tar -czf "$RUNNER_TEMP/out/store.tgz" -C .git/dragon-regen v2
cp "$RUNNER_TEMP/regen.log" "$RUNNER_TEMP/out/"
cp node_modules/.cache/dragon-regen/*.log node_modules/.cache/dragon-regen/last-run.json "$RUNNER_TEMP/out/" 2>/dev/null || true
echo "${{ inputs.name }} (${{ inputs.runner }}): pnpm regen ${{ inputs.args }}: exit $code, ${secs} s, changed files: $changed" | tee "$RUNNER_TEMP/out/timing.txt" >> "$GITHUB_STEP_SUMMARY"
exit "$code"
- name: Upload this round
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.name }}
path: ${{ runner.temp }}/out
if-no-files-found: warn
- name: Save the regen cache
if: success()
uses: actions/cache/save@v4
with:
path: .git/dragon-regen/v2
key: regen-store-v2-darwin-arm64-node24.15.0-${{ github.run_id }}-${{ github.run_attempt }}-${{ inputs.name }}
Loading
Loading