Skip to content

No CI job builds frontend/docs — a broken .mdx page ships undetected #688

Description

@Miracle656

Problem

veil publishes a docs site from frontend/docs, and no workflow builds it. Grepping .github/workflows/ for frontend/docs returns nothing.

So an MDX syntax error, a broken _meta.ts nav entry, a bad import in a page, or a dead relative link between pages all pass CI and ship.

Every other surface has a build gate — Wallet frontend — typecheck & build, Agent — typecheck & build, SDK — typecheck, test & size budget, Rust contracts — build & test. Docs is the one that doesn't.

Why it matters more than it looks

The docs site carries load-bearing content: the STRIDE threat model, the fee-payer derivation modes, network/storage-namespacing safety notes. It's also what an SCF reviewer reads. A page that fails to render is a worse look than one that doesn't exist.

Concretely: PR #685 added three guide pages and stated the site built clean. That claim was true — but it was unverifiable from the PR, and only got checked because a reviewer ran next build by hand. That does not scale.

What to build

A CI job that builds the docs site on any PR touching it.

Suggested execution

  1. Add a job to .github/workflows/ci.yml (or its own workflow), path-filtered to frontend/docs/**.
  2. npm ci in frontend/docs, then npx next build.
  3. Fail the job on a non-zero exit.
  4. Cache node_modules / the Next cache so it doesn't add minutes to every run.

Reference — the current build succeeds and emits, so a green baseline exists to start from:

○ /guides/fees            10.2 kB
○ /guides/networks        10.7 kB
○ /guides/wallet-features  5.92 kB
● /guides/_meta             250 B

Worth considering, not required

A link check across the built output. Broken cross-page links are the most common docs rot and next build won't catch them. If it's noisy, leave it out rather than ship a check people learn to ignore.

Acceptance criteria

  • A CI job builds frontend/docs on PRs that touch it
  • The job fails on a deliberately broken .mdx page — demonstrate this, e.g. by pushing a broken page to a scratch branch and linking the red run, then reverting. Inspection is not enough here; the whole point is that the gate actually gates
  • The job does not run on PRs that don't touch docs
  • Build time is bounded by caching; state the added wall-clock in the PR

Notes

  • frontend/docs uses Nextra on Next.js; deps are already installed locally in most checkouts, so the job mainly needs npm ci to be correct in a clean runner.
  • Don't gate on warnings — Nextra emits some routinely, and a check that goes red on noise gets ignored, which returns us to where we are now.

Drips Wave · Complexity: Easy · 100 points


Required: Before submitting, join the contributor Telegram so your work can be tracked and counted toward the Stellar Wave: https://t.me/+fxHXq8f1SwlkZDBk

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions