---
title: "Admin Project Migration Rehearsal"
method: POST
path: "/admin/project_migration_rehearsal"
---

# Admin Project Migration Rehearsal

`POST /admin/project_migration_rehearsal`

## Request

- Base URL: `https://api.colourmemory.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.colourmemory.com/admin/project_migration_rehearsal`
- Auth: none declared

Session 2B-ii mandatory-checkpoint rehearsal -- exercises every
persistent_projects.py function (including the Gap 1 ownership fix)
against REHEARSAL_DATABASE_URL, NEVER the real DATABASE_URL. Refuses
to run at all if REHEARSAL_DATABASE_URL is unset, rather than silently
falling back to production. This process runs on the real Railway
service (inside its private network) specifically because railway run
cannot tunnel *.railway.internal DNS to a local machine -- see
persistent_projects.py's own docstring on _DATABASE_URL_OVERRIDE.

Returns only pass/fail booleans and small derived facts (counts,
hashes, booleans) -- never a connection string, never full house_json
content, never a raw house_ref/project_id beyond what's needed to
show one check succeeded.

## Headers

- `x-admin-key` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/colourmemory/apis/colour-memory-api.md) · [All operations](https://skmtc.dev/colourmemory/apis/colour-memory-api/llms.txt) · [OpenAPI document](https://skmtc.dev/colourmemory/apis/colour-memory-api/revisions/4ba028f64042?raw)
