- Most turns: about 12 turns went to a separate bug, not #1088. I added a text-literal row and a shared
show helper to the test on my own initiative, and that combination triggered an NK1104 refusal. I bisected it with throwaway awk scripts, and the quoting slips (?? inside printf, grepping for the wrong output lines) cost reruns. The fix itself took about 3 turns of reading and one build cycle.
- Lookups the brief could have handed me:
- Where each end’s own type is recorded:
state.arm_types, keyed by id_of(check_peeled(..)), filled in check_core_flow.nika at :139 and :1423 and in check_core_pilot.nika. One grep found it, but naming it would have settled the brief’s “your choice” right away.
- That
ends_in_tuple and tuple_ends in check_texts.nika are private and must become pub to be called from check_overflow.nika.
- That
nikaia run refuses a file inside a project, so I copied the test out first. builder-facts says this, but I tripped on it once.
- Checks run: the rows a-e repro on the unfixed binary, one build cycle, the fixpoint (comparing an md5 of the lowered diff), the fixed and unfixed runs of the new test, the 73 named tests with
--both-settings, cargo fmt, clippy 1.97 and 1.99.1, pre-push-check.sh, and the commit dry run.
- Wasted: most of the NK1104 bisection, plus a 1.99.1 clippy cold build over a lowered diff of 18 lines that only repeats patterns already in that file. The first
pre-push-check.sh run also failed on the self-hosted badge, which I could have redrawn beforehand.
- Useful: the extra nested and literal shapes, which confirmed the fix covers more than the brief’s rows.
- One change: add to builder.md: “An extra shape beyond the brief that also fails on the unfixed binary is not yours: cut it to one minimal probe (at most 3 turns), put it under
Found:, and drop it from the test.” In the brief, a line such as “per-end type: state.arm_types[id_of(end)]” would also have saved the search.
This site is open source.
Improve this page.