Open and answer this issue on GitHub.
decision · opened 2026-10-03 · updated 2026-10-09 · 0 comments
Found while every ADR was checked against the specification and the code (PR #371). Each item is small. None blocked the consolidation, and each needs either a one-line decision or a check against the code.
RESERVED_BELOW lists ref and trait (crates/nikaia/src/emit/mod.rs). Its comment says it holds “the words the language below reserves and this one does not”, but Nikaia reserves both (ADR-298). The entries are probably needed anyway: after . and :: a reserved word is a name (ADR-298 D3), so x.ref has to be escaped. Either the comment or the list is wrong; decide which, and add a test for x.ref / T::trait. — 0.0.439: the comment was wrong; the list stays, and reserved_below.rs holds the four words both languages reserve to the escape.std.contracts: the record says the ledger writes a receiver as ref mut self. std.contracts and ADR-288 D17 write mut self: ref collections::HashMap[K, V]. One spelling should win. — 0.0.441: neither has to; the ledger writes both. ADR-251 D4 now says ref self / ref mut self are short for self: ref T / mut self: ref T, the long form being what ADR-288 D17 needs to name type arguments.asset refuses them. ADR-311 D1 says ref Array[u8] is the byte buffer that crosses, and ADR-179 mentions binary assets. Is a binary asset("…") allowed?--tethers, not a warning. Warning or report? — 0.0.441: report, as built; D6 says so and why (a warning on every view of a mapping would fire on the programs the mapping is for).Result 96 bytes wide where the bare error is 16, the three fields alone 88. The table row now says both.Bytes cites ADR-289 D22, which is about HTTP response bodies. Probably the wrong citation (ADR-283 D19-D21 decide Bytes). — 0.0.439: cites ADR-283 D19–D21.Cell as not sendable. Cell is !Sync, not !Send. The text was changed to the built rule during the cleanup; confirm. — Confirmed: ADR-123 now says Cell/RefCell are !Sync but may be moved to another thread, which is Rust’s rule.NK1142, retired by ADR-217). A function returning a function type now has no place for its own promise word, and its sync is inferred. Confirm that is intended. — Confirmed: D4’s last paragraph says exactly this, and fn adder(n: i64) -> fn(i64) -> i64 lowers to a plain fn and runs.throws to Box<dyn Error>, which ADR-280 replaced with error types and envelopes. Update or mark D3 as changed by ADR-280. — 0.0.439: marked changed by ADR-280, and listed in the header.target/nikaia/cache/ store is collected is undecided. D12.5 only covers the compiled-std trees.NK2501/NK2502 never fire. — Checked: no sentence in docs/specification says either never fires; the only “never” is ADR-290 D7’s “never on its absence”.NK1130 both ways, NK1129); the heading says “three checks under two codes”.crates/nikaia/tests/qualified_names.rs’s doc comments and possibly elsewhere. Check that no help text or doc still offers a new file as a way out (ADR-286 D33 now says use). — Checked: the phrase is nowhere in docs/ or crates/, and no help text offers a new or separate file.crates/nikaia/src/contracts/keeps.rs: says “nothing reads this column yet”, which is no longer true. — 0.0.439: names its three readers.Three need the owner: whether a binary asset("…") is allowed (ADR-310 vs ADR-311), how target/nikaia/cache/ is collected (ADR-021), and whether CI gets a second operating system (ADR-005 D8).