Build Log · June 27, 2026

Known Lens Engine v0.2 — Product Glow Pass

Made the engine tell the truth: Handoff is now operational notes, Known Card is ruthless, What Helps gives exact words, and the Portrait finally shows who he actually is.

  • Known
  • Product
  • Lens Engine
new optional fields on KnownContextObject
3

new optional fields on KnownContextObject

new recent care observation seed objects
3

new recent care observation seed objects

lens sections restructured or fixed
6

lens sections restructured or fixed

new helper: isRecentCareObservation()
1

new helper: isRecentCareObservation()

new product surfaces added
0

new product surfaces added

Timeline

  1. Start

    Read all four files + prior retro

    Loaded session context, confirmed prototype route structure, checked previous session outputs

  2. 10m

    Product review written before touching code

    Six-question analysis of each tab: useful / weird / repeated / missing / too broad / not actionable

  3. 20m

    Zeb confirmed review, added guardrails

    Avoid brittle string extraction. Add cardLabel/suggestedPhrase/offerableCue instead. Differentiate seed data — don't make everything daysAgo(1).

  4. 30m

    types.ts updated

    Three optional fields added to KnownContextObject. WhatHelpsCard rebuilt with six structured sections.

  5. 45m

    data.ts rewritten

    Standing context pushed to 15–45 days old. Three new recent care observations (ctx-021/022/023) with change_signal tags and cardLabel/suggestedPhrase/offerableCue.

  6. 60m

    lenses.ts rewritten

    All five fixes applied: Handoff (isRecentCareObservation), Known Card (caps + cardLabel), What Helps (six sections), Portrait (identity tags), groupBy generic fixed.

  7. 75m

    page.tsx rebuilt

    All six view components updated for new WhatHelpsCard shape. Print polish: debug hidden, underlined tabs, calmer headings, max-width content column.

  8. 80m

    tsc clean, build clean, 200

    One TypeScript error (groupBy generic constraint) caught and fixed. All checks pass.

What shipped

  • Added optional fields to KnownContextObject: cardLabel (short topic label), suggestedPhrase (exact words to use), offerableCue (physical/sensory thing to offer)

  • Rebuilt WhatHelpsCard type: whatMayBeHappening, doNotSay, trySaying, tryOffering, environmentalAdjustments, ifThisKeepsHappening

  • Differentiated seed data: standing context (15–45 days old) vs recent care observations (1–2 days old)

  • Added ctx-021: yesterday shower went better after coffee — change_signal + observed improvement

  • Added ctx-022: wife-asking pattern after lunch increasing this week — change_signal + handoff note

  • Added ctx-023: TV caused visible agitation today, settled after it was turned off — change_signal + trigger

  • Added isRecentCareObservation() helper: gates Handoff content to caregiver_observation and handoff_note sources only

  • Known Card: youShouldKnow widened (boundary/dignity now included), sections capped at 3, safeTopics uses cardLabel not full guidance, whatHelps uses offerableCue first

  • What Helps: six structured sections with exact phrases quoted in UI, trySaying shows only objects with suggestedPhrase

  • Portrait: whoHeIs changed from emotionalTone === 'identity' to tags.includes('identity') — now shows actual identity facts

  • Handoff: isRecentCareObservation() gates all content, fallback to repeated-pattern calming cues only if no recent observations

  • Print polish: debug info hidden in print via print:hidden, underlined tab nav, calmer headings, max-width content column

  • Fixed groupBy generic constraint (Record<string, unknown> → T) so it accepts typed interfaces

  • tsc --noEmit: 0 errors. npm run build: clean. GET /known/prototype: 200

“The danger now is not 'can we build it?' The danger is accidentally building a clever renderer that produces bad care artifacts.”
— Zeb's pre-session direction — on why the glow pass comes before the brand pass