Skip to content

docs: per-phase operation comparison — Turbo vs Nx vs vx#97

Open
Exelord wants to merge 3 commits into
mainfrom
claude/runner-comparison
Open

docs: per-phase operation comparison — Turbo vs Nx vs vx#97
Exelord wants to merge 3 commits into
mainfrom
claude/runner-comparison

Conversation

@Exelord
Copy link
Copy Markdown
Member

@Exelord Exelord commented May 16, 2026

Summary

Per-phase operation breakdown comparing Turbo, Nx, and vx side-by-side. Companion to PR #96 (integrity audit) — that one is "what's wrong", this one is "what's everyone doing at each step".

Structure

  • Quick-scan summary — 14 phases × 3 runners in one table
  • Per-phase deep dives — each phase gets its own table:
    1. Initialization / cold start
    2. Input enumeration
    3. Input hashing
    4. Cache key derivation
    5. Cache lookup
    6. Cache restore (warm — already current)
    7. Cache restore (cold — extract needed)
    8. Task execution (cache miss)
    9. Cache save
    10. Log replay
    11. Watch mode
    12. Failure handling
    13. SQLite usage
    14. Integrity (cross-link to audit doc)

Every gap cell links to either comparison.md (feature backlog) or integrity-audit-2026-05.md (correctness backlog) — so the table doesn't accumulate floating TODOs.

Sources

Pinned to specific revisions so future diffs are reproducible:

  • Turbo: /tmp/turbo at 71f8c90
  • Nx: /tmp/nx at 962f146
  • vx: this repo at main

Daemon paths in Nx deliberately excluded — we are daemonless by design (docs/design/monorepo-structure.md records this).

Notable findings on a re-read

  • Warm restore — we're strictly better than both Turbo (decompresses to read manifest) and Nx (no per-file skip at all). PR perf(cache): move manifest from tar to output_files SQLite table #95 put us ahead.
  • Cache-key inputs — essentially identical fold set across all three. Different fold order / bytes means keys aren't cross-runner compatible, but that's by design.
  • Project-graph cold cache — Nx persists the graph to disk between invocations; we re-import every vx.config.ts every time. Could be a follow-up if cold start becomes a complaint.
  • Streaming hash for big files — neither Bun.hash nor we support it; today it doesn't bite because inputs are source files.

File

  • docs/design/runner-comparison-2026-05.md (246 lines)

Test plan

  • bun src/bin.ts run format clean
  • Doc only

https://claude.ai/code/session_016HXj6HW6bxSn8EYuKcxTD9


Generated by Claude Code

@Exelord Exelord force-pushed the claude/runner-comparison branch from d77e2d1 to ff0dc48 Compare May 16, 2026 22:11
Exelord pushed a commit that referenced this pull request May 17, 2026
PR #100's CI failed on format-check because the new docs (patterns.md,
benchmarks.md) used inconsistent column padding in markdown tables.
PR #96 / #97's monorepo-structure.md regressed the same way.
`bun src/bin.ts run format` rewrites all three to oxfmt's canonical
table alignment. No content changes.
claude added 3 commits May 17, 2026 08:29
Captures what each runner does at each step of a `vx run`
invocation. Companion to the integrity-audit doc (PR #96): that
one is "what's wrong", this one is "what's everyone doing".

Structure:
- Quick-scan summary table (14 phases × 3 runners)
- Per-phase deep dives (14 sections, each with its own table +
  callout for where we have a gap vs Turbo/Nx)
- Cross-links to comparison.md (feature backlog) and the
  integrity audit (correctness backlog)

Sources pinned to revisions:
- Turbo: /tmp/turbo at 71f8c90
- Nx:    /tmp/nx at 962f146
- vx:    main

Daemon paths in Nx deliberately excluded — we're daemonless by
design.

This is reference / context, not a backlog. When `main` moves,
the vx column moves with it.
@Exelord Exelord force-pushed the claude/runner-comparison branch from dd9f028 to a42b0dc Compare May 17, 2026 08:29
Exelord pushed a commit that referenced this pull request May 17, 2026
PR #100's CI failed on format-check because the new docs (patterns.md,
benchmarks.md) used inconsistent column padding in markdown tables.
PR #96 / #97's monorepo-structure.md regressed the same way.
`bun src/bin.ts run format` rewrites all three to oxfmt's canonical
table alignment. No content changes.
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.

2 participants