Feature 05 task 1: Design tokens and self-hosted fonts #32

Member

Implements Feature 05 task 1 (1fcdadb2). Done-condition: web/src/styles/tokens.css holds the handoff tokens verbatim minus the Google Fonts @import, with @font-face for self-hosted Bagel Fat One 400 and Figtree 400/600/700 woff2 plus OFL licences; base styles set body bg/text/Figtree and the focus outline; npm run lint:colors fails on hex literals outside tokens.css and runs in npm test; the production build makes no fonts.googleapis.com request (asserted by grepping dist); typecheck/test/build pass.

Evidence (developer-run): lint:colors, typecheck, npm test and npm run build pass; grep of dist finds no Google Fonts; negative checks confirmed the linters fail on planted hex/dist references; Vite preview served all five woff2 files 200; gofmt/vet/go test -race unaffected; make build and docker build ok.

Implements Feature 05 task 1 (1fcdadb2). Done-condition: web/src/styles/tokens.css holds the handoff tokens verbatim minus the Google Fonts @import, with @font-face for self-hosted Bagel Fat One 400 and Figtree 400/600/700 woff2 plus OFL licences; base styles set body bg/text/Figtree and the focus outline; npm run lint:colors fails on hex literals outside tokens.css and runs in npm test; the production build makes no fonts.googleapis.com request (asserted by grepping dist); typecheck/test/build pass. Evidence (developer-run): lint:colors, typecheck, npm test and npm run build pass; grep of dist finds no Google Fonts; negative checks confirmed the linters fail on planted hex/dist references; Vite preview served all five woff2 files 200; gofmt/vet/go test -race unaffected; make build and docker build ok.
dev_agent added 1 commit 2026-10-03 15:53:08 -04:00
Add design tokens and self-hosted fonts
Independent review Codex gpt-6-sol high: CHANGES_REQUIRED (1 high)
CI / ci (pull_request) Successful in 1m29s
CI / ci (push) Successful in 1m30s
41a1272358
Copy the handoff tokens.css into web/src/styles/tokens.css verbatim except
the Google Fonts @import, replaced by @font-face rules for self-hosted
Bagel Fat One (400) and Figtree (400/600/700) woff2 files, committed with
their OFL licence texts. Base styles set the page background, text colour,
Figtree body and the accent focus outline.

npm test now runs lint:colors, which fails on any hex colour literal in
web/src outside tokens.css. npm run build ends with check:dist-fonts, which
fails if dist references fonts.googleapis.com or fonts.gstatic.com.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
review_agent left a comment
Member

Independent review — Codex gpt-6-sol, reasoning high

Verdict: CHANGES_REQUIRED
Reviewed SHA: 41a1272358c00371b3fd21449495a5d013b33d65

{
  "verdict": "CHANGES_REQUIRED",
  "reviewed_sha": "41a1272358c00371b3fd21449495a5d013b33d65",
  "summary": "The handoff token values match, the font files and OFL texts are committed, and the base styles meet the stated requirements. The color lint passes on the current tree; in-memory checks confirmed that both guards reject violations. Typecheck, tests, build, and the dist grep could not run because this read-only checkout has no node_modules or dist. The color lint does not cover every CSS/TSX file required by the done-condition.",
  "findings": [
    {
      "id": "F1",
      "severity": "high",
      "location": "web/scripts/lint-colors.mjs:8",
      "failure_case": "A hex colour in web/public/theme.css or web/theme.tsx passes npm run lint:colors, although the done-condition requires the script to fail for any CSS/TSX file outside tokens.css.",
      "evidence": "The scanner starts at web/src and recursively visits only that directory. In-memory injection confirmed that it rejects hex literals inside web/src; it never visits files elsewhere under web.",
      "suggested_correction": "Scan all applicable CSS and TSX files under web, excluding tokens.css and generated or dependency directories."
    }
  ]
}

Posted unaltered by review_agent. This is transport, not a second review.

## Independent review — Codex `gpt-6-sol`, reasoning high Verdict: **CHANGES_REQUIRED** Reviewed SHA: `41a1272358c00371b3fd21449495a5d013b33d65` ```json { "verdict": "CHANGES_REQUIRED", "reviewed_sha": "41a1272358c00371b3fd21449495a5d013b33d65", "summary": "The handoff token values match, the font files and OFL texts are committed, and the base styles meet the stated requirements. The color lint passes on the current tree; in-memory checks confirmed that both guards reject violations. Typecheck, tests, build, and the dist grep could not run because this read-only checkout has no node_modules or dist. The color lint does not cover every CSS/TSX file required by the done-condition.", "findings": [ { "id": "F1", "severity": "high", "location": "web/scripts/lint-colors.mjs:8", "failure_case": "A hex colour in web/public/theme.css or web/theme.tsx passes npm run lint:colors, although the done-condition requires the script to fail for any CSS/TSX file outside tokens.css.", "evidence": "The scanner starts at web/src and recursively visits only that directory. In-memory injection confirmed that it rejects hex literals inside web/src; it never visits files elsewhere under web.", "suggested_correction": "Scan all applicable CSS and TSX files under web, excluding tokens.css and generated or dependency directories." } ] } ``` --- Posted unaltered by `review_agent`. This is transport, not a second review.
dev_agent added 1 commit 2026-10-03 15:56:55 -04:00
Scan all of web/ for hex colour literals
Independent review Codex gpt-6-sol high: APPROVED (0 findings)
CI / ci (pull_request) Successful in 1m27s
CI / ci (push) Successful in 1m27s
dd4412a414
lint:colors only walked web/src, so a hex colour in a CSS or TypeScript
file elsewhere under web/ (for example web/public/theme.css or
web/theme.tsx) passed. It now walks the whole of web/, skipping the
top-level node_modules and dist directories and hidden tool-cache
directories. src/styles/tokens.css remains the only file allowed to
contain hex literals.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
review_agent left a comment
Member

Independent review — Codex gpt-6-sol, reasoning high

Verdict: APPROVED
Reviewed SHA: dd4412a4143dd12a6c042657483c7055a4a04c5f

{
  "verdict": "APPROVED",
  "reviewed_sha": "dd4412a4143dd12a6c042657483c7055a4a04c5f",
  "summary": "The handoff token values match verbatim. Self-hosted font files and OFL texts are committed, base styles meet the requirements, and no hard-coded hex colours were found outside tokens.css. The round 1 lint gap is fixed: read-only probes confirmed that lint:colors rejects hex literals in web/public CSS and TSX, and that the build check rejects both Google Fonts hosts. lint:colors passes. Typecheck, tests, build, and dist inspection could not be completed because web/node_modules is absent; tsc and vitest are unavailable. The working tree remains clean.",
  "findings": []
}

Posted unaltered by review_agent. This is transport, not a second review.

## Independent review — Codex `gpt-6-sol`, reasoning high Verdict: **APPROVED** Reviewed SHA: `dd4412a4143dd12a6c042657483c7055a4a04c5f` ```json { "verdict": "APPROVED", "reviewed_sha": "dd4412a4143dd12a6c042657483c7055a4a04c5f", "summary": "The handoff token values match verbatim. Self-hosted font files and OFL texts are committed, base styles meet the requirements, and no hard-coded hex colours were found outside tokens.css. The round 1 lint gap is fixed: read-only probes confirmed that lint:colors rejects hex literals in web/public CSS and TSX, and that the build check rejects both Google Fonts hosts. lint:colors passes. Typecheck, tests, build, and dist inspection could not be completed because web/node_modules is absent; tsc and vitest are unavailable. The working tree remains clean.", "findings": [] } ``` --- Posted unaltered by `review_agent`. This is transport, not a second review.
approver_agent merged commit 496f2e5375 into feature/64e5bb19-c9a2-4c6a-8f0c-aceae43fb732-frontend-foundation 2026-10-03 16:16:29 -04:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Maniacs_Mansion/MealQuest#32