What only the main session does: the session that starts the agents, talks to
the owner and holds the versions. Builders do not need this file; the rules
for everyone are in CLAUDE.md. Since the owner removed the architect role
(2026-11-01) the supervisor also writes the briefs, keeps the lanes and the
issues and decides obvious language gaps (Language decisions); anything else
goes to the owner. The cycle and the hand-over between main sessions are
below, under Running the lanes; briefs and reports under Briefs and
reports.
develop with nikaia run scripts/release.nika
-- --loop 20 DIR in the background, or scripts/status.nika by hand. A red
run is fixed forward at once (a fix-forward builder), because main and
everything that hangs on it (the website, promote) stands still while
develop is red.gh run watch <run id> --exit-status
wakes the session at the end; no polling. nikaia run scripts/release.nika
-- --dry-run DIR prints one CI line; never the MCP actions_list (tens of
k tokens). CI logs: the proxy refuses the blob download; failing test names
come from gh api .../check-runs/<job id>/annotations. A red run gets a
fix-forward brief (or a revert) from the supervisor.Moved from CLAUDE.md (2026-11-01); there each rule has its short form.
.claude/settings.json and
.claude/hooks/, and delete one that gets in the way of the work, without
asking first. .claude/hooks/session-start.sh builds target/fast/nikaia in
the background in a cloud session.develop red from the first self-hosting move until
0.0.773, so main did not move). Lints about code the lowering writes are
allowed on the tools module in crates/nikaia-std/src/lib.rs, not fixed in
the generated files (crates/nikaia-std/src/tools/lowered/*.rs, index
lowered.rs; a change to one .nika changes one file). CI takes the newest
stable; when rustup check shows this machine’s stable behind it, run
clippy with that version too (docs/builder-facts.md, Traps already met;
c80e63ac kept develop red on a lint 1.97 did not have).A change to the language raises the version by one: the **Version:**
line of the three specification parts and a CHANGELOG.md heading, then
python3 scripts/badges.py redraws the README’s badges from that line
(scripts/pre-commit.sh does it where it is installed; scripts/bump.py new
does all of it, below). Never edit an SVG by hand; CI checks the badges with
--check. The version is the specification’s: it moves when what a program
means, or what the toolchain does with it, moves.
| Changed | Raises the version |
|---|---|
crates/ (compiler, parser, std) |
yes |
Part I-III of docs/specification/ |
yes |
| an ADR | only with the specification text it decides |
| tests | no, unless they belong to a change above, in its package |
guide/, the notes in docs/, README.md, the website |
no |
examples/, benches/, scripts/, CI, editors/ |
no |
packages/<name>/ (an official package, ADR-344 D1) |
no: only that package’s own version |
A change that does not raise the version gets no CHANGELOG.md heading or
entry either: its commit message is its record. It touches neither the
version lines nor the badges, so it does not collide with other sessions.
main moves only by promote (owner, 2026-10-26): a main that moved
onto an untested commit is fixed forward on develop, and the process that
let it move is repaired (#861). CI runs everything on each push to
develop; when every job passes, the promote job fast-forwards main to
that commit (.github/workflows/nikaia.yml) - that commit, not develop’s
tip, which may have moved on during the run.develop gets its own CI run. The concurrency group of a
push contains the run id, so runs overlap and none replaces another. (With one
shared group GitHub keeps one running and one pending run and cancels every
older pending one, so most commits never got an answer.) promote skips a
commit main already contains, so runs finishing out of order are safe. A
docs-only push skips the build and test jobs (scripts/ci-changes.sh).promote closes an issue only when a commit it brings
to main names it with Fixes, Closes or Resolves
(scripts/fixed-issues.py); (#N) and Part of #N close nothing. Any tense
counts, in prose too (5d7be91e’s “the compiler fix #1000” closed #1000
unbuilt). The commit that builds the last step of a To build list writes
Fixes #N, and also names every issue that list absorbed (Fixes #439,
#482). An issue left open on purpose gets a comment saying exactly what is
still missing. One that no commit can finish - a process note, a duplicate,
an answered question - is closed by hand, with the reason.scripts/drive.nika commits locally after
cheap checks (build, touched tests, fmt, clippy, scripts/pre-push.nika) and
never pushes. The driver runs the complete suite once per batch: when the
batch ends it starts it on HEAD in the background and waits for it before the next batch’s first builder (one at a time per
checkout, on CI: the tested commit pushed to ci/<lane> runs the whole
workflow, drive.nika --ci-wait follows it with gh api); green, it pushes the
tested commit; red, a QA agent (.claude/agents/qa.md) gets the briefs and
reports of the unpushed commits and fixes forward, at most two rounds, then
the driver escalates.docs/priorities.md), delegated by
the owner (2026-10-25). Bugs before moving is the default: as a rule one
builder works on compiler bugs and one on self-hosting, and self-hosting
pauses while we find more bugs than we fix. The score overrides this
default when its figures say so, and the brief states them.develop checked out: a commit in one moves
the branch under the others, and their index then shows the reverse of that
commit as staged changes. (m3a, 2026-10-28: a git reset in the shared
checkout at 22:41 cost a builder a test round.)CHANGELOG.md or the
badges, and names in its report what the change decided, for the
supervisor’s heading; the supervisor raises the version once per finished
package. A new NK code is taken only from the block the supervisor reserved
for that agent; one that needs more asks for it in its report.scripts/bump.py new raises the version everywhere (spec lines, Date:,
CHANGELOG, self_hosting.py row, badges); after a rebase scripts/bump.py
rebase-fix repairs a collision, check verifies. Compute the next version
after the rebase; on a conflict in the version lines, CHANGELOG.md or
assets/badges/*.svg, take the next free number and re-run python3
scripts/badges.py. Never merge an SVG by hand.NIKAIA_CACHE_LIMIT=2G in the
environment’s variables; until then, prune by hand:
NIKAIA_CACHE_DIR=$PWD/target/nikaia-project-tests NIKAIA_CACHE_LIMIT=2G
target/fast/nikaia cache prune, and the same without NIKAIA_CACHE_DIR for
~/.cache/nikaia.stop-hook-git-check.sh) complains about uncommitted changes. Those files
are the agents’ to commit. The supervisor answers the hook with a single .
and neither commits nor pushes them.origin/develop (cherry-pick in a
detached worktree when develop moved), raises the version when the change
needs one, and pushes; the agents go on committing. An error one agent causes in another’s file is the
supervisor’s to resolve if the agent that caused it does not repair it.builder type (.claude/agents/builder.md).
The measure is tokens per moved line (target below 50 k); turns are the guard
(about 120). A slice runs as a chain: a research agent writes a brief of at
most 80 lines to a file, the builder gets its path and the steps. The builder
translates the Rust by hand (owner, 2026-11-01); a compiler defect is fixed first. After each agent, nikaia run scripts/tokenspeed.nika
-- --short AGENTS_DIR prints one row for the Runs table of
docs/tokenspeed.md. The figures and the reasons are in
docs/tokensaverstrategy.md; the ordered steps for the core of emit and
check in docs/selfhosting-plan.md.Some sessions only prepare and take decisions; another session builds them. What the owner expects from such a round:
BTreeSet::iter() asked bare in chat): every question put
to the owner comes with a written paper, as a decision issue, before it
is asked. The paper says where the question comes from, the alternatives
(doing nothing included), the advantages and disadvantages of each, how
other languages do it, and a recommendation. A bare yes/no question in
chat, even with a recommendation, is not a decision basis.std entry
is made, not about what exists). Waits for a program that needs it is not a
reason; say not decided here and why.Moved from the former docs/architect.md (2026-10-31). nikaia here means
target/fast/nikaia.
cargo build
--profile fast -p nikaia with run_in_background (about 3 minutes),
started while the supervisor writes briefs; cycle.nika cannot run before.nikaia run scripts/drive.nika -- --focus with run_in_background
(--max N, --dry-run as below). It takes the areas of
docs/briefs/focus.txt (selfhosting, bugs) in turn, up to
block builder briefs each, a bug brief with a Blocks: line first; at
each block’s end the suite, a line in docs/briefs/focus-log.md (briefs,
results, tokens, cost, queue, kept k/m), the pending bumps while CI is
green, the next area. An area with an empty queue is skipped; every area
empty escalates, and CUT or RED stops the driver for the supervisor. The final lines are those of the cycle below.
The focus driver always runs (owner, 2026-11-01): when it ends, on
--max N agent runs reached or a block’s end, the main session starts it
again at once; it stops only for an escalation that needs the supervisor or
the owner, and starts again once that is handled. A watcher in the
background wakes the main session when the driver ends, and the hourly
check-in restarts a driver it finds stopped.nikaia run scripts/drive.nika -- DIR with
run_in_background (--max N agent runs, default 8; --dry-run shows the
next step; the bug lane with --no-bump). It loops on cycle.nika: runs
each NEXT brief through agent.nika and commits the run’s files (report,
.run.json, cost.txt, tokens.txt, tokenspeed.md), applies BUMP
pending when CI is green, and on CUT, BATCH DONE and a RED with no
builder queued waits for the batch’s suite and stops (ESCALATE <stop line>:
the supervisor writes the next briefs): the supervisor writes the next
briefs (for RED the fix-forward, queued first) and starts it again. It
prints one line per agent run and stops with one final line, exit 2, on an
escalation: an OWNER line, ESCALATE of agent.nika, a stop line,
--max reached, a push rejected after one rebase, a suite still red after two QA
rounds.cycle.nika -- DIR --done N clears an
OWNER line; after the owner’s answer, start drive.nika again. On RESTART
drive: ... (exit 3: the script changed) start it again at once. A failed
run (ESCALATE, a file in DIR) is read like a failed builder.OWNER lines: first the supervisor writes the decision paper (a
decision issue: where it comes from, alternatives with doing nothing, for
and against, other languages, recommendation; owner 2026-10-30); then ask
the owner in German, per Decision rounds, with the issue. After the answer
the supervisor re-queues: the build brief first in batch.txt, the blocked
brief’s report renamed BRIEF.run1.report.md (so batch.nika sees it
unrun), DIR/QUESTION deleted.nikaia run scripts/batch.nika -- DIR after a hand-back
(--tokens BRIEF TOKENS CALLS records the harness figures in
DIR/tokens.txt); nikaia run scripts/status.nika -- DIR (CI, batch and
pending-bump line, read-only); nikaia run scripts/release.nika --
[--dry-run] [--loop M] DIR raises the version once for the done reports’
Changelog: lines.gate.nika -- --all once
per batch (owner, 2026-10-31: once per batch): when the batch ends it starts
the suite on HEAD in the background (SUITE <sha8> started in the
background), and waits for it (SUITE <sha8> waiting)
before the next batch’s first builder, a bump or its own end (lock
target/suite.lock, so the two lanes’ drivers
take turns), prints SUITE <sha8> green|red <steps>, pushes the tested
commit on green (PUSHED <sha8>), and on red starts QA
(on DIR/qa/qa-task.md, the lane’s own copy of the template
docs/briefs/qa-task.md, so its report and run files land in DIR/qa/;
input DIR/qa-input.txt, log DIR/suite.log),
at most two rounds, then ESCALATE. The suite stops at the first red cheap
step (build, lower-std, fmt, clippy, pre-push) without running the tests,
and runs tests/compiler beside cargo test --workspace with a 4G package
cache. An escalated red leaves the commits
local: read DIR/suite.log and the QA report, and fix forward or hand it to
a fresh QA run before restarting the driver. An empty DIR/RED means the
last report’s gate was green (agent.nika), and DIR/qa-input.txt stays
from the last red round: neither says the suite is red now; DIR/suite.log
and DIR/unpushed.txt do (prover lane, 2026-10-31). The suite runs on CI
(owner, 2026-11-01): the tested sha is force-pushed to ci/<lane> (the last
part of DIR, ci/briefs), so the other lane’s unfinished files never enter
it and nothing of it lands on this disk; suite.log holds the run’s link and
each failed job’s last 200 log lines. ci-no-run (no run after 15 minutes)
or ci-timeout (3 hours) means look at the Actions page, then restart the
driver. A develop push of a sha already green on a ci/ branch skips the
heavy jobs. A lane whose pushes its own suite gates runs with
--ignore-ci-red: a red CI line on develop (another lane’s) no longer stops
it, and only its bump waits for green; the main lane runs
without it.partial|blocked report’s defect (issue ready and
bug brief, Reported defects are filed) and decides obvious language gaps
itself (Language decisions); a non-obvious one goes to the owner.Moved from the former docs/architect.md (owner, 2026-11-01: the architect
role is removed; its duties are the supervisor’s).
| Role | Who | Job |
|---|---|---|
| Owner | the person | Sets goals, stages and priorities; decides what is theirs |
| Main session (supervisor) | the session the owner started, all tools | Talks to the owner; decides what is built next and how; writes ADR and specification text, briefs and issues; runs scripts/drive.nika; raises versions; watches CI and cost; improves the process |
| Builder | .claude/agents/builder.md, no GitHub |
Builds one or two steps, commits locally after cheap checks, reports, ends; the driver runs the suite and pushes |
| QA | .claude/agents/qa.md, Sonnet, no GitHub |
Started by the driver on a red suite; reads the unpushed briefs and reports, fixes forward, commits locally |
The supervisor coordinates by briefs, and drive.nika runs them. A builder
that hit an error does not go on: its report comes to the supervisor, whose
next brief is the repair (the
compiler defect first, CLAUDE.md’s Fix, do not work around), then the
blocked step.
Pushing from a checkout that is behind (a dirty shared tree, so no
rebase): push a merge, T=$(git merge-tree --write-tree HEAD origin/develop),
then git commit-tree $T -p HEAD -p origin/develop and push that sha. Never
rebuild your files on origin/develop’s tree with a scratch index: a file
another session changed there is overwritten (2026-10-31: the y21
probe rule, restored by f96bb09a). Chain such steps with &&, never ;.
Language principles (owner, 2026-10-31), the measure for every language decision: complexity goes into the compiler, not to the user; whoever uses something pays for it, nobody else; consistency and harmony with what the language already says; and a look at how other languages solve it, to do it better.
std
entry, a method, a form, a conversion) whose answer the principles settle -
the form other parts of the language already have, a std counterpart of a
Rust call, an extension nobody pays for who does not use it - is approved by
the supervisor: ADR or specification text, the build filed ready, the
blocked work re-queued behind it. The ADR names this rule.decision issue with a decision paper (Decision rounds). In doubt, it is not obvious.Every report with Result: partial|blocked and a Found: defect with a
probe is filed by the supervisor when it reads the report: a GitHub issue in brief form
(ready, the probe, To build) and a bug brief
docs/briefs/bugs/b<N>-<issue>-<topic>.md with a Blocks: line, appended to
docs/briefs/bugs/batch.txt, issue labelled wip. An open issue that already
holds the defect gets the new probe as a comment instead.
Builders commit locally and push nothing. After each
batch the driver has CI run the complete suite (one at a time per checkout,
lock target/suite.lock: it pushes the tested sha to ci/<lane>, and the
whole workflow runs on exactly that commit); green, it pushes the tested
commit; red, it writes qa-input.txt and starts QA
(docs/briefs/qa-task.md), at most two rounds, then ESCALATE. CI stays the
final gate for what other sessions push meanwhile.
The score in priorities.md decides; every brief names its
score terms in 2-3 lines. Each lane has its own DIR with batch.txt, its
own driver run:
docs/briefs/: self-hosting moves only (owner, 2026-10-31).
A batch holds at least two moves; the one exception is a fix-forward for a
red develop. A compiler defect that blocks a move is fixed by the move’s
builder at once, as its own commit (owner, 2026-11-01: who finds it fixes
it). Only one that does not fit the builder’s time box, or needs a
decision, comes back blocked: the supervisor files it (ready, brief form), writes its brief into
docs/briefs/bugs/ with a Blocks: <move brief> line, adds it to
docs/briefs/bugs/batch.txt after the briefs listed there, and sets wip
on the issue. The move waits: it re-enters the main batch once the fix is on
develop, and the lane goes on with other moves meanwhile. Nothing is
written around the defect (CLAUDE.md, Fix, do not work around).docs/briefs/bugs/: ready defects (kind 3 of CLAUDE.md,
A missing form stops the work). A brief with a Blocks: line goes before
the lane’s own picks. Its own NK block, no version raise (--no-bump).wip (the yaml lane,
docs/briefs/yaml/, #928). An issue labelled wip is another lane’s.The focus rotation (owner, 2026-11-01): drive.nika -- --focus runs the
lanes of docs/briefs/focus.txt (main and bugs) in turn, a block of
up to block briefs each, a Blocks: bug brief before any block. CUT
and RED stop the driver for the supervisor’s next briefs; an area with no
unrun brief is skipped. docs/briefs/focus-log.md holds one line per block.
A brief is one file DIR/<topic>.md, tracked (never a scratchpad: a fresh
session has none). scripts/agent.nika starts the agent with Read your brief
at <path>. It opens with this frontmatter (defaults builder, sonnet, 120,
20, medium):
---
agent: builder
model: sonnet
max_turns: 100
budget_usd: 20
effort: low
---
effort (passed to claude --effort) is low where the pattern is known (a
form done before, a named test, a mechanical edit) and medium otherwise;
high is accepted but not written into briefs; any other value stops the run.
A line Facts: <heading>, <heading> (or facts: in the frontmatter) names
the ## / ### sections of docs/builder-facts.md the builder needs;
agent.nika puts their text into its prompt under Facts for this brief, so
it does not read the file whole. A heading ending in a parenthetical is named
without it (Moving Rust into Nikaia); an unknown one stops the run.
Issues are written in brief form (owner, 2026-10-25): frontmatter, facts, Locations, To build steps with tests, rules, report form, so a builder can start on one directly. Builders have no GitHub access: a brief copies the issue’s problem, probe and To build steps.
A brief names the place (owner, 2026-10-31):
tools/*.nika, and the test file of a touched NK code, resolved with
nikaia run scripts/where.nika -- NAME... (definitions, callers, tests) and
nikaia run scripts/where.nika -- --outline FILE (a file’s functions), never
grep -r. A bug brief names the suspected location of the fault (file
and function) that the supervisor found while tracing the probe, and says how
sure it is.Facts: <heading>, ...: the sections of docs/builder-facts.md the
builder needs, by their exact ## heading; agent.nika inlines them. A new
trap goes into builder-facts, not into each brief.Before a brief is written, the supervisor checks (each tag is the run that paid for the rule):
wip/ branch, patch) is applied and run through nikaia check and
one test first (y2c);match payloads and for elements it
reads, the by-value arguments beside them (y21 run 2: three checker defects
a ten-line probe would have shown before the batch);trim() inside a
function, not from a literal in main, which makes the field owned), or the
probe passes and the brief is wrong (y21 run 3, #1085). Before re-queueing a
draft that stopped on one, rewrite the refused part in scratch and check
and test the rest, so all its defects come out in one batch;views_the_call_s beside the
emitter’s #703 branch) and allows its file, or drops the row (b11);check_facts.nika, by node_key) or the field to add, and allows those
files; a missing or extra & at a call is the checker’s
(check_references.nika, the_compiler_writes_the_reference) (b1007, b1023);std call a move moves has a Nikaia std counterpart (Part III
17); a missing one is its own std brief, decided by the supervisor when
obvious (Language decisions), else a decision issue with a decision
paper. A brief never prescribes a way around a missing form unless
it cites the ADR that refuses it, and a blocked report on a gap is
answered with that issue (p3a; CLAUDE.md);item N frame vanished on a Cut);git log <last green>..<first red>), cheap suspects first
(b-fixforward-sweep).Brief rules:
done means; split into two briefs
instead (b867).Result: partial with
what it ruled out, the probe, and where it suspects the fault
(.claude/agents/builder.md). The supervisor then narrows the probe or
re-traces; it does not re-queue the same brief. A long brief tells the
builder to stop about 15 turns before max_turns, commit what is finished
and report partial (y4).docs/briefs/common.part (rules, disk, report form)
ends every brief, also a fix-forward, with <full brief
path> filled in: without the report path batch.nika never sees it done.A move brief (owner, 2026-10-28) hands over its draft: one Cut:
crates/<crate>/src/<file>.rs:A-B line per range (400-600 lines a brief), one
Convert: --profile check|check-free|emit [--prefix X_] line (--prefix
whenever the target file prefixes its names, P4b) and one Shape: line.
agent.nika converts before the agent starts and names the draft. The brief
names the callees’ locations, the syntax gaps the draft hits, the tests
between steps, and the callers of what moves including
crates/nikaia/tests/it/ (P4b).
A move is faithful unless a named reason forces a redesign (owner, 2026-10-29):
Shape: faithful (default): the same functions, bodies and data; Rust that
stays Rust is reached through one-line adapters with unchanged signatures.Shape: schematic <pattern>...: one fixed rewrite applied by hand to every
occurrence, each pattern stated in the brief with a three-line Rust probe and
the Nikaia it becomes.Shape: redesign <reason>: only for (1) data held by a crate or type that
stays Rust and no adapter reaches, or (2) a shape std or the lowering
cannot say yet, with the issue. Not taste, names, “cleaner”. The brief
states the full target shape. A redesigned part under a third of
the brief splits off into its own brief.The builder writes exactly <full brief path>.report.md, these fields only:
Result: done | noop | partial | blocked (noop: nothing to change; batch.nika counts it done)
Files: <paths of the commit, space-separated> (for scripts/commit.nika)
Commit: <subject line>
Body: <one paragraph for the commit message> (optional)
Fixes: #N[, #M] | Part: #N (optional)
Pushed: <sha> | rejected | none (drive.nika rewrites `rejected` when it pushed the commit itself)
Tests: <test filters run> - pass | <failing names>
Gate: green | red <tests> (#852; batch.nika cuts on red, #862)
Deviation: none | <one sentence> (bare `none`, no note after it: batch.nika cuts on anything else)
Found: none | <one sentence, issue number if filed>
Needs: none | <NK code, supervisor decision, owner decision>
Changelog: none | <one sentence for the version heading>
Owner: none | <one question for the owner, never a role> (batch.nika: `OWNER <brief>: <text>`; cycle.nika writes the first to DIR/QUESTION, a second while it exists prints `OWNER second: ...`)
Cache: none | <large entries newly created, MB>
Disk freed: <GB>
Measure: <builds=.. clippy_with_tests=.. ...> (never under Found)
Attribution: (last, the builder's trailer lines below it)
The builder ends its report with Attribution: and its own commit trailer
lines; a brief carries none. The builder’s final answer
is one line: done <sha>, report <path>, BLOCKED: <reason>, report <path>
or PUSH REJECTED <sha>, report <path>, plus NEEDS: <short> when Needs
is not none.
The supervisor reads the reports’ fields before the next batch. It files or updates issues
from Found, comments on or reopens an issue a Deviation leaves open, lists
what the change decided for the supervisor’s version heading, and picks the
next batch.
Two or three briefs per batch (owner, 2026-10-25), in order. The driver starts
the next brief when one says done; Found, a Deviation other than none,
partial, blocked or Gate: red cuts the batch, and the briefs left come
back to the supervisor with the reports, which writes the next batch.txt.
The brief is the work order.
The owner sets the stage. 1 Serial: one builder at a time; a defect found on
the way is repaired first. 2 Two: a second builder on files the first does not
touch. 3 More: by the owner, with stage 2’s figures. Now (owner, 2026-10-26,
widened by docs/bootstrap.md 3): stage 1 within each lane, the lanes
side by side; throughput comes from scripts; the main session is woken only on
an escalation.
Every cycle the supervisor looks at the reports for waste (polling, repeated
builds, a missed rule, a chafing tool, a missing script), changes the rule or
the tool at the source, and notes the figure in tokenspeed.md:
tokens and turns per finished step, steps per day; counted, not timed.
Current state only, rewritten (not appended) by the supervisor:
open lanes, what blocks what, figures, decisions in force that no ADR or issue
holds. What happened is in git log and the issues.
2026-11-01 (after fb4c04b6). Self-hosting: 83.2 % of the toolchain as
committed (scripts/self_hosting.py). Plan: docs/bootstrap.md,
rows and Cut: lines in docs/selfhosting-plan.md.
bootstrap_compiler, badges.py --check) fixed
forward by QA 7b3c9c5e; ci/briefs green at fb4c04b6. Cause: b22’s edit of
emit_core_leaves.nika sits uncommitted in the shared tree and moves the
share to 83.3 %; whoever commits it reruns scripts/badges.py. Main
session: rustup update stable at a quiet moment (this machine’s stable
is 1.97; 1.99.1 is installed beside it).ready,
no lane yet).docs/briefs/batch.txt): P5c done (655b51b6), C1b done
(547e6462). Batch: K3b run 3 (k3b-comptime-bundle.md, cherry-picks
wip/k3b-comptime-bundle-run2 707d5e53, applies clean at e1a88e49; #1106
fixed 1a5fdf6d; old report .run2), C1c (c1c-ledger-lookup.md, closes
row C1; shape probed). S1 is translated by hand (.get(range) on a
String is NK1214 by design, ADR-374). P5e waits on the O rows (#923). To check when next near
trust.rs: join makes a package that reads no untrusted source all-fast
even where keys come through a trait barrier (ADR-010 D9 point 5).scripts/plan_rows.nika, the driver writing the failing job’s clippy output
into the driver’s stop line, fold ComptimeRan into CheckWall, #1102
(driver re-lowers on a rebase conflict in lowered/*.rs).drain() on every map and set, #1130,
bug brief b32, also repays C1b’s clone in ledger_items_stored), ADR-387 (a
view of a copy type is copied where the value is wanted, #1107’s rest, b33).docs/briefs/bugs/batch.txt, 2026-11-01 18:10): b29 #1126,
b30 #1127, b31 #1129, b32 #1130 done locally (wip until promote). b30’s
Found filed as #1132 (ready, no brief yet; suspected bind_static_payloads
lacks an Or arm). Batch: b22 #1099 run 2 (takes over run 1’s uncommitted
edit in emit_core_leaves.nika; old report .run1), b33 #1107 (ADR-387),
b21 #1097; probes re-checked at f41c3f4a. Queued after, briefs written and
wip: b13 #1057, b23 #1100, b24 #1101, b14 #947, b16 #1065. #1060 open for
step 2 (not reproduced). ready defects no lane holds, next: #1132, #1131,
#1125, #1124, #1113, #1114, #1109, #1119, #1118, #1081, #1075, #1074, #1083,
#1086, #1066, #1038, #958, #1014, #927, #1056, #1058. Unfiled: dev-profile
cargo test -p nikaia hits the recursion limit in winnow-grammar
rt.rs:902; a two-view fn field written with String instead of ref
String is NK1106; String? == String refused (NK1102): decide whether by
design when next met. A bare RED line in the driver’s stop line (no sha) is
not the driver’s: check the newest develop runs before treating it as red.wip).fs::Metadata::modified(), links(), file_id(), time::since_epoch(),
#922, ADR-319, ADR-368), s920, s922, b9, b10, b11, b6-b8, b1046; ADR-384
lands with s1082’s Part III text. Waiting on the owner: #1047, #1042.drive.nika’s drive_push runs git pull
--rebase --autostash in the shared checkout. Branch
wip/bounding-candidates-2026-10-19 is parked.