-
Notifications
You must be signed in to change notification settings - Fork 2
plat 002
github-actions[bot] edited this page Sep 20, 2026
·
1 revision
| Coordination | Value |
|---|---|
| Assigned agent | Claude Code |
| Ticket state | runtime_reverify |
| Last synchronized | 2026-08-04 |
Claim this ticket in this file before implementation. During active work, update this fragment rather than the shared index; synchronize the index once at handoff, review, or completion.
- Priority: P0
- Owner: tool bridge, timing telemetry, and terminal status
-
Source findings:
HARNESS-NESTED-ERROR-STATUS-PRECEDENCE(Upwork) andHARNESS-TOOL-ENVELOPE-ISERROR-2026-08-03(Build-in-public), plusHARNESS-TIMING-EMBEDDED-TOOL-ERROR(Social Media, observed before the canonical implementation landed) -
Problem: the outer transport succeeds while the nested tool payload says
ERROR, carries a non-zero nested exit code, or reports an HTTP failure. Stored traces still setIsError=falseanderrored_count=0. - Impact: retries, alerts, validation, reviewers, and terminal status can treat a real failed operation as clean.
-
Important distinction:
tool_failures_invisible_in_backend_logs.md
fixed visibility with
[TOOL_ERROR]logs and red UI rendering. It did not by itself make the canonical runtime/timing result an error. -
Implementation (2026-08-03):
mcpagent/toolerrnow has a narrow canonical classifier separate from the broad log-only suspect detector. The CLI stream adapter emitsToolCallErrorEventinstead ofToolCallEndEventfor nested failure envelopes, and saved CLI conversation history setsIsError=true. Sequential and parallel in-process tool paths use the same classifier. Problem-reporting/query tools are excluded from payload promotion so a returned domain row such asstatus=failedis not confused with transport failure. -
Verification: fixtures pass for nested
ERROR, non-zero shell exit, permission denial, HTTP 4xx,success=false, and MCPisError; negative controls pass for prose discussing errors and historical failed DB rows. The real post-build timing artifact still needs to proveerrored_countchanges. - Current workaround: agents and reviewers parse nested stdout/content and apply explicit error precedence themselves.
-
Acceptance: fixtures for nested
ERROR, HTTP failure, permission denial, and non-zero shell exit all set canonical error state, increment error counts, and prevent an unrecovered parent execution from being clean. Text merely discussing an error remains a success.
Auto-synced from docs/ on main. Edit there, not here.