{"format": "ta-amps.seed-pack.nouns.v1", "pack_id": "accessibility-audit", "status": "proposal_only", "records": [ {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.pack", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.skill_pack", "pack:accessibility-audit", "role:pack", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.skill_pack", "role": "pack", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "A collection of nouns and verbs for auditing a page or app against WCAG 2.2 level AA", "lets_workers": "Plan an audit across pages, states, widths, themes and input modes; capture each state read-only; check contrast, structure, keyboard paths, reflow, target size, media, motion and text alternatives; have a person try the key tasks with assistive technology; and write a report whose every finding cites its WCAG success criterion, says failure or advisory and states what was not checked.", "flow": [{"verb": "accessibility-audit.plan-audit", "when": "Before checking anything."}, {"verb": "accessibility-audit.capture-states", "when": "Once per plan; deterministic and read-only."}, {"verb": "accessibility-audit.check-contrast", "when": "On the captures, in every theme; deterministic."}, {"verb": "accessibility-audit.lint-structure", "when": "On the rendered DOM snapshots; deterministic."}, {"verb": "accessibility-audit.walk-keyboard", "when": "On the live pages, keyboard only."}, {"verb": "accessibility-audit.check-reflow", "when": "At 320 CSS pixels and with wider text spacing; deterministic."}, {"verb": "accessibility-audit.check-target-size", "when": "At the plan's widths; deterministic."}, {"verb": "accessibility-audit.check-media", "when": "For every video and audio element."}, {"verb": "accessibility-audit.check-motion", "when": "With and without reduced motion; deterministic."}, {"verb": "accessibility-audit.check-text-alternatives", "when": "For images, icons, controls and fields."}, {"verb": "accessibility-audit.check-with-assistive-tech", "when": "A person tries the key tasks with a screen reader; a person's verb."}, {"verb": "accessibility-audit.write-audit-report", "when": "When the checks are in."}, {"verb": "accessibility-audit.review-audit", "when": "A different worker or a person rechecks a sample."}], "guardrails": ["Every finding cites one success criterion by number, name and level, and says whether it is a failure or advisory.", "AAA criteria and best practices are advisory in an AA audit; they never make a page fail.", "Automated checks find only part of the problems. A report never claims the site is compliant or fully accessible; it says what was checked and what was not.", "Captures and walks are read-only: no form is submitted, nothing is typed into fields and no account is created.", "A person's assistive-technology session is its own verb; an agent never reports one it did not have."], "worked_examples": [{"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.audit-checks", "version": 1, "value_sha256": "4e820eee0457f58fd225608b10e10a0e7be3ef3797e00156f79508d202de461b"}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.example.contrast", "version": 1, "value_sha256": "420c4581a4d9e6a2f051a73b6aa08787e43cf64f7cdfe6c9d0e59bcbc349fe74"}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.example.structure-lint", "version": 1, "value_sha256": "57ba801ab0a3d5795fbee3758970dd4ac38f52c4a234e85508270a858f098942"}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.example.audit-plan", "version": 1, "value_sha256": "acf4dd1e8338814fb1db74acfdf449f592a978fa4c12c09f58375eca3df40617"}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.example.keyboard-walk", "version": 1, "value_sha256": "b8ebfb3d8fc5d6780d3e5e83663c08ee033dca4c5df1884ff2a804b26ded06cd"}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.example.audit-report", "version": 1, "value_sha256": "3cb8fcc86905e0153652870c2a982b16bcdcc286d9684e796ed68b6bbedd1660"}], "tool": {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.tool.a11y-checks", "version": 1, "value_sha256": "4d05f38caa2ed93e14fa87cbc2ebdbf5d032f01c063f67754717f0d2ac152037"}, "complements": ["The public-good kits pack's check-accessibility covers kit documents; this pack covers web pages and apps.", "The visual and 3D rendering pack's contrast example covers rendered graphics; this pack ships the tested contrast tool.", "Every failure goes to the findings to fixes pack for its fix, verification and guard.", "The screenshot design review pack measures visual design rules from captures and verifies re-renders; this pack audits WCAG 2.2 AA criteria, including keyboard paths, media, motion and a person's assistive-technology session."], "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": [{"relation": "requires_noun", "target_id": "seedpack.accessibility-audit/accessibility-audit.v0.1.0.method", "target_category": "noun.skill_pack", "note": ""}, {"relation": "requires_noun", "target_id": "seedpack.accessibility-audit/accessibility-audit.v0.1.0.wcag-source", "target_category": "noun.public_source", "note": ""}, {"relation": "requires_noun", "target_id": "seedpack.accessibility-audit/accessibility-audit.v0.1.0.wcag-checklist", "target_category": "noun.benchmark_suite", "note": ""}, {"relation": "requires_noun", "target_id": "seedpack.accessibility-audit/accessibility-audit.v0.1.0.capture-matrix", "target_category": "noun.reflex_procedure", "note": ""}, {"relation": "requires_noun", "target_id": "seedpack.accessibility-audit/accessibility-audit.v0.1.0.keyboard-procedure", "target_category": "noun.reflex_procedure", "note": ""}, {"relation": "requires_noun", "target_id": "seedpack.accessibility-audit/accessibility-audit.v0.1.0.contrast-method", "target_category": "noun.reflex_procedure", "note": ""}, {"relation": "requires_noun", "target_id": "seedpack.accessibility-audit/accessibility-audit.v0.1.0.layout-rules", "target_category": "noun.reflex_procedure", "note": ""}, {"relation": "requires_noun", "target_id": "seedpack.accessibility-audit/accessibility-audit.v0.1.0.media-and-motion-rules", "target_category": "noun.reflex_procedure", "note": ""}, {"relation": "requires_noun", "target_id": "seedpack.accessibility-audit/accessibility-audit.v0.1.0.structure-rules", "target_category": "noun.reflex_procedure", "note": ""}, {"relation": "requires_noun", "target_id": "seedpack.accessibility-audit/accessibility-audit.v0.1.0.tool.a11y-checks", "target_category": "noun.code_node", "note": ""}, {"relation": "requires_noun", "target_id": "seedpack.accessibility-audit/accessibility-audit.v0.1.0.audit-checks", "target_category": "noun.benchmark_suite", "note": ""}]}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.method", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.skill_pack", "pack:accessibility-audit", "role:method", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.skill_pack", "role": "method", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "How an accessibility audit is planned, checked, reported and reviewed", "category_reason": "A reusable procedure with guardrails, followed by every verb in this pack.", "lifecycle": ["plan-audit names the pages, states, widths, themes, input modes and the criteria in scope.", "capture-states saves a screenshot and a rendered DOM snapshot of every planned cell, by digest.", "Each check verb covers its own area and cites a criterion for every result.", "check-with-assistive-tech: a person tries the key tasks with a screen reader.", "write-audit-report turns failures and advisories into findings and states what was not checked.", "review-audit: a different worker or a person reproduces a sample before anyone relies on the report."], "rules": ["Every finding cites one success criterion: number, name and level, with failure or advisory.", "In an AA audit, AAA criteria and best practices are advisory.", "Evidence names the address, the state, the width and the theme, and stores screenshots by SHA-256 with the region that shows the problem.", "cannot_tell is an honest result; a check never guesses pass.", "The report's statement follows from its parts: failures_found when any failure exists; no_failures_found_in_what_was_checked only when nothing in scope went unchecked and a person's assistive-technology session ran; otherwise not_claimed.", "Never write that a site is compliant, certified or fully accessible."], "severity": {"P1": "A failure that stops some people from finishing a key task, such as a keyboard trap or a video with no captions.", "P2": "A failure that makes a task hard or slow, such as low contrast on secondary text or a small target with a workaround.", "P3": "An advisory, or a failure on a minor part with an easy workaround.", "P0": "Not an accessibility level: route exposed personal data or credentials to the security review pack."}, "follow_ups": {"failure": "findings-to-fixes.record-finding", "retest": "findings-to-fixes.verify-fix"}, "sources": ["W3C Website Accessibility Conformance Evaluation Methodology (WCAG-EM) 1.0, a W3C Working Group Note: scope, explore, sample, audit, report. The steps here are written for this pack."], "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.wcag-source", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.public_source", "pack:accessibility-audit", "role:standard", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.public_source", "role": "standard", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "WCAG 2.2, the W3C Recommendation this audit cites", "category_reason": "A public standard, cited by number and linked, never copied.", "name": "Web Content Accessibility Guidelines (WCAG) 2.2", "publisher": "World Wide Web Consortium (W3C)", "url": "https://www.w3.org/TR/WCAG22/", "understanding": "https://www.w3.org/WAI/WCAG22/Understanding/", "quick_reference": "https://www.w3.org/WAI/WCAG22/quickref/", "publication_status": "W3C Recommendation, first published 5 October 2023. Read the dated version at the address before relying on it.", "notes": ["WCAG 2.2 added nine success criteria, including 2.4.11 Focus Not Obscured (Minimum), 2.5.7 Dragging Movements, 2.5.8 Target Size (Minimum), 3.2.6 Consistent Help, 3.3.7 Redundant Entry and 3.3.8 Accessible Authentication (Minimum).", "4.1.1 Parsing is obsolete in WCAG 2.2 and is not audited here.", "The criteria's wording belongs to the W3C under its document license; this pack paraphrases and links instead of copying."], "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.wcag-checklist", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.benchmark_suite", "pack:accessibility-audit", "role:criteria_checklist", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.benchmark_suite", "role": "criteria_checklist", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "WCAG 2.2 A and AA criteria this audit checks, by area", "category_reason": "A fixed checklist every audited page is checked against.", "standard": "WCAG 2.2", "target_level": "AA", "criteria": [{"sc": "2.1.1", "name": "Keyboard", "level": "A", "check": "keyboard", "method": "both", "asks": "Every action works from a keyboard alone, with no timing needed."}, {"sc": "2.1.2", "name": "No Keyboard Trap", "level": "A", "check": "keyboard", "method": "both", "asks": "Focus can always leave a part with the keyboard, or the page says how."}, {"sc": "2.1.4", "name": "Character Key Shortcuts", "level": "A", "check": "keyboard", "method": "manual", "asks": "A single-key shortcut can be turned off or remapped, or works only while its part has focus."}, {"sc": "2.4.1", "name": "Bypass Blocks", "level": "A", "check": "keyboard", "method": "both", "asks": "A skip link, landmarks or headings let people jump past repeated blocks."}, {"sc": "2.4.3", "name": "Focus Order", "level": "A", "check": "keyboard", "method": "manual", "asks": "Focus moves in an order that keeps meaning and operation."}, {"sc": "2.4.7", "name": "Focus Visible", "level": "AA", "check": "keyboard", "method": "both", "asks": "The keyboard focus indicator is visible at every stop."}, {"sc": "2.4.11", "name": "Focus Not Obscured (Minimum)", "level": "AA", "check": "keyboard", "method": "both", "asks": "A focused part is never entirely hidden by sticky headers, banners or other author content."}, {"sc": "3.2.1", "name": "On Focus", "level": "A", "check": "keyboard", "method": "manual", "asks": "Focus alone never changes the context, such as opening a new page."}, {"sc": "1.4.3", "name": "Contrast (Minimum)", "level": "AA", "check": "contrast", "method": "automatic", "asks": "Text has 4.5:1 against its background, or 3:1 when large, in every theme."}, {"sc": "1.4.11", "name": "Non-text Contrast", "level": "AA", "check": "contrast", "method": "both", "asks": "Control boundaries, focus indicators and meaningful graphics have 3:1 against what is next to them."}, {"sc": "1.4.1", "name": "Use of Color", "level": "A", "check": "contrast", "method": "manual", "asks": "Color is never the only way information or an action is shown."}, {"sc": "1.1.1", "name": "Non-text Content", "level": "A", "check": "text_alternatives", "method": "both", "asks": "Images, icons and controls have text alternatives that serve the same purpose; decoration is hidden."}, {"sc": "1.2.1", "name": "Audio-only and Video-only (Prerecorded)", "level": "A", "check": "media", "method": "manual", "asks": "Audio-only has a transcript; video-only has a transcript or an audio track."}, {"sc": "1.2.2", "name": "Captions (Prerecorded)", "level": "A", "check": "media", "method": "both", "asks": "Prerecorded video with sound has synchronized captions."}, {"sc": "1.2.3", "name": "Audio Description or Media Alternative (Prerecorded)", "level": "A", "check": "media", "method": "manual", "asks": "Prerecorded video has audio description or a full text alternative."}, {"sc": "1.2.5", "name": "Audio Description (Prerecorded)", "level": "AA", "check": "media", "method": "manual", "asks": "Prerecorded video has audio description, unless the main audio already conveys every important visual."}, {"sc": "1.4.2", "name": "Audio Control", "level": "A", "check": "media", "method": "both", "asks": "Sound that plays on its own for more than three seconds can be paused or turned down."}, {"sc": "1.4.10", "name": "Reflow", "level": "AA", "check": "reflow", "method": "both", "asks": "At 320 CSS pixels wide, content reads without horizontal scrolling, except content that needs two dimensions."}, {"sc": "1.4.4", "name": "Resize Text", "level": "AA", "check": "reflow", "method": "both", "asks": "Text can grow to 200 percent without losing content or function."}, {"sc": "1.4.12", "name": "Text Spacing", "level": "AA", "check": "reflow", "method": "both", "asks": "Wider line, paragraph, letter and word spacing loses no content."}, {"sc": "1.4.13", "name": "Content on Hover or Focus", "level": "AA", "check": "reflow", "method": "manual", "asks": "Content shown on hover or focus can be dismissed, hovered and stays until dismissed."}, {"sc": "1.3.4", "name": "Orientation", "level": "AA", "check": "reflow", "method": "manual", "asks": "Content works in portrait and landscape unless one is essential."}, {"sc": "2.5.8", "name": "Target Size (Minimum)", "level": "AA", "check": "target_size", "method": "both", "asks": "Pointer targets are at least 24 by 24 CSS pixels, or meet one of the exceptions."}, {"sc": "2.5.7", "name": "Dragging Movements", "level": "AA", "check": "target_size", "method": "manual", "asks": "Anything done by dragging can also be done with single pointer actions."}, {"sc": "2.5.3", "name": "Label in Name", "level": "A", "check": "text_alternatives", "method": "both", "asks": "A control's accessible name contains its visible label text."}, {"sc": "2.2.2", "name": "Pause, Stop, Hide", "level": "A", "check": "motion", "method": "both", "asks": "Motion that starts on its own and lasts more than five seconds can be paused, stopped or hidden."}, {"sc": "2.3.1", "name": "Three Flashes or Below Threshold", "level": "A", "check": "motion", "method": "manual", "asks": "Nothing flashes more than three times in any second, unless below the flash thresholds."}, {"sc": "3.1.1", "name": "Language of Page", "level": "A", "check": "structure", "method": "automatic", "asks": "The page states its main language."}, {"sc": "3.1.2", "name": "Language of Parts", "level": "AA", "check": "structure", "method": "manual", "asks": "Passages in another language are marked with their language."}, {"sc": "1.3.1", "name": "Info and Relationships", "level": "A", "check": "structure", "method": "both", "asks": "Headings, lists, landmarks, tables and labels are in the markup, not only in the look."}, {"sc": "1.3.2", "name": "Meaningful Sequence", "level": "A", "check": "structure", "method": "manual", "asks": "The reading order in the markup keeps the meaning."}, {"sc": "2.4.2", "name": "Page Titled", "level": "A", "check": "structure", "method": "automatic", "asks": "Each page has a title that says what it is."}, {"sc": "2.4.6", "name": "Headings and Labels", "level": "AA", "check": "structure", "method": "manual", "asks": "Headings and labels describe their topic or purpose."}, {"sc": "4.1.2", "name": "Name, Role, Value", "level": "A", "check": "text_alternatives", "method": "both", "asks": "Every control exposes its name, role and state."}, {"sc": "3.3.2", "name": "Labels or Instructions", "level": "A", "check": "text_alternatives", "method": "both", "asks": "Fields that need input have labels or instructions."}, {"sc": "3.3.1", "name": "Error Identification", "level": "A", "check": "manual", "method": "manual", "asks": "An input error is identified and described in text."}, {"sc": "4.1.3", "name": "Status Messages", "level": "AA", "check": "manual", "method": "manual", "asks": "Status messages are announced without moving focus."}, {"sc": "3.3.7", "name": "Redundant Entry", "level": "A", "check": "manual", "method": "manual", "asks": "Information already entered in a process is filled in or selectable, not asked again."}, {"sc": "3.3.8", "name": "Accessible Authentication (Minimum)", "level": "AA", "check": "manual", "method": "manual", "asks": "Signing in needs no memory or puzzle test unless an alternative or help is given."}, {"sc": "2.4.4", "name": "Link Purpose (In Context)", "level": "A", "check": "text_alternatives", "method": "manual", "asks": "Each link's purpose is clear from its text or its context."}, {"sc": "2.4.5", "name": "Multiple Ways", "level": "AA", "check": "manual", "method": "manual", "asks": "A page can be found in more than one way, such as navigation and a site map."}, {"sc": "3.2.3", "name": "Consistent Navigation", "level": "AA", "check": "manual", "method": "manual", "asks": "Repeated navigation appears in the same order on every page."}, {"sc": "3.2.6", "name": "Consistent Help", "level": "A", "check": "manual", "method": "manual", "asks": "Help or contact options appear in the same place on every page."}], "method_meaning": {"automatic": "A deterministic tool answers it.", "manual": "A person or a careful agent judges it.", "both": "A tool finds candidates and a person or agent confirms them."}, "not_listed": "Other A and AA criteria still apply; a plan that leaves one out lists it under not_in_scope with the reason.", "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.capture-matrix", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.reflex_procedure", "pack:accessibility-audit", "role:capture_matrix", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.reflex_procedure", "role": "capture_matrix", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Which states, widths, themes and settings to capture", "category_reason": "A zero-call rule for which cells to capture and check.", "cells": {"widths_px": [1440, 390, 320], "themes": "Every theme the surface offers, such as light and dark", "reduced_motion": ["no-preference", "reduce"], "input_modes": ["pointer", "keyboard"]}, "checks_per_cell": {"contrast": "1440 and 390 in every theme", "structure": "Once per page and state, on the rendered DOM", "keyboard": "1440 and 390, light theme", "reflow": "320, light theme, plus wider text spacing", "target_size": "390 and 1440", "motion": "1440 with both reduced motion settings", "media": "1440"}, "states": ["The page as loaded", "Menus, dialogs and disclosures opened by keyboard", "Error and empty states reachable without submitting real data"], "screenshots": "Full page and viewport, PNG, stored by SHA-256; a region is [x, y, width, height] in CSS pixels of the full-page image.", "never": ["Submit a form, type into a field or create an account to reach a state.", "Use real personal data in any state."], "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.keyboard-procedure", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.reflex_procedure", "pack:accessibility-audit", "role:keyboard_procedure", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.reflex_procedure", "role": "keyboard_procedure", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Walking a page with the keyboard alone", "category_reason": "A zero-call procedure: the same page and keys give the same walk.", "per_stop": ["The focused element's name, role and box", "Whether the focus indicator is visible: crops of the stop focused and unfocused differ", "Whether it is obscured: the element at the center of its box is the focused one", "Whether the order follows the reading order"], "page_checks": ["The first stop is a skip link that moves focus to the main content.", "Escape closes menus and dialogs and returns focus to what opened them.", "No trap: focus leaves every part within a few presses. Native media controls may hold several stops; count until focus leaves.", "Single-character shortcuts (2.1.4) can be turned off or remapped, or act only while their part has focus.", "Every action reachable by pointer is reachable by keyboard (2.1.1)."], "never": ["Press Enter on a submit button or type into a field during an audit walk.", "Refocus an element in a way that resets its inner controls and then report a trap."], "keys": ["Tab", "Shift+Tab", "Enter on links and disclosures", "Space on buttons that change display only", "Escape", "Arrow keys inside widgets"], "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.contrast-method", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.reflex_procedure", "pack:accessibility-audit", "role:contrast_method", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.reflex_procedure", "role": "contrast_method", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Measuring contrast from computed styles", "category_reason": "A zero-call measurement rule implemented by the pack's tested code.", "pairs": "Take each text element's computed color and the nearest opaque background behind it, compositing transparent layers over the page canvas.", "thresholds": {"1.4.3 normal text": 4.5, "1.4.3 large text": 3.0, "1.4.11 non-text": 3.0, "1.4.6 AAA normal text (advisory)": 7.0, "1.4.6 AAA large text (advisory)": 4.5}, "large_text": "At least 24 CSS pixels, or at least 18.67 CSS pixels (14 point) and bold (weight 700 or more). Unknown size is judged as normal text.", "rounding": "Pass and fail use the unrounded ratio. Reports show two decimals.", "cannot_tell": "Text over an image or gradient is cannot_tell unless measured at its lightest and darkest points.", "exempt": ["Logos and brand names", "Disabled controls", "Purely decorative text", "Text that is not visible to anyone, such as an off-screen skip link until it is focused; check it focused"], "tool": {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.tool.a11y-checks", "version": 1, "value_sha256": "4d05f38caa2ed93e14fa87cbc2ebdbf5d032f01c063f67754717f0d2ac152037"}, "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.layout-rules", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.reflex_procedure", "pack:accessibility-audit", "role:layout_rules", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.reflex_procedure", "role": "layout_rules", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Reflow, text spacing and target size rules", "category_reason": "Zero-call geometric rules for three criteria.", "reflow": {"width_px": 320, "height_px_for_horizontal_content": 256, "pass": "No horizontal scrolling of the page at 320 CSS pixels, and no content or function lost.", "two_dimensional_exceptions": ["Data tables", "Maps and diagrams", "Video", "Slides shown as slides", "Toolbars", "Code samples with long lines inside their own scroll box"]}, "text_spacing": {"line_height": "1.5 times the font size", "paragraph_spacing": "2 times the font size", "letter_spacing": "0.12 times the font size", "word_spacing": "0.16 times the font size", "pass": "No text is clipped, overlapped or lost with all four applied. Visually hidden helper text with a 1-pixel box is not clipped content."}, "target_size": {"minimum_css_px": 24, "exceptions_in_order": ["Spacing: a 24-pixel circle centered on the target touches no other target or circle", "Equivalent: another control on the page does the same and meets the size", "Inline: the target sits in a sentence or block of text", "User agent: the browser draws it unchanged", "Essential: the size is required or legally fixed"], "measure": "The bounding box of the clickable area; a label tied to a checkbox adds its area."}, "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.media-and-motion-rules", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.reflex_procedure", "pack:accessibility-audit", "role:media_and_motion_rules", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.reflex_procedure", "role": "media_and_motion_rules", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Checking video, audio and motion", "category_reason": "A zero-call checklist for media and motion criteria.", "video": ["Captions (1.2.2): a captions track in the spoken language that loads, covers the whole running time and matches a sample of the narration.", "Audio description (1.2.5): a described version or descriptions track, or a record that the narration already conveys every important visual; say which, and who judged it.", "Media alternative (1.2.3): a full text alternative with the speech and the important visuals also satisfies level A; a transcript of speech alone does not.", "Controls: play, pause, volume and captions work by keyboard and have names.", "Sound that starts on its own for more than three seconds can be paused or muted (1.4.2)."], "motion": ["Motion that starts on its own and lasts more than five seconds has a pause, stop or hide control (2.2.2).", "Flashing (2.3.1) is cannot_tell unless measured with a named flash analysis tool.", "Honoring prefers-reduced-motion is advisory under 2.3.3 (AAA) in an AA audit."], "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.structure-rules", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.reflex_procedure", "pack:accessibility-audit", "role:structure_rules", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.reflex_procedure", "role": "structure_rules", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "The structure linter's rules and the criteria they relate to", "category_reason": "A zero-call rule list; the pack's code tests keep it equal to the linter's own rules.", "rules": [{"id": "page-lang", "sc": "3.1.1", "name": "Language of Page", "level": "A", "conformance": "failure"}, {"id": "page-title", "sc": "2.4.2", "name": "Page Titled", "level": "A", "conformance": "failure"}, {"id": "main-missing", "sc": "2.4.1", "name": "Bypass Blocks", "level": "A", "conformance": "advisory"}, {"id": "main-multiple", "sc": "1.3.1", "name": "Info and Relationships", "level": "A", "conformance": "advisory"}, {"id": "main-nested", "sc": "1.3.1", "name": "Info and Relationships", "level": "A", "conformance": "advisory"}, {"id": "banner-multiple", "sc": "1.3.1", "name": "Info and Relationships", "level": "A", "conformance": "advisory"}, {"id": "contentinfo-multiple", "sc": "1.3.1", "name": "Info and Relationships", "level": "A", "conformance": "advisory"}, {"id": "landmark-unlabeled", "sc": "1.3.1", "name": "Info and Relationships", "level": "A", "conformance": "advisory"}, {"id": "landmark-duplicate-label", "sc": "1.3.1", "name": "Info and Relationships", "level": "A", "conformance": "advisory"}, {"id": "content-outside-landmarks", "sc": "1.3.1", "name": "Info and Relationships", "level": "A", "conformance": "advisory"}, {"id": "h1-missing", "sc": "2.4.6", "name": "Headings and Labels", "level": "AA", "conformance": "advisory"}, {"id": "h1-multiple", "sc": "1.3.1", "name": "Info and Relationships", "level": "A", "conformance": "advisory"}, {"id": "heading-skipped-level", "sc": "1.3.1", "name": "Info and Relationships", "level": "A", "conformance": "advisory"}, {"id": "heading-empty", "sc": "2.4.6", "name": "Headings and Labels", "level": "AA", "conformance": "advisory"}, {"id": "skip-link-target-missing", "sc": "2.4.1", "name": "Bypass Blocks", "level": "A", "conformance": "advisory"}], "limits": ["The linter reads markup, not style sheets: content hidden only by a style sheet still counts as visible.", "Run it on a rendered DOM snapshot for pages built by scripts.", "Language of parts (3.1.2) is not linted; it needs a reader."], "tool": {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.tool.a11y-checks", "version": 1, "value_sha256": "4d05f38caa2ed93e14fa87cbc2ebdbf5d032f01c063f67754717f0d2ac152037"}, "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.tool.a11y-checks", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.code_node", "pack:accessibility-audit", "role:tool_card", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.code_node", "role": "tool_card", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Tool card: the accessibility checks", "category_reason": "Tested code a worker runs inside a claimed verb, pinned by path, file count and digest.", "name": "accessibility checks", "code": {"path": "packs/accessibility-audit/code", "files": 12, "sha256": "ae51bd9330f1f1f6a191c2e08510c8a7369d8a0ef6ac1e60bae86636cf906bf7"}, "runtime": "Python 3.10 or later, standard library only; nothing to install.", "commands": ["python -m a11y_checks contrast FOREGROUND BACKGROUND [--size-px N] [--weight W] [--non-text]", "python -m a11y_checks contrast --pairs PAIRS.json", "python -m a11y_checks structure PAGE.html [PAGE.html ...] [--strict]"], "does": ["Contrast ratios for text (1.4.3, with 1.4.6 reported separately) and non-text parts (1.4.11), with alpha compositing and the large-text rule.", "Landmark, heading-order, page-language and page-title lint, each result citing its criterion and marked failure or advisory."], "does_not": ["Render pages, run page scripts or load style sheets.", "Open a network connection, call a model or write any file.", "Decide conformance; it reports measurements for a worker's check verb."], "code_license": "MIT", "tests": "The code's tests check published reference ratios and every lint rule, and recompute this pack's two worked examples from source.json, in the library's CI job for the pack.", "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": [{"relation": "verifies", "target_id": "seedpack.accessibility-audit/accessibility-audit.v0.1.0.contrast-method", "target_category": "noun.reflex_procedure", "note": ""}, {"relation": "verifies", "target_id": "seedpack.accessibility-audit/accessibility-audit.v0.1.0.structure-rules", "target_category": "noun.reflex_procedure", "note": ""}]}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.example.contrast", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.benchmark_suite", "pack:accessibility-audit", "role:worked_example", "synthetic:true", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.benchmark_suite", "role": "worked_example", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "SYNTHETIC worked example: theme colors in light and dark", "category_reason": "A golden fixture the validator and the pack's contrast tool both recompute.", "fixture_kind": "contrast_ratio", "purpose": "Synthetic theme colors checked in both themes, recomputed by the library validator and again by this pack's contrast tool in its own CI job.", "formula": "Relative luminance L = 0.2126 R + 0.7152 G + 0.0722 B of linearized sRGB channels (c/12.92 at or below 0.04045, else ((c + 0.055) / 1.055) ^ 2.4); ratio = (L_lighter + 0.05) / (L_darker + 0.05).", "thresholds": {"normal_text": 4.5, "large_text": 3.0}, "pairs": [{"id": "body-text-light", "foreground": "#1f2933", "background": "#ffffff"}, {"id": "muted-text-light", "foreground": "#6b7280", "background": "#ffffff"}, {"id": "placeholder-light", "foreground": "#9ca3af", "background": "#ffffff"}, {"id": "muted-text-dark", "foreground": "#6b7280", "background": "#0f172a"}, {"id": "secondary-text-dark", "foreground": "#9ca3af", "background": "#0f172a"}, {"id": "link-dark", "foreground": "#60a5fa", "background": "#0f172a"}, {"id": "button-text-on-brand", "foreground": "#ffffff", "background": "#2f855a"}], "reading": ["normal_text is the 1.4.3 threshold for text under 24 pixels, or under 18.67 pixels when bold; large_text is the 3:1 threshold for larger text.", "The same 3:1 value is the 1.4.11 threshold for control boundaries and focus indicators, a different criterion.", "A token that passes in one theme can fail in the other: check every theme a surface offers."], "expected": {"body-text-light": {"ratio": 14.76, "normal_text": true, "large_text": true}, "muted-text-light": {"ratio": 4.83, "normal_text": true, "large_text": true}, "placeholder-light": {"ratio": 2.54, "normal_text": false, "large_text": false}, "muted-text-dark": {"ratio": 3.69, "normal_text": false, "large_text": true}, "secondary-text-dark": {"ratio": 7.03, "normal_text": true, "large_text": true}, "link-dark": {"ratio": 7.02, "normal_text": true, "large_text": true}, "button-text-on-brand": {"ratio": 4.54, "normal_text": true, "large_text": true}}, "status": "proposal", "admission": "not_admitted", "content_kind": "synthetic_example", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.example.structure-lint", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.benchmark_suite", "pack:accessibility-audit", "role:worked_example", "synthetic:true", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.benchmark_suite", "role": "worked_example", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "SYNTHETIC worked example: landmark, heading and language lint", "category_reason": "A golden fixture of pages and expected lint results.", "purpose": "Five small synthetic pages and the rules the structure linter reports for each. The pack's code recomputes every result in its CI job.", "pages": [{"id": "clean", "html": "Shifts | Synthetic pantrySkip to content

Volunteer shifts

Saturday

Two places left.

", "expected_rules": [], "expected_failures": 0, "expected_advisories": 0}, {"id": "no-language", "html": "Shifts

Volunteer shifts

", "expected_rules": ["page-lang"], "expected_failures": 1, "expected_advisories": 0}, {"id": "skipped-level-and-loose-text", "html": "Shifts

Open on Saturdays.

Volunteer shifts

Saturday

", "expected_rules": ["content-outside-landmarks", "heading-skipped-level"], "expected_failures": 0, "expected_advisories": 2}, {"id": "two-unnamed-menus", "html": "Shifts

Volunteer shifts

", "expected_rules": ["landmark-unlabeled"], "expected_failures": 0, "expected_advisories": 2}, {"id": "broken-skip-link", "html": "TurnosSaltar al contenido

Turnos de voluntariado

", "expected_rules": ["skip-link-target-missing"], "expected_failures": 0, "expected_advisories": 1}], "reading": ["Only a missing or invalid page language is a failure here (3.1.1); the other rules are advisory practices that support 1.3.1, 2.4.1 and 2.4.6.", "The Spanish page is not flagged for its language: lang=\"es\" is valid. Its skip link points to an id that does not exist."], "status": "proposal", "admission": "not_admitted", "content_kind": "synthetic_example", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.audit-checks", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.benchmark_suite", "pack:accessibility-audit", "role:record_checks", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.benchmark_suite", "role": "record_checks", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Record checks for accessibility findings, with synthetic golden findings", "category_reason": "Deterministic checks with synthetic known-good and known-bad records; the validator recomputes them.", "fixture_kind": "finding_checks", "purpose": "Checks every accessibility finding must pass before it goes into an audit report: a cited criterion with its name and level, failure or advisory, where it was seen, evidence and a fix. The four synthetic good findings pass; each synthetic bad finding fails exactly the one check named in fails.", "deterministic_checks": [{"id": "sc-cited", "rule": {"rule": "pattern_present", "path": "sc", "pattern": "^[1-4]\\.[0-9]\\.[0-9]{1,2}$"}, "why": "Every finding cites one WCAG success criterion by number."}, {"id": "sc-named", "rule": {"rule": "present", "path": "sc_name"}, "why": "The criterion's name is written out, so a reader need not look it up."}, {"id": "level-known", "rule": {"rule": "enum", "path": "level", "values": ["A", "AA", "AAA"]}, "why": "The criterion's level is A, AA or AAA."}, {"id": "aaa-is-advisory", "rule": {"rule": "when", "if": {"path": "level", "equals": "AAA"}, "then": {"rule": "enum", "path": "conformance", "values": ["advisory"]}}, "why": "An AA audit never fails a page on an AAA criterion."}, {"id": "conformance-known", "rule": {"rule": "enum", "path": "conformance", "values": ["failure", "advisory"]}, "why": "Each finding says whether it fails its criterion or is advisory."}, {"id": "severity-known", "rule": {"rule": "enum", "path": "severity", "values": ["P0", "P1", "P2", "P3"]}, "why": "Severity uses the findings scale."}, {"id": "url-recorded", "rule": {"rule": "pattern_present", "path": "where.url", "pattern": "^https?://"}, "why": "The finding names the page."}, {"id": "state-recorded", "rule": {"rule": "present", "path": "where.state"}, "why": "The finding names the state, such as a menu open or an error shown."}, {"id": "width-recorded", "rule": {"rule": "present", "path": "where.width_px"}, "why": "The finding names the viewport width."}, {"id": "theme-recorded", "rule": {"rule": "enum", "path": "where.theme", "values": ["light", "dark", "high_contrast"]}, "why": "The finding names the theme."}, {"id": "evidence-attached", "rule": {"rule": "min_items", "path": "evidence", "min": 1}, "why": "At least one piece of evidence."}, {"id": "evidence-complete", "rule": {"rule": "each_has", "path": "evidence", "fields": ["kind", "detail"]}, "why": "Every evidence item says what it is."}, {"id": "contrast-measured", "rule": {"rule": "when", "if": {"path": "sc", "in": ["1.4.3", "1.4.6", "1.4.11"]}, "then": {"rule": "pattern_present", "path": "measured", "pattern": "[0-9]+(\\.[0-9]+)?:1"}}, "why": "A contrast finding records the measured ratio."}, {"id": "reflow-at-320", "rule": {"rule": "when", "if": {"path": "sc", "equals": "1.4.10"}, "then": {"rule": "enum", "path": "where.width_px", "values": [320]}}, "why": "A reflow finding is recorded at 320 CSS pixels."}, {"id": "target-measured", "rule": {"rule": "when", "if": {"path": "sc", "equals": "2.5.8"}, "then": {"rule": "pattern_present", "path": "measured", "pattern": "[0-9]+(\\.[0-9]+)? by [0-9]+(\\.[0-9]+)?"}}, "why": "A target size finding records width by height."}, {"id": "impact-stated", "rule": {"rule": "present", "path": "impact"}, "why": "The finding says who is affected and how."}, {"id": "fix-suggested", "rule": {"rule": "present", "path": "suggested_fix"}, "why": "The finding suggests a specific fix."}, {"id": "no-contact-data", "rule": {"rule": "pattern_absent", "path": "$", "pattern": "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}|\\b[0-9]{3}[-. )]{1,2}[0-9]{3}[-. ][0-9]{4}\\b"}, "why": "Findings hold no email addresses or phone numbers."}], "finding_schema": {"type": "object", "additionalProperties": false, "required": ["id", "title", "sc", "sc_name", "level", "conformance", "severity", "check", "where", "evidence", "impact", "suggested_fix"], "properties": {"id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,40}$"}, "title": {"type": "string", "minLength": 1, "maxLength": 300}, "sc": {"type": "string", "pattern": "^[1-4]\\.[0-9]\\.[0-9]{1,2}$"}, "sc_name": {"type": "string", "minLength": 1, "maxLength": 80}, "level": {"type": "string", "enum": ["A", "AA", "AAA"]}, "conformance": {"type": "string", "enum": ["failure", "advisory"]}, "severity": {"type": "string", "enum": ["P0", "P1", "P2", "P3"]}, "check": {"type": "string", "enum": ["contrast", "structure", "keyboard", "reflow", "target_size", "media", "motion", "text_alternatives", "assistive_tech", "manual"]}, "where": {"type": "object", "additionalProperties": false, "required": ["url", "state", "width_px", "theme"], "properties": {"url": {"type": "string", "pattern": "^https?://", "minLength": 8, "maxLength": 300}, "state": {"type": "string", "minLength": 1, "maxLength": 200}, "width_px": {"type": "integer", "minimum": 200, "maximum": 8000}, "theme": {"type": "string", "enum": ["light", "dark", "high_contrast"]}, "selector": {"type": "string", "minLength": 0, "maxLength": 300}}}, "measured": {"type": "string", "minLength": 0, "maxLength": 300}, "evidence": {"type": "array", "minItems": 1, "maxItems": 6, "items": {"type": "object", "additionalProperties": false, "required": ["kind", "detail"], "properties": {"kind": {"type": "string", "enum": ["screenshot", "measurement", "dom_excerpt", "recording", "keyboard_trace"]}, "detail": {"type": "string", "minLength": 1, "maxLength": 600}, "sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, "region": {"type": "array", "minItems": 4, "maxItems": 4, "items": {"type": "integer", "minimum": 0, "maximum": 100000}}}}}, "impact": {"type": "string", "minLength": 1, "maxLength": 400}, "suggested_fix": {"type": "string", "minLength": 1, "maxLength": 600}}}, "golden_fixtures": [{"id": "good-contrast", "label": "known_good", "provenance": "synthetic", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "Contrast (Minimum)", "level": "AA", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "good-captions", "label": "known_good", "provenance": "synthetic", "finding": {"id": "A11Y-5", "title": "The intro video has no captions.", "sc": "1.2.2", "sc_name": "Captions (Prerecorded)", "level": "A", "conformance": "failure", "severity": "P1", "check": "media", "where": {"url": "https://pantry.example.invalid/about", "state": "about page, video paused", "width_px": 1440, "theme": "light", "selector": "video#intro"}, "measured": "", "evidence": [{"kind": "dom_excerpt", "detail": "The video element has no track element, and no caption file is linked."}], "impact": "Deaf and hard-of-hearing volunteers miss the whole safety briefing.", "suggested_fix": "Add a WebVTT captions track in English, marked default, timed to the narration, and check a sample of cues against the script."}}, {"id": "good-target", "label": "known_good", "provenance": "synthetic", "finding": {"id": "A11Y-7", "title": "Shift picker arrows are smaller than 24 by 24 pixels and touch each other.", "sc": "2.5.8", "sc_name": "Target Size (Minimum)", "level": "AA", "conformance": "failure", "severity": "P2", "check": "target_size", "where": {"url": "https://pantry.example.invalid/shifts", "state": "week view", "width_px": 390, "theme": "light", "selector": "button.week-prev, button.week-next"}, "measured": "18 by 18 CSS pixels, 4 pixels apart", "evidence": [{"kind": "measurement", "detail": "Bounding boxes 18 by 18; the 24-pixel circles around them overlap, so the spacing exception does not apply."}], "impact": "Volunteers with tremors open the wrong week.", "suggested_fix": "Give each arrow a 44 by 44 pixel hit area with padding, or space them so 24-pixel circles do not touch."}}, {"id": "good-aaa-advisory", "label": "known_good", "provenance": "synthetic", "finding": {"id": "A11Y-9", "title": "The banner animation ignores the reduced motion setting.", "sc": "2.3.3", "sc_name": "Animation from Interactions", "level": "AAA", "conformance": "advisory", "severity": "P3", "check": "motion", "where": {"url": "https://pantry.example.invalid/", "state": "after scrolling past the banner", "width_px": 1440, "theme": "light", "selector": ".hero"}, "measured": "", "evidence": [{"kind": "recording", "detail": "With reduced motion set, the parallax still moves for 1.2 seconds on scroll."}], "impact": "People with vestibular conditions may feel unwell; this is AAA, so it does not fail an AA audit.", "suggested_fix": "Turn the parallax off under prefers-reduced-motion: reduce."}}, {"id": "bad-no-sc", "label": "known_bad", "fails": "sc-cited", "why": "No criterion number.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "contrast", "sc_name": "Contrast (Minimum)", "level": "AA", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-no-sc-name", "label": "known_bad", "fails": "sc-named", "why": "The criterion is not named.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "", "level": "AA", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-level", "label": "known_bad", "fails": "level-known", "why": "An unknown level.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "Contrast (Minimum)", "level": "AA+", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-aaa-failure", "label": "known_bad", "fails": "aaa-is-advisory", "why": "An AAA criterion recorded as a failure in an AA audit.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.6", "sc_name": "Contrast (Enhanced)", "level": "AAA", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-conformance", "label": "known_bad", "fails": "conformance-known", "why": "Neither failure nor advisory.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "Contrast (Minimum)", "level": "AA", "conformance": "maybe", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-severity", "label": "known_bad", "fails": "severity-known", "why": "Severity outside the scale.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "Contrast (Minimum)", "level": "AA", "conformance": "failure", "severity": "high", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-no-url", "label": "known_bad", "fails": "url-recorded", "why": "No page address.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "Contrast (Minimum)", "level": "AA", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "the home page", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-no-state", "label": "known_bad", "fails": "state-recorded", "why": "No state.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "Contrast (Minimum)", "level": "AA", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-no-width", "label": "known_bad", "fails": "width-recorded", "why": "No width.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "Contrast (Minimum)", "level": "AA", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-no-theme", "label": "known_bad", "fails": "theme-recorded", "why": "No theme.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "Contrast (Minimum)", "level": "AA", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-no-evidence", "label": "known_bad", "fails": "evidence-attached", "why": "No evidence.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "Contrast (Minimum)", "level": "AA", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-evidence-blank", "label": "known_bad", "fails": "evidence-complete", "why": "Evidence that says nothing.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "Contrast (Minimum)", "level": "AA", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "screenshot", "detail": ""}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-contrast-unmeasured", "label": "known_bad", "fails": "contrast-measured", "why": "A contrast failure with no ratio.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "Contrast (Minimum)", "level": "AA", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "looks faint", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-reflow-wide", "label": "known_bad", "fails": "reflow-at-320", "why": "A reflow failure recorded at 390 pixels.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.10", "sc_name": "Reflow", "level": "AA", "conformance": "failure", "severity": "P2", "check": "reflow", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "scroll width 412 at 390", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-target-unmeasured", "label": "known_bad", "fails": "target-measured", "why": "A target size failure with no size.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "2.5.8", "sc_name": "Target Size (Minimum)", "level": "AA", "conformance": "failure", "severity": "P2", "check": "target_size", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "small", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-no-impact", "label": "known_bad", "fails": "impact-stated", "why": "Nobody is said to be affected.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "Contrast (Minimum)", "level": "AA", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}, {"id": "bad-no-fix", "label": "known_bad", "fails": "fix-suggested", "why": "No fix.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "Contrast (Minimum)", "level": "AA", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a, measured with the pack's contrast tool."}, {"kind": "screenshot", "detail": "Footer at 390 pixels, dark theme.", "sha256": "4f1d2a7c9e0b3d5f7a1c3e5b7d9f0a2c4e6b8d0f2a4c6e8b0d2f4a6c8e0b2d4f", "region": [16, 2210, 358, 40]}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": ""}}, {"id": "bad-contact-data", "label": "known_bad", "fails": "no-contact-data", "why": "A personal email address in the evidence.", "finding": {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "Contrast (Minimum)", "level": "AA", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "measurement", "detail": "Reported by a volunteer at jo.real@mailbox.net."}], "impact": "People with low vision cannot read the hours and address in the footer at night.", "suggested_fix": "Use the dark theme's secondary text token, #9ca3af, which measures 7.03:1 on #0f172a."}}], "expected": {"good-contrast": {"verdict": "pass", "failed_checks": []}, "good-captions": {"verdict": "pass", "failed_checks": []}, "good-target": {"verdict": "pass", "failed_checks": []}, "good-aaa-advisory": {"verdict": "pass", "failed_checks": []}, "bad-no-sc": {"verdict": "fail", "failed_checks": ["sc-cited"]}, "bad-no-sc-name": {"verdict": "fail", "failed_checks": ["sc-named"]}, "bad-level": {"verdict": "fail", "failed_checks": ["level-known"]}, "bad-aaa-failure": {"verdict": "fail", "failed_checks": ["aaa-is-advisory"]}, "bad-conformance": {"verdict": "fail", "failed_checks": ["conformance-known"]}, "bad-severity": {"verdict": "fail", "failed_checks": ["severity-known"]}, "bad-no-url": {"verdict": "fail", "failed_checks": ["url-recorded"]}, "bad-no-state": {"verdict": "fail", "failed_checks": ["state-recorded"]}, "bad-no-width": {"verdict": "fail", "failed_checks": ["width-recorded"]}, "bad-no-theme": {"verdict": "fail", "failed_checks": ["theme-recorded"]}, "bad-no-evidence": {"verdict": "fail", "failed_checks": ["evidence-attached"]}, "bad-evidence-blank": {"verdict": "fail", "failed_checks": ["evidence-complete"]}, "bad-contrast-unmeasured": {"verdict": "fail", "failed_checks": ["contrast-measured"]}, "bad-reflow-wide": {"verdict": "fail", "failed_checks": ["reflow-at-320"]}, "bad-target-unmeasured": {"verdict": "fail", "failed_checks": ["target-measured"]}, "bad-no-impact": {"verdict": "fail", "failed_checks": ["impact-stated"]}, "bad-no-fix": {"verdict": "fail", "failed_checks": ["fix-suggested"]}, "bad-contact-data": {"verdict": "fail", "failed_checks": ["no-contact-data"]}}, "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.template.audit-plan", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.seed_hypothesis", "pack:accessibility-audit", "role:template", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.seed_hypothesis", "role": "template", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Template: an accessibility audit plan: pages, states, cells, criteria and what is out of scope", "category_reason": "A plan is a testable statement of what the audit will and will not cover.", "describes": "an accessibility audit plan: pages, states, cells, criteria and what is out of scope", "schema": {"type": "object", "additionalProperties": false, "required": ["plan_id", "target", "build", "pages", "widths_px", "themes", "reduced_motion", "input_modes", "criteria", "checks", "not_in_scope", "assistive_tech_session"], "properties": {"plan_id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,40}$"}, "target": {"type": "string", "minLength": 1, "maxLength": 200}, "build": {"type": "string", "minLength": 1, "maxLength": 120}, "pages": {"type": "array", "minItems": 1, "maxItems": 30, "items": {"type": "object", "additionalProperties": false, "required": ["page_id", "url", "states"], "properties": {"page_id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,40}$"}, "url": {"type": "string", "pattern": "^https?://", "minLength": 8, "maxLength": 300}, "states": {"type": "array", "minItems": 1, "maxItems": 8, "items": {"type": "string", "minLength": 1, "maxLength": 200}}}}}, "widths_px": {"type": "array", "minItems": 1, "maxItems": 6, "items": {"type": "integer", "minimum": 200, "maximum": 8000}}, "themes": {"type": "array", "minItems": 1, "maxItems": 3, "items": {"type": "string", "enum": ["light", "dark", "high_contrast"]}}, "reduced_motion": {"type": "array", "minItems": 1, "maxItems": 2, "items": {"type": "string", "enum": ["no-preference", "reduce"]}}, "input_modes": {"type": "array", "minItems": 1, "maxItems": 3, "items": {"type": "string", "enum": ["pointer", "keyboard", "touch"]}}, "criteria": {"type": "array", "minItems": 1, "maxItems": 60, "items": {"type": "string", "pattern": "^[1-4]\\.[0-9]\\.[0-9]{1,2}$"}}, "checks": {"type": "array", "minItems": 1, "maxItems": 10, "items": {"type": "string", "enum": ["contrast", "structure", "keyboard", "reflow", "target_size", "media", "motion", "text_alternatives", "assistive_tech", "manual"]}}, "not_in_scope": {"type": "array", "minItems": 0, "maxItems": 20, "items": {"type": "object", "additionalProperties": false, "required": ["what", "why"], "properties": {"what": {"type": "string", "minLength": 1, "maxLength": 200}, "why": {"type": "string", "minLength": 1, "maxLength": 300}}}}, "assistive_tech_session": {"type": "string", "enum": ["planned", "not_planned"]}, "not_planned_reason": {"type": "string", "minLength": 0, "maxLength": 300}}}, "rules": ["widths_px includes 320.", "themes lists every theme the surface offers.", "Every in-scope criterion maps to a check or to not_in_scope."], "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.template.capture-set", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.eval_run", "pack:accessibility-audit", "role:template", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.eval_run", "role": "template", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Template: screenshots and DOM snapshots of every planned cell, by digest", "category_reason": "A capture set is a recorded run of page loads.", "describes": "screenshots and DOM snapshots of every planned cell, by digest", "schema": {"type": "object", "additionalProperties": false, "required": ["capture_id", "plan_ref", "captured_at", "browser", "cells", "not_run"], "properties": {"capture_id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,40}$"}, "plan_ref": {"type": "object", "additionalProperties": false, "required": ["key", "version", "value_sha256"], "properties": {"key": {"type": "string", "minLength": 1, "maxLength": 256}, "version": {"type": "integer", "minimum": 1, "maximum": 1000000000}, "value_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}}}, "captured_at": {"type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}(:[0-9]{2})?Z$", "maxLength": 30}, "browser": {"type": "string", "minLength": 1, "maxLength": 120}, "cells": {"type": "array", "minItems": 1, "maxItems": 400, "items": {"type": "object", "additionalProperties": false, "required": ["page_id", "url", "state", "width_px", "theme", "reduced_motion", "result"], "properties": {"page_id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,40}$"}, "url": {"type": "string", "pattern": "^https?://", "minLength": 8, "maxLength": 300}, "state": {"type": "string", "minLength": 1, "maxLength": 200}, "width_px": {"type": "integer", "minimum": 200, "maximum": 8000}, "theme": {"type": "string", "enum": ["light", "dark", "high_contrast"]}, "reduced_motion": {"type": "string", "enum": ["no-preference", "reduce"]}, "result": {"type": "string", "enum": ["captured", "not_run"]}, "screenshot_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, "image_size": {"type": "array", "minItems": 2, "maxItems": 2, "items": {"type": "integer", "minimum": 1, "maximum": 100000}}, "dom_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, "reason": {"type": "string", "minLength": 0, "maxLength": 300}}}}, "not_run": {"type": "integer", "minimum": 0, "maximum": 400}}}, "rules": ["A captured cell has both digests and the image size.", "A not_run cell has a reason.", "not_run counts the not_run cells."], "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.template.check-result", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.eval_run", "pack:accessibility-audit", "role:template", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.eval_run", "role": "template", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Template: one check's results across the captured cells, each citing a criterion", "category_reason": "A check result is a recorded, repeatable check run.", "describes": "one check's results across the captured cells, each citing a criterion", "schema": {"type": "object", "additionalProperties": false, "required": ["check", "capture_ref", "tool", "checked_at", "results", "failed", "cannot_tell", "not_run_reasons"], "properties": {"check": {"type": "string", "enum": ["contrast", "structure", "keyboard", "reflow", "target_size", "media", "motion", "text_alternatives", "assistive_tech", "manual"]}, "capture_ref": {"type": "object", "additionalProperties": false, "required": ["key", "version", "value_sha256"], "properties": {"key": {"type": "string", "minLength": 1, "maxLength": 256}, "version": {"type": "integer", "minimum": 1, "maximum": 1000000000}, "value_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}}}, "tool": {"type": "object", "additionalProperties": false, "required": ["name", "version"], "properties": {"name": {"type": "string", "minLength": 1, "maxLength": 120}, "version": {"type": "string", "minLength": 1, "maxLength": 60}}}, "checked_at": {"type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}(:[0-9]{2})?Z$", "maxLength": 30}, "results": {"type": "array", "minItems": 0, "maxItems": 400, "items": {"type": "object", "additionalProperties": false, "required": ["id", "sc", "level", "result", "where"], "properties": {"id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,40}$"}, "sc": {"type": "string", "pattern": "^[1-4]\\.[0-9]\\.[0-9]{1,2}$"}, "level": {"type": "string", "enum": ["A", "AA", "AAA"]}, "result": {"type": "string", "enum": ["pass", "fail", "cannot_tell", "not_applicable", "not_run"]}, "where": {"type": "object", "additionalProperties": false, "required": ["page_id", "width_px", "theme"], "properties": {"page_id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,40}$"}, "width_px": {"type": "integer", "minimum": 200, "maximum": 8000}, "theme": {"type": "string", "enum": ["light", "dark", "high_contrast"]}, "selector": {"type": "string", "minLength": 0, "maxLength": 300}}}, "measured": {"type": "string", "minLength": 0, "maxLength": 300}, "evidence_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, "region": {"type": "array", "minItems": 4, "maxItems": 4, "items": {"type": "integer", "minimum": 0, "maximum": 100000}}, "note": {"type": "string", "minLength": 0, "maxLength": 400}}}}, "failed": {"type": "integer", "minimum": 0, "maximum": 400}, "cannot_tell": {"type": "integer", "minimum": 0, "maximum": 400}, "not_run_reasons": {"type": "array", "minItems": 0, "maxItems": 20, "items": {"type": "string", "minLength": 1, "maxLength": 300}}}}, "rules": ["failed and cannot_tell count those results.", "Every fail has measured or evidence_sha256.", "Every sc is in the checklist."], "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.template.assistive-tech-session", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.eval_run", "pack:accessibility-audit", "role:template", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.eval_run", "role": "template", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Template: a person's session with assistive technology on the key tasks", "category_reason": "A session is a recorded run by a person.", "describes": "a person's session with assistive technology on the key tasks", "schema": {"type": "object", "additionalProperties": false, "required": ["session_id", "tester_role", "signer_is_person", "at", "technology", "tasks"], "properties": {"session_id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,40}$"}, "tester_role": {"type": "string", "minLength": 1, "maxLength": 120}, "signer_is_person": {"const": true}, "at": {"type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}(:[0-9]{2})?Z$", "maxLength": 30}, "technology": {"type": "array", "minItems": 1, "maxItems": 4, "items": {"type": "string", "minLength": 1, "maxLength": 120}}, "tasks": {"type": "array", "minItems": 1, "maxItems": 20, "items": {"type": "object", "additionalProperties": false, "required": ["task", "url", "result", "notes", "sc"], "properties": {"task": {"type": "string", "minLength": 1, "maxLength": 200}, "url": {"type": "string", "pattern": "^https?://", "minLength": 8, "maxLength": 300}, "result": {"type": "string", "enum": ["completed", "completed_with_difficulty", "not_completed", "not_run"]}, "notes": {"type": "string", "minLength": 1, "maxLength": 600}, "sc": {"type": "array", "minItems": 0, "maxItems": 6, "items": {"type": "string", "pattern": "^[1-4]\\.[0-9]\\.[0-9]{1,2}$"}}}}}}}, "rules": ["Each technology names its exact version and the browser it ran with.", "Every task has notes in the tester's words."], "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.template.audit-report", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.eval_run", "pack:accessibility-audit", "role:template", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.eval_run", "role": "template", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Template: an accessibility audit report with cited findings, a criteria summary and what was not checked", "category_reason": "A report is a recorded evaluation of the check results.", "describes": "an accessibility audit report with cited findings, a criteria summary and what was not checked", "schema": {"type": "object", "additionalProperties": false, "required": ["report_id", "plan_ref", "standard", "target_level", "scope", "checks_run", "not_checked", "findings", "criteria_summary", "statement", "statement_reason"], "properties": {"report_id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,40}$"}, "plan_ref": {"type": "object", "additionalProperties": false, "required": ["key", "version", "value_sha256"], "properties": {"key": {"type": "string", "minLength": 1, "maxLength": 256}, "version": {"type": "integer", "minimum": 1, "maximum": 1000000000}, "value_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}}}, "standard": {"const": "WCAG 2.2"}, "target_level": {"const": "AA"}, "scope": {"type": "string", "minLength": 1, "maxLength": 400}, "checks_run": {"type": "array", "minItems": 1, "maxItems": 10, "items": {"type": "string", "enum": ["contrast", "structure", "keyboard", "reflow", "target_size", "media", "motion", "text_alternatives", "assistive_tech", "manual"]}}, "not_checked": {"type": "array", "minItems": 0, "maxItems": 30, "items": {"type": "object", "additionalProperties": false, "required": ["what", "why"], "properties": {"what": {"type": "string", "minLength": 1, "maxLength": 200}, "why": {"type": "string", "minLength": 1, "maxLength": 300}}}}, "findings": {"type": "array", "minItems": 0, "maxItems": 60, "items": {"type": "object", "additionalProperties": false, "required": ["id", "title", "sc", "sc_name", "level", "conformance", "severity", "check", "where", "evidence", "impact", "suggested_fix"], "properties": {"id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,40}$"}, "title": {"type": "string", "minLength": 1, "maxLength": 300}, "sc": {"type": "string", "pattern": "^[1-4]\\.[0-9]\\.[0-9]{1,2}$"}, "sc_name": {"type": "string", "minLength": 1, "maxLength": 80}, "level": {"type": "string", "enum": ["A", "AA", "AAA"]}, "conformance": {"type": "string", "enum": ["failure", "advisory"]}, "severity": {"type": "string", "enum": ["P0", "P1", "P2", "P3"]}, "check": {"type": "string", "enum": ["contrast", "structure", "keyboard", "reflow", "target_size", "media", "motion", "text_alternatives", "assistive_tech", "manual"]}, "where": {"type": "object", "additionalProperties": false, "required": ["url", "state", "width_px", "theme"], "properties": {"url": {"type": "string", "pattern": "^https?://", "minLength": 8, "maxLength": 300}, "state": {"type": "string", "minLength": 1, "maxLength": 200}, "width_px": {"type": "integer", "minimum": 200, "maximum": 8000}, "theme": {"type": "string", "enum": ["light", "dark", "high_contrast"]}, "selector": {"type": "string", "minLength": 0, "maxLength": 300}}}, "measured": {"type": "string", "minLength": 0, "maxLength": 300}, "evidence": {"type": "array", "minItems": 1, "maxItems": 6, "items": {"type": "object", "additionalProperties": false, "required": ["kind", "detail"], "properties": {"kind": {"type": "string", "enum": ["screenshot", "measurement", "dom_excerpt", "recording", "keyboard_trace"]}, "detail": {"type": "string", "minLength": 1, "maxLength": 600}, "sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}, "region": {"type": "array", "minItems": 4, "maxItems": 4, "items": {"type": "integer", "minimum": 0, "maximum": 100000}}}}}, "impact": {"type": "string", "minLength": 1, "maxLength": 400}, "suggested_fix": {"type": "string", "minLength": 1, "maxLength": 600}}}}, "criteria_summary": {"type": "array", "minItems": 1, "maxItems": 60, "items": {"type": "object", "additionalProperties": false, "required": ["sc", "result"], "properties": {"sc": {"type": "string", "pattern": "^[1-4]\\.[0-9]\\.[0-9]{1,2}$"}, "result": {"type": "string", "enum": ["pass", "fail", "cannot_tell", "not_checked"]}}}}, "statement": {"type": "string", "enum": ["failures_found", "no_failures_found_in_what_was_checked", "not_claimed"]}, "statement_reason": {"type": "string", "minLength": 1, "maxLength": 600}}}, "rules": ["Every finding passes the audit checks.", "statement is failures_found when any finding is a failure.", "no_failures_found_in_what_was_checked needs an empty not_checked and a person's assistive-technology session."], "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.template.audit-review", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.eval_run", "pack:accessibility-audit", "role:template", "content:authored", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.eval_run", "role": "template", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Template: a different worker's recheck of a sample of an audit's findings", "category_reason": "A review is a recorded verification.", "describes": "a different worker's recheck of a sample of an audit's findings", "schema": {"type": "object", "additionalProperties": false, "required": ["review_id", "report_ref", "reviewer_role", "distinct_from_auditor", "sampled", "statement_follows", "verdict", "changes"], "properties": {"review_id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,40}$"}, "report_ref": {"type": "object", "additionalProperties": false, "required": ["key", "version", "value_sha256"], "properties": {"key": {"type": "string", "minLength": 1, "maxLength": 256}, "version": {"type": "integer", "minimum": 1, "maximum": 1000000000}, "value_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}}}, "reviewer_role": {"type": "string", "minLength": 1, "maxLength": 120}, "distinct_from_auditor": {"type": "boolean"}, "sampled": {"type": "array", "minItems": 1, "maxItems": 30, "items": {"type": "object", "additionalProperties": false, "required": ["finding_id", "reproduced", "sc_correct", "note"], "properties": {"finding_id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,40}$"}, "reproduced": {"type": "string", "enum": ["yes", "no", "could_not"]}, "sc_correct": {"type": "string", "enum": ["yes", "no"]}, "note": {"type": "string", "minLength": 0, "maxLength": 400}}}}, "statement_follows": {"type": "boolean"}, "verdict": {"type": "string", "enum": ["accepted", "accepted_with_changes", "rejected"]}, "changes": {"type": "array", "minItems": 0, "maxItems": 20, "items": {"type": "string", "minLength": 1, "maxLength": 300}}}}, "rules": ["distinct_from_auditor is true, or the review ends blocked.", "At least five findings are sampled, or all when there are fewer."], "status": "proposal", "admission": "not_admitted", "content_kind": "authored_guidance", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.example.audit-plan", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.seed_hypothesis", "pack:accessibility-audit", "role:example", "synthetic:true", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.seed_hypothesis", "role": "example", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Worked example: an audit plan for a small volunteer site", "category_reason": "A synthetic instance in the template's shape.", "conforms_to": {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.template.audit-plan", "version": 1, "value_sha256": "1a56fd0522bdb369299b09818c0e0a5c4fb380556757af2c2dc93665cf19d09f"}, "instance": {"plan_id": "AP-4", "target": "The synthetic pantry volunteer site", "build": "site build 2026-10-30.3", "pages": [{"page_id": "home", "url": "https://pantry.example.invalid/", "states": ["as loaded", "menu open by keyboard"]}, {"page_id": "shifts", "url": "https://pantry.example.invalid/shifts", "states": ["week view", "a shift chosen, not confirmed"]}, {"page_id": "about", "url": "https://pantry.example.invalid/about", "states": ["intro video paused"]}], "widths_px": [1440, 390, 320], "themes": ["light", "dark"], "reduced_motion": ["no-preference", "reduce"], "input_modes": ["pointer", "keyboard"], "criteria": ["2.1.1", "2.1.2", "2.1.4", "2.4.1", "2.4.3", "2.4.7", "2.4.11", "3.2.1", "1.4.3", "1.4.11", "1.4.1", "1.1.1", "1.2.1", "1.2.2", "1.2.3", "1.2.5", "1.4.2", "1.4.10", "1.4.4", "1.4.12", "1.4.13", "1.3.4", "2.5.8", "2.5.7", "2.5.3", "2.2.2", "2.3.1", "3.1.1", "3.1.2", "1.3.1", "1.3.2", "2.4.2", "2.4.6", "4.1.2", "3.3.2", "3.3.1", "4.1.3", "3.3.7", "3.3.8", "2.4.4", "2.4.5", "3.2.3", "3.2.6"], "checks": ["contrast", "structure", "keyboard", "reflow", "target_size", "media", "motion", "text_alternatives", "assistive_tech"], "not_in_scope": [{"what": "3.3.8 Accessible Authentication (Minimum)", "why": "The site has no sign-in."}, {"what": "Confirming a shift", "why": "It books a real shift; no test target was named."}], "assistive_tech_session": "planned"}, "shows": "A plan with every width and theme, both motion settings, the full checklist and what is out of scope with reasons.", "source": "Synthetic. Written for this pack; every name, address, number and identifier is made up.", "status": "proposal", "admission": "not_admitted", "content_kind": "synthetic_example", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.example.keyboard-walk", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.eval_run", "pack:accessibility-audit", "role:example", "synthetic:true", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.eval_run", "role": "example", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Worked example: a keyboard walk with one invisible focus stop", "category_reason": "A synthetic instance in the template's shape.", "conforms_to": {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.template.check-result", "version": 1, "value_sha256": "a2210b8098f22c234eb5abdbd2f8e4e5192fa85ed5b5bad18cda411229013fdf"}, "instance": {"check": "keyboard", "capture_ref": {"key": "accessibility-audit.capture_set.t-12", "version": 1, "value_sha256": "9a8b7c6d5e4f30211234567890abcdef1234567890abcdef1234567890abcdef"}, "tool": {"name": "browser keyboard walk", "version": "Chromium 140"}, "checked_at": "2026-10-30T15:30Z", "results": [{"id": "K-1", "sc": "2.4.1", "level": "A", "result": "pass", "where": {"page_id": "shifts", "width_px": 1440, "theme": "light"}, "note": "The first stop is a skip link and Enter moves focus into main."}, {"id": "K-2", "sc": "2.4.7", "level": "AA", "result": "fail", "where": {"page_id": "shifts", "width_px": 1440, "theme": "light", "selector": "button.shift"}, "measured": "Focused and unfocused crops are identical at all 14 shift buttons.", "evidence_sha256": "3b7e1f0d9c2a4b6e8f1a3c5e7b9d0f2a4c6e8b0d2f4a6c8e0b2d4f6a8c0e2b4d", "region": [312, 488, 220, 44]}, {"id": "K-3", "sc": "2.1.2", "level": "A", "result": "pass", "where": {"page_id": "about", "width_px": 1440, "theme": "light", "selector": "video#intro"}, "note": "Focus left the native video controls after five presses."}, {"id": "K-4", "sc": "2.1.4", "level": "A", "result": "cannot_tell", "where": {"page_id": "home", "width_px": 1440, "theme": "light"}, "note": "No shortcuts are documented; letter keys were not tried on every page."}], "failed": 1, "cannot_tell": 1, "not_run_reasons": []}, "shows": "Each result cites its criterion; the failure carries a digest and region; a trap is not reported for native video controls that let focus go.", "source": "Synthetic. Written for this pack; every name, address, number and identifier is made up.", "status": "proposal", "admission": "not_admitted", "content_kind": "synthetic_example", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}}, {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.example.audit-report", "expected_version": 0, "producer_surface": "surface:tessera", "visibility_scope": "surface_only", "allowed_surfaces": [], "target_cohorts": ["all"], "tags": ["category:noun.eval_run", "pack:accessibility-audit", "role:example", "synthetic:true", "spdx:MIT", "status:quarantined"], "value": {"category_id": "noun.eval_run", "role": "example", "pack": "accessibility-audit", "pack_version": "0.1.0", "title": "Worked example: an audit report with failures, an advisory and what was not checked", "category_reason": "A synthetic instance in the template's shape.", "conforms_to": {"store": "seedpack.accessibility-audit", "key": "accessibility-audit.v0.1.0.template.audit-report", "version": 1, "value_sha256": "be16a15c6c3a96c78a75e95f7c6ed32e0b1af8f4608ad17a9ca35cd7132f098d"}, "instance": {"report_id": "AR-4", "plan_ref": {"key": "accessibility-audit.audit_plan.t-11", "version": 1, "value_sha256": "0e1d2c3b4a5968778695a4b3c2d1e0f00e1d2c3b4a5968778695a4b3c2d1e0f0"}, "standard": "WCAG 2.2", "target_level": "AA", "scope": "Three pages of the synthetic pantry volunteer site at 1440, 390 and 320 pixels, light and dark.", "checks_run": ["contrast", "structure", "keyboard", "reflow", "target_size", "media", "motion", "text_alternatives"], "not_checked": [{"what": "A screen reader session", "why": "The person who runs it is booked for next week."}, {"what": "Confirming a shift", "why": "It books a real shift; no test target was named."}], "findings": [{"id": "A11Y-2", "title": "Shift buttons show no keyboard focus indicator.", "sc": "2.4.7", "sc_name": "Focus Visible", "level": "AA", "conformance": "failure", "severity": "P1", "check": "keyboard", "where": {"url": "https://pantry.example.invalid/shifts", "state": "week view", "width_px": 1440, "theme": "light", "selector": "button.shift"}, "measured": "Identical crops focused and unfocused at all 14 buttons.", "evidence": [{"kind": "keyboard_trace", "detail": "Stops 9 to 22 of the walk.", "sha256": "3b7e1f0d9c2a4b6e8f1a3c5e7b9d0f2a4c6e8b0d2f4a6c8e0b2d4f6a8c0e2b4d", "region": [312, 488, 220, 44]}], "impact": "Keyboard-only volunteers cannot tell which shift they are about to choose.", "suggested_fix": "Add :focus-visible { outline: 3px solid currentColor; outline-offset: 2px } to the shift buttons."}, {"id": "A11Y-3", "title": "Muted footer text is too faint in the dark theme.", "sc": "1.4.3", "sc_name": "Contrast (Minimum)", "level": "AA", "conformance": "failure", "severity": "P2", "check": "contrast", "where": {"url": "https://pantry.example.invalid/", "state": "home page, nothing open", "width_px": 390, "theme": "dark", "selector": "footer small"}, "measured": "3.69:1 for 14 px text, where 4.5:1 is required", "evidence": [{"kind": "measurement", "detail": "Foreground #6b7280 on background #0f172a."}], "impact": "People with low vision cannot read the footer at night.", "suggested_fix": "Use #9ca3af on #0f172a, which measures 7.03:1."}, {"id": "A11Y-9", "title": "The banner animation ignores the reduced motion setting.", "sc": "2.3.3", "sc_name": "Animation from Interactions", "level": "AAA", "conformance": "advisory", "severity": "P3", "check": "motion", "where": {"url": "https://pantry.example.invalid/", "state": "after scrolling past the banner", "width_px": 1440, "theme": "light", "selector": ".hero"}, "evidence": [{"kind": "recording", "detail": "With reduced motion set, the parallax still moves."}], "impact": "People with vestibular conditions may feel unwell; advisory only.", "suggested_fix": "Turn the parallax off under prefers-reduced-motion: reduce."}], "criteria_summary": [{"sc": "2.4.7", "result": "fail"}, {"sc": "1.4.3", "result": "fail"}, {"sc": "1.4.10", "result": "pass"}, {"sc": "2.5.8", "result": "pass"}, {"sc": "1.2.2", "result": "pass"}, {"sc": "3.1.1", "result": "pass"}, {"sc": "2.1.4", "result": "cannot_tell"}, {"sc": "4.1.3", "result": "not_checked"}], "statement": "failures_found", "statement_reason": "Two findings fail AA criteria. A screen reader session and the confirmation step were not checked."}, "shows": "Findings that pass the audit checks, an AAA advisory that does not fail the page, a summary row per criterion and an honest statement.", "source": "Synthetic. Written for this pack; every name, address, number and identifier is made up.", "status": "proposal", "admission": "not_admitted", "content_kind": "synthetic_example", "license": "MIT", "provenance": {"source": "original ta-amps authored proposal", "license": "MIT", "generator": "scripts/build_packs.py", "independently_verified": false}, "dimensions": {"determinism": 0.0, "evidence_grounding": 0.0, "token_efficiency": 0.0, "safety_compliance": 0.0, "verification_tier": "unverified"}, "dimension_basis": {"measured": false, "method": "unmeasured_floor", "reason": "Tessera requires these axes, so each is set to its lowest value and the tier is unverified. No quality is claimed. Replace them only with measured values and the evidence that produced them."}, "relations": []}} ]}