hamsa software
← All articles
AI tooling7 min read

When another check adds no evidence

A twelve-step sequential controller separates repeated evidence, hard limits, blocked access and the work needed to hand over.

An open rectangular outline contains a solid coloured area beneath a short incoming line and a circle, suggesting an allowance that must last through exploration and handover.

Another attempt is not automatically another observation

The import check returns the same error for the third time. The log has another progress entry, but the file, check and environment have not changed, so the investigation may know nothing new. Another attempt needs a changed condition or an explicit question about repeated trials. Otherwise stop with the known result and enough allowance left to explain it. The person taking over needs to know what was checked and which missing observation would make another attempt worth running.

Stopping early is not always the right answer. Some failures are intermittent, and some investigations need several rounds to find anything useful. The controller’s job is to distinguish work still permitted by its allowance from work justified by the question, while leaving a usable handover. Asking the model to remember to be economical puts that decision inside the loop being controlled. The runtime needs a boundary it can enforce, with a reason the next person can understand.

Anthropic’s December 2024 agents article discusses environmental feedback and stopping conditions such as an iteration limit.[1] The deterministic example here applies that idea to synthetic import-check observations, with no model calls or running-tool interruption. It counts exploration and one finalisation step. Before using such an allowance, define what a step admits. If one counted action can launch an unlimited child loop or batch of tools, the controller has counted the outer request without limiting its work. An output-length limit governs a different part again: a short report can follow an unbounded investigation.

Reserve the ending before spending the investigation

Give this investigation twelve logical steps, at most ten for exploration and two reserved for finalisation. These are the example’s admission units, rather than tokens or a fixed price. Check the remaining exploration allowance before accepting another observation. Once the investigation stops, a later request should meet that stopped state rather than quietly open another loop under the same task. A person can authorise a larger investigation, but that is a visible change of scope with its own reason, not a way for repeated work to reset its counter.

The first local case checks the same file with the same check and environment twice, receiving the same evidence. Their example references are H1, C1, V1 and E7. The second observation triggers no_new_evidence at step two; one simulated handover step leaves nine unused. There is no need to spend them merely because they remain. A different input or a new hypothesis might justify continuation, while another call under unchanged conditions would leave the next colleague with a longer transcript and the same unresolved question.

In the next case, ten different file fingerprints consume the exploration allowance. One handover step then leaves one reserved step unused. New material has not overridden the hard cap. The investigator might still be pursuing an unhelpful question, or the relevant evidence might simply exceed this task’s scope. Keep the partial findings and stop reason so a person can choose between narrowing the question and authorising more work. A novelty test answers whether something changed; it cannot decide how much investigation the organisation intends to fund.

The ten-second admission deadline supplies a different boundary: a late observation is refused and the stored checkpoint is returned without another simulated summary call. It does not stop a tool already running. A deployed controller needs an appropriate elapsed clock, such as Python’s documented monotonic clock, and runtime enforcement for the call itself.[2] Otherwise a tool admitted just before expiry can keep running after the report was due. Reserving logical steps protects work allocation; reserving time requires knowing which operations can actually be cancelled or bounded.

Stop before the handover allowance disappears

Executed deterministic state model, not a model-cost, token or runtime-cancellation test. Twelve logical steps include two reserved for finalisation.

Scroll sideways to see all columns.

CaseExploration usedStop reasonFinalisation outcome
H1/C1/V1/E7 repeated2no_new_evidenceOne handover step;9 remain
Ten distinct supplied inputs10exploration_limitOne handover step;1 remains
Access denied1blocked_accessSimulated summary failure; checkpoint returned
Admission after 10-second deadline0deadlineStored checkpoint; no further model call
New fingerprints do not override the hard cap. A step reserve does not itself enforce a deadline or stop an already-running tool.

Decide what counts as changed evidence

The repetition check compares input, check and environment because each can change the meaning of an error. Correcting the file and getting E7 again is evidence about that correction. Repeating the same input with only a fresh request ID is not a new input experiment. H1/C1/V1 names those three conditions in the example; E7 names the result. Choose the comparison fields from the question being investigated. If the external dependency changes while the file stays fixed, recording only a file hash would discard the condition that made the next check informative.

Repeated trials can be justified too. If the explicit hypothesis concerns an intermittent failure rate, repeated observations under the same conditions are the evidence being collected. The stopping policy should then include the planned sample protocol and its bounded count, rather than reject the second trial automatically. Adding a fresh counter to evade a no-progress check would not supply that justification. The next step needs a declared question whose answer can change, with a limit appropriate to that question.

A matching fingerprint means the chosen representations match, not that the observation is true or enough to answer the task. Obtain those representations from controlled runtime or source data. If the investigator can invent a changed environment value, it can manufacture permission for another step without obtaining new evidence. The opposite error is possible too: an equality rule that ignores a relevant dependency can stop a worthwhile check. Leave unfamiliar combinations reviewable, so the progress mechanism helps account for work rather than becoming another unexplained refusal the next person must reverse.

Blocked access needs a different ending. The third local case stops immediately with blocked_access, instead of repeatedly asking for the same forbidden source. More attempts cannot supply the missing authority. A transient service error might warrant a separately bounded retry, but a permission denial normally needs a changed grant, authorised source or task. Name that missing condition in the handover. The recipient can then decide whether to obtain access or use another permitted route, rather than extend an investigation that still cannot read the evidence it needs.

Step admission and runtime deadlines are different controls

The import investigation needs separate limits for admitted observations and tools already running.

  1. Logical allowance12 total steps

    At most ten exploration observations; two reserved for finalisation.

  2. Progress ruleControlled fingerprint

    H1/C1/V1/E7 repetition stops early unless the task defines a bounded repeated trial.

  3. Time admissionIllustrative ten seconds

    Rejects late observations, but cannot interrupt a tool that hangs after starting.

  4. Runtime enforcementAdditional work

    Nested loops, running tool timeouts and actual finalisation time need their own implemented controls.

Twelve logical steps include a finalisation reserve. A running tool still needs an enforced deadline; the sequential checks only admit supplied observations and simulate the handover.

Preserve something useful when finalisation fails

Finalisation can fail after the investigation has already found something useful. In the blocked-access case, a simulated summary failure leaves the stored checkpoint and stop reason available, with a notice that no generated summary exists. That gives the recipient a basis for action even without polished prose. Save verified observations during the work, so the final explanation does not become the only place they survive. If obtaining the summary itself needs unavailable access or more allowance, the preserved record can still show why the investigation stopped.

For repeated E7, the handover should identify the original question, file/check/environment references, repeated result, no-new-evidence stop and the observation that could justify continuation. Keep facts separate from hypotheses. This read-only example made no edits or external business changes. A write-capable investigation also needs the effects already performed, because ending the loop does not undo them. The next person must be able to distinguish another useful check from repeating an action whose result is unresolved, even if both appear as unfinished steps in the transcript.

Avoid a generic failed label for all these endings. Completed, blocked, exploration_limit, deadline and no_new_evidence imply different next actions. A step cap might invite a review of scope or a larger explicitly approved investigation. Blocked access might require a different authorised source. Repeated unchanged evidence might mean the next hypothesis is missing. The person should not have to inspect a long transcript merely to discover whether another attempt could make progress without any new information.

A fixed few-stage workflow may already stop sensibly through ordinary error handling. This extra controller earns its place when an investigator can keep choosing more work. Repeated E7, ten distinct observations and blocked access should end differently because the next person needs different things to change. Keep the reason and retained evidence with each ending. The result is less dramatic than a long transcript, but considerably easier to continue when another attempt actually has something new to ask.

Working on a workflow like this? Hamsa helps finance and operations teams connect their tools and handle the exceptions, starting with one workflow.

See the Payment Operations Pilot

References & further reading

Primary sources behind this article. Living documentation may change.

  1. Anthropic: agents, feedback and stopping conditions Published 19 December 2024
  2. Python: monotonic elapsed-time clocks
Hamsa Jama

Practical engineering. A human perspective.

More about Hamsa Software and the person behind it. Editorial notes.

A few more things
worth a read.

Back to the reading room
AI tooling7 min read

The prompt did not change. The system did.

Version the resolved configuration around an AI response so comparisons, investigations and rollback refer to the system that actually ran.