Skip to content

phase 11 cleanup: log-classifier + workflow fanout + e2e smoke#93

Merged
finedesignz merged 3 commits into
mainfrom
phase-11-cleanup
May 27, 2026
Merged

phase 11 cleanup: log-classifier + workflow fanout + e2e smoke#93
finedesignz merged 3 commits into
mainfrom
phase-11-cleanup

Conversation

@finedesignz
Copy link
Copy Markdown
Owner

Knocks out the three items deferred from Phase 11 (VERIFICATION.md §"Deferred / not-shipped").

Summary

  • log-classifier (Phase 06 holdover): hub/src/scheduler/log-classifier.ts — 16-pattern regex gate. Wired into senders/coolify.ts: when a log_check/log_pull returns clean, finalize as skipped(no_errors_detected) so on:'success' chains don't fan out to the LLM triage step. Cost cap preserved.
  • workflow fan-out smoke: hub/test/workflows-fanout.test.ts — walks dev_plan → dev_execute → dev_ship via executeChain, mocks dispatcher.runNow to capture chain edges + chainDepth. Also locks the 3-step shape invariant for security and log_check.
  • phase-11 e2e smoke (skippable): hub/test/phase-11.e2e.test.ts — gated on REMO_E2E_DB_URL, mirrors scheduled-tasks.e2e.test.ts convention. Scaffolds the every-5-min dev-workflow exit criterion from PLAN.md §11.

Test plan

  • bun install
  • bun run build:web — clean
  • bun test hub/test/416 pass / 93 skip / 8 fail (baseline was 389/90/8 → +27 pass, 0 new fails)
  • New: 21 log-classifier tests, 4 workflow-fanout tests, 3 e2e-skip tests (skipped without REMO_E2E_DB_URL)

🤖 Generated with Claude Code

Phase 06 holdover, shipped in Phase 11 cleanup. Cheap regex gate over
container log output. When no patterns match in a log_check coolify
fetch, finalize the run as skipped(no_errors_detected) so post-run
chains gated on on:'success' don't fan out to the LLM triage step —
preserves the daily cost cap (Phase 06 invariant).

16 patterns: panic/fatal, unhandled exception, OOM, port in use,
ECONNREFUSED, 5xx, segfault, stack overflow, error lines, container
exit non-zero, deploy failed, migration failed, postgres FATAL/PANIC,
JWT/auth failures, out of disk, DNS resolution failure.

Tests: hub/test/log-classifier.test.ts (21 pass) — one case per
pattern + clean log + multi-match + edge cases.
Phase 11 verification deferred item. Walks dev_plan → dev_execute →
dev_ship via executeChain, asserts triggeredByRunId + chainDepth
propagate and the terminal step doesn't fan out further. Stubs
dispatcher.runNow via mock.module to keep this DB-free.

Also locks the 3-step shape invariant for security and log_check
workflows so any future re-ordering shows up here before it ships.
Phase 11 verification deferred item. Skipped without REMO_E2E_DB_URL —
matches hub/test/scheduled-tasks.e2e.test.ts convention. Locks the
exit criterion from PLAN.md §11: every-5-min dev workflow → dev_plan
populates runtime_context_snapshot with non-null project_type, repo,
notify_email → chain fires dev_execute, then dev_ship.
@finedesignz finedesignz merged commit 6808dc3 into main May 27, 2026
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.

1 participant