Orchestrata Ultimate › Plans › briefs › p-rul040-stage1-orchestrata-consumption

P-RUL040 Stage 1 — orchestrata side: consume the deployed select-affected verb; the escalate arm dies

Source: plans/briefs/p-rul040-stage1-orchestrata-consumption.md at 8a2cb42ad · last changed 2026-10-20 · first committed 2026-10-20 · 78 lines.

Prose pending.

Plan text

P-RUL040 Stage 1 — orchestrata side: consume the deployed select-affected verb; the escalate arm dies

Status: DISPATCH-READY (dispatch ONLY after the coordinator confirms the codetools verb is DEPLOYED — see Sequence) · Repo: /home/mohamed/workspace/wt-COMPONENTS (branch components) Authority: RUL-040 (verbatim, injected in plans/briefs/p-rul040-fail-closed-blast-radius.md) + the Stage 0 adjudication (reports/p-rul040-stage0.md): seam option (b) — the DEPLOYED codetools CLI's select-affected verb, consumed as a subprocess JSON contract; rts.py extract's fact schema frozen as the interop surface; rts select RETIRED at verb landing; refusal → abort with named set + an explicit-decision citation mechanism; tool-missing → fail-closed naming the tooling state. NEVER a silent full run.

Sequence (coordinator-enforced)

The codetools verb packet (plans/briefs/p-rul040-stage1-codetools-verb.md) lands and the coordinator deploys it to /opt/codetools FIRST. Verify the deployed CLI answers before you write a line: .venv/bin/codetools is NOT the target — the contract is consumed from the DEPLOYED surface the coordinator names (it will be /opt/codetools/current/... or a bin/ shim). If the coordinator's deployment note is absent from your task, STOP and report.

The contract (frozen in the codetools brief — do not renegotiate)

codetools deploy select-affected --repo-root R --json reads on stdin {"changed_files": [...], "facts": {"sym_hash": [...], "file_hash": [...], "defines": [...], "calls": [...], "is_test": [...], "safety_escape": [...]}} and prints ONE JSON line on stdout: {"verdict": "bounded", "selection": [...], "named_full": [...]} exit 0 · {"verdict": "refused", "missing": "...", "reason": "..."} exit 2 · tool error exit 1 (stderr).

Deliverables

Fence

ALLOWED: scripts/affected_tests.py, scripts/run_tests.py (the affected-selection consumption arm and its helpers ONLY — do not touch the batch/child-env/cap machinery), scripts/rts.py, the test files under tests/scripts/ that pin these three (name them in the report). FORBIDDEN: everything else — tests/plugins/** (the §5.2 worker's live fence), pyproject.toml, uv.lock, plans/, reports/, /tmp and any absolute path. FOREIGN DIRT — untouched: context.json, context.md, context.history.md, docs/CODEBASE_MAP*.md, plans/ast-*.json, reports/run-tests-latest.json, .claude/skills/**, .deepchat/**.

Conduct

RUL-037 (no python -c/heredoc writes; file tools only; no codemod scripts). Measure before editing; verbatim outputs; no false attribution. Do NOT commit. Never run a full-suite run. The pre-push gate uses the file you edit — do not trigger it. Final report ends with: git status of the allowlist files, rts' output shape + the transform, the three-arm outputs verbatim, the real-branch diff verdict verbatim, the D6 lane outputs.