Skip to content

US-PAGES-001 design plan

Existing architecture

docs/*.md feeds MkDocs via mkdocs.yml. .github/workflows/pages.yml invokes Knuckles-Team/pipelines/.github/workflows/pages_pipeline.yml@main on main changes to docs/**, mkdocs.yml, or README.md. Root CONTRIBUTING.md and specs/ are tracked sources outside the current MkDocs tree. The organization hub indexes public specs across repositories.

Design to implement

Inventory existing Pages URLs and map every rendered page to one tracked source. Choose build-time inclusion or direct linking for root guides and specs; document that choice in the implementation PR. Do not create manually synchronized copies. Keep old catalog, architecture, and roadmap URLs until redirects are deployed and tested.

Render spec entries from local specs/<id>/status.json with stable ID, owner, separate delivery and acceptance, related public specs, and exact merged implementation/test receipts when accepted. Show pending evidence explicitly for open specs. Pages and the org report are views of owner-native status.

Expand Pages path triggers for every canonical source affecting output. Reuse the shared workflow; change its public contract in pipelines only if the selected source method requires it. Required PR checks should build and check links with fixtures or disposable dependencies. Live deployment smoke checks run separately after merge or on a schedule.

Failure and compatibility

A missing source, broken link, invalid status, or absent redirect should fail a local check with path and cause. Rendering needs no secret. A failed deployment reports the workflow run; it does not silently change acceptance. Use the existing MkDocs wiring and avoid a second renderer unless the selected approach needs one.

Implemented draft slice

Native MkDocs on_files hooks generate the existing /contributing/ view from root CONTRIBUTING.md and explicitly publish this public spec package in memory. No manual copies or new rendering engine are introduced. The canonical-source and URL inventory is in CONTRIBUTING.md; all five existing routes stay intact. Local repository links are checked before rebasing to public GitHub sources; package links stay within the rendered spec. Strict MkDocs validates local page and anchor targets. Delivery and acceptance are rendered independently from status.json, with open evidence explicit and accepted receipt shape checked. The rendered spec headline metadata also comes from status.json, so a canonical status edit cannot leave contradictory delivery or acceptance claims on Pages.

The dedicated Pages check workflow builds on PRs with read-only permissions and only this checkout plus pinned disposable documentation dependencies. It runs tests/pages_contracts.py explicitly, separately from the package's locked pre-commit/test environment. Main deployment still uses the existing shared Pages workflow and now watches canonical guide, spec, and hook changes. No change enables deployment or claims accepted status. Live URL checks, receipt authenticity audits, and cross-repository template adoption remain open.