Skip to main content
← Back to list
01Issue
BugOpenSwamp CLIPublic
AssigneesNone

Relationships

#4435 stagecraft: low findings from the optional-inject verification (held-by attribution, dispatch timing, test helper)

Opened by skunk-ape · 11/5/2026

Three low findings from the verification reviews of #4163. None affects the shipped examples, and none blocked it.

1. Person evidence with a wrong field counts as still to come

heldBy in _lib/engine/awaiting.ts treats any failing evidence-recorded gate on recordedBy: person evidence as evidence still to come. That includes evidence already recorded in this stage entry that fails requireField or match.

Example: an exit gated on requireField: { approved: true } plus a pending human-approval, after a person records { approved: false }. The journal lists the exit as held on the approval, but approving can't open it until the person re-records. The wait is still on a person, so only the attribution is off. It does contradict the rule in the file's header comment that a gate failing on a recorded product leaves a decision.

Suggested fix: count the evidence as missing only when it has no record in this stage entry, as awaitsAgentProduct does with thisEntry, and add a test for the mismatch case.

2. Absent optional injects aren't rechecked at dispatch

buildDispatch works out which optional injects are absent from a run read taken before the dispatch is stored. A product recorded in that window, or while the subagent runs, is reported as not recorded. The examples aren't exposed, because they record these products in the earlier check stage.

Suggested fix, if it ever matters: build the packet from the run seen inside the update.

3. Duplicate scenario lookup in a test

The "waits on a person" test in extensions/models/engine/factories_test.ts repeats the scenario lookup from reviewAfter. A shared helper would keep the two in step.

02Bog Flow
◉OPEN○TRIAGED○IN PROGRESS○SHIPPED

Open

11/5/2026, 6:28:29 PM

No activity in this phase yet.

03Sludge Pulse

Sign in to post a ripple.