CI: dev→prod gating — smoke on dev, full matrix gates main - #3
Merged
Conversation
…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>
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.
Summary
Introduces the dev→prod branch pattern with two lean workflows:
smoke.yml(gatesdev, <1 min): launch-number test files + server boot +/v1/health. Deliberately small — dev answers "is this obviously broken?".ci.yml(gatesmain= prod): both package suites + health smoke on Node 20 + 24 across ubuntu/macos, fanned into one requiredfull-ci-gatecheck.AGENTS.md"Branches and CI" (canonical) +CLAUDE.mdsummary document the flow: features →dev(smoke) → promotedev→main(full CI); hotfixes tomainget 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
devfrommain, add branch protection (mainrequiresfull-ci-gate,devrequiressmoke).Test plan
🤖 Generated with Claude Code