Repository navigation
Open
Labels
app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)Package/app: mcpx (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workMedium: expected under 1 day of workenhancementNew feature or requestNew feature or requestkind/testTest coverage, test infrastructure, or test-only fixesTest coverage, test infrastructure, or test-only fixesmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)Ordinary priority (the default)queue/blockedQueue or user escalation stateQueue or user escalation statesource/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobstatus/blockedQueue or user escalation stateQueue or user escalation statetask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this itemuser/escalatedQueue or user escalation stateQueue or user escalation statework/assignedQueue worker lifecycle stateQueue worker lifecycle state
Description
mcpx testing: implement the feature-coverage guard (runtime ledger, Approach C) — follow-up to #1978
Filed from queue task 3273 / PR #2667, per #1978 acceptance criterion 2 (the design-pin path).
Design (pinned in PR #2667, pkgs/mcpx/docs/testing/feature-inventory.md)
- Enumerate from:
api.Ops(),cli.Commands()(+App.Handlers()keys for aliases),settings.Registry(), and the plugin op surface (ops.gen.ts, generated — assert freshness in the same guard). - Hook points: the e2e client call path (log op name per call) and CLI dispatch (log resolved command); both keyed by current
t.Name(). TestMain: appends{test, kind, name}JSON lines to a ledger file.- Guard test: fails CI when a registry entry has no ledger row and no exemption-file entry (one reason per entry). Must fail on a fabricated unexercised op/command/setting and pass on main.
- Build on
scripts/gotest-report.py+MCPX_GO_TESTSrecord conventions for skip/record handling; do not invent a second record system.
Acceptance
- Ledger hooks +
TestMainwriter land inpkgs/mcpx/internal/e2e(harness) with no change to what existing tests assert. - Guard test (style of
TestEveryDeclaredRouteAnswersOverTheSocket) compares ledger vs registries + checked-in exemption file; demonstrably fails on a fabricated unexercised op/command/setting (fixture or CI output cited on the PR) and passes on main. - Exemption file checked in with one reason per entry; every exemption names the feature and why it has no behavioural integration test.
- First guard run files the per-feature-group gap issues that mcpx testing: inventory every feature against its integration tests, and guard that each has one #1978 acceptance criterion 3 requires — one issue per feature group (not per op), linked from mcpx testing: inventory every feature against its integration tests, and guard that each has one #1978. (Deferred from mcpx testing: inventory every feature against its integration tests, and guard that each has one #1978 deliberately: until the ledger exists, every group is trivially unproven, so gap issues filed earlier would only restate the inventory.)
- Verification in GitHub Actions CI on the PR, per repo policy.
Refs #1978 (parent item), #1905 (tracker), #1971 (guard policy), #309.
Acceptance criteria
- The feature-coverage guard (runtime ledger, Approach C from mcpx testing: inventory every feature against its integration tests, and guard that each has one #1978) runs in CI for pkgs/mcpx and fails when a feature ships without ledger coverage.
- The guard's verdict is visible on PRs touching mcpx features (check output names the uncovered feature).
- Existing mcpx features are baselined: the guard passes on current main with any pre-existing gaps recorded as explicit ledger entries, not silent exemptions.
Metadata
Metadata
Assignees
Labels
app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)Package/app: mcpx (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workMedium: expected under 1 day of workenhancementNew feature or requestNew feature or requestkind/testTest coverage, test infrastructure, or test-only fixesTest coverage, test infrastructure, or test-only fixesmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)Ordinary priority (the default)queue/blockedQueue or user escalation stateQueue or user escalation statesource/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobstatus/blockedQueue or user escalation stateQueue or user escalation statetask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this itemuser/escalatedQueue or user escalation stateQueue or user escalation statework/assignedQueue worker lifecycle stateQueue worker lifecycle state
Activity
dezren39 commentedon Oct 31, 2026
Intake review
Fleet monitor intake pass (2026-10-31).
Related: Follow-up to #1978; the merged PRs a search surfaces (#2687, #2668) are the #1978 ledger work itself, not this guard — verified live, not already solved.
Notes: Had kind/test + priority but no acceptance criteria, effort, status, or app label; now set. The body (see issue) scopes Approach C as chosen, so this is implementation, not design.
Risks: A coverage guard that baselines sloppily becomes decoration — the baseline must enumerate pre-existing gaps explicitly so new gaps are the only failures.
Suggested approach: Implement the guard against the #1978 runtime ledger, baseline current features with named gap entries, wire it into the mcpx CI path.
dezren39 commentedon Oct 31, 2026
Intake review — correction
Fleet monitor correction (2026-10-31): one claim in my intake comment above is retracted. It said the merged PRs a search surfaces "(#2687, #2668) are the #1978 ledger work itself". Verified directly via the GitHub API: PR #2668 does not exist, and PR #2687 is "mcpx: exclude e2e and settings from the sandbox check phase (#2686)" — a different change. The design-pin PR for this issue is #2667 ("mcpx: run plugin bun tests in CI, add feature-test inventory (task 3273, #1978)"), as the issue body itself states.
What stands: no merged PR implements this issue's feature-coverage guard, so the issue is live; the acceptance criteria, labels, risks, and suggested approach in the intake pass remain valid.
78 remaining items
dezren39 commentedon Nov 3, 2026
🤖 Agent note · handed off
developing-today commentedon Nov 3, 2026
agent-note:v1
state: reviewed (coverage loop-back)
Coverage pass 2026-11-03, loop-back review: this issue was re-reviewed (drift / overlap / already-handled / stale / blockers / ordering) so every open issue in the four repos is reviewed and in the system. Verdict: still live; in the system as task 5588 (small_fix, claimed, priority 30) in repo-health-code-pilot. Labels audited and synced. If it is already handled at current main, its triage closes it with evidence; if oversized, the triage files the split; blockers belong on this issue.
Found via: coverage loop-back 2026-11-03
dezren39 commentedon Nov 3, 2026
🤖 Agent note · blocked / escalated