Open and answer this issue on GitHub.
ready · opened 2026-10-28 · updated 2026-11-02 · 1 comment
agent: builder model: sonnet max_turns: 60 budget_usd: 10 —
Seq.chain (NK1171 today)Found by P4a (3620d27, project_members.nika): the converter’s draft wrote keys.chain(foreign) for Rust’s Iterator::chain; std has no chain on Seq, so the check refuses it with NK1171 and the builder wrote a loop instead (pushing both sequences into one list).
Scope rule (docs/bootstrap.md, 2026-10-28): crates/nikaia-std is out of scope of the bootstrap except #920/#922; this waits unless a move needs it. The loop in project_members.nika is correct Nikaia, not a workaround to undo first; step 3 replaces it.
fn main() {
let a = ["x", "y"]
let b = ["z"]
for s in a.iter().chain(b.iter()) { println(s) }
}
Today: NK1171 (no chain). Expected: x, y, z.
Seq methods: crates/nikaia-std/std.contracts ([fn."Seq::..."] entries) and Part III’s Seq section (docs/specification/30-nikaia-tooling.md); resolve with nikaia run scripts/where.nika -- Seq.crates/nikaia-std/src/tools/project_members.nika (the foreign keys after keys).Seq.chain(other: Seq[T]) -> Seq[T] (lazy, in order); version raise owed (supervisor).std entry and its contract; a test tests/compiler/seq_chain.nika with .stdout (the probe).project_members.nika’s loop becomes .chain(...); lower-std fixpoint.Report form: docs/briefs/common.part.
Second gap, same kind (architect, 2026-10-28, while briefing P1): std has scalar::is_ascii_digit but no is_ascii_alphabetic / is_ascii_alphanumeric; is_alphabetic/is_alphanumeric are Unicode and would change what symbol_prefix (crates/nikaia/src/project.rs, ADR-284 D13: a C identifier) accepts. So symbol_prefix stays Rust in P1 until this is built. Add to To build: step 2b, the two entries (Part III text, contract, a test row in seq_chain.nika or its own char_ascii.nika); step 3b, move symbol_prefix into project_settings.nika.
Generated by Claude Code