Repository navigation
Description
Follow-up to the gap analysis in #1718. This reviews the 100 most recent issues (2026-10-16 to 2026-10-22) and 100 most recent pull requests (2026-10-18 to 2026-10-22) for trends, and proposes proactive changes that remove whole classes of findings rather than individual items.
Volume profile
- Issues: 91 of 100 opened by the Hive agents; 88 closed as completed, 6 closed as not planned, 6 open. Title prefixes:
[quality]43,[architect]19,[sec-check]10,[guide]9,[scanner]6,[ci-maintainer]4. - Pull requests: 73 of 100 opened by the Hive agents; 85 merged, 12 closed unmerged, 3 open. 38 of 100 touch only
tests/. Median time to merge 3.4 h, p90 14.1 h. holdlabel: 17 PRs carried it; 6 merged, 8 closed unmerged, 3 still open. Every held PR was a test-only quality PR waiting on the ACMM human-review gate.
Trends and proposed actions
1. Per-file surviving-mutant issues are the dominant class
Since the mutation harness landed (#1731), each source file with survivors receives one issue and one PR (#1760, #1770, #1777, #1781, #1783, #1786). The latest scheduled full-tree run (39556947541) reports 611 survived and 102 no-coverage mutants across 39 files at 82.09 %, so roughly 35 more issue/PR pairs are queued up at the current cadence.
Action: kill the backlog in a handful of grouped PRs by area instead of one file at a time. The nine largest files hold 491 of the 713 remaining mutants:
| Mutants | File |
|---|---|
| 195 | scripts/lib/svg-active-content.mjs |
| 59 | scripts/lib/enduser-collector.mjs |
| 42 | scripts/lib/mdx-escape.mjs |
| 38 | scripts/lib/architecture-content.mjs |
| 37 | scripts/lib/mdx-active-content.mjs |
| 35 | scripts/lib/cncf-wp-api.mjs |
| 30 | scripts/lib/enduser-assets.mjs |
| 28 | scripts/lib/github.mjs |
| 27 | scripts/lib/enduser-landscape.mjs |
Once the full tree clears the break score, the scheduled run goes green and the quality agent stops discovering new files.
- Group A:
svg-active-content.mjs-- test: kill the surviving mutants in the SVG active content gate #1793 (82.1% to 97.5%) - Group B: MDX and architecture content (
mdx-active-content,architecture-content,architecture-pages,mdx-code-blocks) -- test: kill the surviving mutants in the MDX and architecture content gates #1795 (83.82% to 97.30%) - Group C: end user data sources (
enduser-collector,enduser-assets,enduser-landscape,landscape-source) -- test: kill the surviving mutants in the end user data sources #1789 (80.48% to 93.31%) - Group D: external sources and safety (
cncf-wp-api,github,changelog,git-source,url-safety,uri-safety,project-assets) -- test: kill the surviving mutants in the external source and URL safety helpers #1790 (77.48% to 97.87%) - Group E:
src/components -- test: kill the surviving mutants in the site components #1794 (89.13% to 99.07%) - Raise
breakinstryker.config.mjs-- chore: raise the mutation break threshold to 90 #1799 (break 90; full tree is 96.24% after the group merges, run 39845001035)
Files already covered by open held PRs (#1782 mdx-escape, #1784 profile-image, #1786 validate-utils) are left to those PRs.
2. The hold gate is the bottleneck
Held PRs go stale and get superseded by a later agent PR (#1733 by #1735, #1655 by #1742), which accounts for most of the 12 closed-unmerged PRs. The ACMM level is Hive configuration maintained outside this repository.
Action for Hive maintainers: treat a PR that changes a single tests/*.test.mjs file and passes the mutation workflow as the low-risk class GOVERNANCE.md already describes, and let it merge without a human hold.
3. Architect duplication findings repeat the same shapes
19 [architect] issues report near-duplicates the check:duplication gate does not count: dedup helpers (#1738, #1750, #1766, #1774), freshness styles (#1669, #1681), dialog shells (#1690, #1723), toolbar (#1539, #1658). jscpd only counts exact clones at or above minTokens.
Action: lower minTokens and minLines in .jscpd.json once, run a single sweep of what surfaces, then lower the ceilings in scripts/check-duplication.mjs to the new baseline.
4. Documentation drift
9 [guide] issues report stale script, route or workflow names; CONTRIBUTING.md changed in 16 of 100 PRs and AGENTS.md in 8.
Action: extend the markdown reference test so every npm run <script> and every workflow name mentioned in a *.md file must exist in package.json or .github/workflows/.
5. Reopened and misfolded issues
Two issues had to be reopened (#1736, #1764) after a Hive agent folded an unrelated finding into them or a PR auto-closed them on an incidental mention.
Action: keep using Refs rather than closing keywords for partial PRs, and ask the Hive maintainers to stop folding findings on filename overlap alone.
Suggested order
2 (unblocks everything else), then 1 (removes the largest future stream), then 3 and 4 (each removes a class). Items 2 and 5 are Hive-side configuration and need the Hive maintainers rather than a PR here.
Activity
hivecommons-hive commentedon Oct 22, 2026
What to reply
/hive approve: go with the recommendation/hive decision <your instructions>: go ahead, following your instructions/hive help: show these againIf this issue is waiting only for reporter confirmation after a merged fix, the reporter or a maintainer can reply
/fixedinstead.Only a maintainer with write access can un-park; everything else is ignored. Full command reference: https://github.com/hivecommons/hive/blob/v5/src/docs/maintainer-commands.md.
test: match the paginated GitHub error message exactly
test: kill the surviving mutants in the end user data sources (#1789)
test: kill the surviving mutants in the SVG active content gate (#1793)
test: kill the surviving mutants in the MDX and architecture content …
mrbobbytables commentedon Oct 22, 2026
Full-tree mutation run on main after the five group merges (#1789, #1790, #1793, #1794, #1795): https://github.com/cncf/endusers/actions/runs/39845001035
Of the 167 remaining survivors, 64 sit in the three files the held PRs are already raising (#1782
mdx-escape.mjs42, #1786validate-utils.mjs16, #1784profile-image.mjs6). The rest are the equivalent mutants documented in each group PR. #1799 raisesbreakto 90, set to clear the weakest file on main rather than the full-tree figure, since the pull_request lane scores only the files a change touches.mrbobbytables commentedon Oct 22, 2026
All checklist items are complete: the five group PRs and #1799 (break 83 to 90) are merged, and the three held mutant PRs (#1782, #1784, #1786) are released into the merge queue so the last files under the gate are raised too. Closing; the next scheduled full-tree run on Wednesday will confirm the 96%+ baseline. Hive digest #23 should reconcile its per-file surviving-mutant findings against this.
chore: mark the verified equivalent mutants as ignored and exclude Ar…