DiskpipeSTORAGE / OPERATIONS

Documentation sites

Run the same validation and rendering used by CI:

bash scripts/check-docs-site.sh

The Rust tool in tools/zc-docs has a committed Cargo lockfile and a pinned CommonMark parser. The build uses two compilation jobs and temporary build storage. It does not build the storage services. An optional argument chooses the output directory. The outputs are the zcutils site at docs-site/dist/ and the Diskpipe site at docs-site/dist/diskpipe/.

Diskpipe documentation discovery

Every Git-tracked Markdown file beneath zccusan/ is rendered automatically. No page allowlist needs updating when a guide is added. The builder follows Markdown links recursively into shared repository documentation and copies linked repository assets. Untracked laboratories, credentials and local test outputs are excluded. Commit a new page before expecting CI to publish it; local builds also include staged new files.

Links to Markdown become relative HTML links, including links with heading fragments and links written as GitHub URLs to this repository's main branch. An introductory page links to the complete generated documentation library. Referenced source directories can still link to the repository, and external projects retain their external URLs. Documentation links stay on Diskpipe.

Nested lists, block quotes, reference links, images, tables and fenced code are supported through CommonMark. Heading anchors come from visible heading text and receive deterministic suffixes when repeated. Raw HTML is escaped; HTML comments are omitted. Mermaid fences remain readable source code. Unfilled template links are displayed as text until their values and generated artifacts exist. Missing ordinary local targets or heading fragments fail the build before new output is emitted.

The landing pages live in zccusan/docs/site/. Stable homepage, Kubernetes, standalone and day-two URLs are retained. Other storage pages keep their source hierarchy, such as docs/GETTING_STARTED_WITH_ZCCUSAN_ON_KUBERNETES.html. Shared documents live beneath reference/. The builder writes a site-manifest.txt containing exactly the public files generated for deployment.

Publication

GitHub Actions validates pull requests. Pushes to main and manual runs on main publish both sites. Markdown changes anywhere, storage documentation and its assets, shared docs, build-tool changes and source examples trigger this workflow. The workflow is .github/workflows/docs-site.yml.

Diskpipe publishes at diskpipe.com using the dedicated robjcaskey/diskpipe-docs Pages repository and its gh-pages branch. scripts/publish-diskpipe-docs.sh copies the generated manifest, publishes nested pages and removes previously generated pages that have been deleted. It removes the legacy Pages CNAME and preserves repository configuration. CloudFront serves the public apex and www names with an ACM certificate, while Pages retains its default robjcaskey.github.io/diskpipe-docs/ origin URL. A custom domain on Pages would redirect origin requests back to CloudFront; do not restore CNAME or set a Pages custom domain. A repository-scoped deploy key is stored in the source repository's DISKPIPE_DOCS_DEPLOY_KEY Actions secret.

The independent zcutils site retains its small curated landing-page set. Its publisher preserves Helm chart archives, index.yaml and signatures on the existing gh-pages branch. The old day-two URL continues forwarding to the storage documentation. The Zero Copy Cinematic Universe connects the two projects.

See HTTPS infrastructure operations for the Terraform module, certificate renewal, DNS ownership, costs and public checks.

Local subset checks

The small dependency-free validator remains available for the curated pages:

rustc --edition=2024 scripts/zc-md.rs -o /tmp/zc-md
/tmp/zc-md --check docs/saml-realtime-revocation-debug.md
/tmp/zc-md --render docs/saml-realtime-revocation-debug.md /tmp/saml.html

That strict subset supports ATX headings, wrapped paragraphs, single-level lists, pipe tables, inline code, asterisk emphasis, inline links and backtick fences. It requires one title and consistent heading levels. Full Diskpipe site generation uses the Cargo build to support existing CommonMark guides.

Shared appearance

Both projects use the existing layout and docs-site/site.css: cool white, slate-gray surfaces and teal links. System light/dark preference is followed automatically, including changes while the page is open. Code, tables, navigation and focus states have a dark variant. Print keeps the light palette. There is no theme script or saved override.

Built from Markdown with Rust. No client-side dependencies.