Home / Projects / Orchestrata Ultimate / Decisions / ADR index / ADR-0118

ADR-0118: Tier-1 host-side scripts transfer to codetools in two batches; review and RTM lane merges wait for their own rulings

field value
Status Accepted — Accepted (ruling, Mohamed, 2026-10-20, verbatim: "great, why not run workers to do that now" — approving the coordinator's transfer-audit recommendation cut)
Date 2026-10-20
Register factory (docs/adr, 4-digit ids)
Source docs/adr/0118-tier-1-host-side-scripts-transfer-to-codetools-in-two-batches.md — permalink at 269ef3177 (unchanged on master since that commit)
Wiki register entry ADR-0118 (wiki status: Accepted)

← ADR-0117 · ADR-0119 →

The record

Status: Accepted (ruling, Mohamed, 2026-10-20, verbatim: "great, why not run workers to do that now" — approving the coordinator's transfer-audit recommendation cut) · Date: 2026-10-20

Context

The transfer audit (2026-10-20, session work log; 182 scripts/*.py scored by coupling = orchestrata_ultimate import refs × repo-path refs, checked against codetools' 24 lanes and both deployed bins) found: a backcompat bridge ALREADY exposes this repo's review/diagram verbs cross-project (/opt/codetools/bin/orchestrata-{test-review,review,diagram,discover} → src/orchestrata_tools/backcompat/, deployed release 6b4babfeaac2e008); codetools.rtm and codetools.testing are RICHER siblings of this repo's RTM-evidence and runner machinery (adoption questions, not transfer questions); and a Tier-1 set of scripts with ≈zero coupling whose mechanisms are project-independent.

Consumer surfaces measured for the first two moves (imports, subprocess calls, user-level hooks per RUL-035, gates battery, pyproject): zero hard consumers — pyright_autofix.py/pyright_ratchet.py are referenced only as docstring lineage ("mirrors pyright_ratchet.py's shape": gates.py:312, coverage_ratchet.py, check_graph_write_swallow.py, check_spec_authority.py) and rename_engine.py only in an affected_tests.py:700 comment table. Both moves carry 6 + 13 test modules respectively. codetools' review/ lane is DIRTY with an active REV-3 workstream — transfers avoid it.

ADR-0117 (same day) set the move template: byte-faithful, green-proof both sides, recorded disposition, spec bookkeeping travels with the code, seam only on concrete consumption.

Decision (Mohamed, verbatim: "great, why not run workers to do that now")

  1. MOVE-109 dispatches now (ADR-0117's packet): SPEC-109 engine + CLI + 13 test modules + spec bookkeeping → codetools refactor lane. The pre-move oracle is the M5 sanctioned green proof (run_tests.py tests/refactor/rename/ --skip-gates), recorded by the coordinator this turn. The volk-tool shell (refactor/rename/tool.py) is NOT moved — zero consumers, its registration was deferred by SPEC-109 §5 and superseded by ADR-0117's seam-on-consumption rule; it is deleted with a recorded disposition.
  2. Batch 1 dispatches now: pyright_autofix.py + pyright_ratchet.py + their 6 test modules and helper → codetools refactor lane (the pyright family groups with the rename engine; the review lane is avoided while REV-3 is in flight).
  3. Batch 2 packetizes after an audit panel (cross-vendor, analysis-only) maps per-script consumers + landing lanes for the remaining Tier-1 set: FT build recipes ×4, provision_worktree_env.py + worktrees.py, rts.py (CONDITIONED: the P-RUL040 consumer contract must survive the move), slot_lease.py, secrets_cli.py, ask_openrouter.py, serialize_js_ts_ast.py, doc_lint.py, check_infra_drift.py, flake_report.py, scan_imperative_accumulators.py, check_incus_not_docker.py (mechanism vs doctrine-pack split named in-packet).
  4. Phase discipline (both repos, all transfers): workers land NEW FILES only in codetools — no edits to codetools pyproject.toml/uv.lock/shared lane __init__.py/console scripts/ deploy; that integration is ONE serialized coordinator step after the workers' parity proofs. Orchestrata-side deletion of the originals + doc-reference updates happen in the same packet, AFTER both-side greens, as a recorded disposition. No git add -A; explicit file lists.
  5. Tier 2 stays HELD for per-lane rulings: the review trio (test-review/code-review/backcompat bridge vs codetools.review) merges only after T21 lands; the RTM family is an ADOPTION design of codetools.rtm, not a transfer; check_adr_graph_sync.py → graph lane and the deployed-from-here family (observe_pytest, swarm_supervisor, ship, ast_daemon, ast_live_sync) → one-deploy-lane question each get their own ruling. Tier 3 stays as ruled (ADR-0108 KB family, suite/gate machinery, fleet/env, KG writers, codemod.py per ADR-0117 §6).

Alternatives rejected

Consequences

Provenance

Mohamed's in-session ruling, 2026-10-20, verbatim "great, why not run workers to do that now", on the coordinator's transfer-audit report (three tiers, one recommendation: batch 1 rides MOVE-109, batch 2 packetizes behind an audit, Tier 2 waits). Audit measurements: session work log 2026-10-20 ("Transfer-candidate audit of scripts/ (182 files)..."); consumer scans (grep across scripts/, hooks incl. user-level, pyproject, gates); codetools lane listings; deployed-bin provenance (/opt/codetools/bin/orchestrata-test-review → orchestrata_tools.backcompat.test_review:main, release 6b4babfeaac2e008). Template: ADR-0117. Design: plans/refactor-convergence-design.md.

Rulings cited

Specs cited