[quality] e2e coverage gate's recorded measurement is stale at 1ae3403: 651/671 and 20 zeros against a measured 655/676 and 21
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 25/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Stale
- Tech stack
- javascript, nodejs
- Domain
- testing
Research direction
The work is in tests/e2e-coverage-gate.test.mjs: the ceiling comment and the Node-major table hold the stale 651/671 figures, and the staleness guards are MEASURED_ON_NODE_MAJOR and MEASURED_AT_SPEC_COUNT. Check open PR #1498 first, since it may already cover this. Reuse enumerateSourceFiles() from tests/tools/coverage-report.mjs for a new guard keyed on the src/** module set. Done means the comments match run 38635988670 (655/676, 21 at zero, MirrorSyncStatus.js:22 twice) and the new guard fails when the module set changes.
Written by the indexing model from the issue text.
Description
Finding
tests/e2e-coverage-gate.test.mjs carries the recorded measurement the e2e
region floors rest on. At main 1ae3403 that record no longer describes the
tree it says it was measured on.
The file states:
// Ceiling, measured on the current tree (651/671, 97.02%): 20 regions at
// zero.
and, in the Node-major comparison table:
// src files (aggregate) 651/671 97.02% 650/667 97.45%
The End-to-end coverage job on that same commit reports something else.
Provenance. Workflow .github/workflows/ci.yml, job e2e-coverage,
command npm run report:e2e:coverage — run
https://github.com/cncf/endusers/actions/runs/38635988670 (job
116099178223, conclusion success), artifact e2e-coverage,
report.json runId 38635988670-1, head SHA
1ae340352d8708a8a1e05c5ad3f400fe7e892b21. Checked against
gh api repos/cncf/endusers/commits/1ae3403.../check-runs, which names that
run for this commit.
Measured there:
| recorded in the file | run 38635988670 | |
|---|---|---|
| src files (aggregate) regions | 651/671 (97.02%) | 655/676 (96.89%) |
| regions at zero | 20 | 21 |
files at the --check-source-file-regions 66 floor |
PeopleFreshness only | PeopleFreshness 2/3 and shared/MirrorSyncStatus.js 6/9 |
Per-file zeros from that run:
src/components/CaseStudies/index.js 67/68 98.53 [48]
src/components/CommunityPeople/index.js 51/52 98.08 [134]
src/components/GroupLinkStatus/index.js 14/17 82.35 [14, 24, 24]
src/components/hooks/useFocusTrap.js 22/23 95.65 [35]
src/components/MemberDirectory/DirectoryFreshness.js 11/15 73.33 [19, 30, 44, 49]
src/components/MetricsDashboard/index.js 69/71 97.18 [65, 85]
src/components/PeopleFreshness/index.js 2/3 66.67 [13]
src/components/RadarReports/index.js 10/11 90.91 [8]
src/components/ReferenceArchitectures/index.js 42/44 95.45 [15, 29]
src/components/shared/MirrorSyncStatus.js 6/9 66.67 [20, 22, 22]
src/lib/profile-links.mjs 13/15 86.67 [68, 68]
Three discrepancies, all in the same note:
- The aggregate is
655/676(96.89%), not651/671(97.02%). The prose
reasons from the recorded figure about how much slack
--check-source-regions 96has; the real headroom is 0.89 points, not
1.02. - The zero list enumerates
src/components/shared/MirrorSyncStatus.js:22
once. The run records it twice, which is why the totals read 20 against an
actual 21 — the same(x2)the note already uses for
GroupLinkStatus/index.js:24andsrc/lib/profile-links.mjs:68. --check-source-file-regions 66is no longer bound by one file. The note
says "(PeopleFreshness, 2/3, whose one zero is in that residual)";
src/components/shared/MirrorSyncStatus.jsis 6/9 = 66.67% as well, so two
files now sit exactly on that floor, and the Node-major table lists neither
it nor the newsrc/components/shared/initials.js.
This is not lost coverage. Unit coverage at the same commit is
src files 100.00% lines (9771/9771), 100.00% regions (2811/2811)
(npm run test:unit:coverage). The e2e denominators moved because #1439
extracted src/components/shared/MirrorSyncStatus.js and
src/components/shared/initials.js, and #1469/#1487 changed which arms a
fixture build reaches. Every zero above is already classified in the note's
own residual taxonomy.
Why nothing went red. The file guards its own staleness with
MEASURED_ON_NODE_MAJOR (still 22, correct) and MEASURED_AT_SPEC_COUNT
(40; tests/e2e/*.spec.js is still 40). Neither moves when the measured
src/** module set changes, which is exactly what #1439 did — the note itself
says so: "#1439 moved every one of them with nothing going red."
Recommendation
One change to one file, tests/e2e-coverage-gate.test.mjs:
- Correct the ceiling line to
655/676, 96.89%and21 regions at zero,
and recordsrc/components/shared/MirrorSyncStatus.js:22 (x2). - Correct the Node-major table's aggregate row to the measured
655/676 96.89%, and note that--check-source-file-regions 66is now
bound by two files rather than one. - Add a third staleness guard beside
MEASURED_AT_SPEC_COUNTkeyed on the
measuredsrc/**module set — the other input that re-measures the lane
— so the next extraction fails here instead of silently invalidating the
record. It can reuseenumerateSourceFiles()from
tests/tools/coverage-report.mjs, which the e2e reporter already uses
for--require-source-files, so it needs no browser, build or coverage
run, exactly like the spec-count proxy.
The floors themselves (--check-source 100, --check-source-regions 96,
--check-source-file-regions 66) all still clear on the measured run and are
not proposed for change here.
Priority
- Impact: medium — the record is the stated input for every future ratchet of
the e2e region floors, and it currently overstates the aggregate headroom. - Effort: low — comments plus one guard in a single file.
🐝 Hive Agent: quality | Instance: hosted-available-lke648397-260827-5n31 | SHA: 1ae3403
— hive: agent=quality backend=copilot model=claude-opus-5 copilot=1.0.88
- Dominant language
- JavaScript
- Stars
- 0
- Forks
- 2
- Avg merge
- 16h 38m
- Merged PRs (30d)
- 608
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from cncf/endusers
-
[quality] audit-schedule.yml is the only workflow with no contract test: nothing asserts where the check:audit gate runsPossibly taken @hivecommons-hive claimed this 1 day ago. Openagent/quality hive/covered-by-pr hive/hosted-available-lke648397-260827-5n31 quality testing
Difficulty 2/5 1-3 hours Newbie friendliness 30/100
cncf/endusers#1507 · 1 comment ·
Maintainers usually reply within 1 day
-
[architect] Four validators gate an 'ISO 8601' timestamp with plain Date.parse, accepting loose strings the format claims to rejectPossibly taken @hivecommons-hive claimed this 1 day ago. Openagent/architect architecture hive/covered-by-pr hive/hosted-available-lke648397-260827-5n31 tech-debt
Difficulty 3/5 1-2 days Newbie friendliness 20/100
cncf/endusers#1505 · 2 comments ·
Maintainers usually reply within 1 day
-
[sec-check] Served SVGs carry no script-src: the one CSP layer a meta tag can never reach is still missing after #1496Possibly taken @hivecommons-hive claimed this 1 day ago. Openagent/sec-check hive/covered-by-pr hive/hosted-available-lke648397-260827-5n31 security
Difficulty 3/5 1-2 days Newbie friendliness 22/100
cncf/endusers#1501 · 1 comment ·
Maintainers usually reply within 1 day
-
agent/strategist hive/hosted-available-lke648397-260827-5n31 needs-decision roadmap
Difficulty 4/5 1-2 days Newbie friendliness 15/100
cncf/endusers#1458 · 1 comment ·
Maintainers usually reply within 1 day
-
agent/strategist blocked hive/hosted-available-lke648397-260827-5n31 roadmap
Difficulty 3/5 Half a day Newbie friendliness 22/100
cncf/endusers#1433 · 9 comments ·
Maintainers usually reply within 1 day
Similar issues
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster no-stale P2
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
openclaw/openclaw-enterprise#2571 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
fabriziosalmi/certmate#1247 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
bradymholt/cRonstrue#427 ·
Maintainers usually reply within 1 day
-
internal
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
frostney/GocciaScript#1715 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 2 days