Skip to content

ci: link, leakage and API-spec gates, plus the docs site's missing headers - #13

Open
LKSNDRTMLKV wants to merge 8 commits into
mainfrom
chore/ci-gates
Open

ci: link, leakage and API-spec gates, plus the docs site's missing headers#13
LKSNDRTMLKV wants to merge 8 commits into
mainfrom
chore/ci-gates

Conversation

@LKSNDRTMLKV

Copy link
Copy Markdown
Member

Adds the three CI gates the site had no mechanism for, and closes the findings each one exists to catch. Also carries two prerequisite commits: a .gitignore guard for local-only directories, and a clean resync of the vendored OpenAPI spec.

Merge this first. The .gitignore guard is not in effect on branches that lack it, and this repo is public.

What it adds

  • Link crawler over both dist trees. astro check treats a markdown link target as an opaque string, which is why four [Licensing](/engine/licensing) links passed check and 404'd in production. Reading dist also means Astro's redirect stubs are followed via their own <a href>, and cross-site links resolve against the other site's build — the only way a docs → landing link was ever going to be caught.
  • Leakage scan over the whole repo including public/. The one served instance of an internal decision-record number was in public/openapi.yaml; a source-tree-only convention would never have found it. It also asks git ls-files whether any local-only directory is tracked, because the content scan skips those by design.
  • Spec drift check. The old sync script exited 0 whether or not it synced, so no input could make it report a problem. It now fails when the source is absent in either mode, and CI checks out dpp-engine so the comparison has something to compare against.
  • permissions: contents: read on the workflow.
  • _headers and robots.txt for the docs site, which had neither — 21 pages and a 2.87 MB bundle shipping with no Cache-Control and none of the four security headers the marketing site gets.

Every gate was tested against a known-bad input

Path Exit
spec in sync · no broken links · clean tree 0, 0, 0
spec source absent (--check and plain sync) 1, 1
vendored copy drifted 1
a dead link exists 1
an internal decision-record number appears 1
a local-only file is tracked 1

Two fixes needed to make the gates green

A gate that cannot go green is not a gate. The four Licensing links and one /roadmap link were removed and the /design/open-core redirect repointed at a live page. Whether to publish the licensing page is a separate question, handled in a later PR.

Fourteen source comments cited private documents. Each already stated its own substance, so the pointer was pure leak; they now state the rule inline.

Verification: pnpm -r build green · pnpm -r check 0 errors / 0 warnings / 5 hints · 796 links across 43 pages resolve · leakage clean · spec matches.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 20, 2026

Copy link
Copy Markdown

Deploying odal-node-docs with  Cloudflare Pages  Cloudflare Pages

Latest commit: 9f3c7e5
Status: ✅  Deploy successful!
Preview URL: https://d948b615.odal-node-docs.pages.dev
Branch Preview URL: https://chore-ci-gates.odal-node-docs.pages.dev

View logs

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 20, 2026

Copy link
Copy Markdown

Deploying odal-node-landing with  Cloudflare Pages  Cloudflare Pages

Latest commit: 9f3c7e5
Status: ✅  Deploy successful!
Preview URL: https://6073328f.odal-node-landing.pages.dev
Branch Preview URL: https://chore-ci-gates.odal-node-landing.pages.dev

View logs

…ft check is deterministic and cross-repo changes are not deadlocked
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant