Repository navigation
Description
Maintainer decision needed: cross-chunk browser-region attribution
Re-scoped following the maintainer-approved prioritized queue review on
2026-10-21. This is no longer a request for more data-shape fixture coverage
or a higher browser-region floor.
Superseded scope
The original issue described 20 reported zero-count regions as 20 browser-unreached
branches. The discussion corrected that interpretation, and some of the proposed
fixtures already exist. Existing DirectoryFreshness work landed in #1717.
ADR 0007
is authoritative:
- Unit-covered guards selected only by absent, null, empty, or malformed build-time
data do not require additional browser coverage. - Browser findings must identify a state an end user can reach on a production
build. - The browser gate remains 100% source lines and 96% source regions.
The original per-component fixture checklist and proposed 100% browser-region
requirement are withdrawn. PR #1742 is not the completion condition for this issue.
Evidence to evaluate
- Revised per-region analysis:
at the reported revision, 11 of the 20 regions have cross-chunk execution
evidence and 9 remain unproven by that analysis. "Unproven" does not mean
"unexecuted." - Subsequent PeopleFreshness correction:
its existing overlay already selects the guard, and overlapping source-map
spans prevent the proposed witness test from crediting it. - Folded reporter proposal:
consider retiring a zero-count region when another chunk maps an enclosing
positive region with no overlapping zero.
Earlier assertions that 19 regions were proven executed are superseded by the
narrower analysis above. The proposed reporter rule is not accepted merely
because it increases the percentage: an enclosing mapped range may not prove that
a particular branch survived compilation and executed.
Decision and completion criteria
- A maintainer decides whether the current conservative attribution rule
should remain, or whether a stricter cross-chunk witness rule warrants
implementation. - Any accepted rule distinguishes actual branch execution from tree-shaken
code and source-map span overlap, with positive and false-credit regression
cases. - Any implementation is checked against the repository-pinned Node major and
a captured full browser lane; evidence identifies the revision. - The existing coverage thresholds remain unchanged.
If no sound alternative is demonstrated, close this as not planned and retain the
documented conservative reporting limitation. Do not mark it completed solely from
an agent "done" label or a green fixture PR. No reporter implementation or
coverage-policy reversal is authorized by this re-scope.
Activity
hivecommons-hive commentedon Oct 21, 2026
🛠️ Hive agent
quality(hive hosted-available-lke648397-260827-5n31) started work on this issue at 2026-10-21T07:19:19Z. A pull request referencing this issue supersedes this mark; it lapses on its own at 2026-10-21T09:19:19Z if none appears.hivecommons-hive commentedon Oct 21, 2026
The premise does not hold: 19 of these 20 regions are executed by the browser
I reproduced the full lane locally at
3bbac0d(Node v26.12.0, Playwright chromium,npm run build:e2e:coverage→npm run test:e2e:coverage→npm run report:e2e:coverage,362 passed) and got the same list this issue reports — 97.05%, 657/677
src filesregions,the identical 20 lines. So the measurement reproduces.
What does not hold is the reading of it. I instrumented the reporter's own attribution
loop to record, for every uncovered region, which build's script executed the region's lines
without recording a zero at the region's span — i.e. which build actually took the arm:
shared/MirrorSyncStatus.jsshared/MirrorSyncStatus.jsshared/MirrorSyncStatus.jsMemberDirectory/DirectoryFreshness.jsMemberDirectory/DirectoryFreshness.jsMemberDirectory/DirectoryFreshness.jsMemberDirectory/DirectoryFreshness.jsPeopleFreshness/index.jsshared/OrgAvatar.jsshared/OrgAvatar.jsshared/ProfileDialogShell.jsshared/ProfileDialogShell.jslib/profile-links.mjslib/profile-links.mjsRadarReports/index.jsMetricsDashboard/index.jsMetricsDashboard/index.jsCaseStudies/index.jsCommunityPeople/index.jsGroupLinkStatus/index.jsThree independent confirmations that this is not an instrumentation artefact:
uncoveredLines.DirectoryFreshness.js:29holds nothing but the plain-text'cncf/landscape'arm, and itis a covered line.
tests/e2e/fixtures/data-variant/case-studies.jsonis already recorded intests/e2e-data-fixture-validity.test.mjsas producingcaseStudies must be a non-empty array;data-variant/community-people.jsonis recorded as"empties fetchedAt to reach both return-null arms of PeopleFreshness";
data-no-revision/members.jsonanddata-no-revision/metrics.jsonsay in so many words thatthey exist to reach
DirectoryFreshness' plain-text arms, andtests/e2e/member-directory-freshness-unlinked.spec.jsasserts them on the no-revision pageand passes. The recommendation is largely a description of code already merged.
OrgAvatarneeds no fixture at all.ReferenceArchitectures/index.js:23renders<OrgAvatar logoUrl={...} name={organization} />with neitherwrapperClassNamenorlazy,so
wrapperClassName || styles.wrapperandlazy ? 'lazy' : undefinedtake the reportedarms on the live site on every render.
Why the report cannot see it
tests/tools/e2e-coverage-report.mjsstates the mechanism at the union, and it is not a bugthat fixtures can route around:
V8 emits only deviation ranges. Taking an arm produces no positive region at that arm's span,
so there is nothing for the union's
max(count)to raise the zero with.isContradictedRegioncannot retire it either, because its witnesses are deliberately confined to the script that
produced the zero.
tests/e2e-coverage-gate.test.mjsalready records this as settled, naming two of the files above:Consequences for this issue's plan
already reached. Writing more overlays for them adds Docusaurus compiles to the
e2e-coveragejob and moves the number by zero.--check-source-regions 100would permanently red-line a required job. The exact YAMLreplacement in the "Landing this" section should not be applied: 100% is not reachable while
the union works this way, so the gate would fail on the next run and keep failing. That item
is not blocked on the Workflows permission — it is wrong on its own terms. (The gate's floors
are also pinned to
MEASURED_ON_NODE_MAJOR = '22'; my 677-region denominator vs. the issue's680 on the CI artefact is that same runtime wobble, which is a second reason not to ratchet
from a local render.)
GroupLinkStatus/index.js:13, thegroupsData?.groups || []fallback, which no build takes. I have opened a hold-gated PR for it (branch
quality/e2e-group-link-status-absent-groups) adding agroups: nulloverlay on theexisting
data-no-revisionbuild plus a spec; full suite 363 passed.And a result worth having before anyone ratchets anything
I ran the lane again with that PR applied. The arm is now genuinely executed in the browser —
and the number went down:
src filesregionsFour more regions covered, five more in the denominator: the new build never runs the filter
callback on line 14, so it contributes fresh zeros that no sibling can retire, by exactly the
mechanism above. Adding fixture builds to chase this metric makes it worse, not better.
That is the strongest available evidence that the remaining 19 are a reporting defect rather
than a coverage gap.
Suggested re-scope
The actionable work is in
tests/tools/e2e-coverage-report.mjs, not in fixtures: let a region'szero be retired by a witness from a different script that mapped the same source file, covered
every line of the region, and recorded no zero touching those lines. The current per-script
confinement is deliberate and argued (a sibling bundle that tree-shook the arm away would emit
no zero either, and would be credited falsely), so loosening it is a correctness judgement with
a real failure mode — which is why I have not pushed it, rather than a thing to slip in behind
a fixture PR. It wants a maintainer's call.
Until that lands, the eleven file checkboxes above are not closeable and the floor cannot be
raised. Retitling this to the reporting defect, or closing it in favour of one, would stop it
reading as eleven days of fixture work that is already done.
Filed by quality agent (hold-gated mode).
🐝 Hive Agent:
quality| Instance:hosted-available-lke648397-260827-5n31| SHA:fe56991— hive: agent=quality backend=copilot model=claude-opus-5 copilot=1.0.88
hivecommons-hive commentedon Oct 21, 2026
stage 030-pr-in-progress → 010-actionable: actionable
hivecommons-hive commentedon Oct 21, 2026
The e2e lane was run, and the split is 11 / 9 — not 20, and not 1
Earlier work on this issue could not launch a browser, so both this issue's "20 unreached
regions" and the follow-up comment's "one real gap" were inferences from the report alone.
I ran the lane. The 20 split cleanly into 11 that a browser demonstrably executes and 9 that
nothing in the suite proves it reaches.
Reproduction
Debian 13, Node v26.12.0, at
3bbac0da.chrome-headless-shellneeds 20 shared librariesthe sandbox lacks and there is no root; I unblocked it by extracting the Debian
.debclosure to a prefix and pointing
LD_LIBRARY_PATHat it, which is worth knowing for anyoneelse who hits exit 127 here.
src files | 100.00 | 97.05 | 2279/2279 lines | 658/678 regions— the same 20 regions thisissue lists, so the local lane and the CI artifact agree.
Classification
Derived by dumping, per script artifact, every region
getRegionCoverageproduced for eachfile. A region counts as executed when some witness holds a positive region enclosing
the zero's span while recording no zero that overlaps it by column.
CaseStudies/index.js:52:38-52:44e2e-coverage-variant/f7c6a61fCommunityPeople/index.js:121:43-121:492de56b39MetricsDashboard/index.js:65:21-65:31e2e-coverage-variant/e30acc67MetricsDashboard/index.js:85:21-85:33e2e-coverage-variant/e30acc67RadarReports/index.js:7:40-7:46e2e-coverage-variant/b8512184shared/MirrorSyncStatus.js:19:20-19:32e2e-coverage-variant/b8512184shared/OrgAvatar.js:30:20-30:56a1931b28shared/ProfileDialogShell.js:61:14-61:68c1ce2b9cshared/ProfileDialogShell.js:62:14-62:71c1ce2b9clib/profile-links.mjs:68:9-68:236586f745lib/profile-links.mjs:68:23-68:316586f745GroupLinkStatus/index.js:13:29-13:40MemberDirectory/DirectoryFreshness.js:18:66-18:71MemberDirectory/DirectoryFreshness.js:29:12-29:28MemberDirectory/DirectoryFreshness.js:43:12-43:31MemberDirectory/DirectoryFreshness.js:48:8-48:41PeopleFreshness/index.js:12:25-12:30shared/MirrorSyncStatus.js:21:7-21:29shared/MirrorSyncStatus.js:21:24-21:29shared/OrgAvatar.js:36:26-36:45"No proof" is not "unreached": the witness test is deliberately conservative, and a sibling
zero overlapping the span disqualifies a witness that may still have executed the arm. Only
GroupLinkStatus/index.js:13is confirmed unreached in every artifact.The clearest single case
MetricsDashboard/index.js:65is(lifecycle?.cards || []).map(...), andtests/e2e/metrics-empty-collections-variant.spec.jsalready drives it — the variant overlayremoves
referenceArchitectureLifecycleentirely. Raw regions for line 65:The variant chunk holds
65:10-65:38at count 1 with no nested range over65:21-65:31.V8 emits a range only where a count deviates from its parent, so that text ran once: the
|| []arm executed. Its own zero at65:38-66:53is the.mapcallback never firing on anempty array — a different span. The real build's zero survives the union only because
isContradictedRegionconfines witnesses to the script that produced the zero.shared/OrgAvatar.js:30is the same shape across consumers:MemberCardalways passeswrapperClassNameso chunkc1ce2b9crecords30:20-30:56=0, whileReferenceArchitecturespasses none and chunka1931b28records28:7-30:56=16with nothingnested inside it.
What this means for the checkboxes
Eleven of this issue's file checkboxes cannot be ticked by fixtures, because the arms are
already executed — writing overlays for them adds Docusaurus compiles and moves the number by
zero. The remaining nine are the only ones where fixture work can help, and of those only
GroupLinkStatusis confirmed.PeopleFreshness/index.js:12looks like the next tractableone:
data-variant/community-people.jsonalready dropsfetchedAt, but it also empties everypeoplesection, so no profile lightbox renders and the component never mounts. An overlay ondata-no-revisionthat keeps the sections and drops onlyfetchedAtwould reach it, on anexisting build.
The final checkbox — raising
--check-source-regionsto100— should not be applied aswritten. With the reporter unchanged, 100% is unreachable and the required job would fail on
the next run.
The actionable change is in the reporter
Retiring a zero when another witness holds a positive enclosing region and no
column-overlapping zero moves
src filesregions from 97.05% (658/678) to 98.65%(658/667), retires exactly the eleven above, and leaves all nine unproven regions — including
the genuine
GroupLinkStatusgap — in the report. I have not pushed it: it contradictstests/e2e-coverage-report.test.mjs:358-381, which pins cross-chunk enclosure as notevidence, and reversing an argued decision inside a merge-blocking gate is a maintainer's call.
Filed separately with the exact patch.
🐝 Hive Agent:
quality| Instance:hosted-available-lke648397-260827-5n31| SHA:unknown— hive: agent=quality backend=copilot model=claude-opus-5 copilot=1.0.88
hivecommons-hive commentedon Oct 21, 2026
Folded finding. This was filed as a separate issue, but 1 open agent-filed issue (plus 3 closed as completed in the last 14 days) already cite
tests/tools/e2e-coverage-report.mjs, so it was folded into the oldest of them instead of opening another. Treat this issue as the tracker for that component: prefer one structural fix that covers every folded variant over a PR per variant.[quality] e2e region gate discards cross-chunk execution evidence: 11 of 20 reported src/ gaps are already executed
Finding
The e2e region gate discards cross-chunk execution evidence, and at
3bbac0dathat costs it11 of its 20 reported uncovered
src/regions. They are not gaps: a browser executes them,in a webpack chunk other than the one that recorded the zero.
tests/tools/e2e-coverage-report.mjsunions regions across scripts by span and keeps thehigher count, then lets three predicates retire a zero:
isPhantomRegion,isDriftedRegionand
isContradictedRegion. The last one is the relevant one, and it confines its witnesses tothe script that produced the zero:
The confinement is argued in place, and the argument is sound as far as it goes: a chunk that
never recorded a zero may simply not contain the arm, and crediting it from silence would score
tree-shaken text as executed.
But silence is not the only cross-chunk shape. V8 emits a range only where a count deviates
from its parent, so text inside a positive range that carries no nested range of its own ran
exactly as many times as that parent. That is a positive statement, not an absence.
Evidence
Measured at
3bbac0daon Debian 13 / Node v26.12.0, by dumping every regiongetRegionCoverageproduced per script artifact.MetricsDashboard/index.js:65is(lifecycle?.cards || []).map(...), already driven bytests/e2e/metrics-empty-collections-variant.spec.js:The variant chunk holds
65:10-65:38at count 1 and emits nothing nested over65:21-65:31:the
|| []arm ran once. Its own zero at65:38-66:53is the.mapcallback not firing on anempty array — a different span, no column overlap. The real build's zero survives the union
regardless.
shared/OrgAvatar.js:30is the same across consumers —MemberCardalways passeswrapperClassName(chunkc1ce2b9crecords30:20-30:56=0),ReferenceArchitecturespassesnone (chunk
a1931b28records28:7-30:56=16, nothing nested).Full per-region classification, reproduction commands and the remaining nine unproven regions
are in the comment on #1736.
Recommendation
Add a fourth predicate that retires a zero when some witness holds a positive region
enclosing the zero's span and records no zero overlapping that span by column. The
enclosure requirement is what separates this from the unsound rule the existing comment
rejects: the enclosing text was mapped into that script and executed, so the span is present
rather than shaken out. Silence alone still retires nothing.
Carry the witness's covered regions alongside its zeros:
and add, beside
isContradictedRegion:then extend the region filter:
Measured effect
Applied to a full local lane (
362 passed) at3bbac0da:src filesregionsEvery one of the nine survivors is a region no witness proves — including
GroupLinkStatus/index.js:13, the one confirmed genuine gap, which #1742 adds a spec for. Thechange retires only what it can demonstrate and never raises a covered count, so it cannot
score an unexecuted arm as covered.
The decision this needs
tests/e2e-coverage-report.test.mjs:358-381deliberately pins the opposite conclusion, namingthis exact shape:
Landing the predicate means changing that test, which reverses an argued decision inside a
merge-blocking gate. The fixture there is the weakest form of the shape — a single whole-script
range at count 1 with no nested ranges anywhere, so the chunk resolved no sub-range structure
at all — whereas every real case above sits inside a chunk that recorded several nested ranges
at differing counts. Whether the enclosure rule should be admitted with that distinction, with
a stricter one (for example, requiring the witness to have recorded some other region nested
inside the enclosing span), or not at all, is a judgement about what the gate is allowed to
treat as proof. I am not inferring it.
tests/e2e-coverage-report.test.mjs:358-381, addreader tests beside the existing
isContradictedRegioncases intests/e2e-coverage-report-readers.test.mjs--check-source-regionsmoves off96Risk: test-gate correctness — an over-permissive rule would credit unexecuted code in a
merge-blocking coverage gate.
Priority
that is already done
Filed by quality agent (hold-gated mode)
🐝 Hive Agent:
quality| Instance:hosted-available-lke648397-260827-5n31| SHA:unknown— hive: agent=quality backend=copilot model=claude-opus-5 copilot=1.0.88
8 remaining items
[-][quality] 20 src/ fallback regions are unit-covered but never reached by the e2e browser run[/-][+][quality] Decision: evaluate conservative cross-chunk e2e region attribution[/+]mrbobbytables commentedon Oct 21, 2026
The remaining work is gated on the maintainer decision recorded in the current issue body and the maintainer-approved re-scope: retain the conservative cross-chunk attribution rule, or authorize a stricter witness rule that distinguishes branch execution from tree-shaken code and overlapping source-map spans. No attribution-rule change is currently authorized. ADR 0007 excludes additional data-shape fixture coverage and keeps the existing thresholds unchanged; PR #1742 is closed, not merged, and does not resolve this decision. No implementation branch or PR was created.
— hive: backend=copilot model=gpt-6.1-sol
🐝 Hive Agent:
contributor| SHA:unknownhivecommons-hive commentedon Oct 21, 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.
hivecommons-hive commentedon Oct 21, 2026
To start work, reply
/hive approve(or/hive decision A). A plain reply acknowledges the issue but leaves it parked.hivecommons-hive commentedon Oct 21, 2026
To start work, reply
/hive approve(or/hive decision A). A plain reply acknowledges the issue but leaves it parked.mrbobbytables commentedon Oct 22, 2026
Reopened under the maintainer-approved P1 scope. The provenance PR #1748 auto-closed this tracker because GitHub interpreted a negated closing-keyword phrase as a closing reference. That phrase is now replaced with a non-closing reference. The merged PR did not change conservative cross-chunk attribution. This issue remains awaiting the existing maintainer decision; no reporter-policy change, new fixture work, or coverage-threshold change is authorized.
hivecommons-hive commentedon Oct 22, 2026
To start work, reply
/hive approve(or/hive decision A). A plain reply acknowledges the issue but leaves it parked.hivecommons-hive commentedon Oct 22, 2026
Reopened by a person after #1748 merged. Hive will not close this issue for #1748 again; close it by hand or with a new PR.
mrbobbytables commentedon Oct 22, 2026
Resolved by #1805 (merged). Instead of changing attribution, the ADR 0007 triage is now machine-readable: tests/e2e/fixtures/accepted-regions.json records each accepted data-shape-guard and span-drift region with its class and reason, the e2e coverage report lists them under "Accepted regions (ADR 0007)" and excludes them from the uncovered list, and a staleness check fails the lane when an entry no longer matches the source. The src lane reports 660/660 regions with 0 uncovered on main, so there is no remaining cross-chunk attribution gap to evaluate.