COST RULE - BUILD GATE, REJECTION AND ACCEPTANCE ================================================================== Captured (UTC): 2026-09-26T02:57:04Z Build repository: allspark-seo (All Spark Electric wireframe) Commit: f94e18efa2a7b3fd1e709e326e2e139b78b535d1 Gate: BANNED + PRICE + PRICE_VERIFIED, build.py run_gates() WHAT THE RULE IS ------------------------------------------------------------------ vague promotional adjective -> build fails, always a figure with no verification -> build fails a figure verified and dated -> build passes verification over 180 days -> build passes, with a warning The blocked words are affordable, cheap/cheapest, budget, budget-friendly, bargain, low-cost. They are blocked because they say nothing a reader can act on and commoditise the offer. A specific, scoped figure is different: "the diagnostic visit is $99" is useful and answerable. It is allowed, but it has to carry an inline marker naming the date a human checked it, because a published price goes stale silently and nobody notices until a customer quotes it back at you. The marker stays in the rendered page source deliberately. Anyone inspecting a price on a site we build can view source and see when it was last verified. ================================================================== CASE 1 - REJECTED: vague adjective, and a figure with no marker ================================================================== Source line added to content/circuit-breaker-repair.md: We offer the most affordable breaker work in town, with a diagnostic visit at $99. Result: BUILD FAILED: 2 gate failure(s) FAIL circuit-breaker-repair.md: cost rule violation - 'affordable' FAIL circuit-breaker-repair.md: price '$99' with no on the page BUILD FAILED: 2 gate failure(s). dist/ left untouched. ================================================================== CASE 2 - REJECTED: figure alone, still no marker ================================================================== Source line: Our diagnostic visit is $99. Result: BUILD FAILED: 1 gate failure(s) FAIL circuit-breaker-repair.md: price '$99' with no on the page BUILD FAILED: 1 gate failure(s). dist/ left untouched. ================================================================== CASE 3 - ACCEPTED: scoped figure, verified and dated ================================================================== Source lines: Our diagnostic visit is $99, credited against the repair if you go ahead. Result: Gates pass. Wrote 45 files to dist/ ================================================================== CASE 4 - ACCEPTED WITH A WARNING: verification gone stale ================================================================== The same page with the marker dated 2024-01-05: WARN circuit-breaker-repair.md: price verified 994 days ago (2024-01-05), over the 180-day refresh window Gates pass. HISTORY OF THIS RULE ------------------------------------------------------------------ It began as a blanket block on every currency figure. That version stopped one of our own writers mid-sentence for calling a breaker "the cheapest part of your electrical system", which is where the rule proved it was real rather than aspirational. The blanket version was too crude: it also blocked genuinely useful scoped pricing like a flat diagnostic fee. The current rule keeps the hard block on the language that says nothing and adds a verification requirement for the language that says something. REPRODUCE ANY OF IT ------------------------------------------------------------------ 1. Add one of the source lines above to any file in content/. 2. Run: python build.py 3. Compare against the result shown for that case.