Skip to content
Like what we’re building? Star on GitHub

Docs and ADR map ​

One row per page under docs/, ADRs included. An ADR's status is the column that says whether its decision still holds; superseded ones stay listed because the reasoning is still the reason.

PageTitleOpens withStatus
docs/README.mdDocumentationThis index describes the current repository state.—
docs/adr/001-round-robin-router-mode.mdADR-001: Adding the round_robin mode to RouterThe Iterion v1 DSL orchestrates multi-agent workflows with a small set ofAccepted
docs/adr/002-desktop-assetserver-proxy.mdADR-002: Desktop studio hosted via Wails AssetServer handlerThe desktop binary (iterion-desktop) is a thin native shell around theAccepted
docs/adr/002-editor-runview-separation.mdADR-002: Separating the Run console from the Workflow editorThe Iterion editor is a React/Vite SPA embedded in the Go binary—
docs/adr/003-privacy-tools-pure-go.mdADR-003: Pure-Go privacy tools (privacy_filter / privacy_unfilter)Iterion needed a built-in mechanism to detect and redact PII (emails,Accepted
docs/adr/004-provider-fallback-chain.mdADR-004: Per-node provider fallback chain as a credential-routing-hint chainbelow; the cross-API deferral recorded here is discharged byAccepted (amended 2026-06-22 — per-element model shipped,…
docs/adr/005-runs-stats-cache.mdADR-005: Runs-stats cache — lazy version-keyed memoization, not broker-push invalidation(runStatsCache, runVersion),Accepted
docs/adr/006-sandbox-strict-doctor.mdADR-006: iterion sandbox doctor --strict — dry-run validation that never pulls(buildStrictReport, PreflightSandbox),Accepted
docs/adr/007-runview-files-combined-default.mdADR-007: Run-view files panel — combined default by lifecycle, merged from two git…(modeCombined, combinedFiles, lifecycle tags),Accepted
docs/adr/008-bot-golden-replay-framework.mdADR-008: Bot golden-test framework records at the NodeExecutor seam and replays staticallyTaskfile.yml (test:goldens, test:goldens:record, check)Accepted
docs/adr/009-daily-spend-cap.mdADR-009: Per-day LLM spend cap — shared ledger + pre-exec pause, not a new run statusrecordAndCheckBudget) and pkg/runtime/pause.goAccepted
docs/adr/010-findings-auto-hygiene.mdADR-010: whats-next findings auto-hygiene — destructive prune on a conservative git-log…(emit_action node, emit_action_system steps 10–13, emit_outputAccepted
docs/adr/011-whole-improve-loop-context-chunking.mdADR-011: whole_improve_loop fragments the workspace by package into per-pass…(snapshot_chunk tool, streak_check compute, max_review_chunk_tokens var),Accepted
docs/adr/012-dispatcher-before-remove-hook-on-worker.mdADR-012: Dispatcher workspace teardown (incl.(runWorker — teardown now invoked here before postFinished),Accepted
docs/adr/013-dispatcher-attachments-unsupported.mdADR-013: dispatch.attachments is unsupported — fail fast instead of silently dropping…(Config.Validate attachments rejection, unsupportedAttachmentsErr,Accepted
docs/adr/014-dispatcher-paused-run-parking.mdADR-014: a dispatched run that pauses for input is parked, not retried(finishRun — the new ErrRunPaused / ErrRunPausedOperator branch),Accepted
docs/adr/015-dispatcher-retry-attempt-cap.mdADR-015: Dispatcher retry attempt cap — bounded retries that give up into a terminal…(finishRun default branch, giveUpIfExhausted),Accepted
docs/adr/016-in-run-worktree-file-editor.mdADR-016: In-run worktree file editor — handler-layer write reusing one audited path…(handleGetRunFileContent, handleSaveRunFileContent,Accepted
docs/adr/017-devbox-first-bot-toolchain.mdADR-017: devbox-first bot toolchain — bot tools vs project devbox, project-devbox…(BashExtraEnv, the devbox run -- project-managed-toolchain hook),Proposed (design + feasibility prototype; staged rollout…
docs/adr/018-bot-secret-binding-egress-enforcement.mdADR-018: Bot-secret binding scope-tightening — enforce AllowedHosts, drop the…A BotSecretBinding makes a stored org/user secret resolvable for aAccepted
docs/adr/019-sandbox-doctor-static-binary-check.mdADR-019: sandbox doctor detects a dynamically-linked host iterion binary(detectBinaryLinkage, staticBinaryWarning, binaryLinkage),Accepted
docs/adr/020-git-arg-injection-and-path-traversal-hardening.mdADR-020: Allowlist + filepath.IsLocal hardening of git arg/path surfacespkg/git builds git command lines and worktree file paths fromAccepted
docs/adr/021-is-ancestor-via-merge-base-equality.mdADR-021: IsAncestor via merge-base equality, not --is-ancestor plumbingAfter a worktree-using run finalizes, the studio must decide whether toAccepted
docs/adr/022-empty-tree-sha-synthetic-baseline-for-root-commits.mdADR-022: Hardcoded empty-tree SHA as synthetic baseline for root commitsShowCommit and DiffOfCommit inAccepted
docs/adr/023-c-locale-pinned-stderr-substring-error-classification.mdADR-023: C-locale-pinned stderr substring matching for git error classificationThe wrapper must distinguish several git outcomes that are not errors fromAccepted
docs/adr/024-nul-framed-parsing-for-adversarial-git-metadata.mdADR-024: NUL-framed (-z) parsing of all git output for adversarial metadataThe studio's Commits tab and files panel parse git log, git status,Accepted
docs/adr/025-git-panel-reflects-working-tree-not-the-index.mdADR-025: Studio file panel reflects the working tree, not the indexThe studio's modified-files / diff panel answers one question for theAccepted
docs/adr/026-main-repo-root-resolution-for-project-rooted-state.mdADR-026: Main-repo-root resolution (gitdir pointer parse) for project-rooted stateRun and dispatcher worktrees live under the repo they belong to:Accepted
docs/adr/027-git-cli-shell-out-not-embedded-pure-go.mdADR-027: pkg/git shells out to the host git binary, not an embedded pure-Go libraryiterion needs git status / diff / log for the studio's modified-filesAccepted
docs/adr/028-dispatcher-actor-io-offload.mdADR-028 — Dispatcher actor: offload blocking tracker I/OStatus: Accepted.—
docs/adr/029-sandboxed-claw-via-hidden-claw-runner-ndjson-ipc.mdADR-029: Sandboxed claw via hidden claw-runner NDJSON IPCSandboxed claw calls need two properties that pull in opposite directions.Accepted · amended 2026-09-29 (see…
docs/adr/030-sandbox-network-proxy-binds-all-interfaces-not-loopback.mdADR-030: Sandbox network proxy binds all interfaces, not loopbackThe sandbox network CONNECT proxy is started by the launcher but must be reachable from sibling sandbox containers.Accepted
docs/adr/031-sandbox-one-long-lived-sleep-infinity-container-per-run.mdADR-031: Sandbox uses one long-lived sleep-infinity container per runA single sandboxed run can issue many delegate executions and tool calls.Accepted
docs/adr/032-quota-optimistic-inc-with-detached-context-rollback.mdADR-032: Quota uses optimistic increment with detached-context rollbackPer-org monthly run and webhook caps must be enforced under concurrency.Accepted
docs/adr/033-launch-gate-fails-open-on-metering-error.mdADR-033: Launch gate fails open on metering errorRun admission combines several gates: org suspend/read-only status, active-run concurrency, in-memory launch rate, monthly run quota,…Accepted
docs/adr/034-webhook-dual-mode-auth-token-header-vs-body-hmac.mdADR-034: Webhook auth supports token headers and body HMACForge webhook providers authenticate deliveries differently.Accepted
docs/adr/035-per-org-sso-generic-oidc-plus-dedicated-connectors.mdADR-035: Per-org SSO uses generic OIDC plus dedicated connectorsPer-org SSO must support arbitrary standards-compliant OIDC identity providers, including org-admin-supplied issuers.Accepted
docs/adr/036-jws-id-token-verification-alg-allowlist.mdADR-036: JWS ID-token verification uses an asymmetric algorithm allowlistPer-org OIDC lets tenant administrators configure arbitrary issuers.Accepted
docs/adr/037-sso-auto-link-requires-domain-dns-txt-not-idp-email-verified.mdADR-037: SSO auto-link requires DNS-verified domain, not only IdP email_verifiedAuto-linking a fresh SSO identity onto an existing iterion user by email is sensitive: if an org-controlled IdP can assert an email address…Accepted
docs/adr/038-github-team-gating-via-materialized-reverse-lookup-index.mdADR-038: GitHub team gating uses a materialized reverse-lookup indexGitHub logins can grant access to iterion orgs based on allow-listed GitHub org/team memberships.Accepted
docs/adr/039-per-tenant-sealed-oauth-app-store-replaces-global-env.mdADR-039: Per-tenant sealed OAuth app store replaces global envMulti-tenant cloud deployments must support many forge providers and instances.Accepted
docs/adr/040-oidc-callback-cookie-samesite-lax-not-strict.mdADR-040: OIDC callback cookie uses SameSite=Lax, not StrictOIDC login starts on iterion, redirects the browser to an identity provider, and returns through a cross-site top-level GET callback.Accepted
docs/adr/041-ultracode-is-a-mode-not-a-wire-value-4-8-only.mdADR-041: Ultracode is a mode, not a wire value, gated to Opus 4.8The DSL exposes reasoning_effort as a user-facing control.Accepted
docs/adr/042-dynamic-model-specs-curated-fallback-async-fetch.mdADR-042: Dynamic model specs over a curated fallback, fetched asynccapabilitiesForModel() resolves a model's ModelCapabilities —Accepted
docs/adr/043-provider-model-support-tiers.mdADR-043 — Provider/model support tiers: Anthropic + OpenAI first-class, z.ai/GLM as an…Status: accepted (2026-06-23)—
docs/adr/044-adaptive-recovery-for-deterministic-action-nodes.mdADR-044 — Adaptive recovery for deterministic ACTION nodes (gates stay deterministic)Status: accepted (partial) (2026-06-23) — the Verified Action quad is—
docs/adr/045-whole-improve-loop-progressive-context-disclosure.md045 — whole-improve-loop: progressive context disclosure for the reviewerStatus: Accepted (2026-06-23) — implemented behind context_mode, default explore, validated by run (see…—
docs/adr/046-event-driven-runs-trigger-spine.mdADR-046 — Event-driven runs: a unified trigger spine (board events first)Status: accepted (phases 1–4) (2026-06-25) — shipped end-to-end, local +—
docs/adr/047-forge-token-out-of-git-config.mdADR-047 — Keep the forge token out of the cloned repo's .git/configStatus: accepted → implemented 2026-07-20 by a different mechanism, amended 2026-10-28 (no kill-switch — see Amendment)—
docs/adr/048-org-team-hierarchy.mdADR-048 — Org → Teams two-level hierarchyStatus: Accepted (implemented — P0→P2)—
docs/adr/049-forge-as-interchangeable-substrate.mdADR-049 — Forge as an interchangeable substrate (iterion stays a layer, not a forge)Status: Accepted—
docs/adr/050-dsl-turing-completeness-fuel-liveness.mdADR-050 — DSL Turing-completeness: relocate termination to fuel + livenessStatus: accepted (Layer 0 + Layer B shipped) (2026-06-30) — the bounded—
docs/adr/051-in-bot-event-driven-primitives.mdADR-051 — In-bot event-driven primitives (emit / wait)Status: proposed → Brick 1 implemented (2026-06-30).—
docs/adr/052-review-topology-mono-dual.mdADR-052 — Mono/dual review topology for bi-model review-loop botsStatus: accepted → implemented (2026-07-01).—
docs/adr/053-unified-run-streaming.mdADR-053 — Unified, store-agnostic run streaming (events + logs, local + cloud)Status: accepted (2026-07-03; amended same day — see Amendment).—
docs/adr/054-monotonic-active-duration-semantic-loop-counting.mdADR-054 — Monotonic active-duration + semantic loop countingStatus: accepted (2026-07-03; shipped 85ea12d7f).—
docs/adr/055-unit-convergent-adaptive-improve-loop.mdADR-055 — Unit-convergent, adaptive improvement loop (inverting the "manual Claude Code…Status: accepted (2026-07-03).—
docs/adr/056-adaptive-run-level-recovery.mdADR-056 — Adaptive transient retry + bounded auto-resumeStatus: accepted (2026-07-03; shipped f84ad6af6).—
docs/adr/057-axis-driven-work-list-sweep.mdADR-057 — Axis-driven work-list sweep (whole-improve-loop's real mechanism)Status: accepted (2026-07-03).—
docs/adr/058-minimal-framing-lean-on-the-agent.mdADR-058 — Minimal framing: lean on the agent, don't cage it in a graphStatus: accepted (2026-07-03).—
docs/adr/059-skill-library.mdADR-059 — Skill library: a first-class, referenceable store of skillsStatus: accepted (2026-07-05).—
docs/adr/060-conversational-single-agent-bots.mdADR-060 — Conversational single-agent bots: the chat loop patternStatus: accepted (2026-07-07, amended 2026-10-29 — the durable-brief half of the dialogue contract is withdrawn, see Amendment)—
docs/adr/061-per-backend-system-prompt-composition-mode.mdADR-061: Per-backend system-prompt composition modeuser setting scope left claude_code's default; the ambient-context policyAccepted
docs/adr/062-system-reminder-envelope-for-harness-injections.mdADR-062: <system-reminder> envelope for harness-origin injectionsBoth backends inject harness-origin text into a running conversation:Accepted
docs/adr/063-post-compaction-todo-reseed-nudge.mdADR-063: Post-compaction todo-reseed nudgeThe claw path compacts conversation history when it approaches theAccepted
docs/adr/064-worktree-finalization-requires-delegated-authority.mdADR-064: Worktree finalization requires delegated workspace authorityThe worktree finalization path (see the engine's worktree: autoAccepted
docs/adr/065-dedicated-cli-agent-backend.mdADR-065: Dedicated CLI-agent backend for non-claude-code argument protocolsiterion had no way to run a third-party agent CLI whose argument protocolAccepted
docs/adr/066-runner-build-cache-architecture.mdADR-066 — Runner build-cache architecture: shared RWX Go caches now, Nix binary-cache…Cloud runner pods (devbox-first-class image, ADR-lineage: the 2026-07-08—
docs/adr/067-persist-run-git-metadata-for-cloud-panels.mdADR-067 — Persist run git metadata to the store so cloud Commits/Files panels survive…In cloud mode the studio's run Commits and Modified files panels—
docs/adr/068-persist-run-diff-content-for-cloud-panels.mdADR-068 — Persist per-file diff content so cloud file/commit diff clicks resolverun Commits and Modified files panels render by persisting a—
docs/adr/069-mid-run-file-secret-refresh-for-sandboxed-runs.mdADR-069 — Mid-run file-secret refresh for sandboxed runsGitHub App installation token, which lives ~1h) is a **launch-time—
docs/adr/070-kubernetes-sandbox-orphan-gc.mdADR-070 — Garbage-collect orphaned kubernetes sandbox pods and their…The kubernetes sandbox driver (pkg/sandbox/kubernetes) cleaned up its—
docs/adr/071-board-as-pipeline-projection.mdADR-071 — Board as a projection of a pipeline (additive)Status: proposed (2026-07-12).—
docs/adr/072-web-search-capability-tiers.mdADR-072 — Web search as a sovereign capability ladder (SearXNG → Firecrawl)Status: accepted (2026-07-13).—
docs/adr/073-cloud-twins-for-fs-only-run-detail-seams.mdADR-073 — Cloud twins for the three filesystem-only run-detail store seams (turns, tool…Three optional store.RunStore seams were implemented only on—
docs/adr/074-dedicated-pipeline-board-projection.mdADR-074 — A dedicated pipeline board projectionStatus: proposed (2026-07-14, revised same day).—
docs/adr/075-irref-fallback-for-oversized-cloud-queue-ir.mdADR-075 — IRRef fallback: offload an oversized compiled IR out-of-band at cloud dispatchCloud-mode dispatch marshals a run's compiled IR (the AST File) inline—
docs/adr/075-nexie-roadmap-study-cycle-skill-level.mdADR-075 — Nexie v3: the roadmap-study cycle as a skill-level behaviorStatus: accepted (2026-07-16).—
docs/adr/076-pipeline-hard-blockers-and-waiting-deps.mdADR-076 — Pipeline hard blockers, waiting_deps, and unified launch admissionStatus: accepted (2026-07-18).—
docs/adr/076-scoped-config-share-editor.mdADR-076 — Scoped config-share editor (self-service, per-field, per-repo)Status: proposed · 2026-07-17—
docs/adr/077-declarative-per-bot-config-share-surface.mdADR-077 — Declarative per-bot config-share surfaceStatus: accepted · 2026-07-18—
docs/adr/078-config-editor-role-sso-team-scoped-access.mdADR-078 — Config-editor role: SSO-team-scoped access to config-shareStatus: accepted · 2026-07-18—
docs/adr/079-cloud-portable-plugin-and-library-skills.mdADR-079 — Cloud-portable plugin & library skillsStatus: accepted (2026-07-20).—
docs/adr/080-git-backed-org-private-plugin-sources.mdADR-080 — Git-backed, org-private plugin sourcesStatus: accepted (2026-07-20).—
docs/adr/081-async-human-interaction.mdADR-081 — Async human interaction: ask, keep working, sync laterDate: 2026-07-21—
docs/adr/082-sandbox-by-default.mdADR-082 — Sandbox by defaultSandboxing was opt-in: a workflow had to declare sandbox: (or the—
docs/adr/083-json-field-schema-type-union.mdADR-083 — JSON-typed schema fields compile to a type union, not the empty schemaThe DSL json field type (ir.FieldTypeJSON) means "this output field—
docs/adr/084-subbot-reattach-across-restarts.mdADR-084 — Subbot parents re-attach to their child across a restartDate: 2026-07-22—
docs/adr/085-pi-as-execution-backend.mdADR-085: pi as an execution backenditerion's backend fleet has a shape problem at the edges.Accepted
docs/adr/086-pipeline-card-drawer-hand-rolled-overlay.mdADR-086 — The pipeline card drawer stays a hand-rolled overlay, and owns its own focus…The studio ships a Radix-backed right-side sheet primitive,—
docs/adr/087-cross-backend-model-fallback-chain.mdADR-087: Cross-backend model fallback chain (fallbacks:) — loud, IR-visible, opt-in(dispatchWithProviderFallback, providerFallbackEligible),Accepted
docs/adr/088-error-tracking-via-sentry-dsn-protocol.mdADR-088: Error tracking through the Sentry DSN protocol, opt-in by env(Init, Enabled, Capture*, Flush),Accepted
docs/adr/089-session-persist.mdADR-089 — session: persist: a node resumes its own conversation on re-entrytranscript rehydration (reserved conversation_ref, not this PR)Accepted (revision 8 — Codex review)
docs/adr/090-model-registry-and-operator-model-choice.mdADR-090: a model registry, and letting the operator choose the modelNobody could say which model the studio assistant ran on, and nobody couldAccepted
docs/adr/090-runtime-operational-settings-db-backed.mdADR-090 — Runtime-configurable operational settings, DB-backed with TTL-bounded…The subscription usage caps were frozen at process start from envAccepted
docs/adr/091-fallback-skip-route-and-plan-peer-review.mdADR-091: action: skip terminal route + when: route gate — and the cross-model plan…(checkFallbackAction, checkFallbackWhen),Accepted
docs/adr/091-ubiquitous-assistant-chat-dock.mdADR-091 — The assistant is a shell-level dock with implicit route context, not a routeThe studio's assistant was reachable from exactly one route.—
docs/adr/092-product-docs-editorial-sovereignty-and-git-native-source-deltas.mdADR-092 — Editorial sovereignty in the target repo, and git-native cross-repo source…product-docs is the first catalog bot whose **workspace and subjectAccepted
docs/adr/093-bot-vars-runtime-settings.mdADR-093 — Bot-var overrides: ${ITERION_X:-default} resolved from the DB before the…Bots parameterize their model pins, reasoning effort and tunables asAccepted
docs/adr/093-model-spec-registry-as-a-leaf-package.mdADR-093: The model-spec registry is a leaf package, and its published prices are a cost…(Registry, Default, SetDefault, NewSeeded),Accepted
docs/adr/094-shared-subbot-bundles-bot-uri.mdADR-094: Shared subbot bundles — the bot:// dependency URI, a unified subbot source…Two sibling projects (Town, Tabarria) run different main bots but share theAccepted
docs/adr/094-trigger-effect-outbox.mdADR-094 — Durable effect outbox for cloud board triggerswork, the lossy-bus doctrine in docs/merge-gate.md—
docs/adr/095-terminal-state-contract-and-failure-taxonomy.mdADR-095 — Canonical terminal-state contract and persisted failure taxonomystate machine; this ADR adds classification only, zero new transitions),—
docs/adr/096-board-claim-lease-and-watchdog.mdADR-096: Board claim lease + fenced watchdogADR-070 (k8s orphan GC — the TTL+parenthood+reaper triad, conserve on—
docs/adr/097-github-projects-v2-board-sync.mdADR-097 — GitHub Projects v2 ↔ native board synccloud team onto the Iterion project board—
docs/adr/098-connector-catalog.mdADR-098 — The connector catalog: MCP for agents, deterministic nodes for workflowsautonomous, redistributable connector catalog; lot P0 is—
docs/adr/098-dsl-versioning-and-authoring-surface.mdADR-098 — DSL versioning, explicit imports, and the authoring surfacesADR-093 (leaf packages), the .bot as a git-native artifact—
docs/adr/099-public-contracts.mdADR-099: Public contracts, bound to the programA bot has a face the outside reads without opening its prompts: what it takes,—
docs/adr/100-dry-run-at-the-executor-seam.mdADR-100: The dry run at the executor seamA .bot that compiles still dies at its first paid run, in ways the compiler—
docs/adr/101-review-request-withdrawal-after-publish.mdADR-101: The App withdraws the review request its own review answeredAsking for a re-review by adding a bot identity as reviewer is a lane the—
docs/adr/102-yaml-author-twin.mdADR-102: The YAML author twin — a draft, never a truthWhat the lot then had to settle is what a .bot.yaml IS to every surface that can meet one: a launcher, a packer, a content hash, the…—
docs/adr/103-run-addressed-by-id-across-teams.mdADR-103: A run is addressed by its id, across the teams you may seeADR-048 made one ACTIVE team per identity the tenancy primitive: the auth middleware stamps it on the request context, and the store…—
docs/adr/104-product-docs-route-table-resolved-once-at-the-run-base.mdADR-104 — The product-docs route table is resolved once, at the run baseWhen a golden-master net is present, the exhaustiveness gate holds theAccepted
docs/adr/105-ci-build-cache-on-the-org-runners.mdADR-105 — CI build cache on the org's runners: cold, measured, and never a shared…(the product's cloud runners — a shared writable RWX cache, off by default;—
docs/adr/106-resume-restores-the-scratch-banked-at-teardown.mdADR-106 — A resume restores the scratch its run banked at teardownNodes keep working state under ${PROJECT_SCRATCH_DIR}: a verify.sh anAccepted
docs/adr/107-seaweedfs-object-store.mdADR-107: SeaweedFS is the object store of the cloud deploymentMinIO no longer distributes its community edition.Accepted
docs/adr/117-server-side-leader-lease-for-idempotent-nets.mdADR-117 — A server-side leader lease for idempotent nets(a server-side sweep "would need its own lease"); 096-board-claim-lease-and-watchdog.md—
docs/adr/118-merge-gate-settle-marks-and-verdict-attribution.mdADR-118 — Merge-gate settle marks, and the verdict attributed at publish time(the sweep's election — this record is what the elected sweep still spends); issue #2002; docs/merge-gate.md—
docs/adr/119-ambient-context-policy.mdADR-119 — ambient_context: what an agent node inherits besides its prompt, declared…operator's personal setup should reach a bot; full backend parity in one—
docs/adr/120-agent-instruction-tree.mdADR-120 — One canonical instruction root, with its size gated(the work-tracking contract the root carries); issue #2071 under epic #1480;—
docs/adr/121-adaptive-routing-policy.mdADR-121: adaptive routing — a multi-level policy that picks the (harness, credential)…Today a run finds its credential through pieces that do not compose.Arbitrated (2026-10-02 — the operator's four decisions…
docs/adr/122-gateway-models-resolved-exactly.mdADR-122 — A gateway's models are resolved exactly: the operator's table, then a…amended for gateway ids only, in two places: its third rejected alternative (an embedded table), and the—
docs/adr/123-run-bundle-dek-in-envelope.mdADR-123: Run bundles seal under a per-run DEK carried in the queue envelopeDate: 2026-10-06.—
docs/adr/124-gating-bot-merge-gestures.mdADR-124 — A gating bot: merge-gate gestures as a declared capability, executed by the…extends the verdict-order authority from commit statuses to the gestures that follow them.—
docs/adr/125-a-lots-contract-is-a-directory-judged-on-what-lands.mdADR-125 — A lot's contract is a directory, judged on what landsThe modernize bot carries one lot of a programme to its exit gate, and writesAccepted
docs/adr/126-accessibility-audits-delegate-the-judgement-to-the-ultra11y-engine.mdADR-126 — Accessibility audits delegate every judgement to the ultra11y engine; iterion…Two accessibility bots shipped in the catalogue, and neither could standAccepted
docs/adr/127-an-agent-nodes-processes-end-with-the-node.mdADR-127 — An agent node's processes end with the node(claude_code and its formatting pass, codex, cliagent and the backendsAccepted · amended 2026-10-21 (see…
docs/adr/128-a-repositorys-suites-run-at-every-lots-gate.mdADR-128 — A repository's suites run at every lot's gateplan_read, the campaign_user prompt; bots/assessment (Assessy) —Accepted
docs/adr/129-per-integration-typed-routing-overrides.mdADR-129 — Per-integration routing: typed node overrides and a provider allowlist ride…them, amended by three adversarial reviews of the first draft, § Objections)Arbitrated (2026-10-12 — the operator chose options 2+3…
docs/adr/130-env-expansion-opt-out-for-tool-bodies.mdADR-130 — env_expansion: a tool body the engine leaves verbatim, and the lint where…A tool node's body gains a property that tells the engine to stand back fromProposed
docs/adr/131-tenant-gateway-credential.mdADR-131 — A tenant's OpenAI-compatible gateway is a credential: base URL + key, sealed…A deployment serves openai_compatible/<gateway model id> from its own environment only: OPENAI_COMPATIBLE_BASE_URL / _API_KEY are…Proposed (2026-10-21 — the plan it records was arbitrated…
docs/adr/132-a-run-reads-no-environment.mdADR-132 — A run reads no environment: every setting it observes is a database level,…shape for review before any code)Proposed (the operator's doctrine, 2026-10-22, is binding…
docs/adr/134-identity-tree-read-separately-credentials-derive-at-the-chokepoint.mdADR-134 — The identity tree is read, never trusted, and credentials derive only where…The org tree was a lie three ways: the auth routes built it from per-document decodes that could half-fail (#2624's class), a revoked…Proposed (2026-10-23; lands with the #1668 PR and is…
docs/adr/135-a-clients-sign-out-is-a-machine-not-a-flag.mdADR-135 — A client's sign-out is a machine, not a flag: OWED until the server confirms,…A browser cannot end its own httpOnly session: "sign out" is a request, and until the server confirms it the session is live.Proposed (2026-10-23; lands with the #1668 PR and is…
docs/adr/136-a-bot-source-write-carries-what-a-whole-read-issued.mdADR-136 — A bot-source write carries what a whole read issued: stored bytes are…The DSL reader carries a read budget (#1690), so a bot past its bounds — or holding one unreadable file — opens as a salvage: a…Proposed (2026-10-23; lands with PR #2712 and is reviewed…
docs/adr/137-local-gate-hermetic-by-default.mdADR-137 — The local gate is hermetic by defaultAn unrelated diff's task check spends the full 1200-second package timeoutProposed (2026-10-24; implementation and review in #2585)
docs/adr/138-forge-provisioning-immutable-identities.mdADR-138: immutable webhook identities and hybrid reconciliationStatus: accepted.—
docs/adr/139-language-stays-go-sidecars-for-the-rest.mdADR-139: iterion stays Go; other languages enter as sidecars behind seamsA proposal reached the operator: with today's coding agents able to write largeAccepted
docs/adr/140-discovery-claims-what-the-bundle-package-claims.mdADR-140: Discovery claims what the bundle package claims, and a nested bundle is nothingDiscovery and the bundle package disagreed about what a directory is.—
docs/adr/141-board-issues-join-the-by-id-class.mdADR-141: Board issues join the by-id class — an issue is served from its teamADR-103 deferred the board to this epic's lane: /api/v1/native/issues/{id} and /api/v1/pipeline-board/tasks/{id} — some 42 routes…—
docs/adr/142-dependency-internalization-doctrine.mdADR-142: dependencies are pruned, fork-patched or kept — never rewritten wholesaleThe operator asked whether today's coding agents make it cheaper toAccepted
docs/adr/143-sandbox-read-back-contract.mdADR-143: A sandbox path the run reads back is declared, served by storage the driver…The runtime hands a container paths to write into — the run-filesAccepted
docs/adr/144-shared-skills-are-bundle-dependencies.mdADR-144: A shared skill is a bundle DEPENDENCY, not a copy — exports.skills declares…The catalogue duplicates skills, and the duplication is now declaredAccepted (2026-10-29) — on the clauses below, each backed…
docs/adr/145-shared-fragments-are-bundle-dependencies.mdADR-145: A shared fragment is a bundle DEPENDENCY, not a copy — exports.fragments…A .bot can already be several files.Accepted (2026-10-29) — on the clauses below, each backed…
docs/adr/146-secret-boundary-v2-grants-and-sinks.mdADR-146: Secret boundary v2 — a secret is granted to a sink, and what crosses a node…Three layers are live and documented in secrets.md:Accepted — the three axes below are decided by the…
docs/adr/147-operator-bound-bot-context-is-a-pinned-source.mdADR-147: Operator-bound bot context is a PINNED SOURCE under a kinded binding — the…The ticket asks for reference material an operator controls, materialisedAccepted (2026-10-29) on the clauses below, each backed by…
docs/adr/148-run-visibility-org-sharing-axis.mdADR-148: run visibility — an org sharing axis, not a second tenancyStatus: accepted (plan reviewed by codex gpt-6-astra xhigh, 9 findings, 2026-10-27)—
docs/adr/149-the-run-logger-redacts-what-it-keeps.mdADR-149: The run logger redacts every record it keeps — one chokepoint, not N sink…A run's log sinks printed the errors of non-crossing producers raw: four sinksAccepted — the operator picked this option on…
docs/adr/150-attachments-reach-cloud-runs.mdADR-150: attachments reach cloud runs — a staging seam on the store, a copy where no…Status: accepted (ARB-111, session-vagues46, 2026-10-29)—
docs/adr/152-the-reliability-invariants-have-owning-layers.mdADR-152: The reliability invariants have owning layers — one invariant, one owning…The close-out of #1006 published the ledger its eight tranches owed.Accepted (2026-11-03), decision 5 amended the same day on…
docs/adr/153-ports-are-a-semantics-the-engine-runs-not-a-declaration.mdADR-153: Ports are a semantics the engine RUNS, not a declaration — the contract…The ticket asks for four reading levels — a workflow's public contract, aAccepted (2026-11-03) — on the clauses below, each read…
docs/adr/154-the-sovereign-pool-boundary-is-a-namespace-and-an-enforced-proxy.mdADR-154: The sovereign pool boundary is the pool's own RBAC, a standing policy and an…A sovereign runner pool isolates a team by CODE: routing, admission,Proposed (2026-11-03) — D27 (the operator) decided the…
docs/adr/155-reserved-capacity-is-a-durable-allocation.mdADR-155: reserved capacity is a durable allocation — one ledger, one atomic acquire, a…Status: accepted — the decisions are taken: the operator decided on 2026-11-03 that the shape stands as written and that a reservation's…—
docs/adr/156-bearer-token-hashing-doctrine.mdADR-156: Bearer tokens at rest — an unsalted SHA-256 digest; HMAC is reserved for…Every long-lived bearer token iterion stores — refresh token, personalAccepted — the operator decided it on 2026-11-03…
docs/adr/157-authentication-events-join-the-audit-log.mdADR-157: Sign-ins join the audit log — platform-scoped refusals, a peppered subject, no…The audit log (pkg/audit) records control-plane mutations — org and teamAccepted — the operator picked this option on 2026-11-03…
docs/adr/158-run-launches-join-the-audit-log.mdADR-158: Run launches join the audit log — one choke point, one row per run, the…A run came to exist through six lanes — POST /api/runs, the operator'sAccepted — the operator picked this option on 2026-11-03…
docs/adr/160-legal-content-is-deployment-configuration.mdADR-160: Legal content is deployment configuration — never the bundle, never the…A public online service in France owes its visitors four texts: a legalAccepted — the operator picked this option on 2026-11-03…
docs/adr/161-one-resolver-decides-the-credential-a-call-spends.mdADR-161 — One resolver decides which credential a call spends; dispatch, admission,…Four readers answer "which credential does this call spend?", each its own way (sites on main; † only on the bench):Accepted — the operator decided it on 2026-11-04: the…
docs/adr/README.mdArchitecture decision recordsOne decision per file, named NNN-kebab-title.md, where NNN is the next—
docs/agents/README.mdAgent instructions — the treeDoctrine specific to this repository: what to know before touching iterion,—
docs/agents/backends/README.mdBackends and execution — the domainWho runs the prompt, with which tools, and what the node keeps of its—
docs/agents/backends/backend-selection.mdBackend selection — the seven wired backendsRead it when a node runs on the wrong backend or you wire a new one.—
docs/agents/backends/facade-substitution.mdFacade substitution — the served model is not the labelRead it when a zai/moonshot route answers with GLM/Kimi under a—
docs/agents/backends/fallbacks-and-parity.mdFallbacks, schema re-ask and system-prompt parityRead it when you write fallbacks:, hit C173/C176, a node acts "dumber"—
docs/agents/backends/gateway.mdThe OpenAI-compatible gatewayServing openai_compatible/<gateway model id> from the deployment's—
docs/agents/backends/metering.mdTrusted meteringdelegate.Result carries harness accounting independently of model JSON:—
docs/agents/backends/plugins-compression.mdPlugins — rewriters, MCP, skills, lifecycle; and compress:Read it when command output is compressed (rtk) or a plugin changes what a—
docs/agents/backends/prompt-engineering-dials.mdCursors, supervisors, ultracodeRead it when authoring cursor: / supervisor: blocks or—
docs/agents/backends/sandbox.mdSandbox — what a node may touchRead it when a SANDBOX_* failure appears or you change what a node may—
docs/agents/bots/README.mdBots — the catalog domainA bot shipped in bots/ is a general-purpose tool.—
docs/agents/bots/bot-authoring.mdAuthoring bots — the four rules a catalog bot must clearA bot shipped in bots/ is a general-purpose tool.—
docs/agents/bots/convergence.mdImprovement loops converge to an asymptoteRead it when writing or reviewing a loop, campaign or reviewer bot — the asymptote rule, the stop criteria, and the shipped examples.—
docs/agents/bots/engine-bot-agnostic.mdThe ENGINE stays bot-agnosticRead it when engine code is about to name a bot or bake one in.—
docs/agents/bots/input-drop-traps.mdThe two traps a dropped input leaves behindDropping a dead field from an LLM node's input (input-reaches-the-model.md holds the remedy table) leaves two…—
docs/agents/bots/input-reaches-the-model.mdA value on an input reaches the model only if a channel of THAT node renders itRead it when adding, dropping or re-referencing a field on an LLM node's input schema or on an edge's with.—
docs/agents/bots/rgaa-audit-run.mdRun the RGAA audit yourself — the demo pathrgaa-audit (Acci) audits a product against the RGAA 4.1.2 standard and—
docs/agents/bots/run-link.mdA forge-facing bot links its runAnything a bot posts outside the deployment — a pull-request body, a review, a—
docs/agents/bots/shipped-workflow-corpus.mdThe shipped-workflow corpusEvery guard that holds this repository's .bot files to something — they—
docs/agents/bots/skills.mdSkills live with their bundleRead it when editing a bundle's skills/ — the mirror into .claude/skills, naming, and the sharing rule.—
docs/agents/bots/taxonomy.mdCategory & tags — the six-verb navigation spineRead it when touching a manifest's category: / tags:, adding a tag—
docs/agents/bots/toolchain-devbox.mdA bot's toolchain is its devbox.jsonRead it when a bot needs a binary the sandbox does not carry.—
docs/agents/bots/universality.mdRepo-agnostic and stack-agnostic — the universality rulesRead it when touching a catalog bot's vars, prompts or scanners; enforced by the catalog tests.—
docs/agents/bots/untrusted-input.mdThe UNTRUSTED INPUT BOUNDARYRead it when a node's prompt can carry repo- or issue-derived text and the node acts: shells out, writes, files issues.—
docs/agents/engine/README.mdEngine — the domainWhich package owns a behaviour, and the invariants each one carries.—
docs/agents/engine/automation-surfaces.mdAutomation surfaces — what launches a run without a human typingThe four trigger families and the spine they converge on: the dispatcher's—
docs/agents/engine/bot-catalog-regeneration.mdWhich runs regenerate the bot catalogueNexie's routing table, <bundle>/skills/iterion-bot-catalog.md, is generated—
docs/agents/engine/dsl-and-runtime.mdDSL and runtime — the compiled graph and how it executesNode types, edge and reference syntax, the workflow-level fields—
docs/agents/engine/dsl-backend-execution.mdDSL, backends and execution — package invariantsOne entry per package, verbatim from the engine map this tree replaces.—
docs/agents/engine/dsl-errors-resume.mdDSL errors, persistence and resumeRead it when a run fails, resumes or rewinds, or a checkpoint looks torn (docs/resume.md carries the operator view).—
docs/agents/engine/dsl-quick-reference.mdDSL quick reference — workflow dials, edges, budgetThe exact syntax of the cross-cutting fields, one line each.—
docs/agents/engine/events-leases-and-schedules.mdEvents, leases, queues and schedules — package invariantsOne entry per package, verbatim from the engine map this tree replaces.—
docs/agents/engine/extensions-and-bot-sources.mdExtensions, skills and bot sources — package invariantsOne entry per package, verbatim from the engine map this tree replaces.—
docs/agents/engine/http-failures.mdHTTP failures and partial identity readsinternal/httpx.WriteError and WriteErrorJSON own public error responses.—
docs/agents/engine/identity-data-lifecycle.mdIdentity data lifecycle — audit of sign-ins and launches, retention, erasureWhat the platform records about a person's account beyond the account row—
docs/agents/engine/run-provenance.mdRun provenance and execution attemptsA run keeps its ID across resumes.—
docs/agents/engine/tenancy-credentials-spend.mdTenancy, credentials and spend — package invariantsOne entry per package, verbatim from the engine map this tree replaces.—
docs/agents/engine/workspace-and-review-scope.mdWorkspace, review scope and sandboxes — package invariantsOne entry per package, verbatim from the engine map this tree replaces.—
docs/agents/engine/worktree-finalization.mdWorktree finalization (worktree: auto)Read it when a run's workspace finalization misbehaves, or you touch finalizeWorktree.—
docs/agents/ops/README.mdOps — the domain——
docs/agents/ops/dependency-surface.mdDependency surface — measure it before arguing about itcutting a dependency — or judging "how much third-party code do we actually—
docs/agents/ops/runbooks.mdOperational runbook index — capture what a session cost you to discoverThe discovery entry point for "how do I configure / operate / debug X on—
docs/agents/ops/security-selfaudit.mdSecurity self-audit — running iterion's own security bots on iterionHow this repo audits itself: the scanner toolchain, the sec sandbox image, the—
docs/agents/orientation/README.mdOrientation — the domainExact questions (where, impact, path) go to iterion map and the committed—
docs/agents/orientation/graphify.mdKnowledge graph — graphifygraphify-out/ holds a queryable knowledge graph of this repository — Go/TS—
docs/agents/testing/README.mdTesting — the domain——
docs/agents/testing/background-oracles.mdBackground sessions — prove the decision before measuring durationThe fake Claude CLI and the engine are separate processes.—
docs/agents/testing/engine-contracts.mdEngine contracts — testing an external CLI against the real pinned binaryfor rgaa-audit today; deepsec for sec-audit-source was the counter-example),—
docs/agents/testing/flakes.mdMachine-dependent tests — annotate, measure, re-checkRecord each machine-dependent failure: test, machine, evidence, disposition—
docs/agents/testing/process-fixtures.mdProcess fixtures — captures, corpus copies and host stateEvidence for the test-author rules, linked from the—
docs/agents/testing/testing.mdTesting patterns — the helpers, and the traps that ejected PRsTesting patterns and failure modes: a git subprocess that outlives its temp dir, a run whose workspace is the—
docs/agents/workflow/README.mdWorkflow — how work reaches mainBoard mechanics live in ../../board-epics.md; the—
docs/agents/workflow/adversarial-review-loop.mdThe local adversarial round — what iterion requires, and who pays for itscoping a round, the seven things the subagent prompt must carry, verifying the—
docs/agents/workflow/billy.mdBilly is paused — the zero-touch fixer lane, and its re-armState and re-arm procedure for this repository.—
docs/agents/workflow/dogfood.mdDogfood discipline — a run the operator cannot watch does not countLaunching a catalog bot against this repo for real: where the run must land so—
docs/agents/workflow/push-to-main.mdPush to main — operator runbookThe operator direct-landing lane—
docs/agents/workflow/release.mdRelease and changelog — how the cut reaches mainFloors, mirrors, refused cuts and the changelog pipeline, for the change that—
docs/agents/workflow/review-and-merge.mdBefore merge — the required loop, and how a change reaches mainEvery change lands through a pull request whose revi/review gate is green.—
docs/agents/workflow/worktrees.mdWorktrees — where an interactive session changes filesWhere an interactive session makes its changes: a dedicated worktree per task,—
docs/architecture.mdArchitectureIterion is organized around one compiled workflow and runtime model with—
docs/assistant-dock.mdThe assistant dockThe studio's assistant is reachable from every authenticated route,—
docs/asymptote-bench.md📈 Asymptote benchmarkiterion bench asymptote measures the inter-session quality stabilisation curve of a workflow: rerun the same task in N independent…—
docs/async-interaction.mdAsync human interaction — ask, keep working, sync laterADR: 081-async-human-interaction—
docs/attachments.mdAttachments — file & image inputsThe attachments: block lets a workflow declare binary inputs (files,—
docs/authoring-lock.mdThe authoring lock — one lock for every writer of a stored bot fileA stored bot file has several writers — the studio, the assistant, the unit—
docs/auto-maintenance.mdAuto-maintenance — wiring a repository so its dependencies update themselvesThe goal: a repository receives its dependency updates, aligns its own code—
docs/backend-capability-registry.mdBackend capability registry — seed and review contractpkg/backend/backendcaps is the declarative leaf shared by compiler and runtime.—
docs/backends.md🤝 Backends and credential auto-detectionA backend is the executor iterion routes a node to — either the in-process—
docs/board-epics.md🗂️ Runbook — the GitHub board's epicsanchor, and a leading emoji slugs differently on GitHub than in VitePress.—
docs/bot-bundle-snapshots.mdCloud bot bundle snapshotsA cloud launch resolved through the server's bot authority freezes one bundle—
docs/bot-invocations.mdBot invocations — how a bot is triggered on a repoA bot's manifest.yaml declares a typed invocations: block: how the bot—
docs/bot-runs/2026-06-23-glm-dogfood-campaign.md2026-06-23 — GLM-5.2 dogfood campaign (Wave 1 + Wave 2 + integration)Cross-bot campaign record.—
docs/bot-runs/2026-06-23-retest-campaign.md2026-06-23 — Catalog re-test campaign + Verified Action deliveryGoal (operator): re-test every catalog bot until each runs reliably on the—
docs/bot-runs/2026-06-24-fleet-dogfood-campaign.mdFleet dogfood campaign — every catalog bot, one night (2026-06-24)Goal: run all catalog bots on iterion itself; each must run to a terminal—
docs/bot-runs/README.mdBot runs — validation & knowledge baseThis directory is the committed knowledge base for iterion's catalog bots.—
docs/bot-runs/adr-cartograph.mdadr-cartograph (Adry) — bilansADR cartographer + completeness auditor.—
docs/bot-runs/adr-rechallenge.mdadr-rechallenge (ReArchi) — bilansHuman-in-the-loop ADR re-challenger.—
docs/bot-runs/app-dev.mdapp-dev (Appy) — dogfood runsNewest first.—
docs/bot-runs/arbitrate.mdThemis — arbitrate run bilansDoctrine-bound judge for the divergence cases a modernisation programme—
docs/bot-runs/bmady.mdbmady (Bmady) — dogfood bilanIndex + template: README.md.—
docs/bot-runs/branch-improve-loop.mdBilly — branch-improvement validationa scratch repository, the in-loop review clean.—
docs/bot-runs/campaign.mdCampy 🧭 — campaign run bilansSupervises a whole modernisation programme by running modernize as a subbot—
docs/bot-runs/copilot.mdCopi — bots/copilotConversational iterion assistant: the DSL, the Cxxx diagnostics, run/resume—
docs/bot-runs/dep-update-guard.mdVetty — dep-update-guard run bilansReactive security + alignment guard for automated dependency-update PRs—
docs/bot-runs/devbox-setup.mddevbox-setup (Devy) — dogfood bilanIndex + template: README.md.—
docs/bot-runs/docs-refresh.mddocs-refresh (Doki) — bilansDocumentation refresh bot (v3: adaptive paradigm).—
docs/bot-runs/e2e-coverage.mde2e-coverage (Endy) — run bilansMatrix-anchored e2e coverage completion bot (ADR-058 v2, sibling of Testy).—
docs/bot-runs/evolve.mdEvoly (evolve) — bot run bilanStrategic / architectural evolution partner.—
docs/bot-runs/feature-dev.mdFeaturly — feature-dev run bilansevery LLM node of the graph exercised but the peer review (off by var).—
docs/bot-runs/feature-gap-fill.mdfeature-gap-fill (Fini) — bilansGap-driven feature completer.—
docs/bot-runs/feed-watch.mdfeed-watch (Vigie) — run logNewest first.—
docs/bot-runs/golden-master.mdgolden-master (Goldy) — dogfood bilanIndex + template: README.md.—
docs/bot-runs/instrument.mdinstrument (Obsy) — run bilansNewest first.—
docs/bot-runs/issue-triage.mdissue-triage — TriagySingle-shot card router: fired by the trigger spine on triage:auto—
docs/bot-runs/keepalive.mdBilans — always-on (overlap: keepalive) + examples/keepaliveThe keepalive/always-on scheduling feature and its demo bot—
docs/bot-runs/modernize.mdMorphy 🧱 — modernize run bilansCarries a repository through a programme of modernisation lots — steps whose—
docs/bot-runs/product-docs.mdproduct-docs (Prody) — run bilansFunctional, business-audience product documentation generated and maintained—
docs/bot-runs/revi-converse.mdrevi-converse — run bilansNewest first.—
docs/bot-runs/review-env.mdEnvy — review-env run bilansDeploys the current commit's already-published image to the attached platform—
docs/bot-runs/review-pr.mdRevi — review-pr run bilansRead-only code reviewer.—
docs/bot-runs/rgaa-audit.mdAcci — rgaa-audit run bilansAccessibility auditor (read-only) on the pinned ultra11y engine since v3—
docs/bot-runs/sec-audit-deps.mdDepsy — sec-audit-deps run bilansUniversal supply-chain / SCA auditor: enumerates installed deps per ecosystem,—
docs/bot-runs/sec-audit-source.mdSeki + deepsec — validationrepository: three candidates triaged, a full pool of three voters, a clean—
docs/bot-runs/secured-renovacy.mdsecured-renovacy (Renovacy) — dogfood bilanIndex + template: README.md.—
docs/bot-runs/supply-shield-cve.mdsupply-shield-cve (Vulny) — run bilansNewest first.—
docs/bot-runs/supply-shield.mdsupply-shield (Shieldy) — run bilansNewest first.—
docs/bot-runs/test-coverage.mdtest-coverage (Testy) — run bilansUniversal test-coverage augmentation bot (ADR-058 v2).—
docs/bot-runs/vuln-watch.mdvuln-watch (Senti) — run loga model receives; the run on a bare scratch refused at plan.—
docs/bot-runs/whats-next.mdNexie — whats-next run bilansConversational co-CTO (v3: ONE agent in a chat loop — board intelligence,—
docs/bot-runs/whole-improve-loop.mdWilly — whole-improve-loop run bilansWhole-repository improvement loop (ADR-058 v2).—
docs/bot-runs/wiki-gen.mdwiki-gen (Wikky) — run bilansWikky generates and incrementally maintains a navigable, Open-Knowledge-Format—
docs/brand.mdBrand — the iterion-bot mascot, everywhere iterion shows a faceThe mascot on the official iterion-bot—
docs/browser-pane.mdBrowser paneThe run console's Browser tab renders web content tied to a workflow—
docs/browser-security.mdBrowser security posture — CORS, CSRF, cookies, CSPWhat protects the studio from the browser side: which cross-origin requests—
docs/bundles.mdBundles — .botz packaged workflowsA bundle is a deterministic ZIP archive that ships a workflow—
docs/byok.mdBYOK API keys (cloud) — per-org, per-user, per-webhookHow iterion-cloud resolves the LLM provider API keys a run uses.—
docs/c082-board-emit-fix-plan.mdC082 board-emit fix — implementation planStatus: **RESOLVED + live-validated end-to-end (2026-06-14), cloud half—
docs/changelog.md———
docs/changelog/v0.mdChangelog — v0.xArchived releases.—
docs/changelog/v1.mdChangelog — v1.xArchived releases.—
docs/changelog/v2.mdChangelog — v2.xArchived releases.—
docs/ci-performance-buildkit-operator.mdCI performance — buildkit-operator migration (measured)Evidence file for the image.yml migration to—
docs/ci-pipeline-topology.mdCI image pipeline — topologyThe image workflows are split so that **each deployable artifact's workflow—
docs/cli-permission-seam-spike.mdSpike — the permission seam on the grok and kimi CLI backendsgrok and kimi the permission seam pi already has (C176 locks CLI forfaits out of—
docs/cli-reference.mdCLI referenceThis page maps every public top-level command in the current binary and documents the common operational flags.—
docs/cloud-admin-guide.mdIterion Cloud admin runbookmultiple teams and the org admin who manages their team inside it.—
docs/cloud-admin.mdIterion cloud — operator guideThis guide covers everything you need to run an iterion cloud—
docs/cloud-architecture.mdCloud architecturemulti-tenant platform — to debug a stuck run, design an integration,—
docs/cloud-backup.mdCloud — Backup & Restore (Mongo + Blob)This runbook covers the durable state iterion owns in cloud-mode:—
docs/cloud-cli.mdCloud CLI — iterion remoteiterion remote turns the local CLI into a full client for a remote—
docs/cloud-deployment.mdCloud deploymentThis document is the operator runbook for the cloud-mode topology—
docs/cloud-llm-credentials.mdCloud LLM credentials — provisioning a cloud run's model accessHow a cloud run (queue → runner pod) gets its LLM credential, and how to—
docs/cloud-overview.md☁️ Iterion Cloud — the multi-tenant control plane for AI agentsplatform engineer about to helm install, a tech-lead choosing between—
docs/cloud-public-exposure-checklist.mdCloud — public exposure checklistThis page is a pre-flight checklist for opening an iterion deployment to traffic outside your private network (i.e., putting it behind…—
docs/cloud-queue-schema-rollout.mdQueue schema rollout runbookHow to ship a queue.RunMessage schema bump (pkg/queue/types.go,—
docs/cloud-rest-api-generated.mdCloud REST API — generated inventoryThe freshness and two-way gates of pkg/server/docs_rest_inventory_test.go fail on drift.—
docs/cloud-rest-api.mdCloud REST API referenceSDK author, an operator writing curl runbooks.—
docs/cloud-troubleshooting.mdCloud troubleshootingSymptoms-first reference for operators running iterion in cloud mode (Helm chart, docker-compose, or any setup using Mongo + NATS +…—
docs/cloud-user.mdIterion cloud — user guideYou signed up for an iterion workspace (or got an invite).—
docs/cloud.mdCloud ModeCloud mode runs iterion as a multi-tenant control plane for AI agents — the—
docs/comparisons/assets/logos/README.mdLogo and icon provenanceOriginal assets retrieved on September 11, 2026, stored locally without graphical modification.—
docs/comparisons/feature-inventory.md🧭 Iterion feature inventorySeptember 11, 2026 · Capabilities, use cases and limitations of the reviewed version.—
docs/comparisons/feature-matrix.md🧭 Iterion and alternatives — feature matrixDocumentation reviewed on September 11, 2026.—
docs/comparisons/index.md🧭 Iterion and alternatives: choose your agent workflow architectureUpdated September 11, 2026.—
docs/comparisons/methodology.md🔎 Comparison methodology and sourcesSeptember 11, 2026 — companion to the feature matrix.—
docs/config-share.mdScoped config-share editorThe config-share editor lets an operator hand a non-operator a bookmarkable—
docs/connector-identities.mdConnector identities across regenerationiterion connectors gen maintains identity.lock.yaml beside connector.yaml.—
docs/credential-pool.mdCredential pool — mutualising contributors' unused LLM capacityHow developers lend spare LLM capacity to an iterion deployment — a Claude—
docs/current-bot-models.mdCatalog model defaults and deploymentAs of September 2026, catalog Anthropic routes default to claude-opus-5-5.—
docs/current-state.mdCurrent state of Iterion_A living, as-built snapshot maintained against main — the page footer shows—
docs/cursors.mdPrompt-engineering cursorsCursors are framing dials, not gates. They adjust the tone and—
docs/delegation.mdDelegationIterion can mix lightweight in-process calls and full coding-agent CLIs in one—
docs/desktop-architecture.mdIterion Desktop — ArchitectureThe desktop build is a thin native shell wrapped around the existing—
docs/desktop-build.mdBuilding the Iterion Desktop appIterion ships an optional desktop wrapper built with Wails v2.—
docs/desktop-distribution.mdIterion Desktop — DistributionPushing a v* tag triggers two GitHub Actions workflows in parallel:—
docs/desktop-qa-checklist.mdDesktop — release QA matrixThis is the per-platform sign-off sheet the team walks before tagging a desktop release.—
docs/desktop-qa.mdIterion Desktop — QA ChecklistWalk this list before tagging a release.—
docs/desktop-release-checklist.mdDesktop — release checklistWalk this checklist before pushing a desktop-v* (or v* if CLI + desktop release together) tag.—
docs/desktop.mdDesktop AppA native desktop build (Wails v2) wraps the visual editor in its own window with multi-project switching, OS-keychain credential storage,…—
docs/development.mdDevelopmentThis page is for contributors to Iterion itself.—
docs/diagrams/README.mdDiagramsEntity-relationship models of the MongoDB data and the access-control matrix, drawn from the code.—
docs/diagrams/access-control.mdAccess control — who may do whatThis page maps who may do what: the principals a credential resolves to, the gates that admit or refuse them, and the standing in a team or…—
docs/diagrams/data-model-automation.mdData model — automation surfacesThe trigger spine that turns a board event into a bot launch, the two surfaces that fire a bot on a clock, and five things a multi-replica…—
docs/diagrams/data-model-credentials.mdData model — credentials, metering and routing policySeventeen Mongo collections hold what funds a run: a credential sealed at rest, the connector alias a workflow addresses it by, the bundle…—
docs/diagrams/data-model-forge-bots.mdData model — forges, repositories and botsEnabling a bot on a repository binds it in two documents — the webhook config that enforces the binding first, the integration row that…—
docs/diagrams/data-model-identity.mdData model — identity and tenancyA team id is the tenant of almost every resource an iterion deployment stores, a team belongs to at most one org, and the credentials a…—
docs/diagrams/data-model-knowledge.mdData model — memory, config shares and notificationsThree slices of a tenant's own content: the knowledge spaces bots and people share, the scoped config-edit grants a non-operator holds, and…—
docs/diagrams/data-model-runs.mdData model — runs and their satellitesA run is one execution; this page draws its per-run streams, its tree, the collections its launch and its outcome bind it to, and its…—
docs/diagrams/erd-complete.mdThe complete ERD — every collection, one diagramThe whole Mongo data model in a single entity-relationship diagram: every collection plus the marked non-Mongo participants, and every…—
docs/diagrams/flow-assistant-dock-session-board.mdFlow — the assistant dock, run watches and the session boardThree assistant surfaces meet at one seam: a bot's chat manifest declares a human pause with two doors, one for the operator's typed text…—
docs/diagrams/flow-auth-login.mdFlow — signing in and authenticating a requestSix families of credential reach the iterion cloud API, and each one either converges on the single function that mints a session or on the…—
docs/diagrams/flow-board-dispatcher.mdBoard dispatchA board card becomes a run when one dispatcher tick walks it through a gauntlet of guards, claims it under a fenced lease, hands its bot to…—
docs/diagrams/flow-bot-resolution-overrides.mdBot resolution — team row, platform override, baked catalogEvery site that turns a bot id into launchable source walks three tiers in one order — the launching team's own stored bundle, then the…—
docs/diagrams/flow-bot-to-running-graph.mdFrom a .bot to a running graphA .bot file, a .botz bundle or a bundle directory becomes a running graph through one compile path and one engine, whichever door…—
docs/diagrams/flow-cloud-run-lifecycle.mdCloud run lifecycleA cloud run is admitted once by the server, persisted as a queued document before anything is published, carried to a runner pod as a…—
docs/diagrams/flow-config-share.mdFlow — config-share: the mint, the two access paths, the fail-closed writeA config-share is one grant that lets a non-operator edit a declared allow-list of fields in one JSON file of one repository — through a…—
docs/diagrams/flow-credential-resolution.mdCredential resolution — which credential funds a cloud runEvery cloud launch and every resume walks the same seven tiers to decide which LLM credential funds the run, then seals what it found under…—
docs/diagrams/flow-forge-connect-enable-bot.mdFlow — connect a forge, enable a bot on a repositoryConnecting a forge seals one credential for a team, and enabling bots on a repository derives a managed token from that credential, then…—
docs/diagrams/flow-memory-knowledge.mdFlow — memory and knowledge: four writers, one seam, two adaptersA memory space is a quota-governed tree of Markdown documents addressed by a visibility and the qualifiers that visibility needs, and the…—
docs/diagrams/flow-notifications-callbacks.mdFlow — notifications and callbacks: one outcome event, three outbound familiesA run that pauses or terminates publishes one outcome event, and three independent outbound families read it — a browser push to the…—
docs/diagrams/flow-org-team-lifecycle.mdFlow — org and team lifecycle: suspend, soft-delete, purgeAn org and the teams under it share one status field written by different callers, and only an org can be scheduled for deletion and then…—
docs/diagrams/flow-pause-resume-rewind.mdPause, resume and rewindA run parks durably when a question needs a person or an operator stops it, comes back through a ladder of refusals whose surface verdicts…—
docs/diagrams/flow-revi-review-merge-gate.mdThe revi/review merge gateA reviewer bot's findings are advice; what blocks a merge is a deterministic commit status on the pull request head, written by six writers…—
docs/diagrams/flow-sandbox-isolation.mdFlow — sandbox isolationA four-tier precedence picks one of four sandbox modes, a host-kind factory picks a driver, and then the mode alone decides what an absent…—
docs/diagrams/flow-secrets-sealed-bundle.mdFlow — the sealed credentials bundleA cloud run's credentials travel in two halves that never share a channel: the sealed bundle waits in Mongo under a random ref, and the…—
docs/diagrams/flow-triggers-and-schedules.mdFlow — triggers and schedules: five sources, two deliveries, three clocksA stored binding becomes a run when an event matches it or its clock comes due, through one matching prelude, one of two deliveries, and…—
docs/diagrams/flow-webhook-to-run.mdFlow — webhook-to-run: the admission gates, every refusal, and the one chokepointAn inbound forge or CI delivery becomes a run by crossing an authenticating middleware, a provider handler's ordered refusals and one…—
docs/dispatcher.mditerion dispatch — long-running dispatcherThe dispatcher turns iterion from a one-shot iterion run into a—
docs/dsl-totality-and-tc.mdDSL totality, Turing-completeness, and the static-predictability surfaceThis page is the canonical answer to two questions that sound opposed but are—
docs/dsl-whats-new.mdWhat's new in the .bot DSL — the authoring-first programme (2026-09)Between v3.128.0 and v3.154.0 the DSL, its tooling and its documentation were—
docs/dsl.md🧩 The .bot DSLSource files end in .bot; deterministic bundles end in .botz.—
docs/e2e-coverage-matrix.mdE2E coverage matrixThe single feature×coverage inventory for iterion.—
docs/e2e-stabilisation-plan.mdE2E stabilisation plan — per surfacerecorded below with the decision that settles each; the order is fixed and—
docs/e2e_coverage.mdE2E coverage matrixWhere each iterion + claw-code-go feature is exercised.—
docs/environment-variables.mdEnvironment variablesOperational ITERION_* environment variables read directly by the engine—
docs/examples.md🤖 Bots and examplesIterion ships a maintained fleet of production bots — a co-CTO, a feature—
docs/forge-conversations.mdForge conversations — replying to the bot (forge threads → run → in-thread reply)How an authorized forge user "talks back" to a bot (reply to its review,—
docs/forge-integrations.mdForge integrations (connect a repo, auto-provision)bot (e.g.—
docs/forge-permissions.mdForge permissions & identity — who a bot acts asThis is the model people most often get wrong: **the iterion user who launches—
docs/forge-security-read.mdForge security-read — org-wide Dependabot alerts for botsThe security-read flow gives a bot read access to a GitHub org's—
docs/getting-started.mdGet started with Iterion Cloud in one promptPaste one prompt into your AI coding agent and it installs Iterion, connects it to iterion.cloud, and verifies readiness to deploy.—
docs/github-board-sync.mdGitHub project board ↔ native board syncMaking a GitHub Projects v2 board (the roadmap humans read) and iterion's—
docs/gitops-warden-rollout.mdgitops-warden — binding, calibrating, and flipping a repo to enforceThe runbook for gitops-warden—
docs/grammar/V1_SCOPE.mdCurrent scope of the V1 grammar and ASTThe filename and grammar version remain V1 for compatibility: Iterion has—
docs/groups-iteration-subbots.mdReuse & iteration: groups, foreach, subbotsThis page documents the composition + iteration constructs added on top of the—
docs/human-in-the-loop.mdHuman in the loopMost iterion nodes run unattended.—
docs/import.mditerion import — workflow scripts (.js) → draft .botiterion import converts a Claude-Code workflow script—
docs/improvement-ratchet.mdThe ratchetopen.—
docs/index.md—The cloud onboarding, ready to paste: give the whole block below to a fresh—
docs/install.md🖥️ InstallOne Go core, delivered wherever you work — a scriptable CLI, a visual studio, a—
docs/layering.mdThe layer map — package layers as an executable guardThe package layers are pinned by a test, not by prose:—
docs/legal-templates/README.mdLegal page templatesThe four markdown templates an operator fills in — with their DPO and—
docs/legal-templates/accessibilite.mdÉtat de conformitéà l'article 47 de la loi n° 2005-102 du 11 février 2005.—
docs/legal-templates/cgu.mdObjetLes présentes conditions générales d'utilisation (CGU) encadrent l'accès—
docs/legal-templates/confidentialite.mdResponsable du traitementLe responsable du traitement des données à caractère personnel collectées—
docs/legal-templates/mentions-legales.mdÉditeurLe service <nom du service, p.—
docs/live-e2e-coverage.mdLive e2e coverage + quality/value snapshotsiterion ships an optional, real-LLM end-to-end layer that exercises—
docs/mcp-server.mdThe iterion MCP server — iterion mcpiterion mcp serves the operator-facing MCP server on stdio: any—
docs/memory-and-knowledge.mdMemory and knowledge spacesmemory_write / memory_list), org admins enforcing a quota on—
docs/merge-gate.mdMerge gate — Revi arbitrates, determinism disposesRevi (bots/review-pr) can post a deterministic merge-gate status on a—
docs/merge-policy.mdMerge policy — main is protected by a merge queuemain is guarded by a GitHub merge queue (ruleset "main protected — merge—
docs/models.md🧠 The model registry, and choosing which model runsTwo questions this answers, both of which used to have no answer at all:—
docs/native-tracker.mdNative kanban trackerIterion ships with a first-class issue tracker — no Linear, no GitHub—
docs/notifications.mdUser notifications (web push)Iterion cloud can notify a user through the browser when one of their—
docs/oauth-forfait.mdOAuth forfait (consumer subscription) for cloud runsIterion can drive bot runs on a consumer subscription — a Claude—
docs/observability.mdObservability — logs, error tracking and tracingiterion's observability layers answer different questions:—
docs/observability/README.mdIterion observability stackA self-contained docker-compose stack that gives you Grafana dashboards—
docs/outbound-callbacks.mdOutbound run-completion callbacksA run-completion callback lets an external integration trigger an—
docs/outcome-router.mdThe outcome router — ITERION_OUTCOME_ROUTERThe instance-side answer to "a run produced work and nobody routed it": a—
docs/permissions.mdTool-permission gate (anti-prompt-injection)iterion's permission gate restores Claude Code's default **"ask before—
docs/persisted-formats.mdPersisted formats — V1 referenceThis page describes the filesystem run store.—
docs/philosophy.mdPhilosophyexplains how we decide when a design question is open — the stance the—
docs/platform-bots.mdPlatform bot overrides — DB-backed bots, no rolloutThe bot catalog (bots/) is baked into the server and runner images, so—
docs/plugins.mdPluginsIterion's plugin ecosystem lets you extend the runtime with **declarative,—
docs/post-mortem-shell.mdPost-mortem shellOpen an interactive shell inside a run's preserved worktree, from—
docs/privacy_filter.mdPrivacy FilterIterion ships two complementary built-in tools that detect and redact—
docs/probes-and-graceful-shutdown.mdProbes and graceful shutdownHow a k8s deployment of iterion answers is this pod alive, *should it—
docs/quickstart.md🚀 QuickstartFor developers who already live in AI coding tools.—
docs/quotas-and-limits.mdQuotas and limitsset on a paying org, or debugging "why did this run get denied".—
docs/recipes.mdRecipesA recipe pins one .bot to a named configuration — preset vars, prompt overrides, a budget, and a success metric — so you can…—
docs/references-bootstrap.mdReferences bootstrap — deepsec + harness clonesSeki's external-security-tools skill uses a local references directory—
docs/references/author-schema.mdThe author document — keys and valuesAn author document (x.bot.yaml) is the YAML twin a .bot can be written as: the same declarations under the same names, with YAML's own…—
docs/references/context-retrieval-state-of-the-art.mdContext retrieval — the state of the art, mapped onto iterionor an embedding store — for the agents that work on this repository, or—
docs/references/diagnostics.mdIterion DSL — Validation DiagnosticsAll diagnostic codes emitted during compilation (ir.Compile) and validation (ir.Validate), plus the bundle-consistency codes (C2xx)…—
docs/references/dsl-authoring-probe.mdThe authoring probe — measuring "right the first time"The programme behind the DSL registry, the skill and the template gallery—
docs/references/dsl-grammar.mdIterion .bot grammar referenceThis is the readable inventory of the syntax accepted by the current parser.—
docs/references/dsl-properties.mdIterion .bot property referenceThe same iterion dsl spec --write command generates Monaco's lexical—
docs/references/external-methodologies.mdExternal Methodologies Cross-Check — IACDM & AI-DLC 2026Two independent 2026 methodology papers mapped onto iterion's mechanisms:—
docs/references/map-bots.mdBot and skill mapRun task map:gen and commit; task map:check fails on drift.—
docs/references/map-docs.mdDocs and ADR mapRun task map:gen and commit; task map:check fails on drift.—
docs/references/map-packages.mdPackage mapRun task map:gen and commit; task map:check fails on drift.—
docs/references/patterns.mdIterion DSL — Common Workflow PatternsReusable patterns for building .bot workflows.—
docs/references/productive-session-patterns.mdProductive-Session PatternsWhat a productive human-driven agent session actually looks like — measured,—
docs/references/workspace-service.mdShared local workspace serviceLocal development uses one per-user service, iterion-workspace.service, for—
docs/repo-map-and-graph.mdThe repository map and graphthis tree, and a bot author who wants a workflow to orient itself without—
docs/repo-scope.mdRepo-first studio — the repository scopeCloud-mode studio reads Org → Repo: below the organization switcher,—
docs/resume.md⏯️ Resume paused, failed, and cancelled runsA run in iterion is durable: it can pause for a human, fail, or be cancelled,—
docs/revi-billy-loop.mdRevi → Billy on this repo — PAUSED, and how to run a deliberate passWhen Revi (bots/review-pr) reviews a pull request of this repository and—
docs/revi-rollout.mdRevi on GitHub — App binding and rollout runbookBind review-pr (Revi) to one GitHub repository through a team GitHub App—
docs/review-merge-gate.mdReview-&-merge gate (interaction: review)A review-&-merge gate is a human node that walks the operator through—
docs/review-scope.md🔍 What a review gate showsA human gate approves work.—
docs/reviews/codebase-2026-05-17.mdIterion codebase review — 2026-05-17Author: deep review pass on main at commit baa68ab8.—
docs/reviews/impl-provenance.mdimpl-provenance — delivery evidenceWorktree run-provenance, branch leap/run-provenance.—
docs/reviews/reliability-audit-2026-08-31.mdReliability audit 2026-08-31 — traceability matrixSource: full-repo reliability inventory (docs + dogfood bilans + code) verified item-by-item—
docs/routers.mdRoutersRouters are the branch points of the graph — the difference between a linear script and a real workflow.—
docs/sandbox.md🛡️ iterion sandboxThe sandbox is the boundary that makes autonomous agents safe to run: every—
docs/scheduling.mdScheduling recurring bot runs (iterion schedule)Some bots are meant to run on a clock, not on demand — a weekly—
docs/secrets-reference.mdSecrets referenceown account, the team, a bot binding) and operators reviewing the—
docs/secrets.mdSecrets protectionIterion runs agents that can be prompt-injected (the sec-audit bots read—
docs/security-bots-distributed.mdDistributed security scans — design (Cap.sec-audit-source V1 is single-process: one iterion run reads every—
docs/security-bots.mdSecurity bots — sec-audit-source (Seki) + sec-audit-deps (Depsy)This page covers the two manual audit bundles — CLI-launched,—
docs/security-patcher.mdSeki — verification-ladder remediation (security-patcher)Seki's remediation phase turns each confirmed finding into a verified—
docs/security/forge-cloud-audit-2026-07-01.mdForge / cloud security audit — least-privilege (2026-07-01)(GitHub first), the OAuth-app store, repo provisioning, and the credentials—
docs/sentry-feedback-loop.mdSentry feedback loop — reading production errors back into developmentserver/runner/dispatcher send to Sentry (panics, fatal exits, error logs, run—
docs/session-board.mdSession board (per-run Tasks tab)The Session board is a per-run view in the studio run console — the—
docs/settings-precedence.mdSettings precedence & provenanceFive launch-relevant knobs share the same five-level precedence chain,—
docs/skill.mdAI Agent SkillsIterion ships two Agent Skills, compatible with Claude Code, Codex, Cursor, Windsurf, GitHub Copilot, Cline, Aider, and other AI coding…—
docs/skills-library.mdSkill libraryThe skill library is a curated, standalone collection of Claude-Code-style—
docs/sovereign-pools.mdSovereign runner poolsA team whose code must never reach a public LLM vendor runs on a **sovereign—
docs/stall-human-waits.mdHuman waits and stall detectionThe dispatcher and runview alert manager both consult—
docs/state-of-the-art.mdState of the art — how proven is each surfacebackends.md and board-epics.md, and a leading emoji slugs differently on—
docs/studio-ux-audit-2026-07.mdStudio UX coherence audit — 2026-07Snapshot of the systematic UX audit run against the studio (cloud-first—
docs/supervisors.mdSupervisor agentsA supervisor is an LLM agent that watches another running agent and—
docs/test-capability-ledger.mdTest capability ledgerGenerate the skip and sleep census from the working tree, without running tests—
docs/test-process-cleanup.mdTest helpers end with their testIssue #956 exposed a sentinel loop in the dispatcher subbot lock fixture:—
docs/test-waits.mdWaiting for engine state in testsIssue #930 separates the condition a test asserts from how quickly its host can—
docs/thinking-metrics.mdThinking (reasoning) metricsIterion surfaces two per-node extended-thinking metrics for LLM nodes:—
docs/ticket-context.mdTicket conformance — plugging tracker tickets into a reviewRevi (bots/review-pr ≥ 0.6.0) can verify that a PR actually delivers—
docs/tool-name-aliases.mdClaw tool-name aliasesClaw accepts the exact spellings Read, Bash, and Grep as read_file, bash,—
docs/ultracode.mdUltracodereasoning_effort: ultracode is the highest setting on the effort dial.—
docs/upstream/claude-code-positional-args-2-1-220.md$1–$9 in project commands resolve one position early — draft upstream report, not…Measured evidence for iterion issue #1713 across Claude Code 2.1.220 and 2.1.282: the CLI substitutes $N zero-based and did not change,…—
docs/url-layout.mdURL layout — what answers at the root, and what lives under /studioA deployment serves two things from one origin: the product home and the—
docs/usage-caps.mdUsage caps — stop below the provider's wallAn LLM subscription ("forfait") meters two rolling windows, five hours and—
docs/visual-editor.mdVisual Editor (web)Iterion includes a browser-based visual workflow editor built with React and XYFlow.—
docs/web-search.mdWeb search & fetchHow agents discover and read the web in iterion.—
docs/webhooks.mdInbound webhooksand operators reviewing the auth + rate-limit + audit story before—
docs/webhooks/retry.mdWebhook receipts and launch retriesA claimed inbound delivery answers 202 with—
docs/why-iterion.mdWhy Iterion?Organisations are about to run fleets of AI agents — reviewing code, shipping—
docs/why-not-prompt-orchestration.mdWhy not just prompt-orchestration?A recurring question when someone first sees Iterion is: *"why a DSL? Can't I get the same thing with a single Claude Code session that…—
docs/workflow-reliability-1006.mdWorkflow reliability rollout (#1006)This document is the compatibility ledger for the reliability work.—
docs/workflow_authoring_pitfalls.mdWorkflow Authoring PitfallsHard-won lessons for authoring .bot workflows where LLM agents do real work—
docs/workspace-versioning.md🗂️ Workspace versioningA node's real work is often not in its output.—
docs/worktree-pool.mdThe worktree pool and its boundA worktree: auto run executes in a fresh git worktree under—