Skip to content

CI: dev→prod gating — smoke on dev, full matrix gates main - #3

Merged
dennisonbertram merged 3 commits into
mainfrom
dennisonbertram/ci-dev-prod
Jul 3, 2026
Merged

CI: dev→prod gating — smoke on dev, full matrix gates main#3
dennisonbertram merged 3 commits into
mainfrom
dennisonbertram/ci-dev-prod

Conversation

@dennisonbertram

Copy link
Copy Markdown
Collaborator

Summary

Introduces the dev→prod branch pattern with two lean workflows:

  • smoke.yml (gates dev, <1 min): launch-number test files + server boot + /v1/health. Deliberately small — dev answers "is this obviously broken?".
  • ci.yml (gates main = prod): both package suites + health smoke on Node 20 + 24 across ubuntu/macos, fanned into one required full-ci-gate check.
  • Actions pinned to full commit SHAs (matching the repo's exactly-pinned npm deps); concurrency cancellation; job timeouts.
  • AGENTS.md "Branches and CI" (canonical) + CLAUDE.md summary document the flow: features → dev (smoke) → promote devmain (full CI); hotfixes to main get the same full gate.

This PR itself is the first full-ci run — it validates the suite on Node 20 and macOS for the first time.

After merge: create dev from main, add branch protection (main requires full-ci-gate, dev requires smoke).

Test plan

  • YAML validated
  • Both suites green locally (250/239/0-fail/11 env-gated skips; 160/160)
  • full-ci green on this PR (Node 20 + 24, ubuntu + macos) — watching

🤖 Generated with Claude Code

dennisonbertram and others added 3 commits July 3, 2026 10:16
…main

- .github/workflows/smoke.yml: PRs/pushes to dev. <1 min: launch-number
  test files (fallbacks, sessions-fallbacks, fallback-invariants) + server
  boot + /v1/health. Answers 'is this obviously broken?' only.
- .github/workflows/ci.yml: PRs/pushes to main. Both package suites + the
  health smoke on Node 20 + 24 (engines floor + current) across
  ubuntu/macos, fanned into a single required full-ci-gate check so branch
  protection never has to track matrix entries.
- Actions pinned to full commit SHAs (same stance as the exactly-pinned
  npm deps). Concurrency groups cancel superseded runs; 5-10 min timeouts.
- AGENTS.md 'Branches and CI' (canonical) + CLAUDE.md summary: main is
  prod (users clone it, self-update pulls it), dev is integration, promote
  via dev->main PR, hotfixes to main get the same full gate, and the smoke
  gate deliberately stays small.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
First matrix run failed on ERR_MODULE_NOT_FOUND: workflow-lens ships a
real dependency (acorn 8.17.0, exactly pinned) that exists locally but
not on a fresh checkout; control-tower reaches it through relative
imports and server.mjs needs it to boot. Both workflows now npm ci both
packages (lockfile-exact, ~1s) with the npm cache keyed on the lockfiles.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The buildHomeData test relied on write-order mtimes for its newest-first
assertion; ext4's mtime granularity ties back-to-back writes, so the sort
became insertion-order on Linux CI (red on ubuntu, green on APFS). Pin
the ordering explicitly like the scanProjectSessions test already does.
Test-only change; red evidence is the failed ubuntu matrix run on PR #3.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@dennisonbertram
dennisonbertram merged commit b97c84d into main Jul 3, 2026
4 checks 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.

1 participant