ALTITUDE · TWO TASK MANAGERS PLATES READ: census-handoff.json · census-plate.json SEE ALSO 12 

FIT VERDICTturbo caches mise — and the loop is a DAG in a loop costume: the 7 tasks that shell turbo and the 8 turbo re-enters never touch; every count imported, turbo at 141 definitions in 28 files

THE ALTITUDE ATLAS — DRAWING SETSHEET 3A / 14

the HANDOFF WORKS

ALTITUDE 3 · ALTERNATE PLATE — the sheet-3 task-manager inset at full size: 9 of 14 workflows · 61 mise tasks in 4 homes · turbo ci 1154 nodes, 310 real · 4 seam types · 3 service doors · every frame sized to the widest DIN line it holds, so the spine is computed rather than hand-set · every count imported from www/atlas.lit-ui-router.dev/data/census-handoff.json + census-plate.json · counted at origin/main @ eb1162da (2026-10-18)

PLATE 3A — THE SHEET-3 INSET, PROMOTED TO A FULL SHEET same spine as the sheet-3 top-left inset: Actions → mise → turbo → back again the inset stays on sheet 3; this plate is the full treatment it points to READ LEFT TO RIGHT — every PR enters at a workflow, crosses two gaskets, and returns through the cache gasket EMPHASIS — circled digits ①–⑥ + accent thread = the deepest chain · red + hatch = the service doors THE MACHINE IN ONE LINE — mise 61 tasks / 54 call sites, fan-out delegated rather than modelled · turbo 141 definitions in 28 files · ci 1154 nodes, 310 real DOOR 1 — deflake-e2e.yml:75 · bare `turbo run build --filter=…` — over the umbrella, straight into turbo (PATH still mise) GITHUB ACTIONS 14 workflows · 9 call mise build-test-run ·16 acceptance ·10 publish-npm ·7 release-signals ·7 bump-version ·4 deflake-e2e ·4 publish-gh ·4 build-test-branch ·1 lint-workflows ·1 no mise: build-test coderabbit-oneshot commitlint dependency-audit semantic-pr branch_ci_gate needs NO setup — node builtins (build-test-branch.yml:35-36) ① SEAM A WORKFLOW → MISE 54 call sites 35 distinct targets args cross as env — step env: satisfies $usage_* flags; no ${{ }} in run lines buys: pinned tools + node-free bootstrap MISE — THE NODE-FREE UMBRELLA 61 tasks · 4 homes · 12 use depends · 31 with $usage_* specs TOOL BELT — aqua pins, mise.lock checksums ⑥ taplo 0.10.0 · rumdl · shellcheck · pnpm (bootstrap) actionlint · zizmor — node never installs these tools/build_and_test — 12 xvfb · branch_ci_gate turbo_summary · cypress playwright_version cypress_version playwright playwright_deps_engines ✕ playwright_deps — DEAD no caller; superseded (mise.toml:93-97) .config/mise/tasks/* — 11 ⑤ taplo · rumdl shellcheck · read_secret turbo_login turbo_pin_worktree cloudflare_item_create § check_workers_builds measure_deflake § = the one mise→pnpm→ turbo loop-closer (manual) tools/release — 17 git_user · package_info pack · check_tarball reconcile · tag · tag_push publish · bump peer_floor_gate 3× *_check_runs ★ check_pack ★ published_diff (runs turbo ×2) ↩ check_release_closure config.toml inline — 21 ② ★ ci · ★ ci_main ★ build ★ codecov_bundle ★ dts_backtest_matrix ↩ lint_actionlint ↩ lint_zizmor ④ ↩ lint_toml ↩ lint_shellcheck ↩ lint_markdown ↩ format_check_toml ↩ format_toml (writer) ⌂ lint_workflows (dep×4) setup · cloudflare_login ★ shells turbo (7) · ↩ turbo re-enters (8) SEAM B MISE → TURBO 7 tasks 8 invocations TURBO_* crosses as ambient env — no flags at all buys: remote cache + summary TURBO — THE CACHED FAN-OUT ci graph: 1154 nodes · 310 real · 4,706 edges · 187 real→real 28 turbo.json files · 141 task definitions (53 root + 88 member) ci:main overlay: 1204 nodes · 315 real (+5 real tasks) 15 cache:false tasks repo-wide — ZERO reachable from ci counted from bare `turbo run ci --dry=json` · 2026-10-18 ci → ci:pull_request ci:main = ci:pr + 50 nodes, 5 real turbo.json:388-402 — 11 dependsOn lanes under ci:pull_request PHANTOM SHROUD — 844 of 1154 nodes run nothing (73.1%) transit, ^build carriers, umbrellas — punched hole-by-hole on SHEET 12 //#lint:workflows — umbrella ×4 ← the turbo twin RE-ENTRANT PORTS — six root //# scripts whose command is `mise run …` + 1 member port ↓ //#lint:actionlint //#lint:zizmor ③ //#lint:toml //#lint:shellcheck //#lint:markdown //#format:check:toml the seven results cache in turbo, keyed on files mise owns ↓ 7th: release#check:release-closure HAND-SYNCED TWINS ⌂ lint_workflows config.toml:154-158 ∥ //#lint:workflows turbo.json:285-293 same 4 legs, kept in sync by hand THE DEEPEST CHAIN — 6 HOPS · runs on every PR, ×4 tool lanes ① build-test-run.yml:122 — `mise run ci` (env: TURBO_FORCE · TURBO_TOKEN/API/TEAM) ② mise ci — `turbo run ci --summarize` (.config/mise/config.toml:249) ③ turbo //#lint:toml — executes the root script `mise run lint_toml` (package.json:39) ④ mise lint_toml — `mise run taplo lint` (.config/mise/config.toml:139) ⑤ file task .config/mise/tasks/taplo — exec taplo over `git ls-files -- *.toml` ⑥ taplo 0.10.0 — pinned (.config/mise/config.toml:82) · terminal: a binary, not a task why it never recurses: the ★ set and the ↩ set are disjoint — mise→turbo→mise is a DAG in a loop costume DETAIL — THE CACHE GASKET: TURBO CACHES MISE //#lint:* inputs hash .config/mise/tasks/* AND mise.lock (turbo.json:296-300 · 314-320 · 325-331) a taplo pin bump busts exactly the taplo lane — nothing else turbo holds the cache; mise holds the versions; the gasket hashes one machine against the other SERVICE DOORS — 3 BYPASSES 1 deflake-e2e.yml:75 — bare turbo build --filter (skips mise tasks) 2 deflake-e2e.yml:89 — deflake runs OUTSIDE turbo: a cached test task would replay attempt 1 logs (:6-8) 3 cloudflare-build.ts:71-76 — the PRODUCTION docs deploy path: npm -g pnpm@<pin> replaces corepack, then npx turbo — NO mise — @www/lit-ui-router.dev#build SEAM SCHEDULE — every crossing between the two machines · what crosses · what the boundary buys · cite A workflow → mise — 54 call sites · 35 targets · crossing: env, never argv (no ${{ }} in run lines) · buys: pinned tools + node-free bootstrap · 9 workflow files B mise → turbo — 7 tasks · 8 invocations · crossing: TURBO_* ambient env · buys: remote cache + --summarize · config.toml:201-231 · tools/release/mise.toml:100,108-111 C turbo → mise — 7 root scripts + 1 member script (7 in ci) · crossing: script body `mise run …` · buys: TURBO CACHES MISE — inputs hash the task files + mise.lock · turbo.json:296-331 · tools/release/turbo.json:39-51 D mise → pnpm → turbo — 1 (check_workers_builds, manual) · turbo leg is cache:false, so the crossing buys only env passthrough + addressing · tasks file :21 D2 mise → mise — 8 edges · 16 depends (setup · lint_workflows ×4, from 12 declaring tasks) + run-line delegations · cutest: turbo_login → mise run read_secret · tasks/turbo_login:44 E bypasses — 3, all deliberate · deflake-e2e.yml:75 (bare turbo) · :89 (pnpm outside turbo) · cloudflare-build.ts:71-76 (npm -g pnpm + npx turbo, no mise — production) TOTALS — 61 mise tasks · 31 with $usage_* specs · 141 turbo definitions · ci 1154 nodes / 310 real · 1 dead task (playwright_deps) · counted at origin/main @ eb1162da (2026-10-18) · graph via turbo 2.11.8
FIG. 3AThe two task managers drawn as the two machines they are — mise the node-free umbrella, turbo the cached fan-out — with the seams as the featured parts: every crossing is a bolted gasket labeled with what crosses it and what the boundary buys. The star fitting is the cache gasket on the return duct: turbo caches mise, because the six re-entrant lint lanes hash the mise task files and mise.lock, so a tool-pin bump invalidates exactly its own lane.

GENERAL NOTES

Method — one census, cited throughout. Every count on this plate is imported: www/atlas.lit-ui-router.dev/data/census-handoff.json for the workflows, the mise tasks and the turbo definitions, census-plate.json for the graph. Both are written by probes that read a materialized archive of the ref — the 14 workflow files, the 28 turbo.json files, .config/mise/** and both member mise.toml files — with the graph figures from a bare turbo run ci --dry=json on an installed archive. No mise or turbo runs on this machine to draw it, and nothing numeric here is hand-pasted: the task-name lists, the cited file:lines and this prose are the editorial part. Basis: counted at origin/main @ eb1162da (2026-10-18); graph surveyed at origin/main @ eb1162da (2026-10-18) · turbo 2.11.8.

The star fitting: turbo caches mise. Six root //# scripts in the ci graph have mise run … as their literal command, and their turbo inputs explicitly hash .config/mise/tasks/* and .config/mise/mise.lock (turbo.json:296-300, 314-320, 325-331); a seventh port, @tools/release#check:release-closure, re-enters from a member script and hashes config.toml the same way (tools/release/turbo.json:39-51). That is the whole trade drawn as one gasket on the return duct: mise owns the tool versions (taplo, rumdl, shellcheck, actionlint, zizmor — none installable by node), turbo owns the cache, and the gasket hashes one machine against the other, so a taplo pin bump invalidates exactly the taplo lane and nothing else.

A DAG in a loop costume. The circuit workflow → mise → turbo → mise looks re-entrant, but the 61 tasks partition cleanly: the seven that shell turbo (★ — ci, ci_main, build, codecov_bundle, dts_backtest_matrix, check_pack, published_diff) are reachable only from workflows and humans, while the eight turbo re-enters (↩ — the lint and format tasks, and check_release_closure) only exec pinned binaries, file tasks or a manifest reader. No edge leads from the second set back to the first. The deepest chain is six hops and runs on every PR, four tool lanes in parallel: workflow YAML → mise run ci → turbo run ci → //#lint:toml → mise run lint_toml → the taplo file task → the pinned binary.

Three service doors, all deliberate. deflake-e2e.yml:75 runs bare turbo run build --filter=… — over the umbrella, though mise still supplies the PATH; deflake-e2e.yml:89 runs the flake attempts through pnpm outside turbo, because a cached test task would replay attempt 1’s logs; and the production docs deploy never sees mise at all — Cloudflare Workers Builds clears corepack’s shims and installs the packageManager pin of pnpm globally through npm before npx turbo @www/lit-ui-router.dev#build (tools/workers-builds/cloudflare-build.ts:71-76), because the hosted image’s corepack shim cannot materialize pnpm 12. The doors are drawn red and hatched because each one gives up something the machines provide — and each was opened on purpose.

Two curiosities the census surfaced. One task in the whole machine is dead: //tools/build_and_test:playwright_deps (mise.toml:93-97) has no caller anywhere, superseded by playwright_deps_engines. And one umbrella exists twice: mise lint_workflows (a 4-leg depends, config.toml:154-158) and turbo //#lint:workflows (an umbrella whose dependsOn fans out to the four, turbo.json:285-293) are the same shape maintained by hand in both schedulers — the one place the two machines duplicate rather than delegate. The phantom shroud around turbo’s core — 844 of 1154 nodes that exist only to carry hashes — is drawn as wall thickness here; sheet 12 punches it hole by hole.

KEY

trunk — the handoff, in flow direction
coupling gasket — a seam between the machines
the cache gasket — turbo hashes mise-owned files
the deepest chain — 6 hops, circled digits
service door — a deliberate bypass
shells turbo / re-entered by turbo — disjoint sets
phantom shroud — 844 nodes that run nothing (sheet 12)
dead task — no caller anywhere
PROJECTTHE ALTITUDE ATLAS
SHEET TITLEthe HANDOFF WORKS
SCALETWO TASK MANAGERS
FORMCOUPLING SCHEMATIC
CLIENTlit-ui-router · simshanith
DATE / REV2026-10-18 · E
DRAWN BYFable (Claude, AI)
SHEET3A OF 14