Manifest position 939 · CrUX rank bucket 1000
https://scratch.mit.edu
Coverage complete
Coverage-complete representative audit of seven public/guest paths. Authenticated account, moderation, studio-detail, profile, payment/donation completion, and project-save/share states were not covered because they require credentials, user mutation, or duplicate inspected templates.
All 58 atomic check outcomes
| Principle / check | Status | Confidence | Evidence or reason |
|---|---|---|---|
respect-user-preferencesrespects-color-scheme | issues | high | The dark-condition screenshot is visually identical to the default; the computed probe reports colorScheme "normal" under a matching dark query. F01 medium: The interface does not honor the system dark-color preference. |
respect-user-preferencesrespects-reduced-motion | pass | high | Reduced-motion carousel recording produced one static frame over 3 seconds and the animation probe reported no running animations. |
respect-user-preferencesrespects-contrast | issues | high | Lighthouse reports color-contrast failures; the inspected CSS/probe exposed no high-contrast adaptation for the affected content. F02 medium: Some text fails minimum contrast and there is no contrast-specific adaptation. |
implement-natural-interactionsview-transitions | issues | high | The recorded Home to Explore journey shows navigation/loading frames without a continuity transition. F03 low: Primary route changes are abrupt full-document swaps. |
implement-natural-interactionsscroll-driven-animations | not-applicable | high | No scroll-linked storytelling, parallax, or reveal interaction was present on the representative templates, so there is no scroll-driven effect to implement. |
implement-natural-interactionsphysical-gestures | issues | high | The DOM/CSS capture contains Slick transform-driven carousel rules and custom arrow controls, with no scroll-snap evidence. F04 low: Carousels use legacy scripted transforms rather than native snapping/gesture semantics. |
provide-guided-navigationscroll-state-aware-chrome | issues | high | Screenshots and captured CSS show fixed/static navigation and scripted carousels but no scroll-state query, progress indicator, or responsive header state. F05 low: Site chrome remains static rather than communicating scroll position. |
provide-guided-navigationanchored-positioning | not-applicable | high | No tooltip/popover/menu whose placement could be meaningfully tested was exposed in the representative guest paths. |
provide-guided-navigationdirects-attention | pass | high | Screenshots show persistent labelled navigation, visually dominant primary actions, project title/context, and explicit editor tutorial controls. |
maximize-content-reduce-noiseno-intrusive-interruptions | pass | high | The donation banner pushes rather than overlays content, is clearly labelled, and exposes a visible 32x32 dismiss control on desktop and mobile. |
maximize-content-reduce-noisesemantic-dismissible-primitives | issues | high | The join surface reports one role=dialog but zero native dialog elements across the inspected UI. F06 low: Account onboarding uses a custom dialog layer instead of the native dialog primitive. |
maximize-content-reduce-noisereduced-chrome | pass | high | Landing, project, ideas, and editor screenshots devote the principal region to creation/discovery content with restrained navigation chrome. |
adapt-to-the-form-factorresponsive-no-horizontal-scroll | issues | high | Layout measured 130px horizontal overflow on the project page and 664px on the editor; the editor layout viewport expanded to 1024px. F07 high: Primary project/editor surfaces force desktop widths on a 360px device. |
adapt-to-the-form-factorcomponent-level-responsiveness | issues | high | The CSS capture contains repeated 480/768/942px media tiers and fixed .inner widths; the probe found zero CSS container rules. F08 medium: Reusable components rely on viewport breakpoints and fixed-width tiers. |
adapt-to-the-form-factorinput-modality-aware | issues | high | Lighthouse target-size fails; the UI probe measured visible controls as small as 32x32 and text links around 14-18px high. F09 medium: Multiple controls and links are too small or too tightly spaced for touch. |
support-core-task-successclear-purpose-and-primary-action | pass | high | The landing H1 states the purpose and Start Creating/Join are prominent; project exposes start/See inside; editor opens with a Getting Started tutorial. |
support-core-task-successprimary-flow-completion | pass | high | The guest Create link reached a functional editor with blocks, stage, start/stop controls and tutorial; Join reached a clear multi-step first screen. |
support-core-task-successclear-system-state-and-recovery | pass | high | Empty Join submission produced three visible Required messages; the invalid-route screen explains the failure and offers search recovery. |
be-fast-and-stablegood-core-web-vitals | issues | high | Lighthouse measured LCP 10.9s, CLS 0.781, and TBT 290ms; the independent mobile layout observer measured CLS 0.834. F10 critical: The landing page is slow and highly unstable under lab load. |
be-fast-and-stablevisual-stability | pass | high | Direct visual, DOM, Lighthouse, network, interaction, or responsive inspection across the representative paths found the expected outcome with no contrary signal. |
be-fast-and-stableefficient-main-thread | issues | high | The 360px editor layout capture recorded 723ms and 153ms long tasks after load; the project page recorded a 711ms task. F11 high: The interactive editor blocks the main thread with long tasks. |
be-fast-and-stableefficient-resource-delivery | issues | high | HAR recorded 43 requests and 4.24MB transferred, including 1.29MB splash.intl.js and an 830KB thumbnail; parser-inserted styles/scripts begin at high priority. F12 high: The landing page ships a heavy, poorly prioritized resource set. |
be-fast-and-stabletrim-unused-and-duplicate-code | issues | high | HAR shows 1.97MB script transfer; Lighthouse flags large scripts without source maps and the locale bundle alone is 1.29MB. F13 high: Large first-party and analytics scripts dominate startup. |
be-inclusivenames-roles-labels | issues | high | The image audit found 17 of 18 images without alt; Lighthouse found unnamed links; editor canvases have no role, accessible name, or fallback content. F14 high: Key visual and interactive content lacks robust accessible equivalents. |
be-inclusivesufficient-contrast | issues | high | Lighthouse accessibility audit reports color-contrast failures on the landing surface. F16 medium: Some foreground/background combinations fail WCAG contrast. |
be-inclusivestructure-and-focus | issues | high | Lighthouse reports aria-hidden slides containing focusable links, skipped heading order, and malformed definition-list structure. F15 high: Hidden carousel slides remain focusable and document structure is invalid. |
be-inclusivelegible-text | pass | high | Visual review across desktop/mobile found readable line lengths, clear hierarchy, and no clipped body copy on the landing, ideas, and Join templates. |
be-inclusivezoom-reflow-targets-and-media | issues | high | The editor has 664px overflow at a 360px visual viewport, project has 130px, and Lighthouse target-size fails. F17 medium: Reflow and touch-target support is incomplete. |
follow-best-practicesno-console-errors | issues | high | Lighthouse captured 404 console/network errors for /fonts/slick.woff and /fonts/slick.ttf. F18 medium: The landing page logs failed font requests. |
follow-best-practicessound-document-and-assets | issues | high | All 18 audited images lack width/height attributes; Lighthouse reports incorrectly displayed gallery aspect ratios. F19 medium: Image dimensions, aspect ratios, and delivery are unsound. |
follow-best-practicesbrowser-platform-hygiene | issues | high | Lighthouse reports deprecated Shared Storage usage in polyfill.min.js and missing maps for large first-party bundles. F20 low: Deprecated APIs and missing production source maps reduce platform hygiene. |
be-discoverabletitle-and-description | pass | high | Home, Explore, and project probes returned route-specific descriptive titles and meta descriptions. |
be-discoverablecrawlable-and-mobile-friendly | issues | high | Discoverability measured only 3% raw-content coverage on home and 1% on the project, both empty #app shells; crawler screenshots are blank. F21 high: Public content is effectively empty to crawlers that do not execute JavaScript. |
be-discoverablecanonical-and-indexing-signals | issues | high | The platform probe found no canonical URL, while sitemap.xml exists and the public pages return 200. F22 medium: Canonical indexing signals are incomplete. |
be-discoverablestructured-and-shareable-metadata | issues | high | The metadata probe found Open Graph tags but zero JSON-LD blocks; public project content is a rich CreativeWork-like entity. F23 medium: Rich project entities are not expressed as structured data. |
be-private-and-securesecure-transport-and-headers | issues | high | Headers show no CSP or nosniff; all three cookies lack Secure and two analytics cookies use SameSite=None for 400 days. F24 high: Transport is HTTPS, but core response and cookie defenses are missing. |
be-private-and-securedata-minimisation-and-third-parties | issues | high | Tracker evidence records Google Tag Manager and Google Analytics; HAR attributes about 300KB to tag-manager scripts and cookies persist 400 days. F25 high: A child-focused site loads Google tracking on first visit. |
be-private-and-securein-context-permissions-and-modern-auth | issues | high | The inspected Join flow asks for password and confirmation with autocomplete disabled; inspected app signals exposed no WebAuthn/passkey path. F26 medium: Account flows present password-only UI with no visible phishing-resistant option. |
be-private-and-securedefensive-browser-policies | issues | high | Headers include HSTS and SAMEORIGIN, but omit CSP/frame-ancestors policy, Referrer-Policy, Permissions-Policy, and nosniff. F27 medium: Several browser-enforced defensive policies are absent. |
be-resilientprogressive-enhancement | issues | high | Raw HTML has an empty #app and only 1-3% of rendered words; crawler screenshots show a blank shell. F28 high: Core public content depends entirely on JavaScript. |
be-resilientresilient-runtime-behaviour | pass | high | Project/player, editor tutorial, listing, and Join dialog rendered without cut-off overlays at desktop; repeated tutorial close/open remained operable. |
be-resilientoffline-and-installable | issues | high | The platform probe found no manifest and no controlling service worker on the landing surface. F29 medium: The app-like creation experience is neither installable nor offline-capable. |
be-resilientnetwork-and-http-failure-states | pass | high | A deliberately invalid route returned a clear illustrated error, explanation, and search field rather than a blank shell. |
be-internationalisedlang-dir-and-logical-properties | issues | high | HTML uses lang=en-GB, but captured CSS repeatedly uses left/right, float:left/right, margin-left/right and fixed directional placement, with no dir declaration. F30 medium: Language is declared, but layout CSS is heavily physical and not bidi-ready. |
be-internationalisedlocale-aware-data | not-applicable | high | The audited guest surfaces showed no dates, currency, numbers, or calendar data whose locale formatting could be judged. |
be-internationalisedtime-zone-correctness | not-applicable | high | No scheduled event or time-zone-sensitive workflow was present in the audited guest surfaces. |
be-trustworthyno-dark-patterns | pass | high | Landing donation is labelled and dismissible; Join says the account is free and its first step contains no preselected consent or disguised action. |
be-trustworthyhumane-error-handling | pass | high | After an empty Next action, Join displayed contextual Required messages beside all three relevant inputs without blame or destructive state loss. |
be-trustworthytrustworthy-input-assistance | issues | high | The Join probe reports autocomplete="off" for username, password, and password confirmation. F31 medium: Signup explicitly disables helpful autofill. |
be-trustworthysafe-commercial-and-account-flows | pass | high | The audited signup entry states “It’s free”, asks only username/password on the first step, and presents one predictable Next action; authenticated account management was excluded. |
be-sustainableoptimised-assets | issues | high | Image audit found 14 oversized images, 15 legacy-format images, 16 without srcset, and 15 below-fold images not lazy-loaded. F32 high: Most image bytes are oversized legacy PNGs with no responsive delivery. |
be-sustainableno-wasteful-work | issues | high | HAR records 4.24MB on load, 21 cross-origin requests, large below-fold thumbnails, and analytics collection before interaction. F33 high: Non-essential bytes and tracking work execute during initial load. |
be-sustainablethird-party-and-media-budget | issues | high | 2.54MB of 4.24MB transferred cross-origin; image payload is 2.26MB and tag-manager scripts add about 300KB. F34 high: Third-party and media cost is disproportionate for the landing view. |
be-agent-readystructured-agent-capabilities | not-applicable | high | This emerging capability is contextual; Scratch exposes no declared agent-facing surface, so absence is an opportunity rather than a failure. |
be-agent-readyon-device-inference | not-applicable | high | No summarisation/language-model feature is part of the representative core journey, so on-device inference is not applicable. |
be-memory-efficientno-leak-under-repeated-interaction | pass | medium | After 10 tutorial close/open cycles, heap self-size rose from 97,187,667 to 98,592,843 bytes (1.45%); this bounded warm-up-sized delta does not establish unbounded retention. |
be-memory-efficientbounded-footprint | pass | medium | The complex visual editor used about 89MB JS heap, 2,067 live DOM elements, and a 97.2MB heap snapshot; substantial but proportionate to blocks, canvas, tutorial, media, and VM UI. |
be-memory-efficientno-detached-dom-or-unbounded-listeners | pass | medium | Before/after heap summaries contained no Detached* constructor among retained top constructors; repeated interaction caused only a small bounded total delta. |
Provenance
Canonical report: results/atomic/reports/0939-scratch_mit_edu.json
Report SHA-256: 001fdce7d7980f91b195a713a9d1c6228cb5819305f56c0ef6fb5f3f8d40715c
Local retained report: runs/2026-07-17T17-27-24-856Z/atomic-reports/scratch_mit_edu/2026-07-24T00-33-57-126Z/report.json
Local evidence root: runs/2026-07-17T17-27-24-856Z/atomic-reports/scratch_mit_edu/2026-07-24T00-33-57-126Z
Catalog SHA-256: sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7
Raw screenshots, HARs, traces, heaps, and other browser artifacts are retained at the local evidence root and intentionally are not committed. Artifact paths in the canonical report are relative to that root.