CI + Cloudflare Pages (contributors)
How factory docs and gates reach sparklang.dev. Spark / SparkLang only. Full release cut: RELEASE.md.
Local docs regen + check
make docs-html # python3 tools/md_to_doc_html.py --all-stale
make docs-check # regen + --check + tools/test_docs_nav.py
Mirror CHANGELOG.md into website/CHANGELOG.html when cutting a
docs release (site SoT is HTML under website/). Sync
docs/examples/ → website/docs/examples/ when Builder artifacts
change.
CI (GitHub Actions)
Workflow: .github/workflows/sparkbc.yml.
Typical factory jobs (names may grow — read the YAML):
make test-sparkbcmake sparkbc-e2e/ related SPARK_BC gates- Eval unit gate when present:
make test-spark-eval - Serve API gate when serve API path merges:
make test-serve-api - Voice easy dry:
make test-voice-easy
PRs should keep these green. Docs-only PRs still run
make docs-check locally before push.
Production Pages deploy
Project: sparklang-dev. Branch: production.
# on the tip SHA you are shipping
make docs-html
# mirror CHANGELOG.html if needed
npx wrangler pages deploy website \
--project-name=sparklang-dev \
--branch=production \
--commit-hash="$(git rev-parse HEAD)"
Auth: Wrangler OAuth on the deploy host is often under
~/.config/.wrangler/ (leading dot). That is not
~/.config/wrangler/. Do not invent or print tokens.
If CLI/auth absent → Cloudflare dashboard Direct Upload of
website/ from the known SHA (RELEASE.md §5b).
Spot-check after deploy
- https://sparklang.dev/
- https://sparklang.dev/CHANGELOG.html
- https://sparklang.dev/docs/factory.html
- https://sparklang.dev/docs/model-aspects.html
- https://sparklang.dev/docs/voice-easy.html
- https://sparklang.dev/docs/voice.html
- https://sparklang.dev/docs/spark-coder.html
- https://sparklang.dev/docs/weight-gallery.html
- https://sparklang.dev/weight-playground.html
- https://sparklang.dev/docs/spark-builder.html
- https://sparklang.dev/docs/compile.html
- https://sparklang.dev/docs/decompile.html
- https://sparklang.dev/docs/decompile-compete.html
- https://sparklang.dev/docs/llm-decompile.html
- https://sparklang.dev/docs/knowledge.html
- https://sparklang.dev/docs/knowledge-safety.html
- https://sparklang.dev/data/decompile-scoreboard.json
- https://sparklang.dev/downloads.html
- Images MIME (required):
curl -sI https://sparklang.dev/docs/images/decompile-cli-dump.png?v=0.6.58must showContent-Type: image/png(nottext/html). SVG:…/diagram-spark-loop.svg→image/svg+xmlonly (no dualtext/html).nosniff+ wrong MIME = blank screenshots.
Record the Pages deployment id next to the git tip. Tip ≠ live site: say so if deploy lags.