Human-in-the-loop ADR re-challenger. Loads one ADR + the current code, frames
fresh arguments (changed assumptions, matured alternatives, dependency/code
drift, triggered consequences), and asks the operator: keep / change /
addendum. change files a backlog ticket; addendum appends a dated note
to the ADR, then a second commit-or-skip gate (the note is optional). Uses
interaction: human (not the heavier interaction: review); claude_code only
(no forfait dependency).
92ccd136 (main)iterion run bots/adr-rechallenge/main.bot
--var adr_path=docs/adr/008-bot-golden-replay-framework.md
--var workspace_dir=<worktree> (contained to the dogfood worktree, not
main, since ReArchi has no worktree: auto and edits the live tree).
claude_code (host OAuth) only — no claw/forfait nodes, so no token risk.
Driven interactively: launch → pause → iterion resume --answers-file.--answers-file.api.APIClient injection seam still doesn’t exist (executor.go:377-524),
so rejected Alternative 1 stays infeasible exactly as the ADR said; the
assignee-coupling consequence hasn’t fired (set_bot is only the MCP routing
tool). It found no change driver and correctly refused to manufacture a
change case (the argument-framing skill’s anti-fabrication contract held).
It surfaced two real record-keeping divergences (stale pre-rename bot names
c9996d98/8784d677; four golden fixtures still original 2026-05-29 seeds
never regenerated) and wrote a crisp, correctly-formatted addendum. The
addendum was landed on main’s ADR-008 (a9e65e50).| # | Finding | Severity | State |
|—|—|—|—|
| 1 | commit_changes committed the addendum with an unresolved/malformed message (docs(adr): addendum to ADR- re-challenge\n\n…) — embedded refs in the with{} edge string don’t resolve (only PURE refs do; files: "" worked), and DSL \n stayed literal | real | FIXED 3a639f27 — write_addendum now emits a complete full_message, the edge passes it as a pure ref (matches the docs-refresh/feature-dev pattern). Live-validation deferred (static validate OK). |
with{}
string — iterion resolves a pure ref ("") there but not refs
embedded in a longer string, and DSL \n is literal. Build the value in a
node (agent/compute) and pass it as a pure ref. (Tool command: templates DO
resolve embedded refs — that’s why git -C works —
so the asymmetry is edge-mappings vs command bodies.)--var workspace_dir=<scratch> or a throwaway clone) since
ReArchi has no worktree: auto and commits to the live tree on the addendum
path — otherwise it edits + commits the operator’s checked-out ADRs directly.change branch (file a backlog ticket) was not exercised this run —
ReArchi correctly judged ADR-008 had no change driver. A future dogfood on an
ADR with a genuine maturing alternative would cover it.