Repository navigation
Coverage tiers: manifest, mutation scope, native coverage and agent guidance - #76
Merged
Merged
Conversation
…utomatic analysis
|
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.




Coverage tiers: manifest, mutation scope, native coverage and agent guidance
Four units that let a consumer declare its feature coverage tiers once, have the local
gate enforce them through the project's own Vitest, and give agents bounded guidance
without the gate ever depending on that guidance.
What is in it
coverage-tiers.jsonand one Go resolver (tiers.Resolve, read-onlydharness policy --root)c2ac282,b86b56f,cddacb754f17db,379369d,78678584b93674,21da2cf,c874e5e,90cd824,fcbc396go:embed) with copies for.claude/and.agents/, plus one bounded managed region inAGENTS.md/CLAUDE.md6c22793,3869c4aAlso included: the raw-export parser (
983b48a), a scope correction so coverage adoption staysinside the existing workflows (
99b1eff), and the campaign lessons indocs/learning-log.md(
cc6d95c).Mutation evidence
internal/setup/assets/coverage-tiers/runtime.mjsinternal/setup/coverage_tiers_config.gointernal/setup/coverage_tiers.go+ runtime accessorinternal/tool/coverage_workflow.gointernal/setup/coverage_tiers_skill.goNo exclusion, suppression or threshold change was used. The 29 surviving coordinates are
equivalent mutants, each verified before it was accepted:
113:13— equality of the two first-occurrence indices needs one marker to be aprefix of the other; all three marker pairs are prefix-free.
414:43,554:4,559:44,561:4— an unreachable conjunct (coverageTiersWiredalready fails closed on an empty native config), a
SplitAfterpiece that can only be emptylast, a line-ending offset that cannot differ for one newline at the end, and a
breakthat isthe loop body's last statement.
execFileSyncerror shapes itself: no shape carries both a truthycodeand a numericstatus; every shape reaching the later lines has a decodedstderror returns earlier; thespawn options and the
Number.isFinitedisjuncts are unobservable or dead. Two boundaries arestated rather than hidden:
456:46and the two array fallbacks are equivalent relative to apolicy answer's contents, not by construction.
196:72— a capacity hint whose mutant computes zero while the directory and documenttables have equal length.
Each entry carries its argument and the change that would invalidate it; the full ledger stays in
the session evidence and can be committed if you want it in-tree.
Test plan
go test -count=1 ./...,go vet ./...,go build ./...,gofmt -l .,git diff --check— green on the final bytes, with the repository gate (gofmt, vet and the suite over the materialised index) run on every commit.ditto staged(Go scopes) and StrykerJS (the runtime asset) at the unchanged 1.00 threshold.dharness checkexits 0 on an empty staged index; a realgit cloneof the tracked tree runs the hook at 100% coverage and fails once a new unimported CORE file appears, with no secondsync.go test ./... -race, which the local gate deliberately omits; that is the one check this PR cannot show locally.Declared limits
253line do not exist on this host.Merge
Multi-unit branch: rebase, never a merge commit, and the title above is deliberately not a
conventional commit so a future squash cannot make release-please count an entry twice.