Handbook
Maintainer notes — Examples validation
How check-docs-examples.py finds job creates:
Updated
| Surface | Automated today | Manual expectation |
|---|---|---|
Job create (POST /v1/jobs) in fenced Markdown blocks |
✅ python3 scripts/check-docs-examples.py |
Verifies kind: docker_argv + argv for bash (-d / --data), Python api("POST", "/v1/jobs", …), and TypeScript fleetFetch |
curl snippets (non-job routes) |
❌ | Run against a throwaway FLEET_DATA_DIR when editing payloads |
Python (urllib) full scripts |
Partial (job body only when using api(…) helper pattern) |
Copy into scratch file + run locally |
TypeScript (fetch) |
Partial (job JSON.stringify body) |
ts-node smoke when request shapes change |
| OpenAPI parity | ✅ python3 scripts/check-docs-contracts.py |
CI workflow docs-contracts.yml |
Payload fixtures (docs/examples/payloads/) |
✅ python3 scripts/check-schema-examples.py (requires jsonschema) |
valid/*.json must validate; invalid/*.invalid.*.json must fail |
How check-docs-examples.py finds job creates:
- Markdown fences — skips a block when the closest previous non-blank line is
<!-- docs:skip-job-schema-check -->. - Bash —
curlwith-X POST, payload flag (-d/--data/--data-binary), URL ending in/v1/jobs(not/cancel). - Python —
api("POST", "/v1/jobs", { … })parsed withast.literal_evalso f-strings elsewhere do not confuse brace matching. - TypeScript —
fleetFetch("/v1/jobs", …)plusmethod: "POST"; body must visibly includedocker_argvor parse as JSON (object keys quoted).
Future hooks:
- Extend link coverage beyond
.mdtargets (check-docs-links.py). - Optional Playwright replay of Learn 101
curlbundles against a disposable port.