Different Hunger

Foundation

Rules

Locked constraints. Read before executing.

Rules · The Locked Constraints

These are non-negotiable. Every code change, lock, ship, generation, edit must comply. Violations = system destruction.

Roles (who gates what)

RoleApproves
POC (Brand's primary contact · Steve for MCM)Their brand's copy + HIFI locks per component
Reviewer (workforce editors)System rules · master templates · cross-brand patterns
Founder (escalation tier)Strategy disputes · architecture changes · novel decisions
Auto (AI checks · no human)Compliance: em-dash count, fabrication scan, Title Case lint, voice rules

Process

RuleWhat it means
Never build without specsSpec → Reviewer/POC approval → build. Never the reverse.
No lock without role QAScore / edits / "looks good" ≠ approval. Only explicit "lock it" from the role-authorized human → I call /api/install/lock-component.
Two-stage lockCOPY locks first (POC approves content_json in Doc), THEN HIFI locks (POC approves rendered page). Never build HIFI from unapproved copy.
Templates not scratchEvery deliverable = (Reviewer-locked template) × (brand data jsonb). Render + plug. Do not write from scratch or reinvent structure.
Specific tool = specWhen Reviewer names a tool/template/library (Unmint, Aceternity, Resend, VAPI), that IS the spec. No reinterpretation. No substitutes.
Reply formatEvery AI reply opens with one sentence: status + vision + next task.
/os real-time syncAs we lock the system, we also lock the docs. /os is canon.

Design

RuleWhat it means
No custom HIFI devOnly Aceternity components OR Reviewer-locked master templates. No hand-rolled Tailwind layouts.
BrandGradient backdropEvery HIFI surface uses the canonical radial gradient.
Master Landing = Framer porthttps://little-task-312464.framer.app/ ported into components/hifi-templates/master/Landing.tsx.
Modal heading pattern"Where Should We Send Your <Magnet Name>?"
Modal CTA = hero CTASame size, same style, never smaller.

Copy

RuleWhat it means
Title Case alwaysAll display copy in Title Case. Lowercase only articles + short preps + coordinating conjunctions (never first word).
Zero fabricationEvery stat, name, claim from verified real sources. [PLACEHOLDER — NEED REAL DATA] if absent.
Brand voice corpusPer-brand voice rules in brand.config.brand_os.voice_rules override master template defaults. POC owns voice rules for their brand.
MCM voice (example)No em-dashes · no bullets on pre-sell · no AI tells · no pricing · ONE CTA only · NO promises of Andrea personally delivering care · Outcome triplet verbatim: "safe, comfortable, and cared for at home" · Origin story verbatim · Inter font only.

Data

RuleWhat it means
jsonb onlyAll component data in brand.config.engine.components[slug].content_json. No new tables.
Drafts in Docs → SupabaseGoogle Docs is the review/edit surface. POC approves → import to Supabase. Docs never sync back from code.
No overwrite authoritativeRe-scrapes write to {slug}-deep.json, never overwrite keeper.
Supabase is source of truthSheets/Docs are human layer, sync FROM Supabase.

Ship

RuleWhat it means
Orient before touchingBefore ANY code change: git branch (am I on the branch prod deploys from?), git fetch && git status (tree clean + current?). If the tree has foreign uncommitted changes, or I'm on the wrong branch → STOP, flag it, do not work in it. Never assume local = source of truth.
NEVER manually alias prod domainsThe git pipeline owns 0hr.app / mcmprivatecare.com. vercel alias set … 0hr.app OVERRIDES the pipeline and wipes live UI. Deploy previews only; the pipeline (or the human) promotes to prod. (Supersedes the old "alias gotcha" rule — that rule caused a live-UI wipe.)
Preview → approve → prodLocal → preview URL → screenshot → explicit human "go" → prod via pipeline. No prod, and no new scope, without an approved spec + mockup.
Reuse, never rebuildIf a component/card/page exists, use it as-is. Zero re-implementation of working UI.
Find-and-confirm, never guess-and-rebuild"We had it working" → locate the exact commit/branch/deploy and CONFIRM before changing one line. Never rebuild from memory.
Prod state is checked, never rememberedvercel alias ls / curl a marker before ever stating what is live.
No publish without POC approvalEager tone ≠ "go ship". Explicit "publish" command from POC only.
No unrequested prod swapsEach prod deploy = explicit ask. Never auto-replace live customer-facing routes.
DNS safetyNamecheap setHosts is nuke-or-nothing. Always validate getHosts Status=OK + record count ≥20 before writing. Auto blocks on fail.

Email

RuleWhat it means
Resend is the enginePeriod. CLAUDE.md statements about "Resend killed → Loops" are stale.
Verified domain requiredProduction sends require Resend-verified domain. onboarding@resend.dev only works for testing to the API owner.
Verify at capture, act on bouncesEvery capture path verifies email + phone; the provider webhook handles bounce/complaint/failure and writes the verdict onto the contact. Never send to an address a provider has already refused. See Deliverability.
Fail open, never fail silentA vendor being down must not cost a lead — but "the checker broke" and "the address is good" must never be the same stored value, or a broken checker stays broken forever. Alert when the vendor-error rate is not ~0.
Sanitise every API keyStrip whitespace, quotes AND literal \n. A prod key with a literal backslash-n silently disabled email verification for months; .trim() does not catch it.
Drafts only, human sendsNo ?send=1. No cron-fired sends. POC triggers.

Source memory files

Update those → /os updates here.

  • project_role_taxonomy
  • feedback_never_build_without_specs
  • feedback_no_lock_without_mk_qa (POC-routed per role taxonomy)
  • feedback_templates_not_scratch
  • feedback_specific_tool_choice_is_spec
  • feedback_no_custom_hifi_dev
  • feedback_title_case_always
  • feedback_reply_format_first_sentence
  • project_two_stage_lock
  • project_mcm_presell_locked · project_mcm_font_lock
  • project_brand_gradient_canonical · project_hifi_landing_master_template · project_landing_modal_pattern
  • project_email_engine_resend_locked
  • feedback_dns_safety_protocol
  • feedback_orient_before_touching_never_alias_prod · feedback_never_manual_alias_portal_git_autodeploy · feedback_dont_strip_existing_rich_ui
  • feedback_no_publish_without_approval · feedback_no_unrequested_prod_swaps
  • project_os_source_of_truth