Problem Statement
Two claude-engine workflows completed full analysis work (61 and 81 turns respectively) but never called any safeoutputs tool (noop, create_discussion, or otherwise), causing both workflows to conclude as failure despite the analysis succeeding.
Affected Workflows and Run IDs
| Workflow |
Run |
Turns |
Cost |
Duration |
| Schema Consistency Checker |
§25304247413 |
61 |
$1.91 |
7m12s |
| Multi-Device Docs Tester |
§25304397726 |
81 |
$1.93 |
~6m |
Probable Root Cause
The failure cascade is triggered when output_types remains null:
# detection job condition evaluation:
(output_types != '') || (has_patch == 'true')
→ (null != '') || (false == 'true')
→ false
# → detection SKIPPED → safe_outputs SKIPPED → workflow FAILURE
For Schema Consistency Checker: The agent spent 61 turns reading source code, comparing schema fields vs Go struct tags, and building a thorough consistency report — but never called noop or create_discussion to surface the findings. The workflow definition likely lacks a guaranteed safeoutputs call at the end of the analysis path.
For Multi-Device Docs Tester: The agent encountered cascading permission denials (playwright blocked, /tmp writes blocked, settings.json writes blocked, bash simple_expansion blocked) that derailed the testing flow. Despite recovering and successfully curling 8 pages (all 200 OK), the agent exited without calling noop, likely because it was still trying to fix its testing setup when it ran out of turns.
Specific Proposed Remediations
Schema Consistency Checker
- Review the workflow prompt to ensure it includes an explicit instruction to call
noop or create_discussion after completing the schema analysis
- The prompt currently has
report-as-issue: true on noop — the agent needs to be reminded this is the required output path
Multi-Device Docs Tester
- Immediate: Add explicit safeoutputs noop call instructions at end of testing flow
- Playwright permissions: The workflow needs
settings.json allowlist entries for playwright-cli commands, /tmp/preview.log write, and pkill -f "astro dev" cleanup
- Firewall: 2 requests to
(unknown) domain were blocked — identify and whitelist if needed
Success Criteria
- Both workflows conclude with
success in next scheduled run
- Schema Consistency Checker produces a
create_discussion output
- Multi-Device Docs Tester produces a
noop or issue output after page checks pass
SafeItemsCount > 0 for both runs
Generated by [aw] Failure Investigator (6h) · ● 545.5K · ◷
Problem Statement
Two
claude-engine workflows completed full analysis work (61 and 81 turns respectively) but never called any safeoutputs tool (noop,create_discussion, or otherwise), causing both workflows to conclude as failure despite the analysis succeeding.Affected Workflows and Run IDs
Probable Root Cause
The failure cascade is triggered when
output_typesremains null:For Schema Consistency Checker: The agent spent 61 turns reading source code, comparing schema fields vs Go struct tags, and building a thorough consistency report — but never called
nooporcreate_discussionto surface the findings. The workflow definition likely lacks a guaranteed safeoutputs call at the end of the analysis path.For Multi-Device Docs Tester: The agent encountered cascading permission denials (playwright blocked,
/tmpwrites blocked,settings.jsonwrites blocked, bashsimple_expansionblocked) that derailed the testing flow. Despite recovering and successfully curling 8 pages (all 200 OK), the agent exited without callingnoop, likely because it was still trying to fix its testing setup when it ran out of turns.Specific Proposed Remediations
Schema Consistency Checker
nooporcreate_discussionafter completing the schema analysisreport-as-issue: trueon noop — the agent needs to be reminded this is the required output pathMulti-Device Docs Tester
settings.jsonallowlist entries for playwright-cli commands,/tmp/preview.logwrite, andpkill -f "astro dev"cleanup(unknown)domain were blocked — identify and whitelist if neededSuccess Criteria
successin next scheduled runcreate_discussionoutputnoopor issue output after page checks passSafeItemsCount > 0for both runs