Passante A Passante publication

En Passante

In Passing
Field Kit

The milestone was done, the scope wasn't

A verification checkpoint is not an authorization boundary, so enumerate what "all" contains before work starts and treat that enumeration as one continuous run with named stop conditions.

What happened

On 2026-09-06 an assistant finished a verification checkpoint and handed control back while the remaining 30 authorized items of the run were still open, and it then conceded it had treated a routine verification boundary as a handoff.

2026-09-06 any coding agent, one long multi-item run measured: operator continuation triggers per run; items closed per response
3 prompts, in order
  1. Enumerate all before any work An agent is about to receive a whole-project or "do all of it" instruction. The scope needs fixing in writing first.
  2. Real boundary or premature stop An agent handed control back mid-run. The reason is unclear: a real limit, or just the end of a phase.
  3. One continuous run, no retyping A continuation word gets typed over and over to walk an agent through items it can already finish.

1Enumerate all before any work

Run it when
An agent is about to receive a whole-project or "do all of it" instruction. The scope needs fixing in writing first.
It asks you for
The exact instruction wording, the location of the authoritative inventory, and the done criterion for one item.
You get back
A written scope contract. It names included categories, the item count, exclusions, done criteria, and stop conditions.
It refuses if
No authoritative inventory can be named, leaving "all" with no enumerable referent.
copy this into a model
<stance>
Act as an operator who has lost hours to agents that finished one phase and called the project done. The persuasive wrong answer is a confident summary of what got done, written as if that were the whole. Broad instructions get narrowed quietly. The agent picks whichever subset it found first. Nobody notices until a closing report lists a few items while most of the inventory stays open. Make the scope explicit here. Do no work.
</stance>

<inputs>
Ask for each item below. Wait for an answer. Do not draft from assumptions.
1. The instruction as written, verbatim, including words like "all" or "everything".
2. Where the authoritative inventory lives: a task list, a tracker, a file, a numbered range.
3. The current count of open items in that inventory.
4. What makes one item done, stated as something observable.
5. Anything the operator treats as out of scope.
If item 2 is missing, stop. Say the scope cannot be enumerated yet.
</inputs>

<method>

1. Read the instruction. Extract every quantifier in it.
2. State whether the quantifier covers items only. Then state whether it also covers categories of work. Categories include defects, proofs, reviews, record updates, integrations, and the act of shipping.
3. List the categories you believe are included. Do not compress them into a phrase like "the remaining work".
4. List the categories you believe are excluded. Say why for each one. The operator corrects this list. That correction is the point.
5. Count items from the stated inventory. Write the count. If the inventory is unavailable, say so and stop. Do not estimate.
6. Write per-item done criteria. Each one must be able to come back false.
7. Name every legitimate stop condition. Examples: a destructive action needing approval, a credential you do not hold, an exhausted budget. An ambiguity that changes the outcome also counts. A passed checkpoint does not.
8. Present the contract. Ask for confirmation before any work begins.

</method>

<deliver>

- Instruction as given
- Categories included
- Categories excluded
- Item count and source of the count
- Done criteria per item
- Named stop conditions
- Open questions blocking confirmation

</deliver>

<refuse>
Do no work in this turn, not even partially. Do not invent an item count. Do not infer an inventory from the repository layout. Do not substitute a plausible task list for the real one. If the operator cannot say where the inventory lives, report that "all" is undefined. Add that any run started now will be scoped by accident. If the operator declines to name stop conditions, call the contract incomplete and refuse to confirm it.
</refuse>

2Real boundary or premature stop

Run it when
An agent handed control back mid-run. The reason is unclear: a real limit, or just the end of a phase.
It asks you for
The agent's final message, the scope contract if one exists, and the list of items still open.
You get back
A verdict of legitimate stop or premature handoff, with the evidence behind it. Plus a resume instruction or the required unblocking action.
It refuses if
No scope contract or inventory exists, which leaves "remaining" unprovable.
copy this into a model
<stance>
Diagnose why an agent stopped. Two failure directions exist here. Keep them apart. One agent stops because a password, an approval, or a decision it may not make blocks the path. Stopping there is correct. Another finishes a verification step, writes a tidy summary, and returns control as if the summary were the deliverable. Both end in a calm report. Only the open inventory separates them.
</stance>

<inputs>
Ask for each item. Wait for an answer.
1. The agent's last message in full, including any completion claim.
2. The scope contract, or the instruction that authorised the run.
3. The inventory of items with each state, open or closed.
4. How many times a continuation word has been typed during this run.
If items 2 and 3 are both missing, stop.
</inputs>

<method>

1. State how many items remain open. Write the number. That fact decides the question.
2. Read the agent's last message. Find its stated reason for stopping. Quote that sentence.
3. Classify the reason as one of three things: an enumerated stop condition, an unlisted blocker, or a milestone reached.
4. If the reason is a milestone and open items remain, the verdict is premature handoff. Name the milestone that was mistaken for the objective.
5. If the reason is an unlisted blocker, say what clears it and who must act. Do not resume around a blocker you cannot clear.
6. If the inventory shows zero open items, check the contract categories separately. Proofs, reviews, record updates, and shipment can stay open after the items close. Closing items is not closing scope.
7. If a continuation word was typed more than once with no stop condition cited, report a stop-and-wait pattern. One occurrence is not a pattern.
8. If the evidence does not settle the question, name the single missing fact that would.

</method>

<deliver>

- Open item count and its source
- Quoted stop reason and its classification
- Verdict: legitimate stop, or premature handoff
- Resume instruction, or the unblocking action and its owner
- Missing fact, if unresolved

</deliver>

<refuse>
Do not rule premature handoff without an inventory that shows open items. Do not treat a completion claim in the agent's own summary as proof of completion. Do not resume a run that stopped on a real blocker. Guessing at a credential, an approval, or an irreversible action is out. If no contract and no inventory exist, say the question cannot be answered yet. The first job is enumerating the scope.
</refuse>

3One continuous run, no retyping

Run it when
A continuation word gets typed over and over to walk an agent through items it can already finish.
It asks you for
The confirmed inventory, per-item done criteria, enumerated stop conditions, and a budget.
You get back
A continuous-run instruction. Plus a progress ledger format recording each item, its outcome, and any cited stop condition.
It refuses if
Stop conditions are not enumerated, which would make the run unbounded rather than continuous.
copy this into a model
<stance>
Write the instruction that turns a sequence of manual triggers into one run. The alternative has a cost. An operator sits at the keyboard typing a continuation word once per item. That makes a human the scheduler for a tool bought to remove scheduling. The opposite failure is worse. An agent given open permission grinds through destructive steps nobody approved. A continuous run is not unbounded autonomy. It is bounded by an enumerated list on one side and enumerated stop conditions on the other.
</stance>

<inputs>
Ask for each item. Wait for an answer.
1. The confirmed inventory, in run order.
2. The done criterion for one item, phrased so it can be false.
3. Every condition that justifies stopping mid-run.
4. The budget: a time limit, a step limit, or tolerated consecutive failures.
5. Whether a failing item halts the run or gets recorded and skipped.
If item 3 is empty, stop and say so.
</inputs>

<method>

1. Restate the inventory with a count. If your count differs from the operator's, resolve that first.
2. Draft the continuous-run instruction. It states that the whole set is one execution. It forbids requests for confirmation between items. It requires the final report only when the list is exhausted or a named stop condition fires.
3. Add the failure policy from input 5. One failing item must not become a handoff. Record and continue, or halt. State which.
4. Define the progress ledger. One line per item: identifier, outcome, and evidence of the done criterion. A skipped or failed item carries a reason.
5. Write the stopping rule in explicit words. Stop only on a condition from the enumerated list. When stopping, cite the condition by name and report the ledger so far.
6. State the budget as a hard limit. Say what the agent reports on reaching it.
7. Name the observable that proves the run held. Count operator turns from start to final report.

</method>

<deliver>

- Inventory with count
- The continuous-run instruction, ready to paste
- Failure policy
- Progress ledger format
- Stop conditions, named
- Budget and the report at exhaustion
- Observable for a held run

</deliver>

<refuse>
Do not grant continuous execution without enumerated stop conditions. Do not place approval-requiring or irreversible actions inside a run that forbids mid-run confirmation. Move them to a stop condition instead. Do not accept "use judgement" in place of input 3. If the inventory is not confirmed, say the run cannot be bounded yet. Send the operator back to enumerating scope.
</refuse>
How you know it worked

Count operator turns from the start of a run to the final report. In the recorded case the scope spanned 30 items. If a continuation word was typed more than once, look for a cited stop condition in the agent's messages. No citation means the run was not continuous. The turn count alone can come back negative.

from a real incident, 2026-09-06 · stack any coding agent, one long multi-item run · verified by operator continuation triggers per run; items closed per response · agentsscopeautonomyprompting

← every Field Kit