iterion

Nexie — whats-next run bilans

Conversational co-CTO (v2: ONE agent in a chat loop — board intelligence, ticket curation against code reality, dispatch). See bots/whats-next/. Bilans before 2026-07-07 cover the v1 form state machine (survey → priorities form → roadmap → review form → emit → dispatch pickers).

2026-07-08 — first cloud-prod session + skills-format engine fix (run 019f412x)

2026-07-07 — v2 conversational rewrite, first live session (run 019f3beb)

Round 2 (same session, turns 3–5): bulk confirmation + real dispatch

2026-06-22 — z.ai/GLM-5.2 dogfood + mid-run anthropic failover (run 019ef04f-a5ff)

2026-06-13 — full survey→roadmap→triage dogfood (run 019ec0a1)

Value (genuinely high)

Findings / misses

  1. set_bot/list_labels truly absent at runtime — STALE INSTALLED BINARY (medium — dev-infra, ROOT-CAUSED). Both emit_action and triage_board routed the bot via the human assignee field and reported “this board build registers no set_bot/list_labels MCP tools”. The agent was correct, not confabulating. The studio under task studio:dev runs via go run, whose os.Executable() is a volatile build path, so proc.LocateIterionBinary() skips it and falls back to the installed /usr/bin/iterion to serve the __mcp-board stdio MCP. That installed binary was stale (commit 62aac3cc, pre-dating set_bot/list_labels) and its tools/list advertises only 7 tools (assign_issue, close_issue, create_issue, get_issue, list_issues, set_labels, transition_issue) — no set_bot, no list_labels. Proof: ITERION_BOARD_CAPS=<6 caps> /usr/bin/iterion __mcp-board tools/list → 7 tools; the freshly-built binary (current code) → all 9. So the bot prompt (emit_action_system l.709-713 already maps item.assignee → set_bot) and the iterion-board skill are correct; the agent faithfully used what the stale board server offered (assignee fallback, which the dispatcher honours). Fix is operational, not a bot/code change: refresh the installed binary (sudo cp ./iterion /usr/bin/iterion) or run the studio with ITERION_BIN=<fresh> so delegated subprocesses match the running code. This skew affects EVERY delegated capability (board MCP, the sandboxed __claw-runner, the __mcp-ask-user server) — see the CLAUDE.md note added under the live-dogfood section. (The chained findings #2–#5 below are downstream of routing via assignee and may differ once the binary is fresh and set_bot is used.)
  2. emit_action dedup miss (low-medium — bot improvement). It created a new “Restore sec-audit-source scanner output under dispatcher sandbox” item even though its own body says “Fix the existing backlog item native:f3a888dc” — duplicating the pre-existing ticket instead of promoting/linking it. (It did correctly avoid recreating native:3a81df64.) The promote-don’t-duplicate rule needs to be firmer.
  3. Non-deterministic empty dispatch (medium — reliability). Submitting the dispatch picker empty made assign_to_bots move all 5 issues to ready this run; the stale 2026-06-04 session’s identical empty reply moved nothing. Same input, opposite outcome.
  4. Dispatch picker fell back to free-text (low — UX). The picker rendered its free-text JSON-array fallback instead of a checkbox list — its own helptext says “this free-text shows only when the upstream summary message is missing”. Likely the upstream trigger of finding #3.
  5. Phantom [] watched item (low — UX). The empty dispatch submit created a 6th “dispatched” watch entry rendered as []“API error 404: issue not found”, spamming the console with repeated 404s.
  6. Minor. Transient GET /api/runs/{id} 404 console error right after launch (run.json flush race); the human-gate form lagged the backend pause by a moment (a page reload always showed it).
  7. Bot discovery double-counts across roots (low — engine/botregistry). The auto-regenerated iterion-bot-catalog.md (regen runs before every Nexie launch) grew a duplicate Revi / review-pr card — one for bots/review-pr/main.bot, one for a stray gitignored .botz/review-pr/main.bot (a leftover iterion bundle pack artifact, also surfaced in Nexie’s own survey). pkg/botregistry treats both bots/ and .botz/ as discovery roots but does not dedupe by bundle name, so a local packed copy of a source bot shows up twice in the catalog Nexie routes from. Worked around locally by removing the stray .botz/review-pr + restoring the regen artifact; the proper fix is dedupe-by-bundle-name (precedence bots/ > .botz/) in pkg/botregistry discovery — deferred to a focused follow-up.

Engine hardening

Lessons for next run