ADR 0006: Orkeon main after #213, on the rc.6 pin
- Status: accepted
- Date: 2026-10-26
- Amends: ADR 0005
Context
Orkeon #213 is merged on Orkeon main (947d3215); no tag holds it yet. It closes the three issues the live runs
of 2026-10-26 opened against the runtime of ADR 0005 (Orkeon #210 to #212) and changes the surface Orkeon Code runs
on:
- The interactive REPL starts on a terminal (#212). On the
mainafter #206 the REPL hung after its start lines when its standard input was a terminal, TUI and--ui plainalike: a cycle in the REPL's services, the replay command taking the console being built. Only--replayand a redirected input went on. The replay console is now resolved lazily, at the command's first execution. - Concurrent streaming keeps whole lines (#211). The console sink streams the foreground act as it arrives, as
before; every other turn holds its own line buffer and writes one whole line at a time under one lock. A turn under
a command instance (a background command, a
runAgentsub-run) prefixes its lines with the ticket,[t2], as the completion lines are; a crew task adds its id. The API gainsILlmDeltaSink.BeginTurn(label), a default member the recording sinks need not implement. Note of 2026-10-27: Orkeon #217 gives the split-pane REPL one screen per thread, and a task's lines go to its own screen without the ticket prefix; the plain console keeps the prefix described here. - The structural tools publish their parameter schema (#210).
node_outline,node_read,node_replace,node_insert,node_ensureandedit_batchsent{"type":"object","properties":{}}to the model, which learnt the arguments from the description alone and guessednode_outlinewithout apathandedit_batchwithoutoperations. The schema generator now reads their request records; the generated typings type each input, the required members as such and thekind,op,positionandvalidatevalues as literals.
Decision
- The same pin.
.orkeon-versionstays1.0.0-rc.6; the surface Orkeon Code targets is Orkeonmainafter #213, the one that tag will carry. The runtime smoke builds from that commit (ORKEON_SOURCE_REF). - Typings from the sources until the tag, as ADR 0002, 0004 and 0005 decided (
scripts/sync-typings.shoverORKEON_SOURCE). The typings of the node tools andedit_batchare the generated ones; nothing in Orkeon Code calls them from a script, so the type check sees no change. - The editing rule keeps spelling the
edit_batchshape out. The schema now says it to the model, but the guard that refuses a batch withoutoperationsrepeats the same words as the rule, and a role that reads the refusal must find the shape it was told. The shape's words are unchanged; the rule's comment says why they stay. The rule itself gained one sentence after the live run of 2026-10-27 on this runtime: eachnode_replaceof a batch carries the hashnode_readgave for that very node, since a placeholder hash made the runtime refuse a whole batch. - Console streaming stays on in the example settings. The interleaving the known issues told the user to avoid
by disabling the streaming for a
/dev-batches --concurrencyrun is gone; what remains known is an answer printed twice, and the advice to disable the streaming for an unattended run. - Nothing to configure. The REPL start, the sink and the schema change no key.
Consequences
- The known issues of the roadmap lose the REPL hang and the interleaving; the configuration page says how a concurrent run streams now.
- A
/dev-implementor/dev-batchesrole gets a typededit_batchandnode_*call from the model's side: fewer refusals of a batch withoutoperationsor an outline without apath, and fewer retries charged to the batch's budget. - The source mode on a terminal was checked by hand on a pseudo-terminal of 120x40 that answers the terminal's
queries: with
--ui plainthe start reachesScripted commands ready: 58 loadedand thescripted>prompt in seven seconds, and/exitends it; the TUI draws its interface in five seconds (128 KB, the REPL banner and its help, where the runtime of ADR 0005 wrote 244 bytes of queries and nothing more), and/exitends it too.
Alternatives considered
- Drop the spelt-out
edit_batchshape now that the schema is published: the guard's refusal would then name a shape the rule never stated, and the rule is cheaper than a refused call. - Wait for the tag: a REPL that does not start on a terminal is not a runtime to pin.