Raxx · internal docs

internal · gated

Design: Public Docs Site — Content Parity for v1 Launch

Status: Accepted Date: 2026-05-20 UTC Owner: software-architect Parent card: #104 Refs: docs-site-scaffold-2026-05-15.md (superseded in scope), ADR-0088 ADRs: 0103


1. Context

Operator decision 2026-05-20 UTC: the public docs site must ship at v1 launch (2026-05-23 UTC) with full content parity to internal-docs. T-3 days.

The prior design (docs-site-scaffold-2026-05-15.md) delivered the technical foundation at T-8: - Builder (scripts/build-customer-docs.py) — shipped, CLOSED - CSS theme — shipped, CLOSED - CI workflow (deploy-customer-docs.yml) — shipped, CLOSED - Content stubs for Getting Started, Concepts, FAQ, Privacy+Terms — shipped

What is NOT done at T-3: - broker-setup.md — stub with draft: true and multiple TODOs - troubleshooting.md — stub with draft: true and multiple TODOs - Pricing / plan details page — not authored - Release notes section — deferred pending #99 (semver + GitHub Releases) - noindexindex, follow flip — pending launch-day runbook step

Interpretation of "full content parity": Internal-docs serves 522 pages across 30 categories. The vast majority are operator-only (ADRs, runbooks, ops triage, security scans, sprint plans, business-legal, finance). A literal mirror is not the intent — and several categories contain content that MUST NOT be public per platform invariants.

"Content parity" means: the customer-facing content domain (everything a user needs to understand, use, and get support for the product) is fully authored, not stub-only. The six content axes below define the complete customer-facing scope.


2. Invariants

All platform invariants from the prior design doc apply unchanged:


3. Content Classification

Internal-docs sections and their public status

Internal-docs section Public status Rationale
Architecture / ADRs INTERNAL System-design decisions, vendor names, security posture detail
Ops / Runbooks INTERNAL Operator-facing, contains credentials paths, incident procedures
Security scans / triage INTERNAL Vulnerability details, internal tokens
Business / Legal raw INTERNAL Attorney correspondence, formation docs
Finance INTERNAL Operator-only financials
Agents / Sprint docs INTERNAL Internal development pipeline
Console docs INTERNAL Operator console — not customer-facing
Secrets / Velvet / Infisical INTERNAL Credential management — must never be public
Grooming / QA reports INTERNAL Internal development process
Data Science INTERNAL Internal analytics design, not product copy
Customer docs (current) PUBLIC The curated customer-facing set
Release notes PUBLIC (v1.1) Depends on #99; excluded from v1 build
Privacy Policy / Terms PUBLIC (mirror) Already authored as mirror to raxx.app/privacy + /terms

Customer-facing content scope (public, v1)

Six content axes define the complete v1 public docs site:

Axis Source file Status at T-3 v1 required?
Home / index docs/customer/index.md Done Yes
Getting Started docs/customer/getting-started.md Done Yes
Core Concepts docs/customer/concepts.md Done Yes
Broker Setup docs/customer/broker-setup.md Stub — 4 TODOs Yes
FAQ docs/customer/faq.md Done (10 entries) Yes
Privacy + Terms mirror docs/customer/privacy-terms.md Done Yes
Troubleshooting docs/customer/troubleshooting.md Stub — 5 TODOs Yes
Pricing / Plan details docs/customer/pricing.md Missing entirely Yes
Support flow Covered in FAQ + footer Done (cross-link only) Yes

Sections explicitly excluded from v1 (no customer-facing gap)


4. APIs / Contracts

No change from prior design. Static HTML via Cloudflare Pages.

Build manifest allowlist (the exhaustive set of customer-facing source files):

docs/customer/index.md
docs/customer/getting-started.md
docs/customer/concepts.md
docs/customer/broker-setup.md
docs/customer/faq.md
docs/customer/privacy-terms.md
docs/customer/troubleshooting.md
docs/customer/pricing.md          ← new file, SC-D11

No other source paths enter the customer-docs build.


5. State machines / sequences

Content authoring → publish flow

sequenceDiagram
    participant FD as feature-developer
    participant PR as GitHub PR
    participant CI as GH Actions
    participant CF as Cloudflare Pages (raxx-docs)

    FD->>PR: merge docs/customer/<file>.md
    PR->>CI: push to main triggers deploy-customer-docs.yml
    CI->>CI: broker-name lint (build script)
    CI->>CI: forward-looking-phrase lint (build script)
    CI->>CF: wrangler pages deploy dist-customer-docs/
    CF-->>CI: deploy URL
    CI->>CI: health-check docs.raxx.app (expect 200)
    CI->>CI: emit audit row

v1 launch-day sequence (noindex flip)

stateDiagram-v2
    [*] --> AllContentMerged
    AllContentMerged : All 8 source files authored\nand merged to main
    AllContentMerged --> PreLaunch
    PreLaunch : X-Robots-Tag: noindex, nofollow\nSite live but not indexed
    PreLaunch --> LaunchDayFlip : 2026-05-23 UTC\nrunbook step 1
    LaunchDayFlip : Edit frontend/docs/_headers\nX-Robots-Tag: index, follow
    LaunchDayFlip --> Indexed : CI redeploys (~2 min)
    Indexed --> [*]

6. Migrations

No schema changes. Static site.

Rollback: CF Pages instant rollback via dashboard or revert-and-merge. Content-only changes have zero database migration risk.


7. Rollout plan

Target: all content merged to main by 2026-05-22 UTC (1 day buffer).

Phase Content status noindex Gate
Now (T-3) index, getting-started, concepts, FAQ, privacy-terms live; broker-setup + troubleshooting are stubs; pricing missing noindex Existing deploy
T-2 (2026-05-21 UTC) broker-setup content complete; troubleshooting TODOs resolved; pricing page authored noindex SC-D11, SC-D12, SC-D13 merged
T-1 (2026-05-22 UTC) All 8 pages live, final content review noindex Feature-developer confirms no draft: true remaining
T-0 (2026-05-23 UTC) Launch-day flip: noindex → index, follow indexable Runbook step (one-line edit + merge)

Phase 1 / Phase 2 split (honest assessment of T-3):

Three content files require authoring work before launch: - broker-setup.md — 4 unresolved product TODOs (requires product owner decision on v1 supported broker list and permission set) - troubleshooting.md — 5 unresolved product TODOs (requires product owner decision on UX details) - pricing.md — new file, not yet drafted

The broker-setup and troubleshooting TODOs are gated on product owner decisions, not just writing effort. If those decisions are made by 2026-05-20 UTC, the content can ship by 2026-05-22. If those decisions are deferred, the v1 site ships with the current "complete-but-generic" versions of those pages (no broker-specific names, no UI label specifics — just the accurate high-level flow that already exists in the stubs). This is an acceptable v1 state since Raxx does not name its broker integrations in customer copy.


8. Security considerations


9. Open questions (blocking operator decision)

  1. Broker list for v1broker-setup.md has a TODO asking which brokers are supported at v1 launch. The current stub text is accurate (authorization-flow described generically) but the "supported brokers" list is empty. Decision needed: publish the page as broker-agnostic-generic (fine for v1 given no broker names appear in copy), or defer to a post-launch iteration. Recommended: publish as generic — no customer blocker.

  2. Troubleshooting UI details — three TODOs reference exact UI labels from #479 (broker rejection codes surface, reconnect UX, evaluation log UI). If these UI features are not shipped at v1, the troubleshooting steps should describe the general flow without specific button labels. Decision needed: are those UI surfaces live at v1?

  3. Pricing page — pricing tiers are locked (Free / Pro / Pro+ / Founders $29). A pricing page in docs reinforces trust for pre-signup users. However, the exact Pro and Pro+ prices are marked "pending BLR research" in project_pricing_tiers_locked.md. Decision needed: (a) publish a pricing page with Founders tier only and "Pro/Pro+ pricing announced at launch" language, or (b) hold the pricing page until prices are finalized.

  4. Release notes section — the v1 build intentionally excludes release notes (depends on #99). Should /release-notes/ 404 silently or show a coming-soon stub page? No technical blocker — editorial preference only.

  5. Search — deferred post-v1 per prior design. Still deferred; confirming no change to scope.


Sub-cards (this scope extension)

The prior design's sub-cards (SC-D1 through SC-D10) are all closed. This design adds three new sub-cards for the content-parity gap:

ID Title Size Blocks Depends on
SC-D11 Complete broker-setup.md content (resolve 4 TODOs, remove draft flag) s launch open question #1
SC-D12 Complete troubleshooting.md content (resolve 5 TODOs, remove draft flag) s launch open question #2
SC-D13 Author docs/customer/pricing.md for v1 s launch open question #3

Plus one non-content sub-card that closes the launch loop:

ID Title Size Blocks Depends on
SC-D14 Launch-day noindex flip + marketing site footer link xs launch SC-D11, SC-D12, SC-D13

SC-D14 is the final gate. It is a one-line edit to frontend/docs/_headers (already annotated) plus adding docs.raxx.app to the marketing site footer and README. It requires all content to be merged first.