docs: architecture for docs.cl8y.com static host #4

Merged
PlasticDigits merged 2 commits from issue/1-docs-architecture into main 2026-09-13 06:45:58 +00:00

Summary

Architecture for https://docs.cl8y.com (#1). Design only — no Vite app, Docker, nginx, or crawl files.

Parent spec: PlasticDigits/cl8y-marketing#3.

  • docs/ARCHITECTURE.md — stack, routes, prerender, nginx crawl rules, env, CTA, CI, non-goals, A1–A12 reject table
  • docs/INVARIANTS.md — numbered rules for later implementers
  • AGENTS.md — gate #1 → #2 → #3 (do not start #3 until ACCEPT)
  • skills/docs-static-host, docs-crawl-headers, docs-dex-cta for third-party agents
  • Honest README (app not shipped)

Decisions worth review

  • Runtime is nginxinc/nginx-unprivileged:1.27-alpine on 8080, not DEX nginx:1.27-alpine as root on 80
  • No SPA try_files … /index.html for crawl files or unknown HTML (autoindex off)
  • Sitemap default_type application/xml (do not rely on nginx .xml → text/xml)
  • dexHref uses execute ids uluna + Terra Classic CL8Y CW20; closed utm_campaign ids; DEX rewrite drops utm_* (first-touch)
  • Woodpecker: gitleaks + Node 24; no Postgres (cl8y-pm has Postgres — do not copy that service)
  • marketing AC11 (DEX Sitemap:) and AC12 (strategy/static-content-architecture.md) stay out of this repo

Test plan

  • git ls-files is markdown + .gitignore only (no package.json / Dockerfile / nginx.conf / page TSX)
  • ARCHITECTURE covers stack, routes, nginx 404, env, headers, CTA, CI, non-goals
  • Route list: /, /methodology + /methodology/sources, /markets, /contracts, /guides + /guides/open-the-dex
  • A1–A12 each have an explicit reject/gate in §18
  • AGENTS.md names #1 → #2 → #3 and says do not start #3
  • README does not claim the site is live
  • No secrets or unverified fee/TVL/volume numbers as facts
  • Issue #1 labels stay research + agent:research (no ready / agent:implement)

Gate

#2 reviews this document. Do not apply ready / agent:implement to #3 until #2 is ACCEPT.

Closes #1 after merge (architecture AC). #2 stays open until it records a verdict.

## Summary Architecture for `https://docs.cl8y.com` ([#1](https://git.cl8y.com/code/cl8y-docs/issues/1)). Design only — no Vite app, Docker, nginx, or crawl files. Parent spec: [PlasticDigits/cl8y-marketing#3](https://git.cl8y.com/PlasticDigits/cl8y-marketing/issues/3). - `docs/ARCHITECTURE.md` — stack, routes, prerender, nginx crawl rules, env, CTA, CI, non-goals, A1–A12 reject table - `docs/INVARIANTS.md` — numbered rules for later implementers - `AGENTS.md` — gate #1 → #2 → #3 (do not start #3 until ACCEPT) - `skills/docs-static-host`, `docs-crawl-headers`, `docs-dex-cta` for third-party agents - Honest README (app not shipped) ## Decisions worth review - Runtime is `nginxinc/nginx-unprivileged:1.27-alpine` on **8080**, not DEX `nginx:1.27-alpine` as root on 80 - No SPA `try_files … /index.html` for crawl files or unknown HTML (`autoindex off`) - Sitemap `default_type application/xml` (do not rely on nginx `.xml` → `text/xml`) - `dexHref` uses execute ids `uluna` + Terra Classic CL8Y CW20; closed `utm_campaign` ids; DEX rewrite drops `utm_*` (first-touch) - Woodpecker: gitleaks + Node 24; **no** Postgres (cl8y-pm has Postgres — do not copy that service) - marketing AC11 (DEX `Sitemap:`) and AC12 (`strategy/static-content-architecture.md`) stay out of this repo ## Test plan - [ ] `git ls-files` is markdown + `.gitignore` only (no `package.json` / `Dockerfile` / `nginx.conf` / page TSX) - [ ] ARCHITECTURE covers stack, routes, nginx 404, env, headers, CTA, CI, non-goals - [ ] Route list: `/`, `/methodology` + `/methodology/sources`, `/markets`, `/contracts`, `/guides` + `/guides/open-the-dex` - [ ] A1–A12 each have an explicit reject/gate in §18 - [ ] `AGENTS.md` names #1 → #2 → #3 and says do not start #3 - [ ] README does not claim the site is live - [ ] No secrets or unverified fee/TVL/volume numbers as facts - [ ] Issue #1 labels stay `research` + `agent:research` (no `ready` / `agent:implement`) ## Gate [#2](https://git.cl8y.com/code/cl8y-docs/issues/2) reviews this document. Do not apply `ready` / `agent:implement` to [#3](https://git.cl8y.com/code/cl8y-docs/issues/3) until #2 is ACCEPT. Closes #1 after merge (architecture AC). #2 stays open until it records a verdict.
Record stack, routes, nginx crawl rules, env contract, CTA helper, and
the #1 → #2 → #3 gate. No application scaffold.

Refs: #1
Author
Owner

drain skip: no occupying job for rebase/fix-pr/CI-wait; remaining continue

drain skip: no occupying job for rebase/fix-pr/CI-wait; remaining continue
Add the A1–A12 reject table, skill cross-links, and closed CTA campaign ids so #2 can walk the issue attack plan without inventing policy.
Author
Owner

Follow-up 8fa5503 on this PR: explicit A1–A12 reject table, skill/invariants cross-links, autoindex off + X-Frame-Options on hashed-asset 404, closed CTA campaign ids. Architecture AC checks passed twice locally. Still no app scaffold.

Follow-up `8fa5503` on this PR: explicit A1–A12 reject table, skill/invariants cross-links, `autoindex off` + X-Frame-Options on hashed-asset 404, closed CTA campaign ids. Architecture AC checks passed twice locally. Still no app scaffold.
Author
Owner

drain skip: hard-blocked (needs-human / high-risk / human topic); remaining continue

drain skip: hard-blocked (needs-human / high-risk / human topic); remaining continue
PlasticDigits deleted branch issue/1-docs-architecture 2026-09-13 06:45:58 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
code/cl8y-docs!4
No description provided.