BOHICA-LABS / BOHICA-LABS/vsdd-factory
process-gap(subagents): completed-but-unreported liveness gap — work finishes, report never delivered without an explicit ping
- Dominant language
- Rust
- Stars
- 2
- Forks
- 1
- Avg merge
- 6h 43m
- Merged PRs (30d)
- 29
Description
## Summary
Subagents **complete their work fully, then go idle without delivering their report**. The output exists (edits committed, findings written, verdict formed) but is never sent back to the orchestrator. An explicit orchestrator ping recovers it immediately — but an unattended orchestrator waiting on the report would stall indefinitely even though the work is done.
## Evidence — 3 instances, one session, 3 different agent roles
| # | Role | Context | Outcome |
|---|------|---------|---------|
| 1 | adversary | post merge-delta review — verdict formed, findings complete | delivered only after explicit ping |
| 2 | state-manager | post close-out burst — all edits and commits complete | went idle without reporting completion |
| 3 | consistency-validator | post wave-gate audit — full findings list produced | delivered only after explicit ping |
In every instance: work 100% complete, zero data loss, **single ping sufficed** to recover the report.
## Why this is distinct from existing issues
- **#386 (adversary mid-review stall):** that class never produces a verdict — execution fails. Here execution *completes*; only **delivery/reporting** fails. Different failure point, and not adversary-specific (3 distinct roles in one session).
- **#411 (no external supervisor):** closely adjacent — this is a concrete liveness gap that an external supervisor would paper over, but the root cause is the missing report-before-idle contract in the subagent protocol itself.
## Validated mitigation
Adding an explicit line to the dispatch prompt — *"deliver your report via SendMessage before going idle; do not go idle without reporting"* — prevented recurrence in the immediately following dispatch of the same role.
## Proposed remedies
1. **Dispatch-template mandate:** every subagent dispatch prompt ends with an explicit report-before-idle instruction (cheap, validated above).
2. **Orchestrator-side liveness probe:** if a subagent goes idle without a report, auto-ping once before escalating to failure handling.
3. **Harness-level:** idle-without-output detection — a subagent transitioning to idle with a non-empty work product but no outbound message is a flaggable state.
*(From a private pilot repo; framework-pattern detail only.)*
Contributor guide
Assessment
This issue has not been assessed yet.