@hasna/domains
Version:
Domain portfolio, registrar, marketplace, and DNS management for AI agents — CLI + MCP + HTTP API + SDK, shared account API and PostgreSQL
57 lines • 3.47 kB
TypeScript
/**
* Cloud Postgres migrations for domains-serve.
*
* Combines the app schema (`PG_MIGRATIONS`) with the vendored storage kit's
* checksum-guarded `MigrationLedger` and the @hasna/contracts api-keys table.
* Runs against the OWNER role DSN (DDL), not the request-path app role.
*
* PURE REMOTE (Amendment A1): migrations run against the cloud Postgres. There
* is no local schema and no ledger sync between machines.
*/
import { type Migration, type MigrationResult } from "../generated/storage-kit/index.js";
/** Env var holding the owner-role DSN (DDL privileges). Falls back to the app DSN. */
export declare const OWNER_DSN_ENV = "HASNA_DOMAINS_DATABASE_URL_OWNER";
export declare const APP_DSN_ENV = "HASNA_DOMAINS_DATABASE_URL";
/**
* Applied-ledger rows recorded before the ledger's id scheme stabilized, which
* no build in this repo's history generates (verified across every published
* tarball 0.0.30-0.0.46 and all git history). They are acknowledged via the
* storage kit's `acknowledgedLegacyIds`: they pass the downgrade guard, are
* never checksum-compared (their SQL is not reproducible from any source), and
* are never re-applied or re-inserted.
*
* `domains_apikeys_tenancy_0001`, `domains_apikeys_tenancy_0002`,
* `domains_tenancy_0001`..`domains_tenancy_0010` were recorded against the
* prod ledger out-of-band during the 2026-07 self-hosted cutover. Deploy
* evidence 2026-08-25: the 02:00Z pass failed on `_0001` (O15-00671 filed);
* the 16:44Z pass, carrying the kit with `_0001` acknowledged
* (hasna/apps#1176), advanced to `_0002`; the next pass then failed on the
* third row `domains_tenancy_0001` (O15-00758 filed), the 2026-08-25 PASS-18
* pass then failed on the fourth row `domains_tenancy_0002` at
* `domains-prod-migrate:42` (O15-00762 filed), and the 2026-08-25 pass then
* failed on the fifth row `domains_tenancy_0003` at `domains-prod-migrate:42`
* (O15-00766 filed). Deploy evidence 2026-08-26: passes 48-96 then failed on
* the sixth row `domains_tenancy_0004` at `domains-prod-migrate:44` through
* `:49` (todos 2b474505). Deploy evidence 2026-08-26/27: the 2026-08-27
* 06:47Z pass failed on the seventh row `domains_tenancy_0005` at
* `domains-prod-migrate:50` (O15-01822 filed). The ledger census (inspection
* task oss-fleet-prod/4b7c37626965439e96d5386c8e8a73d4) shows the complete
* out-of-band set is the 12 rows below — `domains_apikeys_tenancy_0001-0002`
* plus `domains_tenancy_0001..0010` — so this list covers the full measured
* prod ledger rather than one row per deploy pass. The apikeys rows'
* substance — the api-keys tenancy (`tid`) column — is carried today by
* `hasna_auth_0003_api_keys_tenant`; the substance of the `domains_tenancy_*`
* rows is not reproducible from any source in this repo, and no build
* generates the ids, so they are acknowledged as history rather than
* re-applied. Acknowledging all twelve unblocks `domains db migrate` (the ECS
* migrate task) and therefore the domains deploy lane.
*/
export declare const ACKNOWLEDGED_LEGACY_MIGRATION_IDS: readonly string[];
/** The ordered migration set: app schema first, then the shared api-keys table. */
export declare function buildMigrations(): Migration[];
/** Run all pending migrations against the owner DSN. */
export declare function runMigrations(opts?: {
dryRun?: boolean;
env?: NodeJS.ProcessEnv;
}): Promise<MigrationResult>;
//# sourceMappingURL=migrations.d.ts.map