---
title: "One local command closes the documentation loop."
description: "Generate SDKs, synchronize contract-addressed documentation, and run every Wildflower website quality gate locally without GitHub Actions."
canonical: "https://wildflower.computer/docs/local-ci/"
openapi_version: "0.8.0"
source_revision: "788b7325a454b8b753a7d614247d5694bad5c967"
---

# One local command closes the documentation loop.

The API repository owns executable contract facts. The website owns the reading experience. A local refresh verifies the former, synchronizes only generated artifacts, and validates the latter before anything is committed.

> **No hosted CI**
>
> This pipeline does not use GitHub Actions, scheduled jobs, automatic pull requests, or hosted CI credentials. It also never commits, pushes, deploys, or publishes a package for you.

## 1. Prove the API and SDK source

Generate locally, verify deterministic output, then run the repository's complete gate. The current generated bundle identifies generator`0.7.0`, OpenAPI`0.8.0`, and package versions`typescript=0.8.0, python=0.8.0, rust=0.8.0, go=0.8.0, zig=0.8.0`.

```bash
cd /path/to/wildflower
corepack pnpm sdk:generate
corepack pnpm sdk:check
corepack pnpm ci:local
```

## 2. Refresh the website

Point the web checkout at an adjacent clean API checkout. The command fetches `origin/main`, fast-forwards a clean local`main` when possible, requires exact remote parity, runs`sdk:check`, copies content-addressed artifacts, and runs the complete website gate.

```bash
cd /path/to/wildflower-web
WILDFLOWER_SOURCE_DIR=/path/to/wildflower \
  corepack pnpm docs:refresh
```

## What the website gate covers

Source integrity

Exact API revision, generated SDK provenance, contract digests, package versions, and compatibility history.

Application quality

Formatting, lint, tests, types, static build, accessibility, SEO, and security policy. The build also creates page Markdown, stable anchors, search data, and the complete LLM corpus from rendered documentation.

Deployment shape

Local Cloudflare staging and production dry runs—without deploying either environment.

## Review the resulting diff

A public contract or generated SDK change updates its synchronized JSON, provenance, and affected generated pages. An unrelated API commit with identical artifact bytes produces no website content diff. Authored tutorials remain hand-written and consume generated values through typed helpers.

Open any built documentation page and use **Copy Page** to verify the sibling Markdown. The SEO check requires every canonical docs route to appear in the Markdown directory, search index, `llms.txt`, and`llms-full.txt`.

| Failure | Meaning |
| --- | --- |
| Dirty API checkout | Commit, move, or discard that work explicitly before refreshing. |
| API is not exact `origin/main` | Reconcile the source branch; detached or divergent work is not moved. |
| `sdk:check` drift | Regenerate and review SDK output in the API repository first. |
| Contract digest mismatch | Run the write-mode refresh and review the generated website diff. |
| Website gate failure | Fix it locally; the command does not hide or remotely delegate it. |
