Orchestrata Ultimate › Plans › briefs › p-rul040-native-refusal-seam

P-RUL040 native refusal seam (this repo only) — the escalate arm dies; named reasons are the verdict

Source: plans/briefs/p-rul040-native-refusal-seam.md at 8a2cb42ad · last changed 2026-10-20 · first committed 2026-10-20 · 85 lines.

Prose pending.

Plan text

P-RUL040 native refusal seam (this repo only) — the escalate arm dies; named reasons are the verdict

Status: DISPATCH-READY · Repo: /home/mohamed/workspace/wt-COMPONENTS (branch components) Authority: RUL-040 (Mohamed, verbatim: "never escalate=true is meaningless, it must be measured never the whole suite that is a huge bug") + his 2026-10-20 directive "focus on this repo only for now". SEAM NOTE (coordinator, superseding the Stage 0 option-(b) codetools-verb seam FOR NOW): the codetools select-affected verb remains a later precision upgrade (its packet exists); this packet implements the refusal seam NATIVELY with this repo's own machinery — scripts/affected_tests.py's already-measured reasons + scripts/rts.py symbol-precise selection where edges exist. The codetools verb packet is NOT required, NOT a fence, NOT in scope.

The founding incident (measured, 2026-10-20)

The pre-push gate ran run_tests.py --affected origin/master...HEAD; the oracle answered "escalate": true with NAMED reasons (docs "certified inert, smoke floor only", .envrc → resolved edge tests/deploy/test_envrc_toolchain.py, .gitlab-ci.yml → manifest-declared coverage, ...), and run_tests.py's elif resolved.get("escalate"): arm THREW THE REASONS AWAY and selected the full 39,102-test suite — which then collapsed into ~1.8k killed batches (the cap's session budget). Four push attempts died on that arm. RUL-040: the measured reasons ARE the verdict; the full run must never be the fallback.

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/T17-D7 machinery), scripts/hooks/pre-push (the D2b arm ONLY), reports/run-tests-latest.json (the sanctioned runner's OWN report — running any lane writes it; it is allowlisted so the fence does not trip on the runner's artifact, never edited by hand), the test files under tests/scripts/ that pin these (name them in the report). FORBIDDEN: everything else — scripts/rts.py (read-only measurement unless D1's measurement proves a REQUIRED minimal change, then STOP and report the change for coordinator sign-off), tests/plugins/** (§5.2 landed — do not touch), pyproject.toml, uv.lock, plans/, reports/ (except the one allowlisted file), /tmp and any absolute path. FOREIGN DIRT — untouched: context.json, context.md, context.history.md, docs/CODEBASE_MAP*.md, plans/ast-*.json, .claude/skills/**, .deepchat/**.

INFRA NOTE (measured 2026-10-20): the test-fleet Graph service (10.53.2.10:7687) answers the port but refuses bolt queries — the runner's preflight fails on it. For FUNCTIONAL lanes add --skip-services graph (named, functional-only); do NOT skip other services and do NOT use --skip-infra. If an integration lane needs the graph, STOP and report instead of skipping.

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 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, the D1 schema sample, the three-arm outputs verbatim, the real-branch-diff proof verbatim, the D5 lane outputs.