Point 7 of the page-wording review. The pages no longer show their data
structure as headings, and they no longer explain their own conventions.
- Level 1 is one screen: claim, status badge, three figures, the technology
row, and one sentence carrying one link. Measured in headless Chrome at
1440x900: 1404-1845 px tall before, exactly 900 px (no scroll) after, on
all six area pages.
- DocPage: no kicker line, no visible level label, no "Evidence for this
page" heading or instruction note, no "Drill-downs" list, no
"Status <word> - sentence" footer. The artefact table starts at level 2,
under the heading "Artefacts"; the history timeline is level 2 only.
- Landing page: "Start here" link text gone, "How to read this site" panel
gone, the footer's status-label explainer gone.
- Content, presentation only, no claim softened: the leading H1 that
duplicated the page title removed from all 41 documents; level 1 bodies
reduced to the constraint as ordinary prose plus the way in;
"**Status: ...**" prefixes removed from the artefact stubs; "## Drill-downs"
and "## Period and confidence" removed from the level 2 pages, with the
cross-area links moved into the prose.
- The six level 1 claims are now sentences with a subject, and use commas
instead of middots. Same facts, no new ones.
Not in this commit: the 35 level 2 and 3 claims still use the compact CV
style. That is a voice decision for Sam, not a wording tidy-up.
make validate: 41 documents, 0 violations. go test ./...: pass.
(cherry picked from commit 03009f80fc7815ad7719412e125df9297a6e653f)
One Go binary serves a pre-rendered site. No Node, no bundler, no node_modules:
htmx and the SSE extension are vendored files, Markdown and code highlighting
run at build time (goldmark + chroma), and the server only writes files.
Implements docs/phase-2-static-site.md:
2.1 service skeleton cmd/build (content -> dist), cmd/server (dist -> HTTP),
env-configured, 127.0.0.1:8096, /healthz with separate
static / ai / search readiness, --health-check probe,
deploy/compose.yml + deploy/Dockerfile at 120m
2.2 rendering templ components (Layout, Nav, PillarCard, Stage,
EvidenceTable, CodeBlock, Timeline, Footer);
`make generate` is a build step and is byte-stable
2.3 navigation six-area rail, <details> disclosure under 900px,
breadcrumbs, aria-current, L1/L2/L3 with artefact pages
2.4 stage panel internal/stage owns the contract; RouteDriver (fragment
swap) and SSEDriver (event stream) differ only in the
Binding, never in layout. fragment ids live in the
contract so route files, links and streamed frames agree
2.5 search SQLite FTS5 over titles and body, rebuilt by the build;
one handler returns a page without HTMX, a fragment with
it. Visitors' FTS operators are never honoured
2.6 quality floor print stylesheet, JS-off navigation, focus states,
semantic landmarks, dark default; security headers
Definition of Done evidence (see issue AUD-142):
A1 all pages 200 in a network namespace with no external route
one binary serves the site; make dist writes 45 pages, 86 fragments, 40 docs
templ generate is deterministic (md5 identical across runs)
6 L1 + 6 L2 pages, artefact pages reachable in <= 3 clicks
FTS5 returns sensible hits for zigbee / signage / routing (tested)
Lighthouse 100 performance and 100 accessibility, mobile and desktop
first byte well inside 100ms over loopback (test)
panel renders from a route driver and re-points at the stream untouched
print legible: /edge/ renders to a 3-page PDF with the print stylesheet
Also fixes found while finishing the build:
- reject "." / ".." path segments before ServeMux redirects them into a file
outside the asset directory (/static/../build.json now 404, was 307->200)
- make test is the real gate: go test ./... plus the validator self-test