- Add POST /v1/projects/{slug}/purge (purgeProject): flush edge cache-tag
site-<org>-<slug> without redeploying, stamp lastPurgeAt; 200 Project / 403 / 404.
Placed right after /deploy in lifecycle order.
- Document the /v1/sites surface into the SAME projects spec (buildSite,
deploySite, listSites) — the brief-build/raw-manifest deploy entrypoint into
the one org-scoped projects store, not a second store. Prose on each makes the
no-duplicate relationship explicit vs the artifact/git /v1/projects/{slug}/deploy
entrypoint. New schemas SiteFile/BuildSiteRequest/DeploySiteRequest/
SiteDeployResult/Site grounded in clients/projects Go request/response structs.
- Unify vocabulary across the spec: project / deployment / org-scoped projects
store / S3 origin (<org>/<slug>/) / edge cache-tag site-<org>-<slug> / purge /
canonical live URL https://<slug>.<apex>. Enums grounded in Go (framework,
status, source). Shared BadGateway response (DRY). Terse, invariant-first.
- Scrub stale svc prose: tasksvc -> tasks (CHANGELOG.md, tasks/openapi.yaml).
- Regenerate hanzo.yaml via merge.py (1800->1803 paths, 1006->1011 schemas,
155->156 responses). merge invariant green; all $refs resolve; no duplicate
operationId or path key.
Co-authored-by: Hanzo Dev <[email protected]>