ForgeKitFORGEKIT

Build Log

Known Hardening Pass + User Guide

June 29, 2026

Bolted the enrichment bridge to the floor, then built the guide that explains it — now feeding both the app and the website.

KnownHardeningSecurityGuide
5
hardening fixes
1
unique DB constraint pushed to Neon
2
guide surfaces (in-app + website)
0
build errors

Timeline

Start
Zeb arrives with a review brief
Five surgical hardening tasks identified from Zeb's post-build review. No new features.
30m
Hardening pass complete
Schema constraint, ownership guard, caregiver gate tightened, private entry leak closed, rejected dot fixed.
45m
db:push live
Unique index on entryEnrichments.entryId pushed to Neon. One enrichment per entry enforced at DB level.
60m
User guide built
/guide route in Known app. Same content added to forgekit-website guides system.
75m
Maintenance rule added
Known guide trap added to ignition.md KNOWN TRAPS. Guide will stay current across future builds.

What shipped

Unique index on entryEnrichments.entryId — one enrichment per portrait entry, enforced at DB level, pushed to Neon

Entry ownership guard in POST and PATCH API routes — verifies entryId belongs to portraitId before touching DB, returns 404 on mismatch

Private entry exclusion tightened in care-card and Known Card queries — private entries excluded before the enrichment query, not filtered after

Rejected enrichment dot changed from amber to red in BookPortrait — draft stays amber, rejected is now visually distinct

In-app user guide at /guide — 12 sections, table of contents, Known brand palette, robots:noindex

Known user guide added to forgekit-website/lib/guides/known.ts — feeds public /guides page with SEO-ready FAQ schema

Quiet guide link added to portrait page footer — 'How Known works →'

Known guide maintenance rule added to ignition.md KNOWN TRAPS — fires at close of any Known session

The bridge Claude built is the right bridge. Now we make sure the bolts are tight before anyone walks across it.

Zeb — pre-session review brief