Website Update Workflow
Public site: https://www.apex.fan
Deploy target: Cloudflare Pages, build output directory =
www/.Purpose: make future site updates repeatable, safe, and easy to hand to any agent.
What Belongs On The Site
www/ is public. Treat every file in this directory as already published to the internet.
Allowed:
- Product and methodology descriptions.
- Synthetic sample reports.
- Public ADRs and public manuals.
- Provider-agnostic setup instructions.
- Links to GitHub source files.
Not allowed:
- Real reports from
reports/. - Real cases from
cases/. - Raw material from
raw/oranchors/*/raw/. - Internal Feishu / Lark links.
- Customer names, exact financial figures, or confidential project details.
If a real report needs to become public, generate a Set B public export first, run the public safety checks, and get explicit approval before copying anything into www/.
Standard Update Steps
- Inspect the current site and local source.
curl -I -L https://www.apex.fan
shasum www/index.html /tmp/apex-index.html- Edit only public files.
Typical files:
www/index.htmlwww/changelog.mdwww/changelog.html— generated fromchangelog.md, do not hand-edit (see below)www/docs.htmlwww/installation.mdwww/user-manual.mdwww/deployment.mdREADME.mdwww/sitemap.xml
- Run public safety checks.
python3 scripts/check_public_safe.py --root www
python3 scripts/redact_check.py --dry-run README.md www/index.html www/changelog.md www/installation.md www/user-manual.md www/deployment.md- Confirm reports are not staged.
git status --ignored --short reports cases writing/reports-export
git diff --cached --name-onlyThe status for generated reports should remain ignored (!!) or untracked but unstaged. Do not git add reports/ cases/ writing/reports-export/.
- Commit public code and docs.
git add README.md www/
git commit -m "docs(site): update public website"- Push to the Cloudflare production branch.
Cloudflare Pages is configured to deploy from main.
git switch main
git pull --ff-only origin main
git merge --ff-only <feature-branch>
git push origin mainIf the feature branch cannot fast-forward into main, open a GitHub PR and merge it normally after checks pass.
- Verify Cloudflare deployment.
curl -I -L https://www.apex.fan
curl -I -L https://www.apex.fan/sitemap.xml
curl -L https://www.apex.fan | shasumThe production homepage hash should match www/index.html after the Cloudflare build completes.
Release Checklist
- [ ]
www/has no real report content. - [ ]
scripts/check_public_safe.py --root wwwpasses. - [ ]
scripts/check_public_safe.py --root handbook-srcpasses (if handbook changed). - [ ]
redact_check.py --dry-runpasses for changed docs. - [ ]
pnpm --dir handbook-src run buildsucceeds locally (if handbook changed). - [ ]
git diff --cached --name-onlycontains only intended code/docs (nowww/handbook/build artifacts). - [ ]
reports/,cases/, andwriting/reports-export/are not staged. - [ ] Commit is pushed to
main. - [ ]
https://www.apex.fanreturns HTTP 200. - [ ]
https://www.apex.fan/sitemap.xmlreturns HTTP 200. - [ ]
https://www.apex.fan/handbook/returns HTTP 200 (if handbook changed).
Common Updates
Add A New Capability To The Homepage
Update:
- Hero eyebrow or subtitle.
- Relevant FAQ entry.
www/changelog.mdonly — then runpython3 scripts/gen_changelog_html.pyto regeneratewww/changelog.html. The HTML is deterministically generated from the Markdown (chrome is preserved, only the<main>article region is rewritten); never hand-edit it. CI testtest_committed_html_is_generated_from_mdred-lights any drift.README.mdcurrent status.
Add A New Public Doc
Update:
- Add the file under
www/. - Link it from
www/docs.htmlorwww/index.html. - Add it to
www/sitemap.xml.
Add Or Update A Handbook Page (/handbook/, ADR-008)
The handbook is a VitePress site built from handbook-src/. Build output lands at www/handbook/ (gitignored). Do not edit www/handbook/ directly.
Edit:
- Add or update
handbook-src/<section>/<page>.md. Frontmatter (title,description) is required. - Update
handbook-src/.vitepress/config.tssidebar if the page is new. - Local preview:
pnpm --dir handbook-src run dev(defaults to http://localhost:5173/handbook/).
Safety checks (in addition to standard www/ checks):
python3 scripts/check_public_safe.py --root handbook-src
python3 scripts/redact_check.py --dry-run handbook-src/**/*.mdBuild verification before push:
pnpm --dir handbook-src install --frozen-lockfile
pnpm --dir handbook-src run build
# Inspect handbook-src/.vitepress/dist for the pageCloudflare Pages runs the same build on push. If the build fails, the entire www/ deploy fails — preview deploy on a feature branch first.
Publish A Public Report
Default answer: do not publish real reports.
If explicitly approved:
- Generate Set B public export.
- Run
redact_check.pyon the public Markdown. - Run
check_public_safe.pyon the destination directory. - Copy only the approved public artifact into
www/showcase/or another public directory. - Add a clear synthetic/public-status note on the page.
Rollback
If Cloudflare publishes a bad site:
- Revert the Git commit on
main. - Push
main. - Confirm Cloudflare redeploys the reverted commit.
git switch main
git revert <bad-commit>
git push origin main