feat(orchestrator): long-session drift mitigation for /wavemachine campaigns#614
Merged
bakeb7j0 merged 1 commit intoMay 6, 2026
Merged
Conversation
Adds per-wave drift instrumentation and a system-reminder re-grounding mechanism to /wavemachine, so long campaigns (5+ waves, multi-hour wall-clock) no longer drift in agent behavior. "Bug C" from the Plan #581 campaign A debrief. Mechanism (lightest of the three options the issue evaluated): at every wave_complete boundary inside the Wave-to-Wave Handoff tool-use block, the loop emits three drift-signal events (wave_message_length_main, wave_stop_hook_blocks, wave_concerns_posts) via a new scripts/wavemachine/drift-instrumentation.sh helper, plus a system-reminder payload referencing WAVE_AXIOMS.md and explicitly citing Axiom 9 (user attention as cost). Heavyweight options (mandatory /engage, /compact-on-N-waves) are documented as rejected alternatives held in reserve for empirical escalation. The wiring is unconditional and mechanical (per Axiom 6 — agent does not add gates the user did not invoke). The system-reminder is out-of-band, so it does not violate the no-narrator-gap contract from cc-workflow#600. Tests: 15 unit tests in tests/test_drift_instrumentation_skill.py covering script shape (executable, subcommands, self-test output, input validation), report subcommand aggregation, and SKILL.md wiring (section heading, three-event references, WAVE_AXIOMS + Axiom 9 citation, rejected-alternatives subsection, handoff block wiring, non-negotiable). Self-test produces compact JSON identical in shape to mcp-log output without touching the real fleet logfile. Empirical baseline: a full A/B comparison (drift signals before/after mitigation on the same 6-wave plan) cannot run inside a single Flight context — Flights cannot run live /wavemachine campaigns. That is tracked as a follow-up empirical-comparison task; the first natural campaign of >=5 waves run after this lands provides the post-mitigation data, with Plan #581 campaign A as the pre-mitigation baseline. Closes #601
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements long-session drift mitigation per cc-workflow#601.
Adds per-wave drift instrumentation (
wave_message_length_main,wave_stop_hook_blocks,wave_concerns_postsevents) and one mitigation mechanism (per-wave system-reminder injection citing WAVE_AXIOMS, especially Axiom 9 — "User attention is the cost. Autonomy is the protection.").Closes #601
Wave 3a / Flight 2 of Plan #607 (Beta). Sequenced after cc#605 due to shared edit on
skills/wavemachine/SKILL.md. Worktree was rebased onto kahuna's post-#605 tip; references new Axiom 9 in re-grounding payload.