Skip to content

build(mutation): grade only workflow files in the dogfood mutation run - #333

Merged
ryanleecode merged 6 commits into
mainfrom
mutation/workflow-only-selection
Oct 13, 2026
Merged

ryanleecode merged 6 commits into
mainfrom
mutation/workflow-only-selection

Conversation

@systemfsoftware-maker

@systemfsoftware-maker systemfsoftware-maker commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The repository's own mutation run now grades only the tests of *.workflow.ts files. Schema files leave the mutated population in packages/stryker-js, packages/stryker-js-vitest-runner and packages/stryker-js-typescript-checker, which is 2,213 fewer mutants on main 25120175. This applies Ryan's ruling of 2026-10-12 22:47 EDT (mutation selects *.workflow.ts only, never *.schema.ts). ADR-0004 records the rule and supersedes ADR-0002's mutation-selection statements in part.

This PR is separate from the nightly-trigger PR, which is not open yet. The mutate set decides which code the other streams' tests are graded against, so it is a root-owned judgment surface under CONST-E7 and lands on its own.

Measured on main 25120175

Selection evaluates the configs' globs, ! exclusions included, over git ls-tree origin/main. Mutants come from main's Mutation run 38338484710 (artifact mutation-report-459), re-read restricted to workflow files. No mutation ran locally.

Project Files selected (before → after) Mutants (before → after) Score (before → workflow files only)
packages/stryker-js 139 → 86 8,825 → 6,928 49.87 % → 51.70 %
packages/stryker-js-typescript-checker 18 → 12 843 → 579 55.60 % → 60.75 %
packages/stryker-js-vitest-runner 6 → 3 220 → 168 67.80 % → 73.58 %
test/e2e-core (untouched) n/a 2,107 → 2,107 71.88 %

Every removed file is a .schema.ts file, and no workflow file drops out. Two of the 62 removed schema files are type-only and had no mutants. No project's set is empty, so no config is deleted. The fork would score an empty set as Unscored with exit 0. The first nightly's real count is measured when it runs, not predicted here, because sources will move before then.

Decisions

  • Both ignorers stay. In that run effect-schema-declarations marked 744 mutants inside workflow files Ignored: tagged-class tags and fields, symbol descriptions, tagged-struct tags, class ids and annotations. Without it those mutants would be scored, and no test can kill them. in-source-vitest-block ignores 54 mutants in the import.meta.vitest block of plan-shards.workflow.ts.
  • The ! exclusions stay. They exclude no file today. They keep a future __tests__/**/*.workflow.ts out of the set.
  • ADR-0002 is unchanged. The repo treats ADRs as immutable, and the root allowed "at most" a one-line note, so none was added. ADR-0004 carries the supersession.
  • Schema-file operations lose mutation grading. ADR-0002 placed them in schema files because those files were mutated and importable (its line 38). ADR-0004 keeps the placement and records the lost reason as its Bad consequence. Moving those operations into workflow files is a separate decision.

Knock-on effects

  • The kill matrix and I's default-policy drop audit (ci(repo): audit every default-policy drop against main's kill matrix on every PR #288) compare against main's mutant set. Both baselines shift once: pairs in schema files leave main's side rather than regressing.
  • Mutation's incremental report rebuilds on the first run, because its cache key covers stryker.config.ts.
  • No CI verdict changes colour. A shard below thresholds.break logs a line and does not fail (packages/stryker-js/src/shard/shard-run.ts:119).

For the root

CONST-T12 says to decide what applies to code "from what it is and does, never from its name or location". The ruling selects by file suffix, which holds only while ADR-0001's suffix taxonomy reliably says what a file is. Nothing here changes because of that. It is recorded so you can decide whether the link needs stating.

Validation

  • tsc -p tsconfig.node.json --noEmit in all three packages: exit 0. dprint check on the changed files: exit 0.
  • docs/adr/0002-schema-file-operations.md and test/e2e-core/ are byte-identical to main. No e2e-core scope is used in any commit, branch or title.
  • 0004 is the next free ADR number, and no open PR touches docs/adr/ or these three configs.
  • Changeset: none for each package, because stryker.config.ts is outside every published files list.
  • Earlier focused review (before the full-path rounds below): one ce-code-review pass with an adversarial reviewer raised 4 findings. 2 P2s were accepted: ADR-0004 now names ADR-0002's lost reason, and the commit message no longer cites the non-gating break. The inert exclusions were kept (reason above). The dated plans that quote the two-glob set are now listed in ADR-0004 for their owners.
  • Not run locally: mutation of any kind (CI only).

Review

Full-path ce-code-review (mode:agent, depth full, report-only) of head 7ca2d825 against merge-base 7b6b8272 (run 20261013-170535-66c6722d). Verdict: Ready to merge. Every finding at this head was rejected by the validator, so no confirmed finding needs action.

Supersession. ADR-0004 (docs/adr/0004-mutation-selects-workflow-files-only.md, frontmatter supersedes: ["ADR-0002 (mutation selection)"]) supersedes ADR-0002's mutation-selection statements: that the mutation run grades src/**/*.schema.ts, that a schema file is mutated, and that schema files are mutated against a break threshold of 100. ADR-0002's decision on where pure operations over a schema's data live stays in force, and docs/adr/0002-schema-file-operations.md is byte-identical to main.

Lenses and the model that served each (read from each subagent's session transcript, every assistant turn; no lens timed out at this head):

Lens Agent Served model Assistant turns Findings
correctness R333eCorrectness openrouter/deepseek/deepseek-v4.1-flash 41 0
adversarial R333eAdversarial openrouter/deepseek/deepseek-v4.1-flash 32 2
security R333eSecurity openrouter/deepseek/deepseek-v4.1-flash 10 0
project-standards R333eStandards openrouter/deepseek/deepseek-v4.1-flash 28 0
testing R333eTesting openrouter/deepseek/deepseek-v4.1-flash 22 1
maintainability R333eMaintainability openrouter/deepseek/deepseek-v4.1-flash 26 1
learnings-a R333ePacksA openrouter/deepseek/deepseek-v4.1-flash 26 0
learnings-b R333ePacksB openrouter/deepseek/deepseek-v4.1-flash 22 1
learnings-c R333ePacksC openrouter/deepseek/deepseek-v4.1-flash 24 1
validator R333eValidator openrouter/deepseek/deepseek-v4.1-flash 17 6 judged

No peer CLI is installed on this host, so the adversarial lens ran in-process with the same served model.

Compound pack ledger: the seven packs enrolled in .compound-engineering/config.yaml at a578c704. Each matched rule is listed with its verdict and file:line evidence; not-matched counts per pack: cell-architecture 15, package-topology 6, boundary-testing 7, schema-laws 10, mutation-discipline 3, ci-wall-clock 12, turbo-task-graph 1.

Pack Rule Verdict Evidence (file:line)
package-topology surface-changes-are-versioned.md comply .changeset/mutation-workflow-files-only.md:2 -- "@systemfsoftware/stryker-js": none; .changeset/mutation-workflow-files-only.md:7 -- No change to the published packages. The repository's own mutation run of these three packages now grades workflow files only, not schema files.; packages/stryker-js/package.json:15-18 -- "files": [ "dist", "CHANGELOG.md" ] (the changed stryker.config.ts is outside it)
ci-wall-clock heavy-lanes-state-their-daily-minutes.md violate packages/stryker-js/stryker.config.ts:15-16 -- mutate: [ / 'src//*.workflow.ts', (the 'src/**/*.schema.ts', entry was removed here); packages/stryker-js-vitest-runner/stryker.config.ts:15-16 -- mutate: [ / 'src//.workflow.ts',; packages/stryker-js-typescript-checker/stryker.config.ts:15-16 -- mutate: [ / 'src/**/.workflow.ts',; .github/workflows/bench.yml:1 -- # Cost: about 236 runner-min/day (190-278) for the runs pushes to main start. (the header shape the rule asks for; mutation.yml carries none)
ci-wall-clock heavy-suites-judge-every-main-commit.md comply packages/stryker-js/stryker.config.ts:15-16 -- mutate: [ / 'src//*.workflow.ts', (the only lane-facing change: the graded file set); packages/stryker-js-vitest-runner/stryker.config.ts:15-16 -- mutate: [ / 'src//.workflow.ts',; packages/stryker-js-typescript-checker/stryker.config.ts:15-16 -- mutate: [ / 'src/**/.workflow.ts',

The one violate row is finding #6 below. The validator rejected it because the missing # Cost: header is in .github/workflows/mutation.yml, which this diff does not change and which is read-only to agents.

Findings at this head (all six went to the validator; reasons copied verbatim from validator-verdicts.json):

# Sev Conf Finding (file:line) Reviewers Validator Reason
1 P2 75 Narrowed mutate rule ships with no executable guard (packages/stryker-js/stryker.config.ts:15) testing rejected No test or script reads a stryker.config.ts mutate list at this head or before it (grep of scripts/ returns nothing; the only mutate/stryker.config hits are docs, test fixtures and the .github workflows), so the absent guard is a pre-existing property of every mutate list rather than something this diff introduces or newly exposes.
2 P2 50 ADR's config-deletion rule red-lines both mutation lanes (docs/adr/0004-mutation-selects-workflow-files-only.md:33) adversarial rejected ADR-0004:33's antecedent ('a project with no workflow file') never holds at this head -- all three covered packages carry workflow files (packages/stryker-js 92, packages/stryker-js-typescript-checker 12, packages/stryker-js-vitest-runner 3) -- so no lane fails and the cited sentence only prescribes a future edit, not a defect this diff introduces.
3 P3 75 Inert negated mutate globs beside the sole workflow include (packages/stryker-js/stryker.config.ts:17) maintainability rejected The cited !src/**/*.test.ts, !src/**/*.property.test.ts and !src/**/*.d.ts lines are unchanged by this diff (the sole hunk removes 'src/**/*.schema.ts',) and the finding self-marks pre_existing: true, so the dead-negation observation predates and is unaffected by this change.
4 P3 50 Schema-glob purge enforced only by pipeline defaults (docs/adr/0004-mutation-selects-workflow-files-only.md:35) adversarial rejected ADR-0004:35 is accurate at this head: both lane defaults exclude test/e2e-core (mutation.yml:36, kill-matrix.yml:13) and the only run that names it (test/bench/corpus.json:13-16) overrides mutate to a single workflow file (prepare-side.service.ts:159 mutate: ${JSON.stringify(input.entry.mutate)}), so no lane grades its schema glob and the finding is enforcement hardening, not a false claim.
5 P3 50 Cache-rebuild rationale conflicts with fingerprint invariant (packages/stryker-js/src/verdict-semantics.ts:97) learnings-b rejected mutation.yml:60-63 keys the incremental-report cache as mutation-incremental-${{ hashFiles('pnpm-lock.yaml', 'pnpm-workspace.yaml', 'packages/**/src/**', 'packages/**/stryker.config.ts') }}, so the PR's 'cache key covers stryker.config.ts' rationale is correct at the CI cache layer; the cited verdict-semantics.ts:97 scope-only fingerprint is a different mechanism, is unchanged by this diff, and the quoted sentence lives in the PR body rather than the diff.
6 P3 50 Mutation heavy lane's cost changed with no runner-minutes header (packages/stryker-js/stryker.config.ts:16) learnings-c rejected The missing # Cost: header is in .github/workflows/mutation.yml, which this diff does not touch (it edits only the three stryker.config.ts files, the changeset and ADR-0004), and the ci-wall-clock heavy-lanes row is assigned to the separate 2026-10-13-0954-ci-bench-off-pr-plan (KD12 #14), so no changed line of this diff violates the pack.

Every finding of the earlier full-path rounds on this PR (validator reasons verbatim; each fixing commit verified as an ancestor of 7ca2d825):

Round Head Run # Sev Finding (file:line) Validator Disposition
1 0a6e8392 20261013-154101-f25eebca 1 P2 ADR-0004 reverses the history of the schema mutate glob (docs/adr/0004-mutation-selects-workflow-files-only.md:14) confirmed Fixed in 802d8d32
1 0a6e8392 20261013-154101-f25eebca 2 P2 ADR-0004's dogfood check contradicts e2e-core's config (docs/adr/0004-mutation-selects-workflow-files-only.md:33) confirmed Fixed in 802d8d32, f95ba450
1 0a6e8392 20261013-154101-f25eebca 3 P2 Mutation lane scope narrows without stated runner-minutes (packages/stryker-js/stryker.config.ts:15) rejected Rejected by the validator: The runner-minutes header the rule requires lives in .github/workflows/mutation.yml (line 1 is name: Mutation, with no cost comment before it) -- a file git diff --name-status 25120175..0a6e8392 shows this diff never touches (only the changeset, ADR-0004 and three stryker.config.ts) -- so the absence predates and is unaffected by the mutate-glob removal rather than being introduced by it, and the pack is enrolled only by origin/main's .compound-engineering/config.yaml, not by the one in this checkout.
1 0a6e8392 20261013-154101-f25eebca 4 P2 Mutate-set rule ships with no executable check (packages/stryker-js/stryker.config.ts:15) rejected Rejected by the validator: No executable check on mutate globs existed before this diff either -- git grep over scripts/, packages//tests and packages//src/tests finds no reference to any stryker.config.ts or mutate glob -- and the repo's own precedent pairs ADR-0001's rule with 'a throwaway audit', so requiring a committed scripts/mutation-selection.test.ts is a missing-test preference, not a behavior this diff makes wrong.
1 0a6e8392 20261013-154101-f25eebca 5 P3 A none changeset is still a pending release intent (.changeset/mutation-workflow-files-only.md:1) rejected Rejected by the validator: The finding asserts no defect ('confirms the PR's stated changeset choice is consistent with the release mechanism rather than a gap', suggested_fix null), and the file is well formed with repo precedent -- git grep -l ': none' -- .changeset returns audit-judge-verdict-laws.md, plan-mutant-tests-lawful-mutants.md and revert-type-query.md -- so nothing introduced by this diff is claimed wrong.
1 0a6e8392 20261013-154101-f25eebca 6 P3 Empty mutate set scores Unscored and exits 0: a silent pass (docs/adr/0004-mutation-selects-workflow-files-only.md:22) rejected Rejected by the validator: The finding states the ADR's decision driver 'is corroborated, not hypothetical' and needs no action, and its cited mechanism is real (docs/solutions/runtime-errors/host-instrumenter-namespace-identity.md:34-37 INV-3, Unscored when no mutant counts toward the denominator), so it alleges no incorrect behavior in this diff.
1 0a6e8392 20261013-154101-f25eebca 7 P3 Main-derived baselines shift once when the mutate set changes (docs/adr/0004-mutation-selects-workflow-files-only.md:42) rejected Rejected by the validator: This records ADR-0004:42's own 'Neutral' consequence and asks kill-matrix and drop-audit reviewers to expect a one-time baseline shift, asserting no defect introduced by the diff; the cited comparison law exists at docs/solutions/tooling-decisions/contract-law-reads-its-baseline-from-the-version-commit.md.
1 0a6e8392 20261013-154101-f25eebca 8 P3 Mutation lane passes while the score gate never fires (docs/adr/0004-mutation-selects-workflow-files-only.md:47) rejected Rejected by the validator: The finding only says the score table is evidence rather than an enforced gate, and its cited behavior is documented (docs/solutions/workflow-issues/mutation-lane-green-while-every-job-failed.md:32 'exits 0 when 0 of N packages have a report' and :37 'A low score alone never fails the job', matching shard-run.ts:119's log-only ShardChildVerdictFailed branch), so it claims no wrong behavior in this diff.
1 0a6e8392 20261013-154101-f25eebca 9 P3 Dogfood mutate list keeps the installed-plugin dual-engine config shape (packages/stryker-js/stryker.config.ts:15) rejected Rejected by the validator: The finding says 'the risk is unchanged here' because the diff removes a glob rather than touching plugin wiring, which the diff confirms (installedPlugin/sharedConfig lines are untouched in all three configs), so it introduces no defect to confirm.
1 0a6e8392 20261013-154101-f25eebca 10 P3 Known pattern: a scope-only mutate change leaves the verdict cache intact (packages/stryker-js/stryker.config.ts:15) rejected Rejected by the validator: The finding states 'No action required' and its code claim checks out -- packages/stryker-js/src/verdict-semantics.ts:97 defines scopeOptionKeys containing mutate, spread into unfingerprintedOptionKeys -- so the scope-only change is cache-safe and nothing is alleged to be wrong.
2 f95ba450 20261013-163310-edec2b60 1 P2 Diff silently falsifies premise rows in two in-flight plans (packages/stryker-js/stryker.config.ts:16) confirmed Fixed in 8bb7669e
2 f95ba450 20261013-163310-edec2b60 2 P3 Superseded ADR-0002 left with no reciprocal supersession note (docs/adr/0004-mutation-selects-workflow-files-only.md:5) rejected Rejected by the validator: Inspected: ADR-0002:16 does still assert the two-glob set and ADR-0001:9 does show the reciprocal-note precedent, but the root context in force for this PR rules ADR-0002 immutable (ADR-0002 stays byte-identical, per finish-input.json coverage_notes and intent), and ADR-0004 declares the supersession only on the superseding side (docs/adr/0004-mutation-selects-workflow-files-only.md:5 supersedes frontmatter and :12 inventory of ADR-0002's falsified lines), so adding the note is a preference the ruling forbids, not a defect introduced here.
2 f95ba450 20261013-163310-edec2b60 3 P3 Mutate glob change does not bust incremental-report identity (packages/stryker-js/src/verdict-semantics.ts:97) rejected Rejected by the validator: Inspected: the diff is 5 files (three stryker.config.ts deletions, docs/adr/0004-mutation-selects-workflow-files-only.md, .changeset/mutation-workflow-files-only.md) and touches neither packages/stryker-js/src/verdict-semantics.ts nor admit-incremental-report.workflow.ts; grep of ADR-0004 for cache|incremental|rebuild|digest returns no matches and the changeset asserts only that the run grades workflow files, so the alleged rebuild-because-the-cache-key-covers-stryker.config.ts claim exists only in PR-body prose (not the diff), while .github/workflows/mutation.yml:63 does hashFiles packages/**/stryker.config.ts into the restore key.
2 f95ba450 20261013-163310-edec2b60 4 P3 Workflow-only selection copied in three configs, not one rule (packages/stryker-js/stryker.config.ts:16) rejected Rejected by the validator: Inspected: the base already carried the identical five-entry mutate arrays in all three configs (git show 7b6b827:packages/stryker-js/stryker.config.ts:15-21 vs the current file) and this diff deletes only one line from each, so it introduces no duplication; packages/toolchain/stryker-config/lib/base.d.ts exports sharedConfig with no mutate field, and ADR-0004:21's One-rule driver (same selection in all three) holds in the code, leaving hoisting as a refactor preference rather than a behavior defect.
3 8bb7669e 20261013-164851-b9bbf8e1 1 P2 Schema-operation laws lose their only mechanical enforcement (packages/stryker-js/stryker.config.ts:13) rejected Rejected by the validator: The diff's own ADR-0004 records this exact consequence at docs/adr/0004-mutation-selects-workflow-files-only.md:41 ("Bad, because the pure operations ADR-0002 places in schema files are no longer graded by mutation ... Their in-source laws still run in every test run"), its line 16 records Ryan's 2026-10-12 ruling and its line 12 expressly supersedes ADR-0002:42's break-threshold sentence, so the three configs behave as their documentation claims and the finding restates a documented, ruled tradeoff rather than a defect.
3 8bb7669e 20261013-164851-b9bbf8e1 2 P2 Empty mutate selection passes the dogfood lane unguarded (packages/stryker-js/stryker.config.ts:16) rejected Rejected by the validator: No covered project's mutate set is empty at this head - packages/stryker-js-vitest-runner/src holds 3 *.workflow.ts, packages/stryker-js-typescript-checker/src holds 12, and packages/stryker-js/src holds dozens, while .github/workflows/mutation.yml:38 sets PROJECTS to exactly those three - so the silent-pass condition is unreachable here, the exposure is a property of any mutate list rather than something this diff introduces, and ADR-0004:22 already names the hazard with its policy answer, leaving the request a forward-looking observability preference.
3 8bb7669e 20261013-164851-b9bbf8e1 3 P3 ADR-0004 undercounts the docs carrying the old two-glob premise (docs/adr/0004-mutation-selects-workflow-files-only.md:43) confirmed Fixed in 7ca2d825
3 8bb7669e 20261013-164851-b9bbf8e1 4 P3 Mutation heavy lane has no runner-minutes cost header (.github/workflows/mutation.yml:1) rejected Rejected by the validator: git diff --name-only 7b6b827..8bb7669 lists only .changeset/mutation-workflow-files-only.md, docs/adr/0004-*.md and the three stryker.config.ts files, so .github/workflows/mutation.yml is untouched by this diff and its opening lines (name: Mutation at :1, no comment header before on:) are the same at base 7b6b827 - a pre-existing unchanged-code gap the finding's own evidence concedes ("the header is absent at review base 7b6b827 as well").
3 8bb7669e 20261013-164851-b9bbf8e1 5 P3 Mutation score rises while graded surface shrinks; budget baseline goes stale (packages/stryker-js/stryker.config.ts:16) rejected Rejected by the validator: The population change the score shift follows from is stated in this diff's own changeset (.changeset/mutation-workflow-files-only.md:7 "now grades workflow files only, not schema files") and ADR-0004:42 records that baselines taken from main's mutant set shift once, while .github/workflows/mutation.yml:356 confirms the budget gate is report-only and passes the job even on BUDGET_EXCEEDED, so no incorrect behavior follows and the residual asks (one ADR/changeset sentence plus re-deriving .stryker/budget-baseline.json) are a documentation and tuning preference; the cited score deltas (49.87->51.70 etc.) carry no run id and were not measured here.

Round 1 #1: ADR-0004 now dates the schema glob to 1cf39f2b (2026-09-26) and states that ADR-0002's commit changed no config. Round 1 #2: ADR-0004 scopes itself to the three projects and records that #337 took test/e2e-core out of every mutation lane. Round 2 #1 and round 3 #3: ADR-0004 lists every dated plan and brainstorm that states the old two-glob premise, with the git grep that reproduces the list. An earlier round on f95ba450 was dispatched to the wrong run directory and was killed before any lens returned; its replacement is round 2.

CI on 7ca2d825: every check passes: CI run 38435817616 (check, lane, checker-parity-changes, the six checker-parity legs and checker-parity-report; cache-sweep skipped by design), Changeset Check, Commitlint and Nix (both flake-output legs).

Merged 2026-10-13 18:05 UTC as 4c17b199fd34a99408a5b11a0741f36fe1db5e17, from head 7ca2d825, the head this receipt reviewed.

…ects

Ryan's ruling of 2026-10-12 22:47 EDT: mutation selects *.workflow.ts
only, and *.schema.ts is never in a mutate set. The mutate globs of
packages/stryker-js, stryker-js-vitest-runner and
stryker-js-typescript-checker drop src/**/*.schema.ts. On main 2512017
that removes 62 schema files (53, 3, 6) and keeps 101 workflow files
(86, 3, 12). Main's Mutation run 38338484710 scored 2,213 mutants in those
schema files.

Every project still has workflow files, so no config is deleted. The
effect-schema-declarations ignorer stays: in that run it marked 744
mutants inside workflow files Ignored (tagged-class tags and fields,
symbol descriptions, tagged-struct tags, class ids, annotations).
Without it, those 744 would be scored as mutants no test can kill.

ADR-0004 records the rule and supersedes ADR-0002's mutation-selection
statements. ADR-0002 itself is unchanged. test/e2e-core/stryker.config.ts
is untouched: Stream D's dissolution removes it from Mutation.
…o its three projects

Full-path review of #333 at 0a6e839 confirmed two findings. ADR-0004 said ADR-0002 widened the mutate set to schema files; git log -S shows the glob entered with the cell-architecture rewrite 1cf39f2, which also added ADR-0001, and ADR-0002 changed no config. ADR-0004 also stated its rule for every dogfood config while test/e2e-core, Mutation's fourth project, keeps its schema glob; the rule, driver and Confirmation now name the three covered projects. The changeset says the same in consumer terms.
…lane

After merging main, Mutation's and the kill matrix's project lists name only the three packages, so ADR-0004 no longer says test/e2e-core is still graded.
Full-path review of #333 at f95ba45 confirmed that two in-flight plans state the two-glob mutate set as fact (plan v3:45, stream-files plan:110). ADR-0004 now records both as a Neutral consequence for their owners to re-derive; it edits neither plan.
Full-path review of #333 at 8bb7669 confirmed that ADR-0004 named two of the dated documents stating the two-glob mutate set; git grep finds six documents at nine lines. The bullet now lists all of them and the grep that reproduces the list.

@ryanleecode ryanleecode left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Root verdict on 7ca2d82: fresh full-path review (run 20261013-170535-66c6722d), Ready to merge, every lens and the validator on DeepSeek V4.1 Flash. The seven-pack ledger has one violate row: ci-wall-clock heavy-lanes-state-their-daily-minutes, a missing cost header in mutation.yml. The validator rejected it because this diff doesn't touch mutation.yml, and K adds the header in its mutation.yml nightly PR. Earlier-round fixes are named commits on the head. ADR-0004 supersedes ADR-0002's mutation selection, and ADR-0002 is unchanged. CI is green, 0 threads, and no file overlaps the 2 main commits since its base.

@ryanleecode
ryanleecode merged commit 4c17b19 into main Oct 13, 2026
17 checks passed
@ryanleecode
ryanleecode deleted the mutation/workflow-only-selection branch October 13, 2026 18:05
systemfsoftware-maker added a commit that referenced this pull request Oct 13, 2026
…t, wire-text stream decode

Takes main through b08379d (#333, #343, #339, #320, #346, #344, #286, #348,
and the gate per-project thresholds fix).

Conflicts:
- stryker-outputs.ts: main's labeled output list (#320) keeps this branch's
  two extra exclusions, each with its own label for the --ignorePatterns
  help: the incremental file's temp siblings (the killed-run fix) and an fs
  verdict store's directory. An output may now name several files.
- instrument.cell.ts, plan-instrument.cell.ts: main's instrument-phase
  placement (#348), carrying this branch's fileContentDigests.
- plan-request.cell.ts: main's planStageCell; the costs and probe schemas
  this branch retired stay gone, and the plan reads the one incremental file.
- program-digest.integration.test.ts: this branch's config/program digest
  scenarios plus main's importerCheck scenario.
- e2e-harness.fixture.ts, run-artifacts.fixture.ts: main's RunEventWireText
  decode (#339); the store-entry count stays and the checkpoint reader, with
  no caller left, does not come back.

#286 added a local configKeyOf in ts-compiler.handle.ts, so this branch's
schema export of that name becomes checkerConfigKeyOf.
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.

2 participants