soft3/nox/.claude/plans/release-2026-05-12.md

nox v0.1.0 release

what ships

v0.1.0 = VM Core.

18-pattern ISA frozen: patterns 0-17 (16 compute + call + look)

canonical instantiation: nox<Goldilocks, Z/2^32, Hemera>

test suite: all patterns covered, test vectors match specs

CLI: reduce noun formulas from file / inline / stdin

quality: all 12 passes clean

out of scope for v0.1.0 (deferred to later releases):

trace generation (reduce() does not yet emit trace rows)

jet dispatch (spec exists, no rs implementation)

binary encoding (spec exists, no rs implementation)

bbg / memo integration (look pattern has NullLooks stub)

TCO / continuation / witness separation specs

current state

done:

rs/: all 18 patterns implemented (patterns/, reduce.rs, call.rs, noun/)

specs/: vm.md, reduction.md, trace.md, encoding.md, patterns/00-17, noun/, jets/, jets.md

cli/: parse + reduce + print, ASCII art banner, file/stdin/-e modes

naming: subject→object, NounRef→NounId, NounInner→Noun, Arena→Order — all done

restructure: no roadmap/, jets in specs/jets/, explanation docs complete

missing:

zero tests in rs/ — biggest release blocker

WHIR references: some specs may still say WHIR instead of Brakedown (search needed)

version: Cargo.toml still at 0.1.0 default (fine, just needs verification)

release checklist

phase 1: audit (parallel agents, read-only)

run all 12 quality passes. launch 4 parallel agents partitioned by scope:

agent scope passes
A rs/noun/ + rs/call.rs 1, 3, 4, 5, 6, 9
B rs/patterns/ 1, 3, 4, 5, 6, 7, 9, 10
C rs/reduce.rs + rs/lib.rs 2, 5, 6, 8, 10, 11
D specs/ 9, consistency vs code

write findings to .claude/audits/release-2026-05-12/. main session reads, prepares fix plan, user confirms before applying.

phase 2: test suite

write rs/tests.rs (or tests/ module). all test vectors from reduction.md + individual pattern specs.

canonical test vectors (from cost-model-redesign.md, verified):

TV1: reduce([1,2], [5 [[0 2] [0 3]]], 100) = (3, 97)   // add(axis 2, axis 3): 1+1+1=3
TV2: reduce(42,    [1 7],             10)  = (7, 9)    // quote(7): cost 1
TV3: reduce([1,2], [3 [[0 2] [0 3]]], 100) = ([1,2], 97) // cons(axis 2, axis 3): 1+1+1=3
TV4: reduce([1,2], [4 [[9 [[0 2] [0 3]]] [[1 100] [1 200]]]], 100) = (200, 95) // branch+eq+axis+axis+quote

per-pattern test vectors to write:

pattern test cases
0 axis axis(1, 2) on [a b] = a; axis(1, 3) = b; depth cost; AxisError on atom
1 quote quote on atom; quote on cell; cost 1
2 compose f(g(x)) correctly; cost 1
3 cons builds cell; cost 1
4 branch true branch taken; false branch taken; lazy (other not evaluated)
5 add 3+4=7; p-1+1=0 (wrap); cost 1
6 sub 7-4=3; 0-1=p-1; cost 1
7 mul 2*3=6; p-1 * 2 (wrap); cost 1
8 inv inv(2)*2=1; inv(0) → InvZero; cost 64
9 eq eq(5,5)=1; eq(5,6)=0; cost 1
10 lt lt(3,5)=1; lt(5,3)=0; lt(5,5)=0; cost 1
11 xor 0b1010 xor 0b1100 = 0b0110; cost 1
12 and 0b1010 and 0b1100 = 0b1000; cost 1
13 not not 0 = 0xFFFF_FFFF; cost 1
14 shl 1 << 3 = 8; overflow truncates to 32 bits; cost 1
15 hash deterministic; Hemera contract: same input → same output; cost 300
16 call NullCalls → CallRejected; cost 1
17 look NullLooks → Unavailable; cost 1

budget halt tests: ensure reduce() returns Halt (not panic) when budget < cost.

phase 3: fix

apply audit findings as atomic commits. fix in this order:

  1. correctness issues (passes 3, 4, 5) — soundness holes block release
  2. error handling (pass 6) — no panics in lib code
  3. type safety (pass 5) — no unwrap on fallible paths
  4. architecture (pass 8) — module boundaries
  5. style/naming (pass 9) — cleanup
  6. dead code (pass 10) — compactness

phase 4: version and tag

  1. bump rs/Cargo.toml version to 0.1.0 (confirm it matches workspace)
  2. update README.md: status badge, build/test instructions
  3. commit: chore: release v0.1.0
  4. tag: v0.1.0
  5. push tag to origin

definition of done

[ ] all 12 quality passes clean (audit findings resolved)

[ ] all pattern test vectors pass

[ ] cargo test exits 0

[ ] cargo clippy exits 0 (no warnings)

[ ] CLI smoke test: nox -e '[1 42]' prints 42

[ ] version 0.1.0 in Cargo.toml

[ ] v0.1.0 tag on master

estimation

phase pomodoros
audit (parallel agents) 1
test vectors 2
fixes 1-2
version + tag 0.5
total 4.5-5.5 pomodoros

one session.

Graph