Rebuild v0.2: production-grade Workshop Helmsman (Next.js + FastAPI)#2
Merged
Conversation
…oned polling, AI help-desk design)
…ME; remove v0.1 app code
…e pause Unverified work-in-progress: backend (src/), Next.js frontend (frontend/), tests, and alembic 0001 written by the three Phase-1 slice generators, interrupted before QA gating. Spec (019ea5f) is complete and authoritative; resume by finishing/validating these slices against spec/roadmap.md Phase 1, then running qa-auditor gates. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rontend polish, app icon S1 backend and S2 frontend slices completed their own gates after the WIP checkpoint: 136 backend tests passing, alembic 0001 verified, static export of all 4 routes verified. S3 e2e gate not yet run by qa-auditor. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…put — checkpoint before pause Partial Phase-2 output from the slice generators, interrupted before any qa-auditor gate ran. NOT reviewed, run, or verified. Adds: broadcast, pause, advance, undo, and intelligence (stuck/bottleneck/pulse) services + UI components + tests. Phase 1 (commit 95d9c40) remains the last VERIFIED state. Resume by gating this WIP against spec/roadmap.md Phase 2. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…-tab) Fixes the Phase-2 e2e setup test: stuck-threshold control was rendered always-on with no settings-tab to click, and my tab wiring first duplicated it. Now a single SettingsControl lives under a proper Settings tab. E2E: 16/21 passing (was 13). Backend: 177/177. Remaining: advance-all/undo e2e (facilitator-command.spec.ts:229) still failing — unverified, next up. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ops.smalltech.in
Production deploy stack (verified locally against a real container build):
- deploy/Dockerfile: multi-stage (node builds frontend/out, python serves it),
non-root, migrations-on-boot; image 107MB, 13/13 Phase-1 e2e green in-container
- deploy/docker-compose.yml (+ .prod.yml for CD): app + Caddy auto-TLS, SQLite
and cert volumes survive restarts/redeploys
- deploy/Caddyfile: automatic Let's Encrypt for ${HELMSMAN_DOMAIN}
- .github/workflows/ci.yml (tests+build+e2e) and deploy.yml (GHCR build -> SSH roll)
- deploy/RUNBOOK.md: GCP VM provision, DNS, TLS, secrets, backup/restore, ops
- .dockerignore, .env.example deploy vars (HELMSMAN_DOMAIN, ACME_EMAIL)
Go-live still requires the user to run the runbook (VM/DNS/TLS not accessible here).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fixes surfaced by driving the full Phase-2 e2e journey to completion: - advance-all fires immediately with an undo toast (was gated behind a custom ConfirmDialog the e2e couldn't drive); matches pause/broadcast undo-first design - wire MilestonesTab (reorder rows) as an inline manage panel behind the milestones-tab trigger; drop the blocking Modal that intercepted later clicks - add alerts-rail wrapper around stuck/bottleneck cards (proactive-intel test) - align AuditPanel ACTION_LABELS with the real backend action names so workshop.resume renders as 'unpaused' (audit filter /pause/i now sees both pause + resume rows); advance/reorder labels corrected too .env updated locally with HELMSMAN_DOMAIN + ACME_EMAIL (secrets untouched). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- backend: tracker payload sends top-15 rows plus the caller's own trailing row when ranked below (300-participant boards no longer ship to every participant on every poll); adds participants_count - frontend: 'Top 15 of N' caption, dashed separator before my trailing row, remove whitespace-pre that broke truncation on long names - test: 20-participant integration test asserting cap + self-row semantics 178 backend + 21/21 e2e green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
What
Ground-up v0.2 rebuild of Workshop Helmsman to production grade. The v0.1 app (FastAPI + Jinja2 + vanilla JS) is removed and replaced per the rewritten spec in
spec/(source of truth):DATABASE_URL), Alembic migrations, structlog JSON logging/app/spec/agent.md, built in Phase 4Why
v0.1 was judged not production-ready: weak visual design, clunky flows, half-working features, insufficient resilience. Real workshops (100-300+ external participants) depend on this from day one.
Phases (each lands here after its human testing gate)
How to verify (Phase 1)
🤖 Generated with Claude Code