ae5965241e
Codex found the shared attribution predicate recognising only tool calls, text and signed thinking. A native image response often arrives with no text and no tool call at all, so an image-only turn was read as producing nothing: attribution stayed on whichever model spoke before it, and the empty-stop rule could classify a successful generation as empty. Everything the assistant can emit now counts except two: unsigned thinking, which is not provider-authenticated and was already excluded, and Anthropic's `fallback` marker, which records that a request was routed elsewhere rather than carrying output. Redacted thinking and server-tool blocks are real work by the same argument as the image. The `toolUse` arm keeps its stricter rule — an orphaned toolUse stop needs a tool_use block to anchor a later tool_result, and an image cannot. Also switches the new test to the namespace import AGENTS.md requires for node builtins.