Repository navigation
feat(audit): bounded real-site runs, page profiles, blocked_or_empty, false-positive fixes - #76
Merged
Merged
Conversation
… false-positive fixes audit check now ends within --timeout (default 120s) with partial results and per-stage status, detects pages whose content never rendered, resolves a landing/app/content profile that relaxes landing-only rules to warnings, skips hidden and non-CTA controls, and reports an unresponsive page once. Local reproductions of the 2026-10-19 12-site run gate CI.
…se portals are content toss.im showed only its chrome and logo svg when the preflight read it, and was reported blocked_or_empty. The preflight now waits for 200 characters or a 120x80 media box. Naver's link text share of 0.81 with ad media now resolves to content.
Owner
Author
Full 12-site run (sequential, this branch at b6e24d7)
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
stylegallery audit checkon live sites, from the 2026-10-19 run on 12 homepages (6 timed out at 420 s, the other 6 had 5-10 failures each, several of them false positives).--timeout <s>(default 120). Every viewport pass, hash/short-viewport/offline/no-script scenario, and the three slop stages get a weighted share of the remaining time. An overrunning stage has its contexts closed, and the report carriestimed_out,verdict: "partial",status: "timed_out"per unfinished check, andstagestimings. A hard browser close at budget + 15 s is the last resort.domcontentloadedplus a boundedloadwait, a 1 s settle cap, and a 3 s font cap. CTAs share one context and are capped at 8, hovered controls at 24 (evenly sampled), and the Tab walk at 120. Resting styles stay in the page.aria-hidden, andinertcontrols are skipped and counted inevidence.skipped. A hover or click that cannot reach its target isunreachable, not a violation.slop.static-interactiveandslop.sluggish-state-changeno longer double count: when controls do not respond at all, sluggish keeps only its speed reason.--profile landing|app|content(defaultauto, from rendered signals). The catalog's newprofilesobject lists, with a rationale, the landing-calibrated rules that become warnings for app and content pages. Accessibility checks and honest actions stay errors everywhere.validate-anti-patternschecks the object (6 new negative cases).blocked_or_empty: an HTTP error, a challenge page, under 80 characters with no media, or an emptymainafter a bounded wait means the page is reported with its reason and signals, and no check runs.tests/fixtures/audit-realsites/holds 7 from-scratch reproductions (no copied markup or text) mapped to the 12 sites.test:audit:realsitesruns them 4 at a time in CI (audit-kit workflow). It asserts the true violations still fail, the fixed false positives do not, the profile resolves as expected, and runs stay inside their budget.audit:realsites:livere-runs the 12 live sites one at a time, outside CI.Before / after (live)
Before: 0.1.17, 4 sites at a time, 420 s harness limit. After: this branch, one at a time, default 120 s budget. The full 12-site table follows in a comment once the sequential run finishes.
blocked_or_empty: main landmark rendered no text and no mediaP4 shots: no rendered surface changes in this PR (audit tooling, catalog text, fixtures), so there is no before/after screenshot pair. The real-site table is the before/after evidence.
Verification
bun run test:audit19/19,test:audit:self23/23 (clean PASS / violation FAIL),test:audit:realsites7/7,test:audit:parity3/3 identical shared verdictsnode scripts/test-validate-anti-patterns.mjs26 cases,validate-anti-patternsokbun run validate,validate:lifecycle-dispositions(caller inventories regenerated),validate:material(registry and embeddings regenerated),test:material,test:lifecycle-dispositions: all passconsumer_reference: not_applicable - audit tooling selects no consumer reference record.