Build Log · July 8, 2026

Forge — The Front Door Decision

A real plumber prospect (new Housecall Pro user, phone flooded with customer texts) forced the sidecar-vs-fit-shop fork — and Zeb's pushback on a hedged 'both' answer produced the real decision: Forge is the front door, not the back office.

  • Forge
  • Product Decision
  • Positioning
  • Strike
  • OS
product identity decided
1

product identity decided

Strike + Anvil pair captured
1

Strike + Anvil pair captured

stale doc claims corrected (Gino, gino-pilot.md, key-docs table)
3

stale doc claims corrected (Gino, gino-pilot.md, key-docs table)

Timeline

  1. Start

    Ignite + Charge received

    Plumber feedback + Housecall Pro competitive analysis (GPT exchange) delivered as the Charge

  2. Early

    Orientation + pulse

    Found the 2026-06-21 Strike ('memory and attention system, not a CRM') — the engine had pre-decided the positioning question

  3. Mid

    Two corrections from Zeb

    Gino is a test org, not the demo target; the plumber discovery conversation had already happened (flooded phone)

  4. Mid-late

    The pushback

    'It's now both? really?' — hedged both-segments answer rejected; front-door reframe produced

  5. Close

    Decision made durable

    docs/forge-front-door-decision.md written; Anvil + Strike captured; CLAUDE.md + PROJECT_INDEX corrected

  6. Post-wrap

    Journal under-reporting found and fixed

    Zeb noticed the live page showed none of the 3 spins engine-health counted — renderer never displayed chapters[].spins; fixed with a public/internal split (option 2)

What shipped

  • docs/forge-front-door-decision.md — the durable decision record: identity (front door), rejected options with reasons (HCP sidecar, fit-shop CRM identity), the defensibility argument (shop memory/judgment vs. platform AI roadmaps), plumber pilot scope, v1 build table, positioning language, open items

  • forgekit-os/journal/anvils.md — 'Is Forge a sidecar to Housecall Pro, or a fit-shop CRM?' (the fork evaporated when the question changed from segment selection to product placement)

  • forgekit-os/journal/strikes.md — 'Forge is the front door, not the back office.' Sharpens the 2026-06-21 Strike from what Forge is into where it lives

  • CLAUDE.md + PROJECT_INDEX.md — Gino's Electric corrected from 'pilot/first client' to 'test org modeled on the real electrician'; dead docs/gino-pilot.md reference replaced with the new decision doc; Forge status now points at the front-door identity

  • build-session.mjs — chapter renderer added with a public/internal split: public build-log pages stay summary-level (engine is private, per the Phase 2A IP boundary), full chapters[].shipped/spins/wins render to forgekit-os/journal/build-log/<slug>.html which never deploys. Both recent session pages rebuilt.

  • inferred-gates.config.mjs — DIFF_EXCLUDE + INFERRED_RULES moved out of build-session.mjs per the engine-guard line-limit split (the script's own FREEZE note called for exactly this); stale docs/forge-journal/ exclude paths fixed to forgekit-os/journal/

  • retro.mjs — forgekit-os/journal/build-log/ added to the safe-generated commit globs so internal pages are auto-committed by the retro pipeline

“What happened to the decision between being the sidecar or the fit shop? it's now both? really?”
— Zeb — the pushback that rejected the hedge and produced the front-door Strike