ZuloOne
English
Sign in
Menu

Documentation pipeline for engineers

Updated

The documentation pipeline is a set of small gates, each protecting one failure mode that already escaped once: wrong-language prose, dead links, stale generated indexes, missing screenshots, invisible pages, and UI labels that do not exist on screen.

← Developer wiki

Run order in zulo.one#

Run these from D:\Sources\zulo.one when changing wiki or reference sources. The order is cheap source checks first, then generated drift, then UI wording.

Order Command Protects
1 node tools/check-en-source.mjs The source documentation is English. Code, inline examples and short statutory originals are allowed; pasted Russian/Ukrainian/Arabic prose is not.
2 node tools/check-doc-names.mjs Business/user/learn/reference docs do not promise business-layer objects that the workspace no longer has. Developer platform pages are intentionally outside this oracle.
3 node tools/check-doc-links.mjs Relative .md links and same-page anchors resolve in the repository, not only after the site has rewritten routes.
4 node tools/check-doc-images.mjs Every wiki image reference has alt text, an immediate italic caption, resolves under wiki/img, and no stale image file is left unreferenced.
5 node tools/check-portal.mjs Every business/work/developer page is in wiki/portal.json, has a valid zone/group/topic/order, and zone indexes link only inside their zone.
7 node tools/gen-reference.mjs --check The generated business-layer reference still matches the workspace metadata.
8 node tools/check-guide-keys.mjs Literal in-app guideKey values have wiki/guides files, guide defaults are embedded, and the guide tree is not empty.
9 node tools/audit-ui-labels.mjs Bold user-facing labels in wiki/work match English UI strings from frontend/src/i18n/locales/en.ts or workspace captions. The expected miss count is 0.

build-portal is the only write step in this list. Run it before --check, and review the generated diff like code: the registry is the source, the generated blocks are the consequence.

Site gates in getzulo.com#

The site repository answers a different question: not "is the wiki internally consistent?" but "can a reader reach the page on the public site?" Run these in D:\Sources\getzulo.com with ZULOONE_REPO pointing at the wiki checkout when needed.

Command Protects
pnpm check:coverage Every tracked wiki/docs page has exactly one fate: published, denied with a reason, delivered elsewhere, or a known shrinking unrouted gap.
pnpm sync:wiki --check The published set and copied content match scripts/lib/wiki-publish.mjs and scripts/published-pages.json; denied internal pages do not leak into public output.
pnpm check:live The deployed site answers every published documentation page, redirects legacy locales correctly, and serves the images the source expects.

Traps learned#

  • Shallow clone dates. sync-wiki reads git history to date pages. A shallow checkout makes every page look changed in the latest commit, so the site workflow uses fetch-depth: 0 for the wiki checkout.
  • CRLF versus LF in generators. Generated blocks are compared on Windows and in CI. build-portal normalizes input to LF before regex replacement; do not reintroduce platform-dependent newline comparisons.
  • Empty walks must fail. A checker that scans zero files is broken, not green. The docs gates intentionally fail on suspiciously small walks or empty guide trees.
  • A new gate must be proven red. When adding a checker, break a known sample or point it at a fixture first. A green-only gate can be checking the wrong root, the wrong language or generated output after the damage is already hidden.
  • Site and wiki checks are not interchangeable. Repository link checks catch broken relative source links; site link checks catch rewritten public routes. Run both for release work.

What's not there yet#

  • audit-ui-labels is still an audit script rather than a hard CI gate, but the accepted result for user docs is zero misses.
  • The developer platform wiki has no object-name oracle like business docs do; engineers must verify platform identifiers against src/ and frontend/.
  • The live-site check proves the current deployment, not that a rollout will happen automatically after the repository gates pass.

Where next#

  • In-app help — guide keys, tours and field hints that several gates protect.
  • The forms system — form-layout text and hints that must stay synchronized with the renderer.
  • Platform architecture — how generated platform behaviour is documented without duplicating code.
Was this page helpful?