- What cost the most: the full
tests/compiler --both-settings run, by far. It took more than 10 minutes, and while waiting I started a helper to watch it that ended up waiting on itself. The other lost cycle came from the builder.md cycle’s grep '^(error|Error)|-->'. It hid lower-std’s refusal about the duplicate name a_copy_of (already defined in threads.nika). The build went through with nothing regenerated, and it took an extra lower-std | tail to see why.
- What I looked up: my first probe failed twice. Nikaia uses
struct, not data. A match whose arms return a string literal and a field reads as a view (ref String), so I got NK1104. I fell back on copying shapes from existing NK2105 tests. The brief could have given the probe itself, as compilable code. It could also have said that tools/*.nika free functions share one namespace across the package, so a helper’s name must be checked with grep first.
- Checks run:
- Useful: the old-binary probe, the
t?.clone() compile check, lower-std plus its fixpoint, the full tests/compiler run (the brief requires it), clippy, pre-push-check, and a diff of the old binary’s output against the new .stderr.
- Mostly wasted: the
packages/yaml test. This change touched nothing there, and the run left packages/yaml/nikaia.lock modified. I did not run fmt::every_nika_file.
- Wasted: the waiter on the background job.
- One change to save the most: fix the cycle’s
lower-std filter in builder.md so that lower-std’s plain-prose refusals show up, for example add |declared twice|Rename to the grep or use tail -5. Also, the brief or builder.md should say when the package gate is skipped, for example “for a crates/ change that touches no package, the package gate is not needed”, so the package test is not run and the lock file stays untouched.
This site is open source.
Improve this page.