Doctrine

No scope creep on dispatches

strat-disciplinedispatch-disciplinefleet-opsscope-control

No scope creep on dispatches

Every dispatch, fix, PR, and ticket MUST match the scope of the literal ask. If investigation surfaces adjacent work, file it as a separate ticket — do NOT silently expand the current dispatch to include it.

Rule

Before dispatching: re-read the operator's ask verbatim. For every bullet in the dispatch, ask: "is this required to solve the literal ask?" If no, cut it. When in doubt, dispatch the minimum and ship a second ticket for the extra. Two small dispatches beat one sprawling dispatch.

Applies equally to first-person diffs: the edit should solve the stated bug, not ambient cleanup the author noticed along the way.

Registered-parent carve-out

When the operator's literal ask is broad (all, full, complete, everything, every, entire, historical, all-time), the fleet may and should create a registered parent objective before dispatching child tickets.

That parent is not scope creep. It preserves the original user-visible closure condition while each child remains narrow. The child dispatch still obeys this doctrine: solve only the child ask, cite PARENT: <ITEM>, and report OBJECTIVE_PROGRESS: instead of implying the whole broad objective is done.

Any broad word used in a dispatch must state its bound. If all-time means "admin@ Gmail financial receipt history through 2026-04-28," say that. If complete means "complete for this child only; parent remains open," say that. The broad word may not silently change meaning between operator ask, dispatch, and DONE.

Signal

"While we're in there" is the creep signal — STOP, file a separate ticket, resume.

Origin

2026-04-16 RedlineMac notarization session. Chad corrected an over-scoped Codex dispatch that bundled Gatekeeper friction into a sync-durability ask. Over-preparation looks like thoroughness but burns Codex/Gemini cycles and creates work that has to be rolled back when a simpler path emerges.