You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[finding] The docs-drift PR comment still renders all unreachable bridge rows as one cause — the advisory path passes no ceiling, so causes reads unmeasured there #11867
Observed while implementing #11178 (PR #11865). Filed unassigned and unlabelled for grading. ⛔ Not a claim on anyone's time.
The reading
PR #11865 splits --bridge-coverage's unreachable rows into three derived causes (discovery-gap / no-in-repo-registrar / undecided) so that the auth ledger's 56 of 56 stops reading like the rest ledger's 46 of 87. That split is computed against a ceiling — every path: any packages/** file declares — and bridgeCoverageFrom takes that ceiling as an optional argument.
Only the --bridge-coverage CLI arm passes one. The advisory path does not:
// affected-docs.mjs, the PHASE 2 advisory runbridgeCoverage=bridgeCoverageFrom(ledgers,registrarByTail.keys());
so on that path every ledger's cause is unmeasured and the three counts are null — honest, by design, but it means the PR-comment renderer never sees the split. .github/workflows/docs-drift-check.yml:262 still says:
the other 177 have no registrar path: tail to select them
That sentence is accurate about the mechanism and does not claim remediability — this is not a wrong number. But it is the surface a human actually reads on a PR, and it presents one population where there are measurably three: on 589758d22, 14 remediable by discovery, 56 with no in-repo registrar anywhere on the surface, 107 undecided.
Scope: that card's ruled deliverable was what --bridge-coverage reports. Wiring the advisory path is a separate decision with a real cost — the ceiling masks ~1093 files (~1.4s measured), and the advisory run happens per-PR whenever a change carries a bridgeable symbol, whereas --bridge-coverage is a single diff-free gate step.
The shape, if taken
Two hops, both small:
pass a ceiling on the advisory path (or decide the cost is not worth paying and leave unmeasured — a legitimate answer);
Observed while implementing #11178 (PR #11865). Filed unassigned and unlabelled for grading. ⛔ Not a claim on anyone's time.
The reading
PR #11865 splits
--bridge-coverage's unreachable rows into three derived causes (discovery-gap/no-in-repo-registrar/undecided) so that the auth ledger's56 of 56stops reading like the rest ledger's46 of 87. That split is computed against a ceiling — everypath:anypackages/**file declares — andbridgeCoverageFromtakes that ceiling as an optional argument.Only the
--bridge-coverageCLI arm passes one. The advisory path does not:so on that path every ledger's cause is
unmeasuredand the three counts arenull— honest, by design, but it means the PR-comment renderer never sees the split..github/workflows/docs-drift-check.yml:262still says:That sentence is accurate about the mechanism and does not claim remediability — this is not a wrong number. But it is the surface a human actually reads on a PR, and it presents one population where there are measurably three: on
589758d22, 14 remediable by discovery, 56 with no in-repo registrar anywhere on the surface, 107 undecided.Why it was left out of PR #11865
Scope: that card's ruled deliverable was what
--bridge-coveragereports. Wiring the advisory path is a separate decision with a real cost — the ceiling masks ~1093 files (~1.4s measured), and the advisory run happens per-PR whenever a change carries a bridgeable symbol, whereas--bridge-coverageis a single diff-free gate step.The shape, if taken
Two hops, both small:
unmeasured— a legitimate answer);data.bridgeCoverage.causesa render branch indocs-drift-check.yml. [finding] docs-drift's route-bridge exclusions are silent — only the cross-cutting CAP publishes what it withheld, the two KIND rules do not #9433 measured that a JSON key with no render branch is half-wired — published while no reader sees it — andaffected-docs.mjs --self-testalready pins thebridgeCoveragekey at both ends for exactly that reason. Acausesrender branch would deserve the same pin.Not claimed
Refs
#11178 · PR #11865 (where the split landed) · #9433 (the half-wired-key rule) · #9747