S2 (a1): compliance + approval pack

- /responsible-gambling rebuilt sincerely: 21+, 1-800-GAMBLER primary,
  17-state resource list, warning signs, self-exclusion guidance, links
  to the existing /settings surfaces. No marketing adjacency.
- /terms + /privacy honest drafts with entity placeholders ([ENTITY NAME],
  [STATE OF FORMATION], [ARBITRATION VENUE], [CONTACT EMAIL]); privacy
  sub-processors match reality (adds Sentry, honest PostHog description).
- NEW /methodology: pipeline -> engine -> letter grades, refusals,
  VYNDR Originals, ledger settle + CLV + n>=20, why misses are public.
- /about audited to North Star framing (THE PROOF card, methodology link).
- Footer: 1-800-GAMBLER + Methodology link; compliance audit found zero
  pages suppressing the global footer.
- 5 Ghost seed articles in content/articles/ + docs/GHOST-PUBLISHING.md
  manual runbook (no Ghost access used).
- tests/unit/compliancePages.test.js (repo source-text style). 2429 tests
  green, web build exit 0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kev
2026-07-11 14:29:31 -04:00
parent e4d2e79f95
commit 4b262fdd65
15 changed files with 908 additions and 76 deletions
+66
View File
@@ -0,0 +1,66 @@
# Ghost Publishing Runbook — blog.vyndr.app
How to move the seed articles in `content/articles/` into Ghost as drafts.
Manual by design: **nothing auto-posts, anywhere, ever** (NORTH STAR — Kev is
the publisher of everything). Claude Code has no Ghost credentials and never
touches the Ghost admin; this runbook is the entire publishing pipeline.
## What lives where
- Source of truth: `content/articles/*.md` in this repo. Edit here first,
then re-paste into Ghost — never edit only in Ghost, or the repo copy rots.
- Each file has YAML front matter (`title`, `slug`, `excerpt`, `tags`,
`status: draft`). The front matter is metadata for YOU to key into Ghost's
fields — do not paste the front matter block into the post body.
## Per-article steps (about 3 minutes each)
1. Open `https://blog.vyndr.app/ghost/` and sign in (your credentials).
2. Click **New post**.
3. Title: copy the `title` from the front matter into the title field.
4. Body: in the editor type `/` and choose the **Markdown** card (or type
```/markdown```). Paste everything BELOW the closing `---` of the front
matter into the card. Ghost renders the `##` headings, bold, and lists.
- Do not paste into the plain editor surface — straight pasting can
flatten headings depending on Ghost version. The Markdown card is exact.
5. Open **Post settings** (gear icon, top right):
- **Post URL**: set to the front-matter `slug` (e.g. `what-clv-is`).
- **Excerpt**: paste the front-matter `excerpt`.
- **Tags**: add the front-matter tags (e.g. `methodology`, `the-read-room`).
6. Leave the post as a **draft** — do NOT click Publish during seeding.
7. Preview in Ghost. Checklist before it ever goes live:
- Zero exclamation points (VOICE v1.1 — deadpan, no exceptions).
- No banned vocabulary: "lock", "tail", "fade" as calls to action,
guarantee language, hype emoji. If it sounds like the industry, cut it.
- Every record/percentage claim obeys the product's n≥20 gate — if the
live Ledger cannot back a number in the article, remove the number.
- Links point at `vyndr.app/...` production paths (`/methodology`,
`/ledger`), not localhost or staging.
## The five seed articles (in publish order)
| File | Title |
| --- | --- |
| `how-vyndr-grades-a-prop.md` | How VYNDR Grades a Prop |
| `why-our-misses-are-public.md` | Why Our Misses Are Public |
| `what-clv-is.md` | CLV: The Only Number That Proves an Edge |
| `the-vyndr-originals.md` | The VYNDR Originals: 41 Archetypes and Why They Exist |
| `how-streaks-lie.md` | How Streaks Lie |
Suggested cadence: one per week, methodology first (it is the page every
other article links back to conceptually). Publishing is your call, on your
schedule — this table is an ordering, not a scheduler.
## Updating a published article
1. Edit the markdown in `content/articles/` and commit.
2. In Ghost, open the post, delete the old Markdown card, insert a fresh one,
paste the updated body. Keep the same Post URL — never change a slug after
publish (dead links).
## Explicitly out of scope
- No Ghost Admin API integration, no automation, no scheduled posts. If that
ever changes it goes through a spec in `specs/` first and Kev still presses
the button.
- No exclamation points. Still.