agent: builder model: opus max_turns: 120 budget_usd: 30 —

Brief: the numbering pass, and the grammar draws no ids from Trivia (#903, ADR-383)

Score: self-hosting lane (docs/priorities.md): the grammar rows of the parser/mod.rs slice plan (docs/selfhosting-plan.md, Large files) wait on #903 and #557; the owner decided the question on 2026-10-28 (ADR-383).

Facts

Locations (crates/nikaia/src/parser/mod.rs unless named)

To build

  1. #903 steps 3 and 4, one commit or two: tools/node_numbers.nika (tree by value, ADR-094 D7, and first; returns the numbered tree, the span list indexed by id - first, the next free number), called in parse_to_ast before one_variant::expand and in parse_expression_from; then the 71 _state.user().id() become NodeId::parsed(), the 27 .at() a pure function of node and span, the folds lose first, guarded its id, Trivia loses next_id, spans, spans_from, id(), reserve(), at(). The last commit says Fixes #903 and sets Built: yes on ADR-383’s index row.

Stop and report if

A reader depends on the old id order in a way that changes output and cannot be fixed in one commit; size_of::<Expr>() grows by more than 8 bytes (report before/after, Owner: asks whether to go on); an error in another agent’s file.

Read docs/builder-facts.md.

Rules (CLAUDE.md; this block is pasted into every brief, also a fix-forward)

Attribution: Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com Claude-Session: https://claude.ai/code/session_01GFeMqxRbtUMiGVyDMxsvEq

This site is open source. Improve this page.