Repository navigation
ci(ci): move mutation to a release gate on main - #35
Merged
Merged
Conversation
systemfsoftware-maker
added this pull request to stack #34
October 5, 2026 19:34
ryanleecode
force-pushed
the
lake1/release-gate
branch
from
October 5, 2026 22:38
d969bd3 to
fc75465
Compare
systemfsoftware-maker
force-pushed
the
lake1/release-gate
branch
from
October 6, 2026 01:32
fc75465 to
cde77e2
Compare
ryanleecode
force-pushed
the
lake1/release-gate
branch
from
October 6, 2026 01:46
cde77e2 to
c27ada8
Compare
systemfsoftware-maker
force-pushed
the
lake1/release-gate
branch
from
October 6, 2026 08:47
1872657 to
3f6961a
Compare
systemfsoftware-maker
removed this pull request from stack #34
October 6, 2026 16:04
systemfsoftware-maker
added this pull request to stack #54
October 6, 2026 19:52
This was referenced Oct 6, 2026
systemfsoftware-maker
force-pushed
the
lake1/release-gate
branch
from
October 6, 2026 21:56
3f6961a to
e9c2dfd
Compare
systemfsoftware-maker
removed this pull request from stack #54
October 6, 2026 21:56
systemfsoftware-maker
added this pull request to stack #59
October 6, 2026 21:57
systemfsoftware-maker
removed this pull request from stack #59
October 6, 2026 22:13
systemfsoftware-maker
added this pull request to stack #61
October 6, 2026 22:13
check:ci no longer runs stryker. The release gate on push to main plans one shard per workspace package that declares a mutation script, refuses an empty set, and runs each shard at break 100 on the fleet with its incremental report cached. The checker drops prioritizePerformanceOverAccuracy, which stryker-js 15 removes. Operator approval: Kiro, 2026-10-05 (GATE1)
The plan and per-package mutation jobs move from the self-hosted fleet, which admits only private repositories, to ubuntu-latest. Mutation stays one parallel job per package. Operator approval: Kiro, 2026-10-05 (GATE1)
A package with a mutation script whose mutate globs match nothing reports zero mutants and passes a break-100 threshold vacuously (review finding #9). Each package now declares its globs once, as stryker.mutate in package.json; its Stryker config reads them and the release gate's shard planner expands them. The planner fails red at plan time naming the package, its directory and its globs when they match no file, including a package with no declared globs. Its Deno tests are ordinary tests: a turbo root task, test:scripts, runs them through the dev shell's deno, and both pnpm test and check:ci run it, so a local check:ci covers the planner exactly as CI does
…ns to mutate A decision is a *.workflow.ts file. When no workspace package has one, the planner emits an empty shard list and a 'No decisions to mutate' notice, and the mutation job is skipped. When decisions exist and no package declares a mutation script, it still refuses the empty set, naming how many decisions went unmutated. Kiro ruling, 2026-10-06
systemfsoftware-maker
force-pushed
the
lake1/release-gate
branch
from
October 7, 2026 01:01
cfe329f to
78d23d0
Compare
starter-verify F10 and F13 (Kiro ruling, cycle 35): drop workflow_dispatch so mutation runs on push to main only; the README no longer claims Cell workflows, Cell.provide, tenant-bound store ports or compile-time phase markers, and no longer tells readers to run pnpm mutation locally
Ryan's standing rule via Kiro (cycle 52): no macOS anywhere. The flake builds x86_64-linux and aarch64-linux only; dprint pins only Linux archives; the comment-checker sandbox loses its sandbox-exec branch; AGENTS.md says CI is Linux only
# Conflicts: # AGENTS.md
Contributor
There was a problem hiding this comment.
Conductor verdict: 7/7 checks green on b23a8e2, 0 unresolved threads, no unchecked boxes, two starter-verify reviews with no findings on this layer, hunt grep clean.
systemfsoftware-maker
added a commit
that referenced
this pull request
Oct 7, 2026
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.
Lake 1, U3 (Evaluator) — stacked on #33.
Operator approval: Kiro, 2026-10-05 (GATE1).
pnpm check:cino longer runspnpm mutation; mutation never runs in the PR gate (R66)..github/workflows/release-gate.ymlon push tomainonly (no manual dispatch), concurrency queued and never cancelled:plan(fleetsmall) runsscripts/mutation-shards.ts, which lists every workspace package whosepackage.jsondeclares amutationscript and fails on an empty set.mutation(fleetlarge, one job per package,fail-fast: false, 75 min) restores the package'sreports/stryker-incremental.jsonfrom the Actions cache and runsturbo run mutation --filter=<pkg>atbreak: 100, uploading the reports.packages/starter/stryker.config.tsdropsprioritizePerformanceOverAccuracy(removed in stryker-js 15, optional in 13) ahead of U4.#51 adds the production
deployjob to this workflow.QA
Stryker was not run locally. The first release-gate run on
mainafter merge is the proof of the shard job.Review fixes (Kiro rulings, Lake 1 bottom review)
3f6961a).stryker.mutateinpackage.json; its Stryker config reads them. The shard planner (scripts/mutation-shards.ts) expands them.scripts/mutation-shards.test.ts, 4 cases. They're ordinary tests: the turbo root tasktest:scriptsruns them through the dev shell'sdeno(nix develop --command deno test). Bothpnpm testandcheck:ci(throughgate:tasks) run that task, so the existingtestleg runs them and a localcheck:cicovers the planner exactly as CI does. There is no separate CI leg.=== 0→< 0):pnpm testexits 1 andpnpm gate:tasksexits 1, both failing//#test:scriptswithFAILED | 1 passed | 3 failed. Green:ok | 4 passed, andcheck:ciexits 0.mainnever carries a mutation job that runs dependency code outside the sandbox.No decisions to mutate (Kiro ruling, 2026-10-06, GATE1)
*.workflow.tsfile, the suffix the dmmf presets key their complexity-1 and purity rules on. The planner counts them in every workspace package, skippingnode_modulesand.stryker-tmp.No decisions to mutatenotice annotation (::notice title=Release gate::…), emitspackages=[]and exits 0. Themutationjob skips an empty plan (an empty matrix is an Actions error), and feat(repo): preview every pull request and deploy production after the release gate #51's production deploy accepts a skipped mutation job.mutationscript: it still refuses the empty set, naming how many decisions went unmutated.stryker.mutatematches no file: still refused by name and globs, as before.packages/starter(the hello seed) has no*.workflow.ts, somainno longer mutates it. From refactor(repo): delete the hello seed package #43 to feat(repo): call the site worker through effect rpc #62 the gate passes with the notice instead of refusing, so those layers no longer have to merge together with the example feature. feat(repo): give the site worker one d1 database, emulated locally under pnpm dev #63 adds the first decision (apps/site/src/api/check-health.workflow.ts), so from feat(repo): give the site worker one d1 database, emulated locally under pnpm dev #63 on the planner plans@endgame/site.Not exercised: a release-gate run on GitHub. The workflow runs only on push to
main.Cycle 35 (Kiro rulings on starter-verify's review)
6b3c059):release-gate.ymldropsworkflow_dispatch:. Mutation runs on push tomainonly.6b3c059): the README describes what the code has. It no longer claimsCellworkflows, a singleCell.provideat the root, tenant-bound store ports or compile-time phase markers, and no longer tells readers to runpnpm mutationlocally; the FAQ says mutation runs only in the release gate onmain.6b3c059, clean worktree:pnpm check:ciexit 0.Linux only (Kiro, cycle 52)
Ryan's standing rule: no macOS anywhere in our repos.
95bbb06mergesmainwith chore: drop macOS from CI (hosted larger-runner quota) #67, which dropped the macOS CI leg.29d1b80: the flake buildsx86_64-linuxandaarch64-linuxonly;nix/dprint.nixpins only the two Linux release archives; the comment-checker sandbox loses itssandbox-execbranch and keeps bubblewrap;AGENTS.mdsays every job runs onubuntu-latestand CI is Linux only.Gate at
29d1b80, clean worktree, Linux:CI run 37573302092 on
29d1b80: all 5 jobs pass (format, lint, typecheck, test, dist).