Skip to content

test(cli): kill the surviving mutants of the tools context - #807

Merged
blafourcade merged 5 commits into
nextfrom
test/tools-survivors
Sep 9, 2026
Merged

test(cli): kill the surviving mutants of the tools context#807
blafourcade merged 5 commits into
nextfrom
test/tools-survivors

Conversation

@blafourcade

Copy link
Copy Markdown
Contributor

🎯 What & why

First pass of #799: the tools mutation scope (registry, capabilities, formats; the five profiles have their own scopes) held at a floor of 76 with 232 surviving and 120 uncovered mutants of 1777. Score 80.2 → 96.8, floor 76 → 94.

🛠️ How it works

  • 128 new its, one intention each in describe blocks by responsibility: four new files (mcp-format, command format, registry, the abstract native-plugin CLI adapter) and every capability, hooks-merge, catalog, registration and host-registry reader test extended.
  • Every new test was made red first by hand-applying the mutation it kills; the 128 red lines are recorded, sample in the commit bodies.
  • No src/ change: no mutant revealed a defect.
  • 56 survivors left alive with a reason each in the issue thread (a split that never yields an empty array, an assigned undefined dropped by the serializer, guards the constructor already enforces, a never branch the type-honesty gate refuses to reach). Two hand-verified kills are recorded Survived by stryker's per-test attribution, the artefact test(cli): kill the surviving mutants of tools, telemetry, kernel, runtime and the profile pockets #799 names.
  • One lesson folded in: a capability constructed at describe level turns every constructor-throwing mutant into a collection failure recorded Survived; those constructions moved inside it.

🧪 How to verify

  • cd cli && node scripts/run-mutation.mjs tools --force → score ≥ 94.
  • git diff --stat origin/next...HEAD -- cli/src → empty.
  • Locally green: typecheck, lint (868 files), arch (126), knip, unit+integration (4434), golden e2e, type honesty; hooks ran on every commit.

⚠️ Heads-up

Telemetry, kernel, runtime and the profile pockets named in #799 are not in this pass; the issue stays open for them.

🔗 Linked issue

Refs #799

✅ I certify

  • I DO CERTIFY I READ EACH LINE OF THE PULL REQUEST BECAUSE I AM A SOFTWARE ENGINEER, NOT A AI PUPPY.

🤖 Generated with Claude Code

https://claude.ai/code/session_011x4ms5qcGuZgYhCxfdHMUb

blafourcade and others added 3 commits September 9, 2026 19:39
…ts and registry

Tests written for the survivors stryker named in the tools scope's domain
layer: the mcp json-to-toml transform and user-prime merge, the command
frontmatter and path builders, the agents, rules, skills, commands, settings,
hooks and plugins capabilities, the registry's signal scan and activation
queries, the flat hooks merges, the marketplace catalog builders, the host
registration answers and the marketplace source conflict. Every test was
watched red under a hand-applied mutation before the source was restored.

Scope measured 80.2 before this pass (1358 killed, 67 timed out, 232 survived,
120 uncovered of 1777) and 96.8 after this lot and the infrastructure lot
(1687 killed, 34 timed out, 50 survived, 6 uncovered).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011x4ms5qcGuZgYhCxfdHMUb
AIDD-Session-Id: 4acc9a1c-19bc-4468-b8b6-e86644bcba60
…ugin CLI adapter

Tests written for the survivors stryker named in the tools scope's
infrastructure: the plugin CLI adapter's marketplace removal, source check,
declared verbs, failure messages and batch-shim spawn; the PATH lookup's
empty segments, quoting and host description; Claude's, Codex's and
Copilot's plugin registries at the edges of their shapes; and Claude's
marketplace registry on documents that are not objects, entries without an
install location and a dead path. Every test was watched red under a
hand-applied mutation before the source was restored.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011x4ms5qcGuZgYhCxfdHMUb
AIDD-Session-Id: 4acc9a1c-19bc-4468-b8b6-e86644bcba60
Measured 96.8 under run-mutation.mjs tools --force after the two test lots;
the floor sits two under the measurement, as the other scopes' floors do.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011x4ms5qcGuZgYhCxfdHMUb
AIDD-Session-Id: 4acc9a1c-19bc-4468-b8b6-e86644bcba60
blafourcade and others added 2 commits September 9, 2026 19:55
hasToolSignals joins its answers with node's own path.join, so on Windows the
registry test compared a backslash path against a slash literal and failed
there alone. The expected list is now built the same way the source builds
it; the intention of the test is unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011x4ms5qcGuZgYhCxfdHMUb
AIDD-Session-Id: 4acc9a1c-19bc-4468-b8b6-e86644bcba60
Brings in the catalog's recommended field under metadata. The marketplace
catalog test keeps this branch's new cases and next's two metadata-spelling
cases; nothing conflicted.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011x4ms5qcGuZgYhCxfdHMUb
AIDD-Session-Id: 4acc9a1c-19bc-4468-b8b6-e86644bcba60
@blafourcade
blafourcade merged commit 0388a9a into next Sep 9, 2026
36 checks passed
blafourcade added a commit that referenced this pull request Sep 9, 2026
…#808)

The coverage job's `apt-get update` fails a few times a day on the Google Chrome source the
runner image ships, whose mirror serves a stale index ("Hash Sum mismatch"), and the whole
job goes red before a test runs; it hit #804 and #807 within an hour. `expect` comes from
ubuntu's own archive, so the chrome source is removed before the update.


Claude-Session: https://claude.ai/code/session_011x4ms5qcGuZgYhCxfdHMUb
AIDD-Session-Id: 4acc9a1c-19bc-4468-b8b6-e86644bcba60

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
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