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

ADR-0063: The Read tool is allowed on a module the session already read through the AST toolkit

field value
Status Accepted — Accepted (ruling R9, Mohamed, 2026-09-23)
Date 2026-09-23
Register factory (docs/adr, 4-digit ids)
Source docs/adr/0063-read-allowed-after-ast-toolkit-source.md — permalink at 77a0013af (unchanged on master since that commit)
Wiki register entry ADR-0063 (wiki status: Accepted)

← ADR-0062 · ADR-0064 →

The record

Date: 2026-09-23 · Status: Accepted (ruling R9, Mohamed, 2026-09-23)

Context

The 2026-08-02 mandate ("ZERO hand-reading of Python source — the AST toolkit serves everything") is enforced by .claude/hooks/force-ast-toolkit.sh, which since 2026-08-08 DENIES the Read tool and every text tool on .py files under src/, scripts/ and tests/ of this repo, and directs the caller to scripts/serialize_codebase_ast.py source <qualified_name>.

The Edit and Write tools refuse to touch a file the session has not Read. Measured 2026-09-23 on two swarm tasks (U-T3, U-T8a): both agents pulled the exact bytes of the target symbols through source, drafted the patch, and could not land it by any route a sibling guard permitted — Bash redirects are denied by intercept_bash.py, rm/mv are denied, and the auto-mode classifier refused cp over the target. The working method in use before the ruling (build the file in the scratchpad, diff against git show HEAD:<path>, copy over) is a route AROUND a guard, which is the failure mode the guard's own header warns about: a guard whose only satisfying action is impossible blocks work and teaches the operator to route around it.

Decision

Ruling R9 (plan PLAN-2026-09-23-production-deployable-tools.md, Rulings table): the Read tool is permitted on a Python file whose module the same session has already read through serialize_codebase_ast.py source <name>.

Mechanism (RUL-014 — a ruling resolves to a mechanism), landed in orchestrata-ultimate 1395825c4:

Consequences

Alternatives rejected

Homes

docs (this file) · wiki (rulings/RUL-033-read-after-ast-source, to be synced) · graph (scripts/sync_architecture_to_graph.py --adrs).

No other ADR is named in this record.

Rulings cited

Specs cited

None (or no spec page exists for the ones named).