Reported by the maintainer, observed on the codex host but reachable on every host since the prose is shared.
When a user states an intent the orchestrator can resolve to exactly ONE command with its COMPLETE argument, the codex orchestrator still answers with a tier-2 confirmation:
did you mean $feature "F-137 implement front end auth backtrace system" ?
That is the retype ceremony ADR-0022 abolished, returned wearing a question mark. ADR-0022 tier 1 (unambiguous AND non-destructive) mandates routing directly; displaying the fully-formed command while asking permission to run it demonstrates the routing was already resolved. The UX cost is exactly the one the ADR names: the gatekeeper becomes the change manager who bounces a request over a missing comma.
Root cause: ORCHESTRATOR.md §6 never defines the tier 1 / tier 2 boundary operationally, so a cautious host model defaults to asking. "Probable" reads as "anything I inferred rather than was told".
Fix: in core/surface/ORCHESTRATOR.md §6, define the boundary by what is already resolved: exact command + complete argument + no competing candidate + non-destructive = tier 1 BY DEFINITION, route it; tier 2 is reserved for a genuinely incomplete reading (an argument you would have to invent, a second plausible command) or the destructive set. Regenerates into all three hosts via tools/build-surface.py.
Reported by the maintainer, observed on the codex host but reachable on every host since the prose is shared.
When a user states an intent the orchestrator can resolve to exactly ONE command with its COMPLETE argument, the codex orchestrator still answers with a tier-2 confirmation:
That is the retype ceremony ADR-0022 abolished, returned wearing a question mark. ADR-0022 tier 1 (unambiguous AND non-destructive) mandates routing directly; displaying the fully-formed command while asking permission to run it demonstrates the routing was already resolved. The UX cost is exactly the one the ADR names: the gatekeeper becomes the change manager who bounces a request over a missing comma.
Root cause: ORCHESTRATOR.md §6 never defines the tier 1 / tier 2 boundary operationally, so a cautious host model defaults to asking. "Probable" reads as "anything I inferred rather than was told".
Fix: in core/surface/ORCHESTRATOR.md §6, define the boundary by what is already resolved: exact command + complete argument + no competing candidate + non-destructive = tier 1 BY DEFINITION, route it; tier 2 is reserved for a genuinely incomplete reading (an argument you would have to invent, a second plausible command) or the destructive set. Regenerates into all three hosts via tools/build-surface.py.