01-projects/onoma

Implementation notes — onoma v0 (2026-07-30)

2026-07-30·reference

Build agent notes per the implementation-notes SOP. Spec: 2026-07-30-onoma-build-spec.md. Scope: v0 only. No key or secret appears in this file or in app/.

Decisions

Tradeoffs

Open questions (→ founder / v1)

  1. Live-output quality (voice bar on real calls) is untested by design — parent runs the LIVE-OUTPUT ACCEPTANCE with a real key after deploy.
  2. other-type inference wording: the system prompt tells the model to replace other with the inferred category in name_type; the render shows it in the eyebrow. If founder prefers "inferred: X" phrasing, one-line change in render.
  3. No lookup history / permalink per spec out-of-scope list.

Design-critic iteration (round 1 — ITERATE verdict, all findings addressed)

Fresh-eyes critic subagent (design-critic skill, run as a zero-context agent per the skill's subagent mandate) returned ITERATE: 5/5 tells, doodle aesthetic 4/4, hero-character check PASS, zero console/network issues — held back on proportion: navy secondary at ~0.1% of canvas (page read as one pale-blue field), sun accent ~1-2% (below the 5% floor), the motto's mono-caps line a verbatim duplicate of the serif beats, doodle hidden on mobile, gear 24×32px tap target, chips 41px.

Fixes applied (cache-bust ?v=02 → 04 across two edit rounds):

  1. Navy secondary band ×2: the compression section is now a full navy #0D2438 band (sky-soft serif beats, sun separators) and the footer is a full-bleed navy band (100vw breakout, column-aligned padding).
  2. Sun promotion: wave-sun banker's-note underline on the hero <em> (inline data-URI SVG — the staged wave asset files weren't shipped into the app folder; same visual contract, self-contained), sun-deep 3px left rails on each card's literal-gloss line, sun beat separators in the band.
  3. Motto duplicate removed: reading is retained in the payload but no longer displayed — the critic flagged it as a near-verbatim restatement of the beats in a second register. The band's mono caption is now the root chain (parts[].root joined with ·) in paperline mono. Deviation from the spec's "compression + reading are the three-beat payoff" phrasing — reading is data-present, display-suppressed; one-line revert if founder wants it back.
  4. Mobile: hero doodle now shown compact (150px, centered, hero-row wraps) instead of display:none; gear enlarged to 44×44; chips to 44px min-height. Verified: gear 44×44, chip 44px, no horizontal overflow at 393px.
  5. Contract catch during re-verify (own audit, not critic): the root chain first used bay #4d8aac as text on navy (~3.4:1; contract marks bay decorative-only) — switched to paperline #b8c8d6 (~8.5:1 on navy).

Design-critic round 2 — DID NOT COMPLETE (UNVERIFIED)

A round-2 re-critic was dispatched to the same fresh-eyes agent after the fixes; its transcript shows it mid-capture (mobile checks) with no verdict emitted before the session ended. Round 2 is therefore UNVERIFIED — the round-1 verdict (ITERATE, 5/5 tells, findings all addressed above) is the last completed critic pass. Parent owns the critic loop from here. All round-1 findings were verified fixed mechanically (gear 44×44, chips 44px, doodle visible on mobile, navy bands + root chain present in the DOM and in read screenshots), but no fresh-eyes agent has re-scored the iterated page.

Verification log (Playwright, localhost:8791, cache-busted per-round query params, JPEG screenshots — read, not just taken)