Build Log · August 12, 2026
MedinaCHF Template Extraction + ForgeKit Site Reposition
Templatized MedinaCHF into a reusable community-org scaffold, then rebuilt the public site around 'ForgeKit is a local software studio, assurance is how it builds' instead of leading with assurance as the product.
- ForgeKit Website
- MedinaCHF
- Template Extraction
- Positioning
- Anvil/Strike pairs recorded — template-vs-engine evidence bar, assurance-as-method reposition
- 2
- reusable patterns harvested into Pattern Registry
- 8
- real config-layer bugs found by independent architecture review, all fixed
- 5
- production deploys to forgekits.build this session
- 3
Anvil/Strike pairs recorded — template-vs-engine evidence bar, assurance-as-method reposition
reusable patterns harvested into Pattern Registry
real config-layer bugs found by independent architecture review, all fixed
production deploys to forgekits.build this session
Timeline
Start
MedinaCHF template review
Audited MedinaCHF for template-extraction viability; initial recommendation was to wait for a second customer
Reframe
Zeb overrides the wait-for-two-consumers call
First live production app is itself the signal to extract, not a reason to wait — Anvil/Strike recorded
Build
packages/templates/community-org/ scaffolded
Copy of MedinaCHF, zero risk to the live app — config layer, brand tokens, patterns harvested
Review
Independent architecture review + fixes
Found config declared-but-not-wired in 5 places (dues, membership requirement, brand tokens, manifest, welcome messages) — all fixed, tsc clean
Pivot
Site reposition Charge
Zeb brought an external analysis arguing assurance should be the studio's method, not its market category
Ship
Homepage, Nav, Footer, /labs, /medinachf, /design-partners rebuilt
Deployed to production 3x, each verified live before moving on
Close
Concurrent-session discovery
Found real in-progress medinaCHF work from another session mid-commit; left it untouched throughout per concurrency rules
What shipped
packages/templates/community-org/ — a genericized copy of products/medinaCHF, config layer (lib/config/), brand tokens driven from config at render time, real .env.example and README
8 reusable patterns added to forgekit-os/patterns.md (intent-vs-outcome tracking, audit-logged intake, tiered auto-response, ack-tracked broadcast, photo-upload component, chip-select, diff-two-sets query idiom, plus the plain-Clerk auth pattern already tracked)
app/manifest.ts (Next.js native route) replacing a broken static manifest.json with literal unsubstituted placeholder tokens
forgekit-website: full homepage rewrite (5-question structure: what do you do / is this for me / what could you build / have you done this / why ForgeKit)
forgekit-website: new /medinachf product page — MedinaCHF as the studio's live proof point
forgekit-website: Nav, Footer, /labs reframed to match the new positioning
forgekit-website: /design-partners fully rewritten (was still targeting 'technology-risk and internal-audit leaders', missed in the first reposition pass)
forgekit-website: unified CTA copy site-wide ('Tell us what's held together with duct tape')
forgekit-website: short first-person founder note (Zeb's own words, interviewed live in-session, not drafted then attributed)
Two Anvil/Strike pairs recorded in forgekit-os/journal/anvils.md and strikes.md