Skip to content

chore(infra): WAVE_AXIOMS V1 + Stop hook + gitignore prep for Plan #581 Main#583

Merged
bakeb7j0 merged 1 commit intomainfrom
chore/582-axioms-stop-hook-prep
May 5, 2026
Merged

chore(infra): WAVE_AXIOMS V1 + Stop hook + gitignore prep for Plan #581 Main#583
bakeb7j0 merged 1 commit intomainfrom
chore/582-axioms-stop-hook-prep

Conversation

@bakeb7j0
Copy link
Copy Markdown
Contributor

@bakeb7j0 bakeb7j0 commented May 5, 2026

Summary

Pre-launch infrastructure cleanup bundling four small mechanical changes so the /wavemachine pre-flight gate passes for Plan #581's Main campaign and the campaign has minimum prep-wave protection.

Changes

  • .gitignore — add validate_output.txt (transient scripts/ci/validate.sh output dump)
  • WAVE_AXIOMS.md (new) — V1 first-round draft, 8 axioms governing wave-pattern execution behavior. Structural rework + Axiom 9 (no-polling) + skill-body wiring land in a follow-up issue
  • CLAUDE.md — add MANDATORY: WAVE_AXIOMS section with inline 8-axiom shorthand list; makes the constitutional layer load-bearing via the always-loaded CLAUDE.md
  • config/settings.template.json — add second Stop hook entry (alongside existing precheck-asking-detector) using decision:block conditional on wavemachine_active flag in .claude/status/state.json. Validated 2026-05-05 in blueshift-cue Plan docs: add artifact manifest, CI/CD pipeline, and documentation kit to PRD template #179 (advanced wave-4 → wave-5 without stall after deployment)

Linked Issues

Closes #582

Test Plan

  • scripts/ci/validate.sh — 124/124 regression tests PASS (shellcheck, shfmt, py_compile, regression)
  • trivy fs --scanners vuln --severity HIGH,CRITICAL — 0 findings
  • jq -e . on config/settings.template.json — JSON valid post-edit
  • Code review (Opus feature-dev:code-reviewer) — initial pass found 2 Important + 1 Minor; both Important fixed; re-review CLEAN
  • Manual: git status --porcelain returns nothing post-stage (clean sandbox per /wavemachine pre-flight feat: add sync.sh for local-to-repo reverse sync #4)

Findings (review)

Fixed (2 Important):

  1. Axiom 6 divergence between WAVE_AXIOMS.md V1 and CLAUDE.md inline summary. CLAUDE.md asserted the split version (per-command gate frequency: /nextwave per-wave, /wavemachine at terminal state) but WAVE_AXIOMS.md V1 had only the unsplit "per-wave" framing. Applied the split to WAVE_AXIOMS.md so both files agree.
  2. Stop hook used relative path for state.json. state=".claude/status/state.json" would silently no-op on cwd-drift (cross-repo orchestration, CC bugs #3583/#50960/#22343). Now uses ${CLAUDE_PROJECT_DIR:-.}/.claude/status/state.json with sensible fallback.

Deferred (1 Minor, follow-up): Stop hook reason text assumes /wavemachine is in flight but fires on bare wavemachine_active=true flag. Stale flag from aborted session could misdirect a user who invoked /nextwave directly. Captured for the WAVE_AXIOMS structural-rework follow-up issue (which also covers Axiom 9 / no-polling).

Pre-existing (out of scope): pytest reports 103 failures across the test suite, including 16 in tests/test_install_merge.py due to install.sh → install rename in commit 9d0b06d not propagated to test files. Verified pre-existing on origin/main (failures present without this PR's changes). Separate chore issue should track the test-suite cleanup.

🤖 Generated with Claude Code

… Main

Pre-launch infrastructure cleanup bundling four small mechanical changes
into one commit so the /wavemachine pre-flight gate passes and the Main
campaign has minimum prep-wave protection:

- .gitignore — add validate_output.txt (transient validate.sh output dump)
- WAVE_AXIOMS.md — V1 first-round draft, 8 axioms governing wave-pattern
  execution behavior. Structural rework + Axiom 9 + skill-body wiring land
  in a follow-up issue (tasks #73/#74 in session task list).
- CLAUDE.md — add MANDATORY: WAVE_AXIOMS section with inline 8-axiom
  shorthand list. Makes the constitutional layer load-bearing via the
  always-loaded CLAUDE.md.
- config/settings.template.json — add second Stop hook entry (alongside
  existing precheck-asking-detector) using decision:block conditional on
  the wavemachine_active flag in .claude/status/state.json. Validated
  2026-05-05 in blueshift-cue Plan #179 (advanced wave-4 → wave-5 without
  stall after deployment).

Code review (Opus feature-dev:code-reviewer) found 2 Important fixes,
both applied:
- Axiom 6 divergence between WAVE_AXIOMS.md V1 and CLAUDE.md inline
  summary. Applied the split version (per-command gate frequency:
  /nextwave per-wave, /wavemachine at terminal state) to both.
- Stop hook used relative path for state.json that would silently no-op
  on cwd-drift (cross-repo orchestration, CC bugs). Now uses
  \${CLAUDE_PROJECT_DIR:-.}/.claude/status/state.json with sensible
  fallback when env var is unset.

Re-review clean after fixes.

Pre-existing pytest failures on main (16 in test_install_merge.py due to
install.sh → install rename in commit 9d0b06d not propagated to test
files) verified by running tests on origin/main; out of scope for this
PR, separate chore needed.

Closes #582

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@bakeb7j0 bakeb7j0 added this pull request to the merge queue May 5, 2026
Merged via the queue into main with commit f3f1a56 May 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(infra): WAVE_AXIOMS V1 + Stop hook + gitignore — pre-launch prep for Plan #581 Main campaign

1 participant