GET /projects |
List registered projects |
POST /{project}/legacy-root |
Create the synthetic root and freeze the baseline |
POST /{project}/branches · GET /{project}/refs · GET /{project}/refs/resolve?name= |
Ref creation, listing, resolution |
POST /{project}/refs/advance |
CAS advance of an unprotected ref (protected refs refused: 403) |
POST /{project}/refs/merge |
Protected-ref advance with a valid memory-git-merge/v2 signed envelope; nonce consumed atomically with the CAS |
POST /changesets · GET /changesets/{id} · GET /{project}/changesets?ref=&limit= |
Changeset creation (idempotency-keyed, digest-bound replay) and retrieval; list defaults to limit=20, max 200 |
POST /changesets/{id}/diff |
Semantic diff against another changeset |
GET · POST /{project}/context?ref=&head=&query=&limit= |
Accepted-context projection at an exact ref/head; manifest pinning on POST with commit/write authority |
POST /{project}/conflicts/detect · GET /{project}/conflicts · POST /conflicts/persist · POST /conflicts/retire · POST /conflicts/{id}/resolve |
Conflict analysis (pure) and lifecycle management |
POST /manifests · GET /manifests/{id} |
Context manifests — reproducibility receipts for exactly what was loaded |