# Dogfood Report: Tested Media Concept Lab

| Field | Value |
|---|---|
| Date | 2026-08-28 |
| App URL | https://tested-media-design-lab.pages.dev |
| Session | tm-wide-qa, tm-laptop-qa, tm-mobile-qa, and live verification sessions |
| Scope | Selector plus both full 13-section concepts at 1648x1006, 1280x720, 1024x768, 390x844, and 320x800 |

## Summary

| Severity | Count |
|---|---:|
| Critical | 0 |
| High | 1 |
| Medium | 3 |
| Low | 3 |
| Total | 7 |

## Issues

### ISSUE-001: Starter cookie banner obscures the concept selector

| Field | Value |
|---|---|
| Severity | medium |
| Category | visual / ux |
| URL | http://localhost:3000 |
| Repro Video | N/A |

The starter cookie banner covers the lower-right quarter of the second concept card. This is an isolated, non-production design mockup with no analytics or consent-requiring scripts, so the banner adds no value and blocks the primary comparison task.

Evidence: `screenshots/selector-desktop.png`

Status: fixed by removing the dormant starter banner from the root layout. Production consent behavior was not changed because this is a separate mockup project.

### ISSUE-002: Direct hash links do not land on their target section

| Field | Value |
|---|---|
| Severity | medium |
| Category | functional / navigation |
| URL | http://localhost:3000/tested-media-motion#proof |
| Repro Video | N/A |

Opening the proof hash directly leaves the viewport at the hero. The starter watches the App Router pathname for a hash even though the pathname API does not include one.

Evidence: `screenshots/motion-case-desktop.png`

Status: fixed by reading `window.location.hash` on route changes and forwarding it to the existing Lenis anchor handler.

### ISSUE-003: First corridor image is reported as a late LCP candidate

| Field | Value |
|---|---|
| Severity | low |
| Category | performance |
| URL | http://localhost:3000/tested-media-motion |
| Repro Video | N/A |

Next.js reports the first visible portfolio screen as the page LCP and recommends eager loading. This can make the hero feel late even though the rest of the scene is ready.

Status: fixed by eagerly loading the first two corridor screens and keeping the remaining screens lazy.

### ISSUE-004: Mobile header CTA is too dense at deep-scroll states

| Field | Value |
|---|---|
| Severity | low |
| Category | responsive / visual |
| URL | http://localhost:3000/tested-media-proof#proof |
| Repro Video | N/A |

The full "Build my engine" label competes with the wordmark in the 390px header and can rasterize as cramped or partially clipped when the fixed header is composited over a light section.

Evidence: `screenshots/proof-stack-mobile.png`

Status: fixed by using a short "Audit" label below the desktop breakpoint while preserving the same target and touch area.

### ISSUE-005: Screen corridor obscures the hero headline on mobile

| Field | Value |
|---|---|
| Severity | medium |
| Category | responsive / visual |
| URL | http://localhost:3000/tested-media-motion |
| Repro Video | N/A |

The initial 3D screens composite above the final word of the headline at 390px, leaving "Markets" unreadable. The scene should support the message, not vandalize it.

Evidence: `screenshots/motion-hero-mobile.png`

Status: fixed by removing the corridor below desktop while retaining the WebGL atmosphere and scroll system. The message now gets the full mobile canvas.

### ISSUE-006: React Three Fiber emits an upstream Clock deprecation warning

| Field | Value |
|---|---|
| Severity | low |
| Category | console |
| URL | http://localhost:3000/tested-media-proof |
| Repro Video | N/A |

The production human path logs `THREE.Clock: This module has been deprecated. Please use THREE.Timer instead.` The app does not instantiate `THREE.Clock`; the warning originates inside the current React Three Fiber runtime paired with Three 0.185.1.

Status: consciously kept. Downgrading away from the verified GetLayers dependency pair would introduce more risk than this non-breaking upstream warning. Recheck on the next React Three Fiber update.

### ISSUE-007: Version B opening frame collides at the reported wide viewport

| Field | Value |
|---|---|
| Severity | high |
| Category | responsive / visual |
| URL | https://tested-media-design-lab.pages.dev/tested-media-motion |
| Repro Video | N/A |

At 1648x1006, three moving portfolio screens covered the headline and competed with the CTA. The initial frame contained 81,864 square pixels of measured headline/card intersection even though overflow and broken-image checks passed.

Status: fixed by removing the redundant in-hero wordmark, narrowing the headline, reserving a left-side copy shield, clustering screens on the right, and moving the reticle away from the CTA. Post-fix geometry reports zero headline/card and CTA/card intersection at all five tested viewport sizes. The CTA remains inside the opening viewport.

## Final verification

- All 13 sections were visually scanned at 1648x1006 and 390x844.
- Hero geometry passed at 1648x1006, 1280x720, 1024x768, 390x844, and 320x800.
- Document width equals viewport width at every tested size.
- The selector and both concept routes report zero broken images.
- All 63 referenced assets across the three routes return HTTP 200 on the live deployment.
- Lint, TypeScript, static build, and the project verification script pass.
