Files
2026-10-23 22:37:55 +08:00

16 KiB
Raw Permalink Blame History

phase, verified, status, score, overrides_applied, re_verification, gaps, deferred
phase verified status score overrides_applied re_verification gaps deferred
01-design-tokens-rams-foundation 2026-10-22T02:55:00Z passed 13/14 plan must-haves verified literally (14/14 at goal level); 4/4 roadmap success criteria verified 0
previous_status previous_score gaps_closed gaps_remaining regressions
null null
truth addressed_in evidence
Basemap POI icons come from the hosted colored OFM sprite (not token-derived) Phase 3 / Phase 5 (first product map phase) Logged in phase deferred-items.md #1; Phase 3 SC1 renders the live position on the Rams basemap, Phase 5 renders route display — treatment candidates (text-only POIs, custom grayscale sprite) attached to those map phases
truth addressed_in evidence
Sprite-pattern layers (landcover_wetland, road_area_pattern) left un-derived Phase 3 / Phase 5 Logged in phase deferred-items.md #3; visible only at zooms above the proof view
truth addressed_in evidence
Self-hosted pbf glyph route for Rams map-label fonts (Space Grotesk/Geist as map glyphs) Candidate for Phase 2+ (Worker infra) / product map phases Recorded in liberty-rams.json metadata.rams-font-substitutions reason: 'revisit with a Worker-served glyphs route'; no Phase 1 SC requires self-hosted glyphs, and no later phase SC claims it — tracked here for visibility

Phase 1: Design Tokens + Rams Foundation — Verification Report

Phase Goal: The Telemetry Rams design system exists as one centralized, importable token set — including map basemap cartography — with a user-approved mockup-vs-implementation gallery proving the fidelity bar before any product screen is built. Verified: 2026-10-22T02:55:00Z Status: passed Re-verification: No — initial verification

Goal Achievement

Observable Truths (roadmap success criteria = the contract)

# Truth (Roadmap SC) Status Evidence
1 Every rendered Rams component derives exclusively from the centralized token set — audit sweep finds zero off-token values ✓ VERIFIED npm run audit re-run on freshly rebuilt dist: AUDIT CLEAN — 354 declarations, 0 off-token values (55 colors / 9 radius tokens all zero / 7 families / 6 spacing / 10 type sizes / 9 trackings). border-radius forms in dist: 0, var(--radius), 3.40282e38px (sanctioned rounded-full clamp) — no .25rem. tokens.css is the audit allowlist source (DEFAULT_TOKENS = src/tokens.css).
2 Side-by-side gallery exists and is user-approved (DSGN-02 mechanism) ✓ VERIFIED theme/gallery.html (290 lines, CDN-free, token-driven): 4 mockup-vs-sheet rows + basemap row + token ledger (names only) + approval strip; <img> links to all 5 committed captures (visually inspected — real renders). 01-04-DSGN-02-APPROVAL.md records verbatim user response "approved" (2026-10-22T00:51:39Z), scope = fidelity bar + basemap direction.
3 Rams-styled MapLibre basemap renders in a browser ✓ VERIFIED theme/basemap/liberty-rams.json (110 layers, metadata.rams-cartography.derived-from = theme/src/tokens.css with per-role derivation formulas) + index.html MapLibre proof page (loads ./liberty-rams.json, route color read at runtime via getComputedStyle('--color-signal-orange')). Committed real-browser capture screenshots/basemap-kl.png inspected: grayscale/muted KL metro, muted labels, zero orange except the reserved route vector.
4 Design authority is singular (conflict resolved) ✓ VERIFIED Root DESIGN.md carries the SUPERSEDED-FOR-SPECIFICS banner (conflicting Helvetica/Inter typography + palette explicitly marked superseded, values delegated to the package). README.md contains zero hex/px. Mockup tree untouched (git porcelain clean — read-only per D-06, @source scoped to its markup only). One token package (theme/), all scripts delegate to it.

Score (goal level): 4/4 success criteria verified

Plan-Level Must-Haves (merged from PLAN frontmatters)

Plan Truth Status Evidence
01 Tokens importable as plain CSS (@theme static + :root) ✓ VERIFIED tokens.css 176 lines; dist carries token vars
01 Build produces compiled dist with Tailwind v4 utilities ✓ VERIFIED npm run build → dist/rams.css (90ms, v4.3.3); audit harvests 49 classes from 3 pages
01 Zero Google Fonts CDN refs; self-hosted fonts ✓ VERIFIED grep for `fonts.googleapis
01 DESIGN.md superseded banner ✓ VERIFIED lines 1–3 of DESIGN.md
02 Sheet displays every mockup component family ✓ VERIFIED Visual inspection of sheet-full.png: typography specimen (D-11), buttons, inputs, chips/badges, telemetry card, maneuver banner, checkboxes/toggle
02 Legibility specimen included (D-11) ✓ VERIFIED SEC-00 // LEGIBILITY section, 13 --type-* specimens
02 Sheet dist CSS contains zero off-token values ✓ VERIFIED audit exit 0 post-rebuild; components.css = 104 var(-- refs, no literal hex (only documented 18×18 checkbox geometry, adjudication 6)
03 Basemap renders: grayscale landing, muted water/roads/labels, zero signal-orange in basemap ✓ VERIFIED Capture inspection + metadata; audit-style accent guard in build.mjs (assertNoAccent)
03 Values derived from tokens, not hand-tuned ✓ VERIFIED build.mjs parses tokens.css; metadata records desaturate(tokenHex, …) per role
03 Map labels use self-hosted Space Grotesk/Geist assets (D-10) ⚠ VERIFIED-WITH-RECORDED-DEVIATION See "Recorded deviation" below — hosted OpenFreeMap glyphs endpoint only serves Noto Sans (Space Grotesk/Geist 404 at build time, probed); closest hosted stack substituted, recorded in metadata.rams-font-substitutions with reason + revisit path. Pre-planned in 01-03 plan body, REVIEW-adjudicated clean, and inside the basemap render the user explicitly approved.
04 Audit is scripted evidence, zero off-token values (D-13) ✓ VERIFIED 38/38 regression tests pass (incl. T9–T12 evasion tests); exit 2 radius-drift guard
04 Static side-by-side gallery vs all 4 mockups (D-12) ✓ VERIFIED gallery.html, 4 rows + basemap row, all <img>s resolve
04 Playwright real-browser capture script committed (D-14) ✓ VERIFIED scripts/screenshot.mjs committed; 6/6 captures present and visually verified non-blank
04 User viewed gallery + basemap and approved ✓ VERIFIED Approval record, verbatim "approved"

Score (plan level): 13 verified literally / 14 (1 verified-with-recorded-deviation, no goal-level gap)

Recorded Deviation (D-10 map-label glyph stacks) — suggested formal override

Map label glyph stacks are Noto Sans Bold / Noto Sans Regular, not self-hosted Space Grotesk/Geist. MapLibre label glyphs must be served as pbf glyph ranges; the OpenFreeMap glyphs endpoint hosts only Noto Sans and self-hosted woff2 cannot serve glyph ranges without a glyphs route (Worker arrives in Phase 2). The substitution was pre-planned in the 01-03 plan body, is machine-recorded in metadata.rams-font-substitutions (intended/served/reason), was adjudicated clean by 01-REVIEW, and the user approved the rendered basemap that displays it. Rams-type roles are honored (bold-major / regular-minor hierarchy, muted matte labels). To formalize in the record, the developer may add to this file's frontmatter:

overrides:
  - must_have: "Map labels use the self-hosted Space Grotesk / Geist assets (D-10)"
    reason: "OpenFreeMap glyphs endpoint hosts only Noto Sans (woff2 cannot serve pbf glyph ranges pre-Worker); closest hosted stack substituted, recorded in style metadata, and covered by the user's DSGN-02 basemap approval"
    accepted_by: "(developer)"
    accepted_at: "(timestamp)"

Required Artifacts

Artifact Expected Status Details
theme/src/tokens.css Token package (55 colors, 10 spacing, 9 radius all zero, 13 type vars) ✓ VERIFIED 176 lines; --radius: 0px bare key + family zeroed (CR-01 fix commit 61d15c2 present)
theme/src/theme.css @import tokens + @font-face + scoped @source ✓ VERIFIED imports tokens.css + components.css; @source not ../scripts / ../basemap (WR-01 fix present)
theme/src/components.css var()-only component classes ✓ VERIFIED 104 var() refs, no literal hex
theme/src/sheet.html Component sheet consuming dist/rams.css ✓ VERIFIED link at line 15; renders all 7 component families (screenshot inspected)
theme/dist/rams.css Built stylesheet ✓ VERIFIED rebuilt this pass; radius forms token-only; no .shadow{/.blur{ (WR-01)
theme/basemap/build.mjs + liberty-rams.json + index.html Token-derived basemap + render proof ✓ VERIFIED derivation provenance in metadata; style JSON valid; proof page wired
theme/scripts/audit.mjs (+ test harness) Automated D-13 audit ✓ VERIFIED 814 lines; scans dist, parses tokens.css allowlist, 38/38 tests
theme/scripts/screenshot.mjs Playwright capture toolchain (D-14) ✓ VERIFIED WR-05 docroot guard fix present (startsWith(THEME + sep))
theme/gallery.html DSGN-02 gallery (min 80 lines) ✓ VERIFIED 290 lines, CDN-free
theme/fonts/{geist,space-grotesk}/*.woff2 Self-hosted typefaces ✓ VERIFIED 7 files
.gitignore (+ Zone scrub) Repo hygiene ✓ VERIFIED 0 *:Zone.Identifier files remain; secrets/node_modules/dist entries present
package.json (root) Workspace delegates ✓ VERIFIED build/sheet/gallery/audit/capture → theme workspace
From To Via Status Details
theme/src/theme.css theme/src/tokens.css CSS @import ✓ WIRED line 14
theme build theme/dist/rams.css tailwindcss CLI ✓ WIRED ran this pass (90ms)
theme/src/sheet.html theme/dist/rams.css <link rel=stylesheet> ✓ WIRED line 15
theme/src/components.css tokens.css var(--color-)/var(--spacing-) ✓ WIRED 104 refs; literal scan clean
theme/basemap/build.mjs theme/src/tokens.css token parse ✓ WIRED metadata derived-from; derivation report to stdout
theme/basemap/index.html liberty-rams.json MapLibre style URL ✓ WIRED line 115
theme/basemap/index.html token package getComputedStyle at runtime ✓ WIRED reads --color-signal-orange/--color-matte-black
theme/scripts/audit.mjs tokens.css (allowlist) + dist/rams.css (scan) default paths ✓ WIRED exit 0 run; exit-1/2 behavior covered by 38 tests
theme/scripts/screenshot.mjs theme/screenshots/* Playwright captures ✓ WIRED 6/6 captures on disk
theme/gallery.html theme/screenshots/* <img> rows ✓ WIRED 9 img elements incl. basemap row

Data-Flow Trace (Level 4)

Artifact Data Variable Source Produces Real Data Status
basemap/index.html route placeholder color getComputedStyle(--color-signal-orange) from dist/rams.css Yes (token value, not hand-tuned) ✓ FLOWING
liberty-rams.json all cartography colors tokens.css parse + desaturate() Yes (provenance metadata per role) ✓ FLOWING
sheet.html / gallery.html styles dist/rams.css tokens Yes (renders verified visually) ✓ FLOWING (static design artifacts — no dynamic data expected)

Behavioral Spot-Checks

Behavior Command Result Status
Build produces dist npm run build --workspace theme Done in 90ms, v4.3.3 ✓ PASS
Audit sweep zero off-token npm run audit AUDIT CLEAN — 354 declarations, 0 off-token (exit 0), re-run post-rebuild ✓ PASS
Theme test suite node theme/scripts/audit.test.mjs 38 PASS / 0 FAIL (first invocation hit a stale /tmp/opencode/audit-test symlink from the fixer's sandbox — environment artifact, not a test failure; clean re-run passed) ✓ PASS
CR-01 fix: bare rounded var-driven grep dist .rounded → border-radius:var(--radius), --radius:0px emitted; no .25rem ✓ PASS
Basemap renders as Rams cartography inspect committed screenshots/basemap-kl.png (real-browser capture) Grayscale/muted map, muted labels, orange only on reserved route vector ✓ PASS
Sheet renders all component families inspect committed screenshots/sheet-full.png Typography specimen + buttons + inputs + chips + card + banner + switches, zero radius ✓ PASS
Renders without committed captures serve theme/ + open gallery.html live Not re-run live — captures committed post-fix and no worn class changed rendering between capture and now (.rounded/.shadow/.blur worn by zero pages) ? SKIP (evidence already real-browser + user-approved)

Requirements Coverage

Requirement Source Plan(s) Description Status Evidence
DSGN-01 01-01, 01-02, 01-03 All screens render from a centralized token set — no off-token values; basemap cartography follows the same tokens ✓ SATISFIED Audit exit 0 (scripted evidence, D-13); tokens.css single source; basemap derived per-role from tokens (D-09); component/basemap renders verified
DSGN-02 01-04 Mockup-vs-implementation gallery reviewed for fidelity before proceeding ✓ SATISFIED gallery.html + Playwright captures + recorded verbatim approval ("approved", 00:51:39Z); mechanism documented for per-phase reuse

Orphaned requirements: none — REQUIREMENTS.md traceability maps exactly DSGN-01/DSGN-02 to Phase 1, and both are claimed by plans. (Info: the traceability table's "Pending" checkbox text was not flipped to Complete — doc-maintenance nit, not a gap.)

Anti-Patterns Found

File Line Pattern Severity Impact
theme/src/theme.css 31–34 @source scans mockup markup (Tailwind Play-CDN replacement pattern) ℹ️ Info Intentional and deliberately narrowed (WR-01) — prose leakage tests exist (T5)
theme/basemap/index.html 127 "PLACEHOLDER ROUTE VECTOR" ℹ️ Info Documented scope staging — route rendering is Phase 5 per plan; reads color from tokens at runtime
stitch_minimalist_route_navigator/*/code.html — legacy inline onclick demo handlers ℹ️ Info Read-only mockups (D-06), untouched by design
DESIGN.md 31–39 hex/px restated in legacy philosophy prose ℹ️ Info Under explicit SUPERSEDED-FOR-SPECIFICS banner naming palette/typography as superseded; README carries zero numerics; D-05 pre-authorized keeping philosophy prose

No TODO/FIXME/stub markers; no blocker or warning anti-patterns.

Human Verification Required

None outstanding. The phase's blocking human checkpoint (DSGN-02 gallery + basemap review) was completed on 2026-10-22 with a recorded verbatim approval — the one item a human must decide in this phase is already decided and archived (01-04-DSGN-02-APPROVAL.md). Visual fidelity, real-browser rendering, and basemap appearance were all covered by that approved review, and the committed captures inspected in this verification match what was approved (no worn class changed rendering between capture time and the post-fix state).

Gaps Summary

No goal-level gaps. All four roadmap success criteria verified against the live codebase, with the code-review blocker fix (CR-01) and all five warnings (WR-01..05) confirmed present in the artifacts and the 38-test regression suite green. One documented, pre-adjudicated, user-approved deviation exists at plan-truth level (D-10 map-label glyph stacks → closest hosted stack, machine-recorded) — it does not block the phase goal, has a recorded revisit path, and a formal override entry is suggested above if the developer wants it in the durable record.


Verified: 2026-10-22T02:55:00Z Verifier: OpenCode (gsd-verifier)