Add /friday-report/ — the sample Friday report page the CTAs pointed at - #511
Merged
Conversation
The homepage hero, the report section and the rescue page all promise "a real Friday report". Nothing existed to point at: content/pages/ had no such page, and the homepage partial's own CTA fell through to /free-consultation/. Builds the page those CTAs should target. Structure is lifted from /services/vibe-code-rescue/ - proof chips in fold one, one repeated CTA, artifact instead of stock photography, a decode section that lets the reader place themselves, ~4,200px - because that structure is what makes that page good and it is palette-independent (ADR-0003). Palette is the resolved LIGHT system: ink ramp, warm surfaces, ruby accent, neon purple once, and exactly one dark band spent on the strongest proof (ownership). HONESTY: the report body is a COMPOSITE and says so three times - a ruby-bordered box above the card, a second line inside that box, and a "COMPOSITE EXAMPLE" pill in the card head. A skimmer cannot reach the card without crossing the disclaimer. No client, company, industry, individual or outcome metric appears anywhere; demo@yourapp.test uses the reserved .test TLD so it cannot resolve. We have no redacted engagement cleared for publication, so the page claims LESS than we can verify rather than the "names changed, numbers accurate" form relabelled on 2026-08-20. Company figures are canon-only: 4.8/5 with the Clutch profile linked, 5-year average relationship, and tenure derived from site.Params.foundingYear. An earlier draft said the server "sits on your card from the first milestone" - a billing claim with no in-repo source. Replaced with the sourced phrasing from page/vibe-code-rescue.html:102/:114. A claim with no in-repo source is a defect, not a detail. Own bundle, no shared CSS touched: foundations/ and components/ are untouched, and the page uses no --color-primary, so the concurrent site-wide recolour cannot collide with it. Reviewed by a cold-eyes ICP + voice reviewer: 5 blocking + 8 non-blocking findings applied, then APPROVED on re-read. Highest-value finding was 17 uncontracted forms - a page arguing for plain English was written in the register of a legal notice, which no mechanical gate in this repo can see. Gates: bin/hugo-build green, marketing_copy_test 3/3, bin/test --smoke 17/17 with baselines untouched. Rendered and read at 1440x900 and 390x844 - zero console errors, zero asset 404s, no horizontal overflow, no paragraph over 5 rendered lines at either width, all text contrast >= 5:1. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PAGE_TESTS maps pages/friday-report.css -> /friday_report/ so a touch on the page CSS selects its own tests. qtest treats a zero-match filter as a failure, so the mapping needs a test in BOTH suites, not just desktop. Both tests are behaviour-focused: they assert the four report blocks render, that the composite disclaimer is present, and that the CTA repeats. The disclaimer assertion is the load-bearing one - it fails if anyone ever relabels or drops the honesty box, which is the defect class the 2026-08-20 testimonial purge existed to catch. No assert_stable_screenshot yet, deliberately: the 2608 site-wide recolour is mid-flight and would churn a new baseline immediately. Recorded on the integrating PR instead, on both platforms together. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…h trap) Zero visual delta today. The page background was set on .friday-page, which ties on specificity with legacy-theme-skin's .fl-page-content and loses on cascade order because that file ships after the page slice. Both resolve to #ffffff right now, so nothing looked wrong - and that is exactly why it would have gone unnoticed. Two sections carry no background of their own (the composite disclaimer and "What each part is for"). They inherit the page background, so if --surface ever moves off #ffffff - which ADR-0003 contemplates, it specifies three light surfaces - those two would have stayed hardcoded white while every other section followed the token. A half-recoloured page, from a file nobody edited. Fixes it the way new-page.md prescribes for this trap: id+class (#fl-main-content.friday-page) so the token-driven rule actually wins. Found by reading computed styles rather than the source - the disclaimer and how-to sections compute to rgba(0,0,0,0), so the white underneath them was never mine. Verified after: page #ffffff, hero blush #fdf5f4, dark band #14110f, no horizontal overflow, no paragraph over 5 rendered lines, 4,193px. bin/hugo-build green, friday_report tests green, bin/test --smoke 17/17 with baselines untouched, stylelint 0 warnings. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Contributor
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
`PavedPathGuardTest#test_every_page_css_is_in_the_ownership_map` was failing with `Expected ["friday-report"] to be empty` - the new page bundle was wired into bin/qtest (PAGE_TESTS line 47) but not into css-bundle-ownership-map.md, which is the other half of what docs/workflows/new-page.md step 6 requires. The guard exists to catch exactly this half-wiring. Described as born-semantic on the vibe-code-rescue precedent: the only two `fl-` hits in the bundle are a comment and a `#fl-main-content.friday-page` specificity override against legacy-theme-skin, not FL modules. Noted the override in the row so the next reader does not treat it as migration debt. bin/rake test:unit: 279 runs, 0 failures. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
pftg
added a commit
that referenced
this pull request
Aug 20, 2026
…ster run (#515) Two gate rules sharpened after a six-PR merge pass. Both are increments on rules the bundle already had, added to the existing concepts rather than as new ones. ci-gates already said "re-run, don't raise the cap" and "if the job got past checkout it is a real failure". Necessary, not sufficient. On #511 `Unit Tests` read `fail 10m2s` - the stall signature exactly - and "known flake, merge it" was the tempting call. The fresh run got past checkout and failed again in 1m48s on a genuine defect: PavedPathGuardTest caught friday-report.css wired into bin/qtest but missing from css-bundle-ownership-map.md. Same check, same PR, two unrelated causes. Rule: a slow failure and a fast failure are different failures, and the first red's explanation must never carry over to the second. test-gates gains the local-vs-master rule. Verifying #511, `bin/qtest --changed` went red pointing at services/fractional-cto - a page it never touched - and the available story was that its postcss.config.js edit had shifted CSS site-wide. It had not: that edit only ADDS purgecss safelist entries, and safelisting more can only preserve more CSS, never remove any. The check that settled it was the same system test on clean origin/master on this macOS host: 34 runs, 6 failures, 8 of 77 screenshots mismatched. The suite is red on master here, so the local leg could not answer the question; CI's native-Linux Screenshot Tests passed #511 in 16m15s and was right. Validated: okf_validate --strict conformant, 0 errors (the 70 warnings are the pre-existing house log-heading convention). bin/hugo-build green. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
2608 Phase 3. Built by a swarm lane, reviewed twice.
Why
The weekly plain-English report is JetThoughts' strongest differentiator, and
the design system points at it repeatedly — the homepage prototype's hero says
"See a real Friday report". No such page existed. Verified before building:
ls content/pages/plus a repo-wide grep found only the homepage teaserpartial (whose CTA goes to
/free-consultation/), so nothing was duplicated.Honesty — the constraint that shaped the page
We do not have a publishable real client report, so the sample is a composite,
labelled three times: a ruby-bordered disclaimer band under the hero, a second
line stating no client is named, and a
COMPOSITE EXAMPLEpill on the cardhead. A skimmer cannot reach the sample without crossing a full-width
disclaimer. No person, company, industry or outcome metric appears; the demo
login uses the reserved
.testTLD so it cannot resolve.Cold-eyes' framing: it claims less than we can verify, rather than the
"names changed, numbers accurate" form relabelled earlier today.
One claim was removed, not reworded — "the server sits on your card from the
first milestone" had no in-repo source. Note the reviewer's own suggested fix
would have preserved the unsourced assertion in nicer words; removal was the
right call and a code comment records why, so it cannot be reinstated by
someone who thinks it reads better.
Review
friday-/cta-fridayclasses or selectors exist anywhere else, sopostcss.config.js:63is inert outside this page.bin/qtest:47is one additive entry.The third commit is a latent-bug fix worth reading
Two sections computed to
background-color: rgba(0,0,0,0)— the white behindthem was
legacy-theme-skin.css's hardcoded.fl-page-content, which shipsafter the page slice. Zero visual delta today (both are
#ffffff), which isexactly why it would have sat there — and it detonates the moment a
--surfacetoken moves off white, leaving a half-recoloured page. Fixed with the
id+classformnew-page.mdprescribes.Gates
bin/hugo-buildgreen (1175 pages, 8 validators) ·marketing_copy_testgreen· both new tests green ·
bin/test --smoke17/17 with baselines untouched ·stylelint 0 warnings · rendered 1440×900 (4,193px) and 390×844 (6,059px), zero
overflow, zero console errors, no paragraph over 5 rendered lines, contrast
≥5.07:1.
Screenshot baselines deliberately not recorded here — Lane A's site-wide
recolour will churn them; they belong on the integrating PR.
Known, not caused by this PR
bin/qtest <page>rewrites a rotating client-page baseline per run (a differentfile each time, none on this diff's pages). It will abort a qtest run on the
dirty-baseline guard and read as a regression.
bin/test --smokeis unaffected.🤖 Generated with Claude Code