@@ -5,27 +5,35 @@ rewrite whose sole goal is to reach a fast persistent test daemon as quickly
55as possible.
66
77This document supersedes the old preserved-entrypoint constraint around
8- ` ./build/nob_test ` for this program. The current baseline runner still exists
9- today, but this roadmap explicitly authorizes replacing it with a new
10- ` ./build/nob ` -owned client/daemon architecture even if that breaks the old
11- test command surface between waves.
8+ ` ./build/nob_test ` for this program. The legacy shim is now gone; this roadmap
9+ explicitly authorized replacing it with a new ` ./build/nob ` -owned
10+ client/daemon architecture even when that broke the old test command surface
11+ between waves.
1212
1313This roadmap does not redefine evaluator, Event IR, build-model, codegen, or
1414` nobify ` product contracts. It only defines how local and CI-facing test
1515infrastructure should evolve to maximize development speed.
1616
17- ## 1. Status
17+ Historical wave descriptions are preserved below for implementation history.
18+ Any remaining mentions of ` ./build/nob_test ` or ` src_v2/build/nob_test.c `
19+ inside those earlier-wave sections are historical only, not current guidance.
1820
19- As of April 8, 2026:
21+ ## 1. Status
2022
21- - the current baseline test entrypoint is still ` ./build/nob_test `
22- - ` src_v2/build/nob.c ` does not yet own test dispatch
23- - ` src_v2/build/nob_test.c ` still owns module selection, profiles, incremental
24- compilation, workspaces, logs, and preflight behavior
25- - the project now wants a faster path to a persistent daemon than the old
26- compatibility-first test architecture allowed
23+ As of April 9, 2026:
24+
25+ - ` ./build/nob test ... ` is the official human-facing test entrypoint
26+ - ` build/nob_testd ` already owns the daemon-backed run path
27+ - watch mode and impact routing already exist behind ` ./build/nob test watch ... `
28+ - fast profile, daemon-side preflight caching, launcher detection, and parallel
29+ object compilation have already landed
30+ - T5 throughput observability and compact watch ergonomics have already landed
31+ - T6 legacy surface removal has already landed:
32+ - ` build/nob_test ` has been removed
33+ - ` clean ` and ` tidy ` are fronted through ` ./build/nob test ... `
34+ - ` smoke ` is the only supported public aggregate label
2735- only the ` nobify ` product needs portability; test infrastructure does not
28- - inter-wave breakage is acceptable if it shortens the path to the daemon
36+ - inter-wave breakage remains acceptable if it shortens time-to- daemon
2937
3038The target end state of this roadmap is:
3139
@@ -64,12 +72,13 @@ The following decisions are frozen for this roadmap:
6472
6573- only ` nobify ` product portability matters
6674- test infrastructure may stay Linux/POSIX-only indefinitely
67- - ` ./build/nob_test ` is transitional and may be removed later
75+ - ` ./build/nob_test ` has been removed; any remaining mentions below are
76+ historical wave context only
6877- ` ./build/nob ` becomes the official human entrypoint for tests
6978- ` src_v2/build/nob.c ` adopts ` NOB_GO_REBUILD_URSELF_PLUS(...) ` and owns test
7079 dispatch
71- - ` src_v2/build/nob_test.c ` may remain temporarily, but only as a wrapper or
72- compatibility shim once runner-core extraction begins
80+ - ` src_v2/build/nob_test.c ` has been deleted; earlier wave text may still
81+ mention it as historical context
7382- the new daemon binary is ` build/nob_testd `
7483- the transport is a pathname ` AF_UNIX ` socket under ` Temp_tests/daemon/ `
7584- the socket type is ` SOCK_SEQPACKET ` , not ` SOCK_STREAM `
@@ -169,6 +178,10 @@ as a contract that must survive intact.
169178
170179## 6. Wave Plan
171180
181+ The wave descriptions below intentionally preserve the state and assumptions
182+ that were true when each wave was defined. T6 completion supersedes any older
183+ wave text that still refers to ` ./build/nob_test ` as if it were current.
184+
172185### T0 Contract Reset And Program Start
173186
174187Goal:
@@ -318,6 +331,8 @@ Deliverables:
318331- better invalidation/reporting for fast-profile cache hits versus misses
319332- explicit fallback routing policy remains visible in watch output when a path
320333 is unknown or too broad
334+ - default watch output becomes compact/failure-first, with ` --verbose ` as the
335+ inspection path for roots, routed sets, and per-rerun detail
321336
322337Non-goals:
323338- no full include-graph intelligence
@@ -334,7 +349,7 @@ Goal:
334349- remove transitional clutter once the daemon path is stable
335350
336351Deliverables:
337- - ` build/nob_test ` removed or replaced by a tiny documented compatibility shim
352+ - ` build/nob_test ` removed
338353- docs stop presenting ` ./build/nob_test ` as primary
339354- architecture docs describe ` nob ` as client/supervisor and ` nob_testd ` as the
340355 reactor execution owner
0 commit comments