Snapshots

Twenty four rules every feature must follow, or it does not ship

Settled
  • Truth first: no invented numbers, quotes, reviews or backstory, and errors never read as zero.
  • Read only in v1; nothing dummy or test reaches production.
  • Every fix works for every brand, platform and card, and heals saved data.
  • One version then Redo it, no disclaimers on ads, sell relief never discounts.
  • Never disconnect Arata's Meta or Shopify; code guards it.
24product rules
Your call

Is the 25 Oct Pro sheet exception still right? Proposal: drop it at the redesign.

Product · 2.12

Product rules

DraftLast checked Mon Oct 26Owner Param

Answer

These are the rules every Brew feature must follow, each with where it is set and how it is enforced; a change that breaks one does not ship.

Today

# Rule Where it holds Source
1 Truth first: no invented numbers, quotes, founders, reviews or backstory; unbacked numbers say to confirm Prompts, stat-check.js, test/honesty.test.js SPEC.md:13 DUMMY.md:30
2 Observed, inferred and implication stay separate; never state a rival's motive Prompts SPEC.md:14-15
3 An error is never shown as none or 0 Readers keep error CLAUDE.md:12
4 Read only: nothing posts, sends to customers, pauses or moves budget in v1 Read only scopes SCOPE.md:36-38 brand-directions/docs2/content/decisions.mjs:22
5 One version, then Redo it; never three options MAKE_N all 1 card-plan.js:36 memory brew-one-version
6 Claims need proof: a health or measured claim needs the store's study or an approved claim checkCopy on every surface claims.js:219 memory brew-qa-round2-2026-10-24
7 A Play is never evidence; proof must prove the claim evidence.js, proof-logic.js memory brew-proof-plain-make
8 Every fix works for every brand, platform and card, and heals saved data test/non-shopify.test.js, audits CLAUDE.md:20-40 memory feed-for-all-brands memory fix-as-product
9 Simulated things carry a Dummy tag, a code comment and a DUMMY.md row public/dummy.css DUMMY.md:3-10
10 Nothing dummy or test reaches production, except the Pro sheet, the Marketplaces label and the catalog photo fallback db/prod-clean.mjs clean gate memory prod-clean-only
11 Never use a rival's picture as ours; Make our version gets only a written breakdown rival-ad.js, isRivalCard rival-ad.js:7 memory brew-rival-pictures
12 The card's picture shows what its words promise cardProduct, cardScene memory brew-card-asset-match
13 No disclaimers or AI labels on ad creative Prompts SPEC.md:18 memory no-disclaimers-in-ads
14 Plain, one glance language; quiet pages with no zero tiles plain.js, quiet rules SPEC.md:19 memory brew-quiet-ui
15 Sell relief, never discounts, in badges and nudges Copy docs/handover/product/04-content-and-accuracy-rules.md:24 memory sell-relief-not-discounts
16 They or them for anyone whose pronouns are unknown Prompts SPEC.md:20
17 Cost cuts never drop Plays; make each cheaper Build memory keep-all-moves
18 Brand data is the brand's: only its own email, an invite or staff open it auth.js, closed-gate.js memory brew-access-rules
19 Connected numbers stay members only and beat the site read while fresh facts-desk.js memory brew-connected-facts
20 Never disconnect Arata's Meta or Shopify PROTECTED_CONNECTIONS connectors/index.js:267 memory never-disconnect-arata-meta
21 Say Plays, never moves, wherever a person reads brew-name.js, app labels brand-directions/docs2/content/decisions.mjs:4
22 No fake reviews or testimonials, ever Review styles quote real reviews word for word memory harry-reviews-fictional memory brew-jam-v2
23 Sample labels on every invented example in docs and design Docs check brand-directions/BRIEF.md section 1
24 Never show vendor or model names to a founder; a price only on the confirm sheet Redesign rule brand-directions/_shared/product-model.md:97

Tomorrow

Rule Version Tag
The glance rule: closed card of five parts, 25 words at most v1 New brand-directions/_shared/product-model.md:166-178
One of each thing: one sheet, one toast, one empty state, one way into each thing v1 New
Every post or schedule waits for a yes, with undo v2 New
Results always show their method and source v3 New
Nothing runs outside rules the founder set v4 New

How we do it

  1. Before shipping, check the change against this table.
  2. For a new class of break, add a test or audit and a heal.
  3. Run the suite and the relevant audit:
    AI_MOCK=1 node --test test/*.test.js
    node tools/audit-card-fit.mjs DIR
    
  4. A rule changes only by Param's call, logged in the decisions log.

Numbers

Metric Definition Where measured Status
Rule breaks found Findings per QA round that break a rule here QA reports Proposed
Clean gate refusals Promotions refused by the clean gate tools/promote.sh output Proposed

Open

  1. AGENTS.md lets the handbook name the company behind our team, WRITING.md forbids it. Proposal: follow WRITING.md and say our team, and fix AGENTS.md.
  2. Is the 25 Oct Pro sheet exception still right? Proposal: drop it at the redesign.
Sources
  • brew origin/main b91e364: SPEC.md:11-20, CLAUDE.md:7-45, DUMMY.md:25-30, SCOPE.md:36-38
  • brew origin/main: card-plan.js:36, claims.js:219, rival-ad.js:7, connectors/index.js:267, docs/handover/product/04-content-and-accuracy-rules.md
  • brand-directions/_shared/product-model.md:97, 162-207
  • brand-directions/docs2/content/decisions.mjs:3-23
  • brand-directions/BRIEF.md section 1
  • memory: feed-for-all-brands, fix-as-product, brew-one-version, brew-proof-plain-make, prod-clean-only, never-disconnect-arata-meta, brew-quiet-ui, no-disclaimers-in-ads, sell-relief-not-discounts, keep-all-moves, brew-access-rules, brew-qa-round2-2026-10-24, brew-card-asset-match, brew-rival-pictures, harry-reviews-fictional

Source file content/product/product-rules.md · For agents: Markdown · JSON