Skip to content

ci: plan every lane from one table and merge the gate workflows into ci.yml - #651

Merged
Exoridus merged 1 commit into
mainfrom
ci/redesign
Sep 3, 2026
Merged

ci: plan every lane from one table and merge the gate workflows into ci.yml#651
Exoridus merged 1 commit into
mainfrom
ci/redesign

Conversation

@Exoridus

@Exoridus Exoridus commented Sep 2, 2026

Copy link
Copy Markdown
Owner

The reusable _ci-checks.yml had grown to 18 jobs and 1400 lines, each job carrying its own copy of the checkout/pnpm/node/install block and its own hand-written if:, with a 120-line shell verdict re-deriving which of them had to have run. The same knowledge lived a second time in scripts/lanes.ts for the pre-push hook.

What changes

  • scripts/ci/lanes.ts is the one lane table: id, stage, the effective lane that enables it, the local command, the CI command, and what the runner needs (browser, apt packages, Naga, the dist). ci.yml has one matrix job per stage and reads its entries from the plan job, which runs the table with plain node before any install. The pre-push hook runs the same table. A lane is added in one place; the workflow never names one.
  • Stages: plangates / test / buildverify, sitesmokeverdict. verdict is the single required check; scripts/ci/verdict.ts fails any job the plan asked for that did not succeed, a skipped one included (the path-filter regression the shell loop used to catch). The checkout/pnpm/node/install block is a local composite action.
  • Coverage on pushes to main/next only. A pull request's unit lane runs the same tests without Istanbul, which takes the run's critical path from ~12 minutes to ~5.
  • release.yml no longer re-verifies the tagged commit. trust requires it to sit on main with a successful verdict and to match package.json; prepare and publish follow unchanged, and prepare uploads the site artifact Deploy Pages expects from a release run.
  • The Firefox lane is CI-only (its assertions hold for the runner's software rasteriser, not a developer GPU); the release dry run has its own area (release tooling and packed manifests) instead of riding on every engine change.

Fixed on the way

A change under src/ now builds the site: the catalog smoke drives the site job's artifact, and the old gate skipped the site job for an engine-only change while still requiring the smoke that needed it.

Size

_ci-checks.yml (1427) + ci.yml (28) + release.yml (206) → ci.yml (~270) + release.yml (~160) + actions/setup (~60) + lanes.ts/verdict.ts.

Follow-ups outside the repo (after merge)

  • Ruleset "Protect main branch": required check checks / Required CIverdict; include next.
  • Default branch → next.

https://claude.ai/code/session_01YRLzcQ9ZasLdUWCtD9fDpM

@codecov

codecov Bot commented Sep 2, 2026

Copy link
Copy Markdown

Bundle Report

Changes will increase total bundle size by 17.81MB (57.79%) ⬆️⚠️, exceeding the configured threshold of 5%.

Bundle name Size Change
site-server-esm 32.11MB 17.81MB (124.49%) ⬆️⚠️

Affected Assets, Files, and Routes:

view changes for bundle: site-server-esm

Assets Changed:

Asset Name Size Change Total Size Change (%)
chunks/_astro_data-layer-content_C500QxNY.mjs (New) 6.96MB 6.96MB 100.0% 🚀
chunks/example-sources_DapV68qy.mjs (New) 1.46MB 1.46MB 100.0% 🚀
chunks/cpp_CPDmpxAH.mjs (New) 837.87kB 837.87kB 100.0% 🚀
chunks/emacs-lisp_Dv0hCzlu.mjs (New) 792.54kB 792.54kB 100.0% 🚀
chunks/wasm_CLRKp8VF.mjs (New) 622.55kB 622.55kB 100.0% 🚀
_astro/vendor-monaco.D6-58Mxn.css (New) 308.24kB 308.24kB 100.0% 🚀
chunks/components_hi_I81ex.mjs (New) 302.51kB 302.51kB 100.0% 🚀
chunks/wolfram_CcZPfnLd.mjs (New) 266.98kB 266.98kB 100.0% 🚀
chunks/jsx-runtime_DRnKKoER.mjs (New) 246.89kB 246.89kB 100.0% 🚀
prerender-entry.DshdXFaf.mjs (New) 226.1kB 226.1kB 100.0% 🚀
chunks/vue-vine_BwEx5Hbl.mjs (New) 201.21kB 201.21kB 100.0% 🚀
chunks/angular-ts_Go_sxgiM.mjs (New) 194.57kB 194.57kB 100.0% 🚀
chunks/typescript_BdOuaDkb.mjs (New) 191.0kB 191.0kB 100.0% 🚀
chunks/jsx_DlBZfu41.mjs (New) 188.11kB 188.11kB 100.0% 🚀
chunks/tsx_DP9gbsaw.mjs (New) 185.85kB 185.85kB 100.0% 🚀
chunks/javascript_Csr6kOdt.mjs (New) 185.19kB 185.19kB 100.0% 🚀
chunks/typst_BnzMfKm_.mjs (New) 184.6kB 184.6kB 100.0% 🚀
chunks/objective-cpp__ooRQ-PY.mjs (New) 184.45kB 184.45kB 100.0% 🚀
chunks/backend-comparison_BZmeUj83.mjs (New) 169.16kB 169.16kB 100.0% 🚀
chunks/audio-effects_DVJoeRXs.mjs (New) 157.49kB 157.49kB 100.0% 🚀
chunks/asciidoc_xKuVlNk6.mjs (New) 150.63kB 150.63kB 100.0% 🚀
chunks/mdx_BK9ZufRc.mjs (New) 146.33kB 146.33kB 100.0% 🚀
chunks/infinite-maps_BDAMxTGm.mjs (New) 141.61kB 141.61kB 100.0% 🚀
chunks/animation_BDvx1MxX.mjs (New) 141.27kB 141.27kB 100.0% 🚀
chunks/spatial-audio_Bz55XEWe.mjs (New) 137.74kB 137.74kB 100.0% 🚀
chunks/php_Ce-_eRmu.mjs (New) 120.72kB 120.72kB 100.0% 🚀
chunks/blade_BmZAqhvV.mjs (New) 112.47kB 112.47kB 100.0% 🚀
chunks/objective-c_6dJF64Dt.mjs (New) 111.93kB 111.93kB 100.0% 🚀
chunks/tiled-maps_BzoDY72P.mjs (New) 111.71kB 111.71kB 100.0% 🚀
chunks/audio-basics_DLjtqPEu.mjs (New) 107.94kB 107.94kB 100.0% 🚀
chunks/less_BzbdhFUi.mjs (New) 107.13kB 107.13kB 100.0% 🚀
chunks/gamepad_D-o4LL0n.mjs (New) 100.0kB 100.0kB 100.0% 🚀
chunks/csharp_CFKaLbHg.mjs (New) 99.97kB 99.97kB 100.0% 🚀
chunks/fortran-free-form_yxJ7igsv.mjs (New) 98.65kB 98.65kB 100.0% 🚀
chunks/loading-and-resources_DWdAmY5H.mjs (New) 97.47kB 97.47kB 100.0% 🚀
chunks/ui-and-widgets_2bn8XAo4.mjs (New) 97.2kB 97.2kB 100.0% 🚀
chunks/racket_DRv7j6nv.mjs (New) 95.06kB 95.06kB 100.0% 🚀
chunks/particles_B9rTcZng.mjs (New) 94.62kB 94.62kB 100.0% 🚀
chunks/swift_DWmMn3lF.mjs (New) 94.57kB 94.57kB 100.0% 🚀
chunks/immediate-mode_C68APSTm.mjs (New) 92.79kB 92.79kB 100.0% 🚀
chunks/custom-mesh-shaders_BBYqCoAx.mjs (New) 88.03kB 88.03kB 100.0% 🚀
chunks/authoring-extensions_r53Ap7gr.mjs (New) 86.09kB 86.09kB 100.0% 🚀
chunks/hack_ogeSwry3.mjs (New) 86.02kB 86.02kB 100.0% 🚀
chunks/text_MVW5tr5c.mjs (New) 84.66kB 84.66kB 100.0% 🚀
chunks/beat-detection_rBtspDJl.mjs (New) 83.95kB 83.95kB 100.0% 🚀
chunks/application_LoCnkRCQ.mjs (New) 83.5kB 83.5kB 100.0% 🚀
chunks/vyper_C6KGx0YU.mjs (New) 82.05kB 82.05kB 100.0% 🚀
chunks/latex_CHMapQI4.mjs (New) 80.49kB 80.49kB 100.0% 🚀
chunks/filters_9o6WDEC-.mjs (New) 79.62kB 79.62kB 100.0% 🚀
chunks/gameplay-collision_DNwsKMQz.mjs (New) 78.98kB 78.98kB 100.0% 🚀
chunks/c_DtrCgMGx.mjs (New) 78.39kB 78.39kB 100.0% 🚀
chunks/physics-basics_l-L7Fsdt.mjs (New) 77.32kB 77.32kB 100.0% 🚀
chunks/python_BjnOIxPe.mjs (New) 77.17kB 77.17kB 100.0% 🚀
chunks/mojo_CsUSYzsu.mjs (New) 76.64kB 76.64kB 100.0% 🚀
chunks/graphics_D86P-Lwq.mjs (New) 75.46kB 75.46kB 100.0% 🚀
chunks/vendor-react_CW3EEB64.mjs (New) 75.19kB 75.19kB 100.0% 🚀
chunks/worlds-and-spawning_CQzJeUN9.mjs (New) 72.75kB 72.75kB 100.0% 🚀
chunks/ldtk_CKumqy6k.mjs (New) 72.12kB 72.12kB 100.0% 🚀
chunks/typed-worklets-and-workers_DnobHWbp.mjs (New) 70.72kB 70.72kB 100.0% 🚀
chunks/ExampleBrowser_tTVq3qmF.mjs (New) 68.95kB 68.95kB 100.0% 🚀
chunks/debugging-and-inspection_CPO9qzQq.mjs (New) 67.4kB 67.4kB 100.0% 🚀
chunks/ocaml_vm1Y8An6.mjs (New) 67.28kB 67.28kB 100.0% 🚀
chunks/markdown_CkmxmzqY.mjs (New) 65.34kB 65.34kB 100.0% 🚀
chunks/sprites_BL12WLqN.mjs (New) 65.21kB 65.21kB 100.0% 🚀
chunks/ballerina_DIdXD2KH.mjs (New) 64.73kB 64.73kB 100.0% 🚀
chunks/aseprite_BJ1jfbe3.mjs (New) 63.85kB 63.85kB 100.0% 🚀
chunks/deployment_B4a1iRC3.mjs (New) 63.24kB 63.24kB 100.0% 🚀
chunks/wikitext_wjhjmmzD.mjs (New) 62.35kB 62.35kB 100.0% 🚀
chunks/html_CJiVogkZ.mjs (New) 62.31kB 62.31kB 100.0% 🚀
chunks/stata_ZpI2p0PE.mjs (New) 62.02kB 62.02kB 100.0% 🚀
chunks/mermaid_ItFqCK9s.mjs (New) 61.2kB 61.2kB 100.0% 🚀
chunks/render-targets_rMdeofYe.mjs (New) 58.77kB 58.77kB 100.0% 🚀
chunks/everforest-light_D0-By8Ib.mjs (New) 58.66kB 58.66kB 100.0% 🚀
chunks/everforest-dark_DM8lKNNi.mjs (New) 58.65kB 58.65kB 100.0% 🚀
chunks/catppuccin-macchiato_Dkogd_RC.mjs (New) 56.22kB 56.22kB 100.0% 🚀
chunks/catppuccin-frappe_DpzIdcTG.mjs (New) 56.2kB 56.2kB 100.0% 🚀
chunks/catppuccin-latte_qlLg6gWa.mjs (New) 56.2kB 56.2kB 100.0% 🚀
chunks/catppuccin-mocha_DW8bSod0.mjs (New) 56.2kB 56.2kB 100.0% 🚀
chunks/typed-shaders_DV2QH91p.mjs (New) 55.37kB 55.37kB 100.0% 🚀
chunks/imba_96qKoJCa.mjs (New) 54.85kB 54.85kB 100.0% 🚀
chunks/_virtual_astro_get-image_BZn2zLF1.mjs (New) 54.78kB 54.78kB 100.0% 🚀
chunks/ada_twHwrVWN.mjs (New) 54.62kB 54.62kB 100.0% 🚀
chunks/mouse-and-pointer_ClW7fOaf.mjs (New) 53.74kB 53.74kB 100.0% 🚀
chunks/apex_CybrBQ0z.mjs (New) 53.2kB 53.2kB 100.0% 🚀
chunks/keyboard-and-actions_WEggJLhm.mjs (New) 52.88kB 52.88kB 100.0% 🚀
chunks/AppShell_CL8ItKjq.mjs (New) 52.65kB 52.65kB 100.0% 🚀
chunks/ruby_DurSp7NY.mjs (New) 52.52kB 52.52kB 100.0% 🚀
chunks/css_B24SoJng.mjs (New) 52.49kB 52.49kB 100.0% 🚀
chunks/go_aXtTCanQ.mjs (New) 51.86kB 51.86kB 100.0% 🚀
_astro/AppShell.DdDJa49n.css (New) 50.24kB 50.24kB 100.0% 🚀
chunks/ahk2_bJ5Wm9-K.mjs (New) 48.96kB 48.96kB 100.0% 🚀
chunks/d_BQY8TDgQ.mjs (New) 48.94kB 48.94kB 100.0% 🚀
chunks/perl_DD46WzW0.mjs (New) 48.57kB 48.57kB 100.0% 🚀
chunks/shellscript_CJgrg95w.mjs (New) 45.75kB 45.75kB 100.0% 🚀
chunks/haskell_CfGsE1Cf.mjs (New) 45.58kB 45.58kB 100.0% 🚀
chunks/troubleshooting_CK6DOTva.mjs (New) 44.55kB 44.55kB 100.0% 🚀
chunks/asm_wBDSgBbA.mjs (New) 43.88kB 43.88kB 100.0% 🚀
chunks/scene-graph_bfEYJr4U.mjs (New) 43.01kB 43.01kB 100.0% 🚀
chunks/custom-renderers_CM7zMWLp.mjs (New) 42.4kB 42.4kB 100.0% 🚀
chunks/erlang_BsP4G84Y.mjs (New) 41.69kB 41.69kB 100.0% 🚀
chunks/org_GxkLwT0W.mjs (New) 41.61kB 41.61kB 100.0% 🚀
chunks/cobol_Cde5oeOV.mjs (New) 41.47kB 41.47kB 100.0% 🚀
chunks/bird2_BMprQDNV.mjs (New) 41.32kB 41.32kB 100.0% 🚀
chunks/haxe_QaqXWmIB.mjs (New) 40.26kB 40.26kB 100.0% 🚀
chunks/pixel-snapping_DVvuRdgH.mjs (New) 40.11kB 40.11kB 100.0% 🚀
chunks/resize-dpr-and-canvas_D233BJsq.mjs (New) 39.66kB 39.66kB 100.0% 🚀
chunks/nginx_B6K5caqL.mjs (New) 39.45kB 39.45kB 100.0% 🚀
chunks/EditorPreview_BEnY8JmG.mjs (New) 39.29kB 39.29kB 100.0% 🚀
chunks/houston_BCge59HB.mjs (New) 39.13kB 39.13kB 100.0% 🚀
chunks/tokyo-night_CZgEO66P.mjs (New) 38.95kB 38.95kB 100.0% 🚀
chunks/device-variants_C2j-7VjW.mjs (New) 37.6kB 37.6kB 100.0% 🚀
chunks/one-dark-pro_CUhzNQJE.mjs (New) 37.42kB 37.42kB 100.0% 🚀
chunks/poimandres_QRiMVtzX.mjs (New) 36.74kB 36.74kB 100.0% 🚀
chunks/serialization-and-prefabs_CaqO297K.mjs (New) 35.73kB 35.73kB 100.0% 🚀
chunks/scenes-and-lifecycle_CZyybvAu.mjs (New) 35.13kB 35.13kB 100.0% 🚀
chunks/bsl_RRHQTRWr.mjs (New) 35.05kB 35.05kB 100.0% 🚀
chunks/stylus_ZZDn1yUO.mjs (New) 33.23kB 33.23kB 100.0% 🚀
chunks/julia_CUdUEEdZ.mjs (New) 33.23kB 33.23kB 100.0% 🚀
chunks/crystal_BxARsATC.mjs (New) 32.91kB 32.91kB 100.0% 🚀
chunks/ahk_B0zayAPr.mjs (New) 32.83kB 32.83kB 100.0% 🚀
chunks/night-owl_Cm6kp1PA.mjs (New) 32.35kB 32.35kB 100.0% 🚀
chunks/applescript_CJ80B5XJ.mjs (New) 32.08kB 32.08kB 100.0% 🚀
chunks/scala_pMGZAs9j.mjs (New) 31.33kB 31.33kB 100.0% 🚀
chunks/joints-and-dynamics_BNCh7hss.mjs (New) 31.05kB 31.05kB 100.0% 🚀
chunks/razor_DtzGaIsD.mjs (New) 30.85kB 30.85kB 100.0% 🚀
chunks/scss_DfTZ3J77.mjs (New) 30.71kB 30.71kB 100.0% 🚀
chunks/java_DtJJObUJ.mjs (New) 30.68kB 30.68kB 100.0% 🚀
chunks/EditorCode_DG4apxAq.mjs (New) 30.57kB 30.57kB 100.0% 🚀
chunks/coffee_CKL8nDPj.mjs (New) 29.89kB 29.89kB 100.0% 🚀
chunks/c3_u0qNrniV.mjs (New) 29.84kB 29.84kB 100.0% 🚀
chunks/guide-structure_B4PBWYYB.mjs (New) 29.7kB 29.7kB 100.0% 🚀
chunks/nord_B2iOUYPu.mjs (New) 29.64kB 29.64kB 100.0% 🚀
chunks/codeql_BwdvwJnv.mjs (New) 29.6kB 29.6kB 100.0% 🚀
chunks/night-owl-light_C5JQlziG.mjs (New) 29.05kB 29.05kB 100.0% 🚀
chunks/system-verilog_DW0KSMVO.mjs (New) 28.95kB 28.95kB 100.0% 🚀
chunks/performance_SA9zW0VH.mjs (New) 28.89kB 28.89kB 100.0% 🚀
chunks/vue_BZSikl6a.mjs (New) 28.8kB 28.8kB 100.0% 🚀
chunks/marko_yztgkyW2.mjs (New) 28.69kB 28.69kB 100.0% 🚀
chunks/fsharp_Csv26BFS.mjs (New) 28.44kB 28.44kB 100.0% 🚀
_astro/jetbrains-mono-latin-500-normal.CJOVTJB7.woff (New) 28.21kB 28.21kB 100.0% 🚀
chunks/one-light_Dydeaphl.mjs (New) 28.19kB 28.19kB 100.0% 🚀
chunks/angular-html_DFpvQUcR.mjs (New) 27.66kB 27.66kB 100.0% 🚀
chunks/typespec_C_R5TbvO.mjs (New) 27.64kB 27.64kB 100.0% 🚀
chunks/moonbit_BzHkbr4Q.mjs (New) 27.52kB 27.52kB 100.0% 🚀
_astro/jetbrains-mono-latin-400-normal.6-qcROiO.woff (New) 27.5kB 27.5kB 100.0% 🚀
chunks/apl_BusG2rRg.mjs (New) 27.01kB 27.01kB 100.0% 🚀
chunks/vhdl_Co2XFKY7.mjs (New) 26.8kB 26.8kB 100.0% 🚀
chunks/purescript_CLpaGMbw.mjs (New) 26.78kB 26.78kB 100.0% 🚀
chunks/DocsSidebar_B7B2k7EL.mjs (New) 26.63kB 26.63kB 100.0% 🚀
chunks/cadence_B1ELWULD.mjs (New) 26.37kB 26.37kB 100.0% 🚀
chunks/templ_Dua9xeFZ.mjs (New) 26.31kB 26.31kB 100.0% 🚀
chunks/astro_DVlyOzje.mjs (New) 25.85kB 25.85kB 100.0% 🚀
chunks/nim_B6oIhaho.mjs (New) 25.63kB 25.63kB 100.0% 🚀
chunks/retained-containers_C3NMQUI4.mjs (New) 25.49kB 25.49kB 100.0% 🚀
chunks/gruvbox-light-medium_DK7Hp87r.mjs (New) 25.36kB 25.36kB 100.0% 🚀
chunks/gruvbox-dark-medium_C1cagsrM.mjs (New) 25.36kB 25.36kB 100.0% 🚀
chunks/gruvbox-light-hard_h1QgYclB.mjs (New) 25.35kB 25.35kB 100.0% 🚀
chunks/gruvbox-light-soft_CsHBh6fE.mjs (New) 25.35kB 25.35kB 100.0% 🚀
chunks/gruvbox-dark-hard_DaH6zhre.mjs (New) 25.35kB 25.35kB 100.0% 🚀
chunks/gruvbox-dark-soft_V8cmWQ7W.mjs (New) 25.35kB 25.35kB 100.0% 🚀
chunks/react_5XR8rYL-.mjs (New) 25.32kB 25.32kB 100.0% 🚀
chunks/sql_DtGcscyb.mjs (New) 24.8kB 24.8kB 100.0% 🚀
chunks/_astro_content_6Bu-8ibN.mjs (New) 24.54kB 24.54kB 100.0% 🚀
chunks/twig_D5YhvR8w.mjs (New) 24.25kB 24.25kB 100.0% 🚀
chunks/rose-pine-dawn_5bNxnqJn.mjs (New) 24.16kB 24.16kB 100.0% 🚀
chunks/rose-pine-moon_D9u1dVFS.mjs (New) 24.16kB 24.16kB 100.0% 🚀
chunks/rose-pine_LrKaLPzB.mjs (New) 24.14kB 24.14kB 100.0% 🚀
chunks/offline_BtGDwMLw.mjs (New) 24.08kB 24.08kB 100.0% 🚀
chunks/wit_CeQiCbz_.mjs (New) 23.94kB 23.94kB 100.0% 🚀
chunks/common-lisp_DJtwvW4V.mjs (New) 23.61kB 23.61kB 100.0% 🚀
chunks/dracula-soft_CxJ6yBh7.mjs (New) 23.29kB 23.29kB 100.0% 🚀
chunks/dracula_DrwtDR2u.mjs (New) 23.26kB 23.26kB 100.0% 🚀
chunks/audio-reactive-visualization_CwDp8Y3J.mjs (New) 23.26kB 23.26kB 100.0% 🚀
chunks/snazzy-light_DfXk5yzb.mjs (New) 23.25kB 23.25kB 100.0% 🚀
chunks/build-orb-dodge_CyNW5jau.mjs (New) 23.02kB 23.02kB 100.0% 🚀
chunks/glimmer-js_B8pygmEI.mjs (New) 22.94kB 22.94kB 100.0% 🚀
chunks/glimmer-ts_CQEDCkOl.mjs (New) 22.94kB 22.94kB 100.0% 🚀
chunks/nushell_BLPX3-WC.mjs (New) 22.84kB 22.84kB 100.0% 🚀
chunks/errors-data_CM441LK8.mjs (New) 22.73kB 22.73kB 100.0% 🚀
chunks/ayu-light_Djj5_ZCz.mjs (New) 22.53kB 22.53kB 100.0% 🚀
chunks/ayu-mirage_B5o6RGmT.mjs (New) 22.47kB 22.47kB 100.0% 🚀
chunks/ayu-dark_liWEyCZQ.mjs (New) 22.46kB 22.46kB 100.0% 🚀
chunks/powershell_DvOBVZPr.mjs (New) 21.96kB 21.96kB 100.0% 🚀
_astro/jetbrains-mono-latin-500-normal.BWZEU5yA.woff2 (New) 21.83kB 21.83kB 100.0% 🚀
chunks/groovy_Bw2Ku4bU.mjs (New) 21.56kB 21.56kB 100.0% 🚀
chunks/mdc_C1b5g3_q.mjs (New) 21.34kB 21.34kB 100.0% 🚀
chunks/viml_BReTXeDA.mjs (New) 21.2kB 21.2kB 100.0% 🚀
_astro/HomePage.6qBWH9qC.css (New) 21.18kB 21.18kB 100.0% 🚀
_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2 (New) 21.17kB 21.17kB 100.0% 🚀
chunks/gdscript_CSSSWtkL.mjs (New) 21.11kB 21.11kB 100.0% 🚀
chunks/your-first-scene_DOqdFnqn.mjs (New) 21.01kB 21.01kB 100.0% 🚀
chunks/svelte_BPWEr4fK.mjs (New) 20.75kB 20.75kB 100.0% 🚀
chunks/graphql_D_YYFDMU.mjs (New) 20.59kB 20.59kB 100.0% 🚀
chunks/material-theme-palenight_BqWSY0zJ.mjs (New) 20.57kB 20.57kB 100.0% 🚀
chunks/material-theme-lighter_BiEXTf1u.mjs (New) 20.56kB 20.56kB 100.0% 🚀
chunks/material-theme-darker_DAUXLwZb.mjs (New) 20.55kB 20.55kB 100.0% 🚀
chunks/material-theme-ocean_C0tH_beU.mjs (New) 20.55kB 20.55kB 100.0% 🚀
chunks/material-theme_DckHuUUK.mjs (New) 20.52kB 20.52kB 100.0% 🚀
chunks/liquid_BmzWPM4R.mjs (New) 20.34kB 20.34kB 100.0% 🚀
chunks/move_B-o8dn0N.mjs (New) 20.24kB 20.24kB 100.0% 🚀
_astro/ExampleBrowser.BGXKxNid.css (New) 20.05kB 20.05kB 100.0% 🚀
chunks/setup_h3Ddjx1x.mjs (New) 19.4kB 19.4kB 100.0% 🚀
chunks/ts-tags_fCPzN4J1.mjs (New) 19.02kB 19.02kB 100.0% 🚀
chunks/kanagawa-dragon_BUX6P0jP.mjs (New) 18.91kB 18.91kB 100.0% 🚀
chunks/kanagawa-lotus_Dm_LiccM.mjs (New) 18.91kB 18.91kB 100.0% 🚀
chunks/kanagawa-wave_K9PBxgbK.mjs (New) 18.9kB 18.9kB 100.0% 🚀
chunks/odin_vjOJSyfV.mjs (New) 18.58kB 18.58kB 100.0% 🚀
chunks/solidity_DPVu0wkJ.mjs (New) 18.46kB 18.46kB 100.0% 🚀
chunks/elixir_B_EVzLaG.mjs (New) 18.25kB 18.25kB 100.0% 🚀
chunks/cue_B5KneM5p.mjs (New) 18.22kB 18.22kB 100.0% 🚀
chunks/matlab_CfRK6IMC.mjs (New) 17.96kB 17.96kB 100.0% 🚀
chunks/luau_koeK31uZ.mjs (New) 17.78kB 17.78kB 100.0% 🚀
chunks/nix_4vzStI7m.mjs (New) 17.7kB 17.7kB 100.0% 🚀
chunks/lua_D40mNAJl.mjs (New) 17.57kB 17.57kB 100.0% 🚀
chunks/post-processing_BEm-cnnG.mjs (New) 17.44kB 17.44kB 100.0% 🚀
chunks/actionscript-3_CfsDl31I.mjs (New) 17.38kB 17.38kB 100.0% 🚀
_astro/space-grotesk-latin-400-normal.BnQMeOim.woff (New) 17.0kB 17.0kB 100.0% 🚀
_astro/space-grotesk-latin-500-normal.CNSSEhBt.woff (New) 16.99kB 16.99kB 100.0% 🚀
chunks/rust_COBzcmTx.mjs (New) 16.94kB 16.94kB 100.0% 🚀
_astro/space-grotesk-latin-600-normal.BflQw4A9.woff (New) 16.88kB 16.88kB 100.0% 🚀
_astro/space-grotesk-latin-ext-400-normal.DRPE3kg4.woff (New) 16.79kB 16.79kB 100.0% 🚀
_astro/space-grotesk-latin-ext-500-normal.3dgZTiw9.woff (New) 16.79kB 16.79kB 100.0% 🚀
_astro/space-grotesk-latin-ext-600-normal.VcznFIpX.woff (New) 16.73kB 16.73kB 100.0% 🚀
chunks/abap_LtYK6g-v.mjs (New) 16.59kB 16.59kB 100.0% 🚀
chunks/github-dark-high-contrast_RHN5kW48.mjs (New) 16.44kB 16.44kB 100.0% 🚀
chunks/gnuplot_DgWvVXI8.mjs (New) 16.3kB 16.3kB 100.0% 🚀
chunks/kusto_6FdaWTzR.mjs (New) 16.29kB 16.29kB 100.0% 🚀
chunks/github-dark-default_BrdnT3vv.mjs (New) 16.25kB 16.25kB 100.0% 🚀
chunks/github-dark-dimmed_Bn-P3bZJ.mjs (New) 16.25kB 16.25kB 100.0% 🚀
chunks/github-light-high-contrast_XMJJhVsV.mjs (New) 16.09kB 16.09kB 100.0% 🚀
chunks/coordinates-and-views_XxeuOL1m.mjs (New) 15.95kB 15.95kB 100.0% 🚀
chunks/github-light-default_PTSfV1MO.mjs (New) 15.94kB 15.94kB 100.0% 🚀
chunks/clarity_BkOxTQMf.mjs (New) 15.91kB 15.91kB 100.0% 🚀
chunks/pug_UKFyUFpE.mjs (New) 15.87kB 15.87kB 100.0% 🚀
chunks/synthwave-84_D4CZeGaH.mjs (New) 15.79kB 15.79kB 100.0% 🚀
_astro/DocsSidebar.BkSw41XL.css (New) 15.77kB 15.77kB 100.0% 🚀
chunks/smalltalk_D4IpSogw.mjs (New) 15.67kB 15.67kB 100.0% 🚀
chunks/HomePage_BsCIaYHk.mjs (New) 15.49kB 15.49kB 100.0% 🚀
chunks/vitesse-dark_Cjct7fHa.mjs (New) 15.47kB 15.47kB 100.0% 🚀
chunks/ApiSymbolPage_DB3-i-Xo.mjs (New) 15.4kB 15.4kB 100.0% 🚀
chunks/vitesse-black_BnxsPkql.mjs (New) 15.39kB 15.39kB 100.0% 🚀
chunks/vitesse-light_D54yeeu7.mjs (New) 15.32kB 15.32kB 100.0% 🚀
chunks/v_DBTjbKF9.mjs (New) 15.03kB 15.03kB 100.0% 🚀
chunks/aurora-x_Dwo4cmWi.mjs (New) 15.02kB 15.02kB 100.0% 🚀
chunks/parse_DwASa1l8.mjs (New) 14.67kB 14.67kB 100.0% 🚀
chunks/bat_Dx8nnxXE.mjs (New) 14.19kB 14.19kB 100.0% 🚀
chunks/chords-and-sequences_LafZ8NOH.mjs (New) 14.16kB 14.16kB 100.0% 🚀
chunks/fish_D7qAeWQz.mjs (New) 13.98kB 13.98kB 100.0% 🚀
chunks/handlebars_CenwkBn_.mjs (New) 13.96kB 13.96kB 100.0% 🚀
chunks/vesper_29-00ngB.mjs (New) 13.95kB 13.95kB 100.0% 🚀
chunks/nsis_C3tUpeAt.mjs (New) 13.79kB 13.79kB 100.0% 🚀
chunks/surrealql_H8LFCYct.mjs (New) 13.62kB 13.62kB 100.0% 🚀
chunks/hjson_Cuaphql8.mjs (New) 13.51kB 13.51kB 100.0% 🚀
_astro/space-grotesk-latin-400-normal.CJ-V5oYT.woff2 (New) 13.39kB 13.39kB 100.0% 🚀
chunks/apache_BIl2qPOf.mjs (New) 13.38kB 13.38kB 100.0% 🚀
_astro/space-grotesk-latin-500-normal.lFbtlQH6.woff2 (New) 13.31kB 13.31kB 100.0% 🚀
_astro/space-grotesk-latin-600-normal.DjKNqYRj.woff2 (New) 13.28kB 13.28kB 100.0% 🚀
chunks/wasm_gNIKwGlD.mjs (New) 13.23kB 13.23kB 100.0% 🚀
chunks/GuideChapterPage_Co9W1jIN.mjs (New) 13.12kB 13.12kB 100.0% 🚀
chunks/github-dark_DS-peopi.mjs (New) 12.89kB 12.89kB 100.0% 🚀
chunks/puppet_CQlPp728.mjs (New) 12.8kB 12.8kB 100.0% 🚀
chunks/terraform_v0KN9QQh.mjs (New) 12.78kB 12.78kB 100.0% 🚀
chunks/project-structure_B8BSkbmq.mjs (New) 12.74kB 12.74kB 100.0% 🚀
chunks/cinematics_B1OAeGJf.mjs (New) 12.7kB 12.7kB 100.0% 🚀
chunks/github-light_COKynrhu.mjs (New) 12.66kB 12.66kB 100.0% 🚀
chunks/laserwave_DHoaXozT.mjs (New) 12.62kB 12.62kB 100.0% 🚀
chunks/elm_Bipiw8b9.mjs (New) 12.52kB 12.52kB 100.0% 🚀
chunks/just_Du2dk0Nd.mjs (New) 12.4kB 12.4kB 100.0% 🚀
_astro/space-grotesk-latin-ext-600-normal.DxxdqCpr.woff2 (New) 12.29kB 12.29kB 100.0% 🚀
_astro/space-grotesk-latin-ext-500-normal.DUe3BAxM.woff2 (New) 12.27kB 12.27kB 100.0% 🚀
_astro/space-grotesk-latin-ext-400-normal.CfP_5XZW.woff2 (New) 12.26kB 12.26kB 100.0% 🚀
chunks/gherkin_D6Lr12YQ.mjs (New) 12.25kB 12.25kB 100.0% 🚀
chunks/ApiAllPage_puVwMr2D.mjs (New) 12.01kB 12.01kB 100.0% 🚀
chunks/rst_8pQc8J6s.mjs (New) 11.99kB 11.99kB 100.0% 🚀
chunks/prolog_Bacii3Ue.mjs (New) 11.89kB 11.89kB 100.0% 🚀
chunks/yaml_BXGYSTgF.mjs (New) 11.87kB 11.87kB 100.0% 🚀
chunks/nextflow-groovy_CdFFX-gF.mjs (New) 11.82kB 11.82kB 100.0% 🚀
chunks/beancount_CXtOQ8oS.mjs (New) 11.76kB 11.76kB 100.0% 🚀
chunks/dream-maker_CngiPd8U.mjs (New) 11.66kB 11.66kB 100.0% 🚀
chunks/pkl_C7lWzykI.mjs (New) 11.51kB 11.51kB 100.0% 🚀
chunks/hcl_DHg_Osgo.mjs (New) 11.39kB 11.39kB 100.0% 🚀
chunks/light-plus_BYP-8qw4.mjs (New) 11.16kB 11.16kB 100.0% 🚀
chunks/jison_otwuiBLr.mjs (New) 11.11kB 11.11kB 100.0% 🚀
chunks/raku_DI9yGpeW.mjs (New) 11.1kB 11.1kB 100.0% 🚀
chunks/pause-menu_aBdJ5bAH.mjs (New) 10.73kB 10.73kB 100.0% 🚀
chunks/slack-ochin_BtOis9cv.mjs (New) 10.72kB 10.72kB 100.0% 🚀
chunks/tex_D-vgCAxY.mjs (New) 10.68kB 10.68kB 100.0% 🚀
chunks/sass_DI2zJwx7.mjs (New) 10.44kB 10.44kB 100.0% 🚀
chunks/plastic_DW9BRoPy.mjs (New) 10.41kB 10.41kB 100.0% 🚀
_astro/jetbrains-mono-latin-ext-500-normal.ckzbgY84.woff (New) 10.34kB 10.34kB 100.0% 🚀
chunks/slack-dark_DF6OVa8y.mjs (New) 10.31kB 10.31kB 100.0% 🚀
chunks/smithy_BRyN83Yn.mjs (New) 10.29kB 10.29kB 100.0% 🚀
chunks/dark-plus_BLkfv1Ms.mjs (New) 10.26kB 10.26kB 100.0% 🚀
chunks/game-feel_CUrtkhHh.mjs (New) 10.16kB 10.16kB 100.0% 🚀
chunks/cmake_DPsCB_V6.mjs (New) 10.14kB 10.14kB 100.0% 🚀
_astro/jetbrains-mono-latin-ext-400-normal.fXTG6kC5.woff (New) 10.13kB 10.13kB 100.0% 🚀
chunks/audio-reactive-scene_BnqXQLT4.mjs (New) 10.11kB 10.11kB 100.0% 🚀
chunks/andromeeda_BsG9A-2G.mjs (New) 10.05kB 10.05kB 100.0% 🚀
chunks/make_B2ukzWs3.mjs (New) 10.03kB 10.03kB 100.0% 🚀
chunks/horizon-bright_CwPyL0ta.mjs (New) 9.96kB 9.96kB 100.0% 🚀
chunks/horizon_D2HPo9qV.mjs (New) 9.93kB 9.93kB 100.0% 🚀
chunks/kotlin_BHE8CoV9.mjs (New) 9.85kB 9.85kB 100.0% 🚀
chunks/sas_CDyGTQ8m.mjs (New) 9.74kB 9.74kB 100.0% 🚀
chunks/haml_Cuchl6uH.mjs (New) 9.71kB 9.71kB 100.0% 🚀
chunks/hud-overlay_CRHpkFRh.mjs (New) 9.69kB 9.69kB 100.0% 🚀
chunks/vue-html_CftEgX6P.mjs (New) 9.68kB 9.68kB 100.0% 🚀
chunks/dart_C6DUdjib.mjs (New) 9.67kB 9.67kB 100.0% 🚀
_astro/ApiSymbolPage.CWZBqkCH.css (New) 9.5kB 9.5kB 100.0% 🚀
chunks/monokai_Y04IwRdK.mjs (New) 9.17kB 9.17kB 100.0% 🚀
chunks/regexp_hIwxRxyb.mjs (New) 9.14kB 9.14kB 100.0% 🚀
chunks/ui-patterns_CxloQrFU.mjs (New) 9.06kB 9.06kB 100.0% 🚀
chunks/plsql_DCNXypXO.mjs (New) 9.03kB 9.03kB 100.0% 🚀
chunks/camera-follow-and-parallax_BIQLhiFK.mjs (New) 9.0kB 9.0kB 100.0% 🚀
chunks/prisma_4G_BaF_i.mjs (New) 8.73kB 8.73kB 100.0% 🚀
chunks/systemd_DFbUltlW.mjs (New) 8.58kB 8.58kB 100.0% 🚀
chunks/GuideIndexPage_BjZVKCp9.mjs (New) 8.36kB 8.36kB 100.0% 🚀
chunks/ApiIndexPage_BhAxoj6e.mjs (New) 8.28kB 8.28kB 100.0% 🚀
chunks/soy_CIWxkm6B.mjs (New) 8.12kB 8.12kB 100.0% 🚀
chunks/solarized-dark_W1kg3ZX0.mjs (New) 8.03kB 8.03kB 100.0% 🚀
chunks/qss_Iltvkn1C.mjs (New) 7.97kB 7.97kB 100.0% 🚀
chunks/split-screen_C6Vrmf-K.mjs (New) 7.96kB 7.96kB 100.0% 🚀
chunks/r_xm7_PhsC.mjs (New) 7.96kB 7.96kB 100.0% 🚀
chunks/min-light_CnaFhYML.mjs (New) 7.88kB 7.88kB 100.0% 🚀
chunks/scheme_D3A2QBtM.mjs (New) 7.87kB 7.87kB 100.0% 🚀
_astro/GuideChapterPage.Cg0P5OpK.css (New) 7.79kB 7.79kB 100.0% 🚀
chunks/talonscript_CLxaFu-b.mjs (New) 7.73kB 7.73kB 100.0% 🚀
chunks/hlsl_BJLUNfne.mjs (New) 7.73kB 7.73kB 100.0% 🚀
chunks/solarized-light_DnHmPawE.mjs (New) 7.63kB 7.63kB 100.0% 🚀
_astro/jetbrains-mono-latin-ext-500-normal.Cut-4mMH.woff2 (New) 7.53kB 7.53kB 100.0% 🚀
chunks/riscv_CvzikGLb.mjs (New) 7.5kB 7.5kB 100.0% 🚀
chunks/proto_ClkOcAW0.mjs (New) 7.47kB 7.47kB 100.0% 🚀
chunks/chapel_C02jq-Ii.mjs (New) 7.47kB 7.47kB 100.0% 🚀
chunks/red_C4iRHu1e.mjs (New) 7.35kB 7.35kB 100.0% 🚀
_astro/jetbrains-mono-latin-ext-400-normal.Bc8Ftmh3.woff2 (New) 7.34kB 7.34kB 100.0% 🚀
chunks/toml_B7BHZIqX.mjs (New) 7.22kB 7.22kB 100.0% 🚀
chunks/clojure_DDsQ0FaV.mjs (New) 7.2kB 7.2kB 100.0% 🚀
chunks/postcss_D1gKt4z_.mjs (New) 7.15kB 7.15kB 100.0% 🚀
chunks/min-dark_Ba1FsixN.mjs (New) 7.12kB 7.12kB 100.0% 🚀
chunks/ara_IxnQjO6j.mjs (New) 7.1kB 7.1kB 100.0% 🚀
chunks/gdshader_D7JfdFV3.mjs (New) 7.08kB 7.08kB 100.0% 🚀
chunks/what-is-exojs_afmgeBnf.mjs (New) 7.03kB 7.03kB 100.0% 🚀
_astro/jetbrains-mono-cyrillic-500-normal.DJqRU3vO.woff (New) 7.02kB 7.02kB 100.0% 🚀
chunks/verilog_Ma7yBE30.mjs (New) 6.99kB 6.99kB 100.0% 🚀
_astro/jetbrains-mono-cyrillic-400-normal.ugxPyKxw.woff (New) 6.98kB 6.98kB 100.0% 🚀
_astro/GuideIndexPage.*.css (New) 6.71kB 6.71kB 100.0% 🚀
chunks/jinja_D9zUf7rH.mjs (New) 6.61kB 6.61kB 100.0% 🚀
chunks/cypher_D8Bb8Cq2.mjs (New) 6.58kB 6.58kB 100.0% 🚀
chunks/powerquery_SrvS_NBM.mjs (New) 6.58kB 6.58kB 100.0% 🚀
chunks/coq_BtFcIXby.mjs (New) 6.55kB 6.55kB 100.0% 🚀
chunks/vb_eGVhCUXq.mjs (New) 6.54kB 6.54kB 100.0% 🚀
chunks/shaderlab_BcRFTmmA.mjs (New) 6.5kB 6.5kB 100.0% 🚀
chunks/xml_DzftpGsQ.mjs (New) 6.41kB 6.41kB 100.0% 🚀
_astro/ApiIndexPage.Bl6TcwAA.css (New) 6.35kB 6.35kB 100.0% 🚀
chunks/content-modules_B79EVT7M.mjs (New) 6.32kB 6.32kB 100.0% 🚀
chunks/lean_BwOKScIt.mjs (New) 6.28kB 6.28kB 100.0% 🚀
chunks/qml_CknB7WvB.mjs (New) 6.24kB 6.24kB 100.0% 🚀
chunks/SourceSnippet_eWOj6j_R.mjs (New) 6.17kB 6.17kB 100.0% 🚀
chunks/awk_D6dA05Ye.mjs (New) 6.17kB 6.17kB 100.0% 🚀
chunks/gdresource_DdPbsqpY.mjs (New) 6.06kB 6.06kB 100.0% 🚀
chunks/bicep_CZ338dSk.mjs (New) 5.98kB 5.98kB 100.0% 🚀
chunks/zig_lTQvxhLD.mjs (New) 5.97kB 5.97kB 100.0% 🚀
chunks/wgsl_1s5rV5xS.mjs (New) 5.77kB 5.77kB 100.0% 🚀
chunks/dax_S-Noo-ku.mjs (New) 5.73kB 5.73kB 100.0% 🚀
_astro/space-grotesk-vietnamese-400-normal.BIWiOVfw.woff (New) 5.73kB 5.73kB 100.0% 🚀
_astro/jetbrains-mono-greek-500-normal.D7SFKleX.woff (New) 5.72kB 5.72kB 100.0% 🚀
_astro/space-grotesk-vietnamese-500-normal.BTqKIpxg.woff (New) 5.72kB 5.72kB 100.0% 🚀
_astro/space-grotesk-vietnamese-600-normal.D6zpsUhD.woff (New) 5.7kB 5.7kB 100.0% 🚀
_astro/jetbrains-mono-greek-400-normal.B9oWc5Lo.woff (New) 5.66kB 5.66kB 100.0% 🚀
_astro/jetbrains-mono-vietnamese-500-normal.DNRqzVM1.woff (New) 5.48kB 5.48kB 100.0% 🚀
chunks/bibtex_BzgdqG3s.mjs (New) 5.41kB 5.41kB 100.0% 🚀
chunks/polar_4pN1JrJ8.mjs (New) 5.38kB 5.38kB 100.0% 🚀
_astro/jetbrains-mono-vietnamese-400-normal.CqNFfHCs.woff (New) 5.37kB 5.37kB 100.0% 🚀
chunks/sharp_3ApqkIs6.mjs (New) 5.37kB 5.37kB 100.0% 🚀
_astro/jetbrains-mono-cyrillic-500-normal.DmUKJPL_.woff2 (New) 5.36kB 5.36kB 100.0% 🚀
_astro/jetbrains-mono-cyrillic-400-normal.BEIGL1Tu.woff2 (New) 5.33kB 5.33kB 100.0% 🚀
chunks/llvm_ZNG_yAr9.mjs (New) 5.31kB 5.31kB 100.0% 🚀
chunks/nextflow_Dp8l2yvM.mjs (New) 5.28kB 5.28kB 100.0% 🚀
chunks/http_DUlij2nY.mjs (New) 5.25kB 5.25kB 100.0% 🚀
chunks/fennel_B3wtZRne.mjs (New) 5.21kB 5.21kB 100.0% 🚀
chunks/rosmsg_CyYq6XdT.mjs (New) 5.13kB 5.13kB 100.0% 🚀
_astro/ApiAllPage.B_HMfH1F.css (New) 5.11kB 5.11kB 100.0% 🚀
chunks/tcl_DLe0Tsfm.mjs (New) 4.95kB 4.95kB 100.0% 🚀
chunks/sdbl_CdQg5gu1.mjs (New) 4.95kB 4.95kB 100.0% 🚀
chunks/ron_DzAo6FTJ.mjs (New) 4.51kB 4.51kB 100.0% 🚀
chunks/pascal_D8-gNZ2I.mjs (New) 4.49kB 4.49kB 100.0% 🚀
chunks/zenscript_BoijL7rl.mjs (New) 4.38kB 4.38kB 100.0% 🚀
_astro/space-grotesk-vietnamese-500-normal.BmEvtly_.woff2 (New) 4.32kB 4.32kB 100.0% 🚀
chunks/gn_DDjbVPF4.mjs (New) 4.31kB 4.31kB 100.0% 🚀
_astro/space-grotesk-vietnamese-600-normal.DUi7WF5p.woff2 (New) 4.31kB 4.31kB 100.0% 🚀
_astro/space-grotesk-vietnamese-400-normal.B7xT_GF5.woff2 (New) 4.3kB 4.3kB 100.0% 🚀
_astro/jetbrains-mono-greek-500-normal.JpySY46c.woff2 (New) 4.28kB 4.28kB 100.0% 🚀
_astro/jetbrains-mono-greek-400-normal.C190GLew.woff2 (New) 4.23kB 4.23kB 100.0% 🚀
chunks/hurl_CmOLSul9.mjs (New) 4.22kB 4.22kB 100.0% 🚀
chunks/turtle_BEG5g_eT.mjs (New) 4.2kB 4.2kB 100.0% 🚀
_astro/EditorCode.BiwcI9nO.css (New) 4.18kB 4.18kB 100.0% 🚀
chunks/narrat_D9rrR0H5.mjs (New) 4.12kB 4.12kB 100.0% 🚀
chunks/kdl_DkTyxPcj.mjs (New) 4.1kB 4.1kB 100.0% 🚀
chunks/glsl_BNaTluKX.mjs (New) 4.09kB 4.09kB 100.0% 🚀
chunks/fluent_BjfpB34g.mjs (New) 4.04kB 4.04kB 100.0% 🚀
chunks/jsonnet_BafgE6cE.mjs (New) 4.04kB 4.04kB 100.0% 🚀
chunks/ssh-config_DXFPABYp.mjs (New) 3.83kB 3.83kB 100.0% 🚀
chunks/tasl__AAbKiWM.mjs (New) 3.81kB 3.81kB 100.0% 🚀
chunks/rel_BT0iIKKw.mjs (New) 3.75kB 3.75kB 100.0% 🚀
chunks/rbs_D_4FkXDS.mjs (New) 3.75kB 3.75kB 100.0% 🚀
chunks/vala_BnnASFsX.mjs (New) 3.74kB 3.74kB 100.0% 🚀
chunks/genie_DnK2KWIP.mjs (New) 3.73kB 3.73kB 100.0% 🚀
chunks/json5_xULSgPQI.mjs (New) 3.71kB 3.71kB 100.0% 🚀
chunks/po_IjpR1yHO.mjs (New) 3.71kB 3.71kB 100.0% 🚀
chunks/splunk_xP_ZjUH2.mjs (New) 3.65kB 3.65kB 100.0% 🚀
chunks/mipsasm_EL46Y4Xg.mjs (New) 3.54kB 3.54kB 100.0% 🚀
chunks/jsonc_Cu6rqcrJ.mjs (New) 3.51kB 3.51kB 100.0% 🚀
chunks/cairo_7gDYl5gO.mjs (New) 3.49kB 3.49kB 100.0% 🚀
chunks/json_B8nXmmR-.mjs (New) 3.48kB 3.48kB 100.0% 🚀
chunks/jsonl_Bp0qqr10.mjs (New) 3.42kB 3.42kB 100.0% 🚀
chunks/berry_CgA2ea0_.mjs (New) 3.4kB 3.4kB 100.0% 🚀
chunks/logo_DTXV8SKw.mjs (New) 3.27kB 3.27kB 100.0% 🚀
chunks/openscad_jn-f1Ocl.mjs (New) 3.17kB 3.17kB 100.0% 🚀
chunks/ExamplePreview_DvjBwgQb.mjs (New) 3.15kB 3.15kB 100.0% 🚀
chunks/log_Dad54gsi.mjs (New) 3.15kB 3.15kB 100.0% 🚀
chunks/api-reference_DfrpdFy6.mjs (New) 3.15kB 3.15kB 100.0% 🚀
chunks/gleam_CTllUdfC.mjs (New) 2.93kB 2.93kB 100.0% 🚀
chunks/diff_Blb4MjsC.mjs (New) 2.89kB 2.89kB 100.0% 🚀
chunks/hy_CJKxDzbh.mjs (New) 2.86kB 2.86kB 100.0% 🚀
chunks/edge_CgYDa_hN.mjs (New) 2.85kB 2.85kB 100.0% 🚀
chunks/TryIt_Dyb8wIMu.mjs (New) 2.81kB 2.81kB 100.0% 🚀
chunks/reg_DpJf71oO.mjs (New) 2.64kB 2.64kB 100.0% 🚀
chunks/erb_C8YKatMA.mjs (New) 2.61kB 2.61kB 100.0% 🚀
chunks/jssm_Dx5A5sBR.mjs (New) 2.54kB 2.54kB 100.0% 🚀
_astro/Callout.BOvfkbMv.css (New) 2.48kB 2.48kB 100.0% 🚀
chunks/wenyan_BeysbCrW.mjs (New) 2.43kB 2.43kB 100.0% 🚀
_astro/ExamplePreview.UpcfGuJY.css (New) 2.3kB 2.3kB 100.0% 🚀
chunks/remote_BUikHFn8.mjs (New) 2.24kB 2.24kB 100.0% 🚀
chunks/hxml_D7jA4-jQ.mjs (New) 2.2kB 2.2kB 100.0% 🚀
chunks/fortran-fixed-form_DKmTkb0c.mjs (New) 2.11kB 2.11kB 100.0% 🚀
chunks/desktop_BgOb7Aj4.mjs (New) 2.06kB 2.06kB 100.0% 🚀
_astro/backend-comparison.ZtNk-atA.css (New) 2.0kB 2.0kB 100.0% 🚀
chunks/docker_PC1tuYpa.mjs (New) 1.96kB 1.96kB 100.0% 🚀
chunks/GuidePartRedirect_BZRL_9j3.mjs (New) 1.94kB 1.94kB 100.0% 🚀
chunks/ini_C24lZfdM.mjs (New) 1.76kB 1.76kB 100.0% 🚀
chunks/sparql_DGgRGInO.mjs (New) 1.75kB 1.75kB 100.0% 🚀
chunks/index_BJ8RYB3Y.mjs (New) 1.72kB 1.72kB 100.0% 🚀
chunks/xsl_Cw3rM8vE.mjs (New) 1.71kB 1.71kB 100.0% 🚀
chunks/dotenv_Dkdv7Sm2.mjs (New) 1.65kB 1.65kB 100.0% 🚀
chunks/index_Bbgtg710.mjs (New) 1.61kB 1.61kB 100.0% 🚀
chunks/index_De1QV_iH.mjs (New) 1.61kB 1.61kB 100.0% 🚀
chunks/Callout_V6qJikCk.mjs (New) 1.58kB 1.58kB 100.0% 🚀
chunks/git-commit_bqpc4DGi.mjs (New) 1.57kB 1.57kB 100.0% 🚀
_astro/TryIt.2vmWUXmI.css (New) 1.56kB 1.56kB 100.0% 🚀
chunks/rolldown-runtime_DC62tzP2.mjs (New) 1.45kB 1.45kB 100.0% 🚀
chunks/index_Dxf6Gwgv.mjs (New) 1.44kB 1.44kB 100.0% 🚀
chunks/index_gUifKqF8.mjs (New) 1.44kB 1.44kB 100.0% 🚀
chunks/index_B-7foTkK.mjs (New) 1.41kB 1.41kB 100.0% 🚀
chunks/index_enD8X-gS.mjs (New) 1.41kB 1.41kB 100.0% 🚀
chunks/_symbol__DmzbZ3yu.mjs (New) 1.41kB 1.41kB 100.0% 🚀
chunks/_symbol__S68ZYute.mjs (New) 1.41kB 1.41kB 100.0% 🚀
chunks/compiler_C_wsWChh.mjs (New) 1.34kB 1.34kB 100.0% 🚀
chunks/csv_DqIVFkK7.mjs (New) 1.32kB 1.32kB 100.0% 🚀
chunks/git-rebase_CRs01Nr6.mjs (New) 1.3kB 1.3kB 100.0% 🚀
_astro/NextStep.5jphCb2x.css (New) 1.28kB 1.28kB 100.0% 🚀
_astro/example-sources.BPTlcc6X.css (New) 1.19kB 1.19kB 100.0% 🚀
chunks/qmldir_Dz8ttxjf.mjs (New) 1.17kB 1.17kB 100.0% 🚀
chunks/react-utils_DNZ_oAx1.mjs (New) 1.15kB 1.15kB 100.0% 🚀
chunks/html-derivative_UN2HpEjt.mjs (New) 1.13kB 1.13kB 100.0% 🚀
chunks/NextStep_ChfNId7S.mjs (New) 1.06kB 1.06kB 100.0% 🚀
chunks/shellsession_Bbrjk1tD.mjs (New) 995 bytes 995 bytes 100.0% 🚀
chunks/index_CHqfRAH8.mjs (New) 957 bytes 957 bytes 100.0% 🚀
chunks/index_CUowxzVG.mjs (New) 957 bytes 957 bytes 100.0% 🚀
chunks/index_B8kBgsro.mjs (New) 935 bytes 935 bytes 100.0% 🚀
chunks/index_DJhOPTLn.mjs (New) 935 bytes 935 bytes 100.0% 🚀
chunks/all_8WVPcMwb.mjs (New) 919 bytes 919 bytes 100.0% 🚀
chunks/all_Cd43leN3.mjs (New) 919 bytes 919 bytes 100.0% 🚀
chunks/index_C5UQlOTF.mjs (New) 897 bytes 897 bytes 100.0% 🚀
chunks/index_CeeQ1LEH.mjs (New) 897 bytes 897 bytes 100.0% 🚀
chunks/tsv_BorGVq2Z.mjs (New) 862 bytes 862 bytes 100.0% 🚀
chunks/codeowners_CxEKPWu0.mjs (New) 666 bytes 666 bytes 100.0% 🚀
chunks/EnglishFallbackNotice_CVFgekAN.mjs (New) 635 bytes 635 bytes 100.0% 🚀
chunks/vendor-monaco_CC8sPhLj.mjs (New) 570 bytes 570 bytes 100.0% 🚀
_astro/SourceSnippet.DWw4KFVr.css (New) 529 bytes 529 bytes 100.0% 🚀
chunks/audio-reactive-visualization_CRIiH0Ar.mjs (New) 381 bytes 381 bytes 100.0% 🚀
chunks/typed-worklets-and-workers_DJN_Rn8c.mjs (New) 380 bytes 380 bytes 100.0% 🚀
chunks/camera-follow-and-parallax_CJTu5bpk.mjs (New) 379 bytes 379 bytes 100.0% 🚀
chunks/debugging-and-inspection_ByymRezo.mjs (New) 377 bytes 377 bytes 100.0% 🚀
chunks/resize-dpr-and-canvas_DwX1t6vy.mjs (New) 377 bytes 377 bytes 100.0% 🚀
chunks/serialization-and-prefabs_J9JK2vT6.mjs (New) 377 bytes 377 bytes 100.0% 🚀
chunks/authoring-extensions_BV80Nlj9.mjs (New) 369 bytes 369 bytes 100.0% 🚀
chunks/coordinates-and-views_CUoJNZO0.mjs (New) 369 bytes 369 bytes 100.0% 🚀
chunks/project-structure_z8IPd4pS.mjs (New) 369 bytes 369 bytes 100.0% 🚀
chunks/loading-and-resources_B-PP4fy7.mjs (New) 368 bytes 368 bytes 100.0% 🚀
chunks/audio-reactive-scene_DE3jqhnb.mjs (New) 367 bytes 367 bytes 100.0% 🚀
chunks/retained-containers_K83X-lbx.mjs (New) 367 bytes 367 bytes 100.0% 🚀
chunks/scenes-and-lifecycle_Dqcsw1ry.mjs (New) 367 bytes 367 bytes 100.0% 🚀
chunks/your-first-scene_Boy9r70c.mjs (New) 367 bytes 367 bytes 100.0% 🚀
chunks/backend-comparison_xPovqI7j.mjs (New) 365 bytes 365 bytes 100.0% 🚀
chunks/chords-and-sequences_CQeWOr8M.mjs (New) 365 bytes 365 bytes 100.0% 🚀
chunks/custom-mesh-shaders_Bl0jVGqM.mjs (New) 365 bytes 365 bytes 100.0% 🚀
chunks/joints-and-dynamics_Cb8JHZqW.mjs (New) 365 bytes 365 bytes 100.0% 🚀
chunks/keyboard-and-actions_BtB4cEIA.mjs (New) 365 bytes 365 bytes 100.0% 🚀
chunks/worlds-and-spawning_D9u5w22B.mjs (New) 364 bytes 364 bytes 100.0% 🚀
chunks/gameplay-collision_CWKM6USY.mjs (New) 363 bytes 363 bytes 100.0% 🚀
chunks/custom-renderers_DYw2A0Fx.mjs (New) 361 bytes 361 bytes 100.0% 🚀
chunks/what-is-exojs_D4oiNQgu.mjs (New) 361 bytes 361 bytes 100.0% 🚀
chunks/mouse-and-pointer_Pu576d3_.mjs (New) 359 bytes 359 bytes 100.0% 🚀
chunks/troubleshooting_D0GIm_OL.mjs (New) 358 bytes 358 bytes 100.0% 🚀
chunks/build-orb-dodge_C9xSgq6B.mjs (New) 357 bytes 357 bytes 100.0% 🚀
chunks/immediate-mode_BLmX6bqy.mjs (New) 357 bytes 357 bytes 100.0% 🚀
chunks/pixel-snapping_DqCGyOnl.mjs (New) 357 bytes 357 bytes 100.0% 🚀
chunks/post-processing_C4FA_qpb.mjs (New) 357 bytes 357 bytes 100.0% 🚀
chunks/render-targets_olTQgdTb.mjs (New) 357 bytes 357 bytes 100.0% 🚀
chunks/device-variants_BjDGa-8w.mjs (New) 356 bytes 356 bytes 100.0% 🚀
chunks/infinite-maps_CbwwfLCr.mjs (New) 355 bytes 355 bytes 100.0% 🚀
chunks/physics-basics_aijh5slX.mjs (New) 355 bytes 355 bytes 100.0% 🚀
chunks/ui-and-widgets_JwqXA0Hx.mjs (New) 355 bytes 355 bytes 100.0% 🚀
chunks/typed-shaders_BxxuvzWF.mjs (New) 354 bytes 354 bytes 100.0% 🚀
chunks/beat-detection_Vg1Ncxrg.mjs (New) 353 bytes 353 bytes 100.0% 🚀
chunks/audio-effects_-LbeIEjp.mjs (New) 351 bytes 351 bytes 100.0% 🚀
chunks/performance_CEOBVdW9.mjs (New) 351 bytes 351 bytes 100.0% 🚀
chunks/spatial-audio_D9cewl-B.mjs (New) 351 bytes 351 bytes 100.0% 🚀
chunks/split-screen_ClNtLLpp.mjs (New) 351 bytes 351 bytes 100.0% 🚀
chunks/application_DZEi_O4e.mjs (New) 349 bytes 349 bytes 100.0% 🚀
chunks/audio-basics_CNV5NMoO.mjs (New) 349 bytes 349 bytes 100.0% 🚀
chunks/hud-overlay_B_RoI2-N.mjs (New) 349 bytes 349 bytes 100.0% 🚀
chunks/scene-graph_B1nKLeKS.mjs (New) 349 bytes 349 bytes 100.0% 🚀
chunks/ui-patterns_Cqziw9FP.mjs (New) 349 bytes 349 bytes 100.0% 🚀
chunks/deployment_CBfE1Tmr.mjs (New) 348 bytes 348 bytes 100.0% 🚀
chunks/animation_CZ4Y75kU.mjs (New) 347 bytes 347 bytes 100.0% 🚀
chunks/cinematics_CEGZFB6k.mjs (New) 347 bytes 347 bytes 100.0% 🚀
chunks/pause-menu_Bkd7M8rK.mjs (New) 347 bytes 347 bytes 100.0% 🚀
chunks/tiled-maps_CETn9Klb.mjs (New) 346 bytes 346 bytes 100.0% 🚀
chunks/game-feel_DVhTJ9hm.mjs (New) 345 bytes 345 bytes 100.0% 🚀
chunks/graphics_BsVfmLpq.mjs (New) 345 bytes 345 bytes 100.0% 🚀
chunks/particles_C7738g_V.mjs (New) 345 bytes 345 bytes 100.0% 🚀
chunks/setup_DcRij-3b.mjs (New) 345 bytes 345 bytes 100.0% 🚀
chunks/sprites_DbAUC3Zj.mjs (New) 343 bytes 343 bytes 100.0% 🚀
chunks/aseprite_oe92YQti.mjs (New) 342 bytes 342 bytes 100.0% 🚀
chunks/react_BJv_9aD0.mjs (New) 342 bytes 342 bytes 100.0% 🚀
chunks/filters_BPuJXr6U.mjs (New) 341 bytes 341 bytes 100.0% 🚀
chunks/offline_Bhgov_RK.mjs (New) 340 bytes 340 bytes 100.0% 🚀
chunks/gamepad_fxBu5oFq.mjs (New) 339 bytes 339 bytes 100.0% 🚀
chunks/text_Dg8Ts53a.mjs (New) 337 bytes 337 bytes 100.0% 🚀
chunks/ldtk_Csnq-SqK.mjs (New) 334 bytes 334 bytes 100.0% 🚀
_astro/EnglishFallbackNotice.CBJEFTmj.css (New) 279 bytes 279 bytes 100.0% 🚀
chunks/_virtual_astro_server-island-manifest_C1Q2srgE.mjs (New) 217 bytes 217 bytes 100.0% 🚀
chunks/_virtual_astro_session-driver_C-PI1Pas.mjs (New) 165 bytes 165 bytes 100.0% 🚀
chunks/content-assets_DXqEyLLP.mjs (New) 151 bytes 151 bytes 100.0% 🚀
chunks/_noop-middleware_CQ50ikAJ.mjs (New) 100 bytes 100 bytes 100.0% 🚀
chunks/noop-entrypoint_Z3zFhrGC.mjs (New) 99 bytes 99 bytes 100.0% 🚀
_astro/vendor-monaco.Bu-5TSsx.js (Deleted) -4.18MB 0 bytes -100.0% 🗑️
_astro/css.worker-DTwhyFDG.js (Deleted) -1.05MB 0 bytes -100.0% 🗑️
_astro/html.worker-Cv1I6WlM.js (Deleted) -719.51kB 0 bytes -100.0% 🗑️
_astro/json.worker-BrRSZ7c-.js (Deleted) -409.15kB 0 bytes -100.0% 🗑️
_astro/vendor-monaco.CTGdSUG0.css (Deleted) -321.61kB 0 bytes -100.0% 🗑️
_astro/vendor-react.CrH08agE.js (Deleted) -206.03kB 0 bytes -100.0% 🗑️
_astro/codicon.ngg6Pgfi.ttf (Deleted) -121.97kB 0 bytes -100.0% 🗑️
_astro/ExoHeader.BXUZiKN4.js (Deleted) -32.41kB 0 bytes -100.0% 🗑️
_astro/ExampleBrowser.ih14fn3h.js (Deleted) -32.32kB 0 bytes -100.0% 🗑️
_astro/EditorPreview.72wGVbHL.js (Deleted) -21.37kB 0 bytes -100.0% 🗑️
_astro/EditorCode.BPvI97aK.js (Deleted) -15.65kB 0 bytes -100.0% 🗑️
_astro/EditorCode.CVWGmhtx.css (Deleted) -3.38kB 0 bytes -100.0% 🗑️
_astro/BottomSheet.5e2n4-z3.js (Deleted) -2.67kB 0 bytes -100.0% 🗑️
_astro/BottomSheet.URrhJv5z.css (Deleted) -2.08kB 0 bytes -100.0% 🗑️
_astro/versions.aOfTA5D9.js (Deleted) -1.61kB 0 bytes -100.0% 🗑️
_astro/GuideExamplePreview.DpHezqLt.js (Deleted) -1.55kB 0 bytes -100.0% 🗑️
_astro/rolldown-runtime.hePW80VL.js (Deleted) -716 bytes 0 bytes -100.0% 🗑️
_astro/react-utils.VlPjQmbj.js (Deleted) -260 bytes 0 bytes -100.0% 🗑️
_astro/client.hXtcBeT_.js (Deleted) -68 bytes 0 bytes -100.0% 🗑️

App Routes Affected:

App Route Size Change Total Size Change (%)
/en/playground (New) 1.44kB 1.44kB 100% 🚀
/de/guide/[part] (New) 1.41kB 1.41kB 100% 🚀
/en/guide/[part] (New) 1.41kB 1.41kB 100% 🚀
/de/api/all (New) 919 bytes 919 bytes 100% 🚀
/de/api (New) 935 bytes 935 bytes 100% 🚀
/ (New) 1.72kB 1.72kB 100% 🚀
/en/api/all (New) 919 bytes 919 bytes 100% 🚀
/en/api (New) 935 bytes 935 bytes 100% 🚀
/de (New) 897 bytes 897 bytes 100% 🚀
/de/guide (New) 957 bytes 957 bytes 100% 🚀
/en (New) 897 bytes 897 bytes 100% 🚀
/en/api/[symbol] (New) 1.41kB 1.41kB 100% 🚀
/en/guide/[part]/[chapter] (New) 1.61kB 1.61kB 100% 🚀
/en/guide (New) 957 bytes 957 bytes 100% 🚀
/de/playground (New) 1.44kB 1.44kB 100% 🚀
/de/api/[symbol] (New) 1.41kB 1.41kB 100% 🚀
/de/guide/[part]/[chapter] (New) 1.61kB 1.61kB 100% 🚀

…ci.yml

The reusable `_ci-checks.yml` had grown to 18 jobs and 1400 lines, each job
carrying its own copy of the checkout/pnpm/node/install block and its own
hand-written `if:`, with a 120-line shell verdict re-deriving which of them had
to have run. The same knowledge lived a second time in `scripts/lanes.ts` for
the pre-push hook.

`scripts/ci/lanes.ts` is now the one table: id, stage, the effective lane that
enables it, the local command, the CI command, and what the runner needs
(browser, apt packages, Naga, the dist). `ci.yml` has one matrix job per stage
and reads its entries from the `plan` job, which runs the table with plain
node before any install. The pre-push hook runs the same table. A lane is
added in one place and the workflow never names one.

Stages: plan -> gates / test / build -> verify, site -> smoke -> verdict.
`verdict` is the single required check; `scripts/ci/verdict.ts` fails any
job the plan asked for that did not succeed, a skipped one included, which is
the path-filter regression the shell loop used to catch. The
checkout/pnpm/node/install block is a local composite action.

Coverage is instrumented on pushes to main and next only. A pull request's
unit lane runs the same tests without Istanbul, which takes the run's critical
path from twelve minutes to about five.

A change under src/ builds the site now: the catalog smoke drives the site
job's artifact, and the old gate skipped the site job for an engine-only
change while still requiring the smoke that needed it. The release dry run
has its own area (release tooling and packed manifests) instead of riding
on every engine change.

`release.yml` no longer re-verifies the tagged commit. `trust` requires it to
sit on main with a successful `verdict` and to match package.json; prepare
and publish follow unchanged, and prepare uploads the site artifact Deploy
Pages expects from a release run.

Claude-Session: https://claude.ai/code/session_01YRLzcQ9ZasLdUWCtD9fDpM
@Exoridus
Exoridus enabled auto-merge (squash) September 3, 2026 00:02
@codecov

codecov Bot commented Sep 3, 2026

Copy link
Copy Markdown

❌ 1 Tests Failed:

Tests completed Failed Passed Skipped
12356 1 12355 12
View the top 1 failed test(s) by shortest run time
packages/exojs-physics/test/perf.test.ts > physics dynamics performance > 5,000-mostly-sleeping field: sleeping sharply cuts step time
Stack Traces | 14.8s run time
AssertionError: expected 11.437213225000004 to be less than 10.739352974999997
 ❯ .../exojs-physics/test/perf.test.ts:181:24

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@Exoridus
Exoridus merged commit b1afc5f into main Sep 3, 2026
21 checks passed
@Exoridus
Exoridus deleted the ci/redesign branch September 3, 2026 00:23
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