fix(acp): settle admission-blocked and retried prompts after the merge

The automation bridge inherited two master-era assumptions the message
machine no longer honors. A prompt blocked at pre-turn admission opens no
turn, so no turn/end could ever settle it — the bridge now watches
whenIdle() and reports a turnless slot as cancelled (the disposed-agent
guard moved to a registry identity check before send). A failed turn no
longer rejects at its turn/end either: agent.retry() closes the failed
turn and opens a successor on the same history, so the bridge holds the
terminal error and lets a retry-triggered turn/start adopt the prompt,
rejecting only at quiescence with no successor.

Also: refresh the empty-response-retry fixture for retry-as-turn logging,
adapt master-side tests to the unified send()/UserMessageData API and
registry-fact disposal, resync the doc pairs both sides touched, trim
architecture.md back under its word ceiling, and regenerate the event and
persistence catalogs.
This commit is contained in:
_Kerman
2026-07-26 14:29:30 +08:00
parent 57d90c343d
commit fc8d339bf0
18 changed files with 119 additions and 112 deletions

View File

@@ -100,9 +100,8 @@ forever:
each model-order result -> ordered tools/post-execute -> 'tool/result'
drain accepted tool context and steering
'step/end'
a concluding tool result ends the turn; drained steering waits for the next turn
continue when tools or steering require another step
otherwise agent/stopping -> drain once more -> continue only for steering
continue for tools or steering unless a result concluded the turn
otherwise agent/stopping -> drain -> continue only for steering
'turn/end' -> agent/idle
start the next waking queued message, or emit agent/status(idle)