Summary
The /wavemachine skill specifies a "terminal events" surface — Discord embed updates with .status-panel.html attachments at every PASS/FAIL/BLOCKED/INTERRUPT/GATE-PASSED transition — that is degraded in practice because of overlapping bugs in the upstream tooling. None of the terminal events fired their full intended surface during my Plan #74 run, even on the all-green happy path. The cumulative effect is a measurable operator-experience gap distinct from any single underlying bug.
Where the surface degrades
| Event |
Spec says |
Actual in my Plan #74 run |
wave_complete per wave |
regenerate panel + fire-and-forget Discord embed |
panel regen errored on phase['name'] (#617); discord-status-post script not found at expected path; only the plain-text Discord post landed |
| Kahuna gate-passed |
regenerate panel + plain text + Discord embed update |
same — panel partial, embed update path silent |
| Per-wave bus cleanup |
call wave-cleanup <wave-root> |
rejected on 4-segment GitLab nested namespace path (#618); manual rm -rf required |
| Wavemachine-complete |
terminal Discord post w/ .status-panel.html attached + vox |
partial panel HTML attached; vox not invoked; otherwise functional |
The plain-text Discord posts and the gauges/state.json transitions all worked. The "live embed update + attachment + panel regen" tier is the part that's broken.
Why a separate issue
Each underlying cause is filed:
But the cumulative experience — "the entire terminal-event surface that the operator was promised is silently degraded across a successful run" — is a meta-observation that doesn't fit cleanly under any single child bug. This issue is a tracking parent so:
Severity
severity::minor per individual symptom; cumulatively, the operator's entire visibility surface is degraded for the duration of a wavemachine run. On a happy path that's annoying. On a gate-blocked path where the operator is supposed to triage from the attached panel, it could be confusing.
Acceptance Criteria
Dependencies
Summary
The
/wavemachineskill specifies a "terminal events" surface — Discord embed updates with.status-panel.htmlattachments at every PASS/FAIL/BLOCKED/INTERRUPT/GATE-PASSED transition — that is degraded in practice because of overlapping bugs in the upstream tooling. None of the terminal events fired their full intended surface during my Plan #74 run, even on the all-green happy path. The cumulative effect is a measurable operator-experience gap distinct from any single underlying bug.Where the surface degrades
wave_completeper wavephase['name'](#617);discord-status-postscript not found at expected path; only the plain-text Discord post landedwave-cleanup <wave-root>rm -rfrequired.status-panel.htmlattached + voxThe plain-text Discord posts and the gauges/state.json transitions all worked. The "live embed update + attachment + panel regen" tier is the part that's broken.
Why a separate issue
Each underlying cause is filed:
KeyError: 'name'blocks regenerationwave-cleanuprejects nested-namespace pathsdiscord-status-postscript absent / unreachable from the orchestrator's CWD in this project layoutBut the cumulative experience — "the entire terminal-event surface that the operator was promised is silently degraded across a successful run" — is a meta-observation that doesn't fit cleanly under any single child bug. This issue is a tracking parent so:
Severity
severity::minorper individual symptom; cumulatively, the operator's entire visibility surface is degraded for the duration of a wavemachine run. On a happy path that's annoying. On a gate-blocked path where the operator is supposed to triage from the attached panel, it could be confusing.Acceptance Criteria
/wavemachineend-to-end test against a multi-segment GitLab namespace fixture exercises every terminal-event surface and asserts:wave-cleanupaccepts the wave-root pathdiscord-status-postresolves and runs successfully (or at least fails loudly if the script isn't present)/wavemachineskill body's "Status Panel Lifecycle" and "Announcements" sections updated if any contract changes during the fix.Dependencies
discord-status-postresolution fix.