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) |
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")
- 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. - 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). - 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). - 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. Nogit add -A; explicit file lists. - 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.pyper ADR-0117 §6).
Alternatives rejected
- Bulk transfer of all Tier 1 in one packet: per-script consumer surfaces unmeasured for 12 of 14; a script a gate or hook calls cannot vanish (RUL-023 inverted) — batch after measurement.
- Backcompat-shim-only (no source move): the bridge pattern leaves source home split across repos with wrapper debt on both sides — it is a consumption layer, not a location ruling.
- Wait for cut-over: rejected by ADR-0117 for the engine; the same pressure argument applies to the rest of Tier 1.
Consequences
- Two move workers (MOVE-109, Batch 1) + one cross-vendor audit panel (Batch 2 mapping) dispatch
this session; the coordinator owns the serialized codetools integration step (pyproject/console
scripts/
/opt/codetools/bindeploy) and both repos' commits. - codetools' refactor lane gains the pyright family (rename engine + autofix/ratchet); its pyproject gains console scripts at integration time.
- Orchestrata's
scripts/shrinks by 3 tools + 19 test modules; docstring lineage references in the four ratchet-shaped gates update to the new home;docs/CODEBASE_MAP*staleness is recorded for the map's next regeneration (those files are another workstream's dirt — not touched). specs/109-rename-engine/disposition is proposed by the MOVE-109 worker and ruled by the coordinator (moved-with-origin-note vs archived-with-MOVED-header); REQ-109 never dangles silently — the RTM records the move.- Batch 2 and every Tier-2 merge return as ruled packets with this ADR's phase discipline.
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.
Related ADRs
Rulings cited
- RUL-035: RUL-035 — Hooks live at the user level only and scope themselves to the project in cwd
- RUL-023: RUL-023 — A feature request means the thing is WIRED, not that code exists