This report summarizes scanner evidence for GoogleChrome/modern-web-guidance-src, a TypeScript project with 1,467 GitHub stars. SynthScan examined 299,932 lines of code across 1800 source files, recording 659 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 2.4 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-11-11.
Can maintainers explain intent, assumptions, and trade-offs? 391 finding(s).
Are imports declared and package/API names verified? 268 finding(s).
Are wrappers, guards, and repeated structures necessary? 289 finding(s).
Which changes need focused human review? 659 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 659 distinct pattern matches across 9 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ills/nightly-eval-investigation/scripts/investigate.ts | 33 | function stripBaselineTargetSuffix(targetName: string): string { | CODE |
| LOW | …s/nightly-eval-investigation/scripts/publish_report.ts | 13 | function getOrCreateLabel(labelName: string, color: string, description: string) { | CODE |
| LOW | guides/webmcp/webmcp/targets/daily-grind/grader.ts | 103 | function getObjectPropertyInitializer( | CODE |
| LOW | …des/webmcp/agentic-forms/targets/daily-grind/grader.ts | 92 | function expressionProducesPromise(arg: Node, scopeNodes: Node[]): boolean { | CODE |
| LOW | guides/forms/switch/targets/daily-grind/grader.ts | 49 | function hasPolyfillOrAppearanceFallback(): boolean { | CODE |
| LOW | guides/privacy/privacy/targets/daily-grind/grader.ts | 131 | function checkClearSiteDataOnLogout(files: string[]): boolean { | CODE |
| LOW | …ctor-atrule-combinations/targets/daily-grind/grader.ts | 36 | function getCustomPropertyDeclarations(root: RuleRoot | string[]): CustomPropertyDeclaration[] { | CODE |
| LOW | …ctor-atrule-combinations/targets/daily-grind/grader.ts | 61 | function getQueriedCustomProperties(containerRules: CSSContainerRule[]): Set<string> { | CODE |
| LOW | …ule-support-conditionals/targets/daily-grind/grader.ts | 22 | function getRuleOwnDeclarationCount(rule: CSSRule): number { | CODE |
| LOW | …ule-support-conditionals/targets/daily-grind/grader.ts | 29 | function hasNestedRegularDeclarations(rule: CSSRule, detectedAtRuleName?: string): boolean { | CODE |
| LOW | …ule-support-conditionals/targets/daily-grind/grader.ts | 90 | function isTautologicalStyleContainerRule(rule: CSSContainerRule): boolean { | CODE |
| LOW | …ule-support-conditionals/targets/daily-grind/grader.ts | 95 | function hasRegisteredPropertyFallbackPattern(allRules: CSSRule[]): boolean { | CODE |
| LOW | …ule-support-conditionals/targets/daily-grind/grader.ts | 129 | function hasJsAtRuleSupportDetection(project: Project, allRules: CSSRule[]): boolean { | CODE |
| LOW | …ule-support-conditionals/targets/daily-grind/grader.ts | 156 | function isAtRuleAssociatedSupportsCondition(conditionText: string): boolean { | CODE |
| LOW | guides/security/passkey-authentication/guide.md | 101 | async function initializeConditionalAutofill() { | CODE |
| LOW | guides/security/passkey-authentication/guide.md | 139 | async function triggerButtonAuthentication() { | CODE |
| LOW | guides/security/passkey-authentication/demo.html | 101 | async function initializeConditionalAutofill() { | CODE |
| LOW | …re-external-subresources/targets/daily-grind/grader.ts | 45 | function getExternalHtmlSubresources(docs: Array<{ file: string; document: any }>): any[] { | CODE |
| LOW | …des/security/passkeys/targets/devtools-times/grader.ts | 52 | function isNavigatorCredentialsCall( | CODE |
| LOW | guides/security/local-network-access/demo.html | 151 | async function connectWithTargetAddressSpace(url, addressSpace, permissionName, outputEl, remediationEl) { | CODE |
| LOW | …ity/local-network-access/targets/daily-grind/grader.ts | 33 | function isCallProtectedByErrorHandling(call: CallExpression): boolean { | CODE |
| LOW | …ity/local-network-access/targets/daily-grind/grader.ts | 48 | function getAllStringLiteralValues(sourceFiles: SourceFile[]): string[] { | CODE |
| LOW | …ity/local-network-access/targets/daily-grind/grader.ts | 57 | function collectStringLiteralsFromNode(node: Node): string[] { | CODE |
| LOW | …ity/local-network-access/targets/daily-grind/grader.ts | 69 | function resolveTargetAddressSpaces( | CODE |
| LOW | …/local-network-access/targets/devtools-times/grader.ts | 35 | function getTargetAddressSpaceProperties( | CODE |
| LOW | …/local-network-access/targets/devtools-times/grader.ts | 48 | function collectRequestFunctionNames(sourceFiles: SourceFile[]): Set<string> { | CODE |
| LOW | guides/security/digital-signatures/guide.md | 147 | export function supportsPostQuantumSignatures() { | CODE |
| LOW | guides/security/digital-signatures/demo.html | 71 | export function supportsPostQuantumSignatures() { | CODE |
| LOW | …urity/digital-signatures/targets/daily-grind/grader.ts | 123 | function getExportImportFormatValues(files: string[]): Set<string> { | CODE |
| LOW | guides/security/restrict-outbound-connections/guide.md | 35 | export function normalizeAllowlistPattern(rawPattern) { | CODE |
| LOW | guides/security/restrict-outbound-connections/guide.md | 50 | export function buildConnectionAllowlistHeader({ | CODE |
| LOW | guides/security/restrict-outbound-connections/guide.md | 79 | export function setConnectionAllowlistHeaders(res, options = {}) { | CODE |
| LOW | guides/security/restrict-outbound-connections/demo.html | 37 | export function normalizeAllowlistPattern(rawPattern) { | CODE |
| LOW | guides/security/restrict-outbound-connections/demo.html | 51 | export function buildConnectionAllowlistHeader({ | CODE |
| LOW | guides/security/restrict-outbound-connections/demo.html | 78 | export function setConnectionAllowlistHeaders(res, options = {}) { | CODE |
| LOW | guides/security/validate-origins/guide.md | 108 | export function handleSandboxedWidgetMessage(event, expectedWidgetWindow) { | CODE |
| LOW | guides/security/validate-origins/guide.md | 172 | export function checkSameOriginWithFallback(candidate) { | CODE |
| LOW | guides/security/validate-origins/guide.md | 185 | export function checkSameSiteWithFallback(candidate) { | CODE |
| LOW | guides/security/validate-origins/demo.html | 153 | function handleSandboxedWidgetMessage(event) { | CODE |
| LOW | …s/security/trusted-types/targets/daily-grind/grader.ts | 26 | function findCreateHTMLRuleInObject(obj: ObjectLiteralExpression): boolean { | CODE |
| LOW | …s/security/trusted-types/targets/daily-grind/grader.ts | 57 | function hasCreatePolicyWithCreateHTML(project: Project): boolean { | CODE |
| LOW | …s/security/trusted-types/targets/daily-grind/grader.ts | 155 | function hasInnerHTMLWithCreateHTML(project: Project): boolean { | CODE |
| LOW | guides/security/quick-sign-ins/guide.md | 89 | async function authenticateWithImmediateUi() { | CODE |
| LOW | guides/security/quick-sign-ins/guide.md | 207 | async function authenticateWithImmediateUi() { | CODE |
| LOW | guides/security/quick-sign-ins/demo.html | 175 | async function authenticateWithImmediateUi() { | CODE |
| LOW | …/security/quick-sign-ins/targets/daily-grind/grader.ts | 24 | function getPropertyInitializerText( | CODE |
| LOW | …/security/quick-sign-ins/targets/daily-grind/grader.ts | 39 | function findImmediateCredentialCalls(sourceFiles: SourceFile[]): { | CODE |
| LOW | guides/security/client-side-encryption/guide.md | 204 | export function supportsPostQuantumEnvelope() { | CODE |
| LOW | guides/security/client-side-encryption/demo.html | 75 | export function supportsPostQuantumEnvelope() { | CODE |
| LOW | …y/client-side-encryption/targets/daily-grind/grader.ts | 69 | function hasClassicalWebCryptoFallback(project: Project): boolean { | CODE |
| LOW | …y/client-side-encryption/targets/daily-grind/grader.ts | 128 | function hasEncapsulateAndDecapsulate(project: Project): boolean { | CODE |
| LOW | …y/client-side-encryption/targets/daily-grind/grader.ts | 174 | function hasClassicalRawFormatFallback(project: Project): boolean { | CODE |
| LOW | …y/client-side-encryption/targets/daily-grind/grader.ts | 196 | function hasAuthenticatedEncryption(project: Project): boolean { | CODE |
| LOW | …y/client-side-encryption/targets/daily-grind/grader.ts | 249 | function hasDecryptionWithSharedKey(project: Project): boolean { | CODE |
| LOW | …y/client-side-encryption/targets/daily-grind/grader.ts | 268 | function hasRecoveredPlaintextInUi( | CODE |
| LOW | guides/ui-components/tabs/targets/daily-grind/grader.ts | 43 | async function ensureKeyboardNavigationSupport(page: Page): Promise<void> { | CODE |
| LOW | guides/ui-components/app-menus/demo.html | 374 | function installFocusgroupFallback() { | CODE |
| LOW | guides/ui-components/navigation-drawer/demo.html | 242 | function observeOpenAndClosedState() { | CODE |
| LOW | guides/ui-components/navigation-drawer/demo.html | 261 | function addScrollAnimationFallback() { | CODE |
| LOW | …ponents/dark-mode-toggle/targets/daily-grind/grader.ts | 32 | function getEffectiveStyleRuleSelector(rule: CSSStyleRule): string { | CODE |
| 229 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | guides/forms/select-menu-interaction/expectations.md | 3 | - Selecting the "placeholder" option (if enabled) or submitting while empty MUST trigger the error state. | CODE |
| LOW | guides/forms/select-menu-interaction/guide.md | 26 | The "placeholder" option is key here. | CODE |
| LOW | guides/forms/validate-input-after-interaction/grader.ts | 123 | await input.fill(inputType === 'password' ? 'Valid#Pass1' : 'user@example.com'); | CODE |
| LOW | guides/forms/autofill-address-form/grader.ts | 78 | const identifiers = `${el.id} ${el.name} ${el.getAttribute('placeholder') || ''}`.toLowerCase(); | CODE |
| LOW | guides/forms/sms-otp-form/targets/daily-grind/grader.ts | 87 | placeholder: input.getAttribute('placeholder') || '', | CODE |
| LOW | guides/forms/sms-otp-form/targets/daily-grind/grader.ts | 255 | placeholder: getJsxAttrValue(input, ['placeholder']) || '', | CODE |
| LOW | …es/forms/sms-otp-form/targets/devtools-times/grader.ts | 87 | placeholder: input.getAttribute('placeholder') || '', | CODE |
| LOW | …es/forms/sms-otp-form/targets/devtools-times/grader.ts | 391 | placeholder: getJsxAttrValue(input, ['placeholder']) || '', | CODE |
| LOW | guides/security/passkey-conditional-create/grader.ts | 179 | json: async () => ({ status: 'ok', success: true, authenticated: true, user: { email: 'user@example.com' } } | CODE |
| LOW | guides/security/passkey-conditional-create/grader.ts | 214 | if (await email.isVisible().catch(() => false)) await email.fill('user@example.com').catch(() => {}); | CODE |
| LOW | guides/security/passkey-management/demo.html | 175 | body: JSON.stringify({ name: 'user@example.com', displayName: updatedDisplayName }) | CODE |
| LOW | guides/security/passkey-management/demo.html | 191 | name: updatedUser.name || 'user@example.com', | CODE |
| LOW | guides/security/passkey-registration/guide.md | 58 | name: "user@example.com", | CODE |
| LOW | guides/security/passkey-registration/guide.md | 59 | displayName: "Jane Doe", | CODE |
| LOW | guides/security/passkey-registration/grader.ts | 61 | user: { id: 'fake-user-id', name: 'test', displayName: 'test' }, | CODE |
| LOW | guides/ui-components/accordion/guide.md | 28 | <summary>Lorem ipsum dolor sit amet?</summary> | CODE |
| LOW | guides/ui-components/accordion/guide.md | 28 | <summary>Lorem ipsum dolor sit amet?</summary> | CODE |
| LOW | guides/ui-components/accordion/guide.md | 59 | <summary>Lorem ipsum dolor sit amet?</summary> | CODE |
| LOW | guides/ui-components/accordion/guide.md | 59 | <summary>Lorem ipsum dolor sit amet?</summary> | CODE |
| LOW⚡ | guides/ui-components/navigation-drawer/demo.html | 300 | <li><a href="#">Lorem ipsum est</a></li> | CODE |
| LOW⚡ | guides/ui-components/navigation-drawer/demo.html | 301 | <li><a href="#">dolor sit amet</a></li> | CODE |
| LOW⚡ | guides/ui-components/navigation-drawer/demo.html | 307 | <li><a href="#">Lorem ipsum est</a></li> | CODE |
| LOW⚡ | guides/ui-components/navigation-drawer/demo.html | 308 | <li><a href="#">dolor sit amet</a></li> | CODE |
| LOW | guides/ui-components/navigation-drawer/demo.html | 329 | <p>Lorem ipsum dolor sit, consectetur adipiscing elit. Mollis commodo tempor. amet Aliquam eu leo eget lacus digni | CODE |
| LOW | guides/js/sort-high-precision-timestamps/demo.html | 339 | <div class="placeholder"> | CODE |
| LOW | guides/js/sort-high-precision-timestamps/demo.html | 356 | <div class="placeholder"> | CODE |
| LOW | …isual-design/precise-text-alignment/negative-demo.html | 110 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magn | CODE |
| LOW | …isual-design/precise-text-alignment/negative-demo.html | 110 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magn | CODE |
| LOW | guides/ui-behaviors/scroll-snap-state-sync/demo.html | 128 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do | CODE |
| LOW | guides/ui-behaviors/scroll-snap-state-sync/demo.html | 128 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do | CODE |
| LOW | guides/ui-behaviors/scroll-snap-state-sync/demo.html | 143 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do | CODE |
| LOW | guides/ui-behaviors/scroll-snap-state-sync/demo.html | 143 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do | CODE |
| LOW | guides/ui-behaviors/scroll-snap-state-sync/demo.html | 219 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do | CODE |
| LOW | guides/ui-behaviors/scroll-snap-state-sync/demo.html | 219 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do | CODE |
| LOW | guides/ui-behaviors/scroll-snap-state-sync/demo.html | 235 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do | CODE |
| LOW | guides/ui-behaviors/scroll-snap-state-sync/demo.html | 235 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do | CODE |
| LOW | …ui-behaviors/scroll-snap-state-sync/negative-demo.html | 83 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do | CODE |
| LOW | …ui-behaviors/scroll-snap-state-sync/negative-demo.html | 83 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do | CODE |
| LOW | …ui-behaviors/scroll-snap-state-sync/negative-demo.html | 136 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do | CODE |
| LOW | …ui-behaviors/scroll-snap-state-sync/negative-demo.html | 136 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do | CODE |
| LOW | …viors/prevent-page-scroll-under-modal-dialog/demo.html | 69 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor | CODE |
| LOW | …viors/prevent-page-scroll-under-modal-dialog/demo.html | 69 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 83 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 83 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 84 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 84 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 85 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 85 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 86 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 86 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 87 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 87 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 88 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 88 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 89 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 89 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 90 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 90 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 91 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| LOW⚡ | guides/ui-atoms/shrinking-header-on-scroll/demo.html | 91 | <p>lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p> | CODE |
| 208 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .agents/skills/dev-prompt-canary/SKILL.md | 30 | ### Step 1: Create an Isolated Scratch Worktree | COMMENT |
| LOW | .agents/skills/dev-prompt-canary/SKILL.md | 40 | ### Step 2: Run Parallel Canary Subagents (`Model: "flash"`) | COMMENT |
| LOW | .agents/skills/dev-prompt-canary/SKILL.md | 69 | ### Step 3: Cleanup Scratch Worktree | COMMENT |
| LOW | .agents/skills/project-features/SKILL.md | 19 | ## Step 1: Decide whether it qualifies | COMMENT |
| LOW | .agents/skills/project-features/SKILL.md | 65 | ## Step 2: Choose exactly one web-feature ID | COMMENT |
| LOW | .agents/skills/project-features/SKILL.md | 86 | ## Step 3: File or fix the issue | COMMENT |
| LOW | .agents/skills/project-features/SKILL.md | 99 | ## Step 4: Handle what doesn't qualify | COMMENT |
| LOW | .agents/skills/nightly-eval-investigation/SKILL.md | 74 | ### Step 1: Query and Select the Runs | COMMENT |
| LOW⚡ | .agents/skills/nightly-eval-investigation/SKILL.md | 86 | ### Step 2: Pull down Results | COMMENT |
| LOW⚡ | .agents/skills/nightly-eval-investigation/SKILL.md | 95 | ### Step 3: Run the Flagging Script | COMMENT |
| LOW⚡ | .agents/skills/nightly-eval-investigation/SKILL.md | 105 | ### Step 4: Perform Qualitative Deep-Dives (Investigation Playbook) | COMMENT |
| LOW | .agents/skills/nightly-eval-investigation/SKILL.md | 152 | ### Step 5: Inform the User of the Publishing Script | COMMENT |
| LOW | .agents/skills/nightly-eval-investigation/SKILL.md | 162 | ### Step 6: Present and Link | COMMENT |
| LOW | guides/security/verify-email-ownership/guide.md | 93 | ### Step 1: Parse the SD-JWT claims and validate the email address | COMMENT |
| LOW | guides/security/verify-email-ownership/guide.md | 120 | ### Step 2: Validate DNS TXT delegation and load the issuer JWKS | COMMENT |
| LOW | guides/security/verify-email-ownership/guide.md | 145 | ### Step 3: Verify the EVT signature and Key Binding JWT (`KB-JWT`) | COMMENT |
| LOW | guides/ui-behaviors/swipe-to-remove/guide.md | 28 | ### Step 1: Mark up the list with track and content | COMMENT |
| LOW | guides/ui-behaviors/swipe-to-remove/guide.md | 62 | ### Step 2: Configure the track as a horizontal snap container with three snap points | COMMENT |
| LOW | guides/ui-behaviors/swipe-to-remove/guide.md | 163 | ### Step 3: Add the action icons to the list item | COMMENT |
| LOW | guides/ui-behaviors/swipe-to-remove/guide.md | 255 | ### Step 4: Detect the commit gesture with `IntersectionObserver` | COMMENT |
| LOW | guides/ui-behaviors/swipe-to-remove/guide.md | 480 | ### Step 5: Use the action and label that fits your use case | COMMENT |
| LOW | guides/ui-behaviors/same-document-transitions/guide.md | 20 | ### Step 1: Wrap State Changes in `startViewTransition` | COMMENT |
| LOW | guides/ui-behaviors/same-document-transitions/guide.md | 31 | ### Step 2: Assign Shared Transition Names | COMMENT |
| LOW | guides/ui-behaviors/same-document-transitions/guide.md | 125 | ### Step 3: Fix Aspect Ratio "Stretching" | COMMENT |
| LOW | guides/ui-behaviors/swipe-to-reveal/guide.md | 21 | ### Step 1: Mark up the swipe wrapper, content, and revealed panel | COMMENT |
| LOW | guides/ui-behaviors/swipe-to-reveal/guide.md | 55 | ### Step 2: Configure the horizontal snap container and `overscroll-behavior: chain` | COMMENT |
| LOW | guides/ui-behaviors/swipe-to-reveal/guide.md | 122 | ### Step 3: Reveal controls when trigger button is activated | COMMENT |
| LOW | …haviors/consistent-cross-document-transitions/guide.md | 30 | ### Step 1: Opt in to Cross-Document View Transitions | COMMENT |
| LOW | …haviors/consistent-cross-document-transitions/guide.md | 53 | ### Step 2: Block Rendering Until Critical Scripts Execute | COMMENT |
| LOW | …haviors/consistent-cross-document-transitions/guide.md | 71 | ### Step 3: Block Rendering Until Key DOM Elements Are Parsed | COMMENT |
| LOW | …haviors/consistent-cross-document-transitions/guide.md | 160 | ### Step 4: Use Media Queries for Responsive Render Blocking | COMMENT |
| LOW | …haviors/consistent-cross-document-transitions/guide.md | 187 | ### Step 5: Use pagereveal for Context-Dependent Transitions (Optional) | COMMENT |
| LOW | …/performance/efficient-background-processing/grader.ts | 135 | // Step 1: Force pause state off-screen initially | COMMENT |
| LOW | …/performance/efficient-background-processing/grader.ts | 153 | // Step 2: Trigger skipped: false to resume rendering | COMMENT |
| LOW | …/performance/efficient-background-processing/grader.ts | 168 | // Step 3: Verify it resumed and is ticking | COMMENT |
| LOW | src/harness/README.md | 359 | ### Step 1: Create Agent Harness | COMMENT |
| LOW | src/harness/README.md | 419 | ### Step 2: Update Config | COMMENT |
| LOW | src/harness/README.md | 439 | ### Step 3: Wire Up Integrations | COMMENT |
| LOW | src/harness/README.md | 451 | ### Step 4: Add Smoke Test | COMMENT |
| LOW⚡ | src/harness/agents/codex-cli-agent.test.ts | 201 | // Step 1: main cat index.html (20:30:01) | COMMENT |
| LOW⚡ | src/harness/agents/codex-cli-agent.test.ts | 210 | // Step 2: subagent npm test (20:30:05) | COMMENT |
| LOW⚡ | src/harness/agents/codex-cli-agent.test.ts | 220 | // Step 3: main final_answer (20:30:10) | COMMENT |
| LOW | src/harness/agents/claude-code-agent.ts | 106 | // Step 1: Read all JSONL files and populate subagentsMap | COMMENT |
| LOW | src/harness/agents/claude-code-agent.ts | 126 | // Step 2: Generate HTML viewers embedding subagent trajectories where referenced (main sessions only) | COMMENT |
| LOW⚡ | src/harness/lib/claude-code-parsing.test.ts | 533 | // Step 1: Tool step coalesced from split thinking + tool_use chunks | COMMENT |
| LOW⚡ | src/harness/lib/claude-code-parsing.test.ts | 539 | // Step 2: Final response to user | COMMENT |
| LOW | src/authoring/dev.ts | 368 | // Step 0: If rerun has reviewer comments, apply feedback to guide/expectations/targets first | COMMENT |
| LOW | src/authoring/dev.ts | 381 | // Step 1: Validate guide inventory | COMMENT |
| LOW | src/authoring/dev.ts | 398 | // Step 2: Parallel target generation and calibration across targets | COMMENT |
| LOW | src/authoring/dev.ts | 472 | // Step 4: Run agent evaluation test (runs by default unless --no-test is passed or calibration failed) | COMMENT |
| LOW | src/authoring/dev.ts | 484 | // Step 5: Run evaluation report (printed last) | COMMENT |
| LOW⚡ | src/analyzing/README.md | 332 | ### Step 1: Guide Triage | COMMENT |
| LOW⚡ | src/analyzing/README.md | 337 | ### Step 2: Static Matcher Authoring | COMMENT |
| LOW⚡ | src/analyzing/README.md | 345 | ### Step 3: LLM Verifier Rubric | COMMENT |
| LOW⚡ | src/analyzing/README.md | 351 | ### Step 4: Held-Out Qualification | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/performance/efficient-background-processing/grader.ts | 135 | // Step 1: Force pause state off-screen initially | COMMENT |
| LOW | …/performance/efficient-background-processing/grader.ts | 153 | // Step 2: Trigger skipped: false to resume rendering | COMMENT |
| LOW | …/performance/efficient-background-processing/grader.ts | 168 | // Step 3: Verify it resumed and is ticking | COMMENT |
| LOW⚡ | src/harness/agents/codex-cli-agent.test.ts | 201 | // Step 1: main cat index.html (20:30:01) | COMMENT |
| LOW⚡ | src/harness/agents/codex-cli-agent.test.ts | 210 | // Step 2: subagent npm test (20:30:05) | COMMENT |
| LOW⚡ | src/harness/agents/codex-cli-agent.test.ts | 220 | // Step 3: main final_answer (20:30:10) | COMMENT |
| LOW | src/harness/agents/claude-code-agent.ts | 106 | // Step 1: Read all JSONL files and populate subagentsMap | COMMENT |
| LOW | src/harness/agents/claude-code-agent.ts | 126 | // Step 2: Generate HTML viewers embedding subagent trajectories where referenced (main sessions only) | COMMENT |
| LOW⚡ | src/harness/lib/claude-code-parsing.test.ts | 533 | // Step 1: Tool step coalesced from split thinking + tool_use chunks | COMMENT |
| LOW⚡ | src/harness/lib/claude-code-parsing.test.ts | 539 | // Step 2: Final response to user | COMMENT |
| LOW | src/authoring/dev.ts | 368 | // Step 0: If rerun has reviewer comments, apply feedback to guide/expectations/targets first | COMMENT |
| LOW | src/authoring/dev.ts | 381 | // Step 1: Validate guide inventory | COMMENT |
| LOW | src/authoring/dev.ts | 398 | // Step 2: Parallel target generation and calibration across targets | COMMENT |
| LOW | src/authoring/dev.ts | 472 | // Step 4: Run agent evaluation test (runs by default unless --no-test is passed or calibration failed) | COMMENT |
| LOW | src/authoring/dev.ts | 484 | // Step 5: Run evaluation report (printed last) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.md | 446 | - **[agentic-forms](https://github.com/GoogleChrome/modern-web-guidance/blob/main/skills/modern-web-guidance/guides/webm | CODE |
| MEDIUM | README.md | 447 | - **[agentic-javascript-tools](https://github.com/GoogleChrome/modern-web-guidance/blob/main/skills/modern-web-guidance/ | CODE |
| MEDIUM | .agents/skills/project-use-cases/SKILL.md | 45 | ## Implementation and scaffolding | COMMENT |
| MEDIUM | docs/CONTEXT.md | 45 | authoring/ # Core orchestration (gd dev pipeline, guides integrity) | CODE |
| MEDIUM | src/rag/benchmarks/bench-rag.ts | 359 | lines.push(`### RAG Benchmark — \`${label}\``); | CODE |
| MEDIUM | src/rag/benchmarks/bench-rag.ts | 402 | lines.push(`### RAG Benchmark A/B — \`${baseLabel}\` → \`${headLabel}\``); | CODE |
| MEDIUM | src/rag/benchmarks/README.md | 1 | # RAG Benchmarks & Evaluation Suite | COMMENT |
| MEDIUM | src/harness/lib/trajectory-normalizer.test.ts | 627 | // 13. Category directory collision (/guides/webmcp/agentic-javascript-tools when guideName is 'webmcp') -> false, | COMMENT |
| MEDIUM | src/harness/lib/trajectory-normalizer.test.ts | 640 | webRuns: ['tools.web__run({open:[{ref_id:"https://developer.chrome.com/docs/modern-web-guidance/guides/web | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | guides/test-fixture.ts | 1 | // TODO(restructure): proxy for existing graders that import `../../../../test-fixture.ts`. | COMMENT |
| LOW | guides/css/css-layout/targets/daily-grind/grader.ts | 1 | // Expectation Relevance Assessment: | COMMENT |
| LOW | guides/css/css-layout/targets/daily-grind/grader.ts | 21 | // 20: SKIPPED - No `container-type: size` is needed or used in the base application. | COMMENT |
| LOW | guides/ui-components/stack-drill-down/guide.md | 221 | ```js | COMMENT |
| LOW | guides/ui-components/stack-drill-down/guide.md | 241 | // later forward-navigates back into it. | COMMENT |
| LOW | guides/ui-components/stack-drill-down/guide.md | 481 | // - multi-step jumps (e.g. history.go(-3)): 'instant' to skip | COMMENT |
| LOW | guides/ui-components/stack-drill-down/guide.md | 521 | // - Views at or before currentView stay in the DOM but get | COMMENT |
| LOW | guides/ui-components/stack-drill-down/demo.html | 321 | // rebuild loop above couldn't materialize one (e.g. unknown URL path). | COMMENT |
| LOW | guides/ui-components/stack-drill-down/demo.html | 401 | // here is what keeps the swipe, click, and popstate paths coherent. | COMMENT |
| LOW | guides/ui-behaviors/swipe-to-remove/guide.md | 301 | COMMENT | |
| LOW | …e/form-factor-adaptation/targets/daily-grind/grader.ts | 1 | // Expectation Coverage: | COMMENT |
| LOW | …formance/load-shared-resources-declaratively/demo.html | 41 | <script type="module"> | COMMENT |
| LOW | src/grading/template.grader.ts | 1 | import { | COMMENT |
| LOW | src/grading/template.grader.ts | 21 | // CSSMediaRule, | COMMENT |
| LOW | src/grading/template.grader.ts | 41 | COMMENT | |
| LOW | src/grading/template.grader.ts | 61 | // || docs.some(d => Boolean(d.document.querySelector('.flex, [class*="flex"]'))); | COMMENT |
| LOW | src/grading/template.grader.ts | 81 | COMMENT | |
| LOW | src/grading/template.grader.ts | 101 | // const pos = await page.evaluate(() => { | COMMENT |
| LOW | src/dashboard/showcase.css | 101 | #ab-spotlight[aria-busy="true"] .ab-prompt-banner { min-block-size: 4.6rem; } | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | guides/css/style-parent-with-has/grader.ts | 14 | // Helper: robust ancestor check leveraging Playwright's auto-retrying locators | COMMENT |
| MEDIUM | src/grading/template.grader.ts | 33 | // These run instantly and are far more robust for structural verification than starting a browser. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …formance/flicker-free-client-side-ab-testing/demo.html | 130 | // Display which variant is active for demonstration purposes. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/harness/nightly/run-agent.sh | 251 | # Check if evals.json was generated and verify presence of data | COMMENT |