@homeflare/alchemy 0.44.0 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/postgres/fake-role-sql.d.ts +2 -1
  2. package/dist/postgres/fake-role-sql.d.ts.map +1 -1
  3. package/dist/postgres/fake-sql.d.ts +3 -3
  4. package/dist/postgres/fake-sql.d.ts.map +1 -1
  5. package/dist/postgres/index.d.ts +1 -1
  6. package/dist/postgres/index.d.ts.map +1 -1
  7. package/dist/postgres/index.js +117 -94
  8. package/dist/postgres/index.js.map +11 -11
  9. package/dist/postgres/role-attrs.d.ts +7 -4
  10. package/dist/postgres/role-attrs.d.ts.map +1 -1
  11. package/dist/postgres/role-diff.d.ts +2 -2
  12. package/dist/postgres/role-diff.d.ts.map +1 -1
  13. package/dist/postgres/role-errors.d.ts +13 -7
  14. package/dist/postgres/role-errors.d.ts.map +1 -1
  15. package/dist/postgres/role-membership-sql.d.ts +30 -27
  16. package/dist/postgres/role-membership-sql.d.ts.map +1 -1
  17. package/dist/postgres/role-provider.d.ts.map +1 -1
  18. package/dist/postgres/role-scram.d.ts +2 -0
  19. package/dist/postgres/role-scram.d.ts.map +1 -1
  20. package/dist/postgres/role-secrets.d.ts +8 -0
  21. package/dist/postgres/role-secrets.d.ts.map +1 -1
  22. package/dist/postgres/role-sql.d.ts.map +1 -1
  23. package/dist/postgres/role.d.ts +2 -2
  24. package/dist/postgres/role.d.ts.map +1 -1
  25. package/docs/postgres-role.md +18 -6
  26. package/package.json +1 -1
  27. package/src/ceph/ceph-argv.test.ts +1 -1
  28. package/src/launchd/sudo-allowlist.test.ts +2 -2
  29. package/src/linux/sudo-allowlist.test.ts +3 -3
  30. package/src/linux/sudo-runner.test.ts +2 -2
  31. package/src/postgres/fake-role-sql.ts +26 -6
  32. package/src/postgres/fake-sql.ts +10 -5
  33. package/src/postgres/index.ts +1 -0
  34. package/src/postgres/role-attrs.ts +7 -4
  35. package/src/postgres/role-diff.ts +7 -3
  36. package/src/postgres/role-errors.ts +22 -14
  37. package/src/postgres/role-guard.test.ts +3 -3
  38. package/src/postgres/role-identity.test.ts +14 -2
  39. package/src/postgres/role-lifecycle.test.ts +2 -2
  40. package/src/postgres/role-membership-options.test.ts +73 -0
  41. package/src/postgres/role-membership-repair.test.ts +153 -0
  42. package/src/postgres/role-membership-sql.ts +88 -63
  43. package/src/postgres/role-password-ascii.test.ts +53 -0
  44. package/src/postgres/role-password-transports.test.ts +123 -0
  45. package/src/postgres/role-privilege.test.ts +37 -10
  46. package/src/postgres/role-provenance.test.ts +1 -1
  47. package/src/postgres/role-provider.ts +3 -2
  48. package/src/postgres/role-refusals.test.ts +0 -25
  49. package/src/postgres/role-scram.ts +2 -0
  50. package/src/postgres/role-secrets.ts +15 -0
  51. package/src/postgres/role-sql.ts +3 -1
  52. package/src/postgres/role.ts +9 -1
  53. package/src/postgres/schema-socket.test.ts +1 -0
@@ -32,24 +32,24 @@
32
32
  "/**\n * The read half of `Postgres.Grants`: what the catalogs say the declared role and PUBLIC\n * may do on one schema, its relations, its columns and its default privileges — plus the\n * existence check the plan refuses on before any statement runs. The ownership facts\n * (`nspowner`/`relowner`) live in `grants-ownership.ts`; the word vocabulary and the\n * PUBLIC relkind set live in `grants-words.ts`.\n *\n * ★ READS GO THROUGH `aclexplode`, NOT THE `aclitem` TEXT. Measured at\n * `func.sgml@REL_18_6` (\"Access Privilege Inquiry Functions\", committed as\n * `fixtures/pg-REL_18_6-aclexplode-func.txt`): `aclexplode(aclitem[])` returns\n * `(grantor oid, grantee oid, privilege_type text, is_grantable boolean)`, one row per\n * granted privilege, with the PUBLIC pseudo-role at grantee oid zero — so the read path\n * never parses `grantee=privs/grantor` letters at all. The letters still appear in\n * `grants-provenance.test.ts`, where the declared words are traced to the `ACL_*_CHR`\n * constants the server really stores, but no shipped query depends on them.\n * ★ `grantee = (SELECT oid FROM pg_roles WHERE rolname = $1)` IS MISSING-ROLE-SAFE BY\n * CONSTRUCTION: a role that does not exist yields `NULL`, `NULL = anything` is `NULL`,\n * and `WHERE NULL` selects nothing — the role simply reads as holding no privileges.\n * ★ `relkind` IS NOT FILTERED. A schema's `pg_class` rows carry `relacl` whether the\n * relation is a table, a view or a sequence, and the seat model grants SELECT on a\n * shared ledger VIEW in another schema through the same `GRANT … ON` statement the docs'\n * table form accepts for views (`grant.sgml@REL_18_6`: \"ALL TABLES also affects views\n * and foreign tables\"). A word the relkind cannot hold (e.g. INSERT on a sequence) is\n * refused by the server itself as a statement error, never by a word check: deciding\n * that at plan time would need a second relkind query this family does not read.\n * ★ `relkind` IS CAST TO TEXT (`c.relkind::text`) BECAUSE THE COLUMN IS TYPE `\"char\"`\n * (OID 18), which `@effect/sql-pg`'s socket transport does not decode: `PgTypes` has\n * no codec for OID 18, so the raw `bytea`-shaped bytes arrive (a plain table reads as\n * `Uint8Array([114])`, never `'r'`) and `relkindIsPublicRevocable` (`grants-words.ts`)\n * would say PUBLIC holds nothing a `REVOKE ALL ON ALL TABLES IN SCHEMA` reaches.\n * `::text` returns OID 25, which decodes as a string. Same trap as the `datlocprovider`\n * CASE in `database-sql.ts`, which casts `\"char\"` columns to text for the same reason.\n */\nimport * as Effect from 'effect/Effect';\nimport type { SqlError } from 'effect/unstable/sql/SqlError';\nimport type { PgExecutor } from './database-sql.ts';\nimport { readOwnedTables, readSchemaOwnership } from './grants-ownership.ts';\nimport { type LiveDefault, readDefaultAcls } from './grants-read-defaults.ts';\nimport { type AclRow, encodeWord, wordsOf } from './grants-words.ts';\n\nconst SCHEMA_PRESENT_SQL = 'SELECT 1 AS present FROM pg_namespace WHERE nspname = $1';\n\nexport const schemaExists = (pg: PgExecutor, schema: string): Effect.Effect<boolean, SqlError> =>\n Effect.map(\n pg.unsafe<{ readonly present: number }>(SCHEMA_PRESENT_SQL, [schema]),\n (rows) => rows.length > 0,\n );\n\n/** Schema-level rows for the declared role and for PUBLIC in one query: the repair target\n * (`role`) and the `revokeFromPublic` check (`public`) share one round trip. */\nconst SCHEMA_ACL_SQL = `SELECT\n a.grantee = 0 AS public,\n a.privilege_type AS privilege,\n a.is_grantable AS grantable\n FROM pg_namespace n\n CROSS JOIN LATERAL aclexplode(n.nspacl) AS a\n WHERE n.nspname = $1\n AND (a.grantee = 0 OR a.grantee = (SELECT oid FROM pg_roles WHERE rolname = $2))`;\n\nexport interface LiveSchemaAcl {\n readonly role: ReadonlyArray<string>;\n readonly public: ReadonlyArray<string>;\n}\n\nexport const readSchemaAcl = (\n pg: PgExecutor,\n schema: string,\n role: string,\n): Effect.Effect<LiveSchemaAcl, SqlError> =>\n Effect.map(pg.unsafe<AclRow>(SCHEMA_ACL_SQL, [schema, role]), (rows) => ({\n role: wordsOf(rows, false),\n public: wordsOf(rows, true),\n }));\n\n/** One row per relation in the schema that holds ANY acl entry for the declared role or\n * PUBLIC, with each grantee's words and the relation's `relkind` — sorted by table name.\n * The relkind is NOT a filter on what is read (see the header): it scopes the\n * `revokeFromPublic` CHECK to the relations `REVOKE ALL ON ALL TABLES IN SCHEMA` actually\n * reaches (measured on PG 18.6: a PUBLIC grant on a sequence survives that statement, so\n * counting it would refuse to converge). */\nconst TABLES_SQL = `SELECT\n c.relname AS table,\n c.relkind::text AS relkind,\n a.grantee = 0 AS public,\n a.privilege_type AS privilege,\n a.is_grantable AS grantable\n FROM pg_class c\n CROSS JOIN LATERAL aclexplode(c.relacl) AS a\n WHERE c.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = $1)\n AND (a.grantee = 0 OR a.grantee = (SELECT oid FROM pg_roles WHERE rolname = $2))\n ORDER BY c.relname`;\n\nexport interface LiveTable {\n readonly table: string;\n readonly relkind: string;\n readonly role: ReadonlyArray<string>;\n readonly public: ReadonlyArray<string>;\n}\n\nexport const readTableAcls = (\n pg: PgExecutor,\n schema: string,\n role: string,\n): Effect.Effect<ReadonlyArray<LiveTable>, SqlError> =>\n Effect.map(\n pg.unsafe<AclRow & { readonly table: string; readonly relkind: string }>(TABLES_SQL, [\n schema,\n role,\n ]),\n (rows) => {\n const byTable = new Map<string, { relkind: string; role: string[]; public: string[] }>();\n for (const row of rows) {\n const entry = byTable.get(row.table) ?? { relkind: row.relkind, role: [], public: [] };\n entry[row.public ? 'public' : 'role'].push(encodeWord(row));\n byTable.set(row.table, entry);\n }\n return [...byTable.entries()]\n .map(([table, entry]) => ({\n table,\n relkind: entry.relkind,\n role: [...new Set(entry.role)].sort(),\n public: [...new Set(entry.public)].sort(),\n }))\n .sort((a, b) => a.table.localeCompare(b.table));\n },\n );\n\n/** One row per column ACL in the schema (user columns only: `attnum > 0`, not dropped),\n * for the declared role and PUBLIC — sorted by table then column. PUBLIC column rows are\n * read so `revokeFromPublic` converges on them too: `REVOKE ALL ON ALL TABLES IN SCHEMA`\n * clears them in the same statement, but only grants made by the revoking role or by the\n * owner (which holds every grant option) — a third grantor's grant would otherwise survive\n * past a repair with nothing re-read to notice it.\n *\n * `grantor` is selected for the same rule on a table-level `REVOKE ALL` (revoke.sgml@REL_18_6:\n * a role revokes only what it granted; a superuser's REVOKE is performed as the owner).\n * `restorable` is those words — the collateral re-grant restores them and leaves a third\n * grantor's entry where the revoke left it, instead of adding an owner grant on top.\n * `revoker_as_owner` gates the `grantor === owner` arm: the revoker clears the owner's grant\n * only when it revokes AS the owner — a superuser or a member of the owning role\n * (`pg_has_role(..., 'USAGE')`, `select_best_grantor` acl.c@REL_18_6). A non-superuser,\n * non-member revoker clears only grants it made, so an owner grant marked restorable would be re-granted over an entry the revoke never removed. */\nconst COLUMNS_SQL = `SELECT\n c.relname AS table,\n v.attname AS column,\n a.grantee = 0 AS public,\n a.privilege_type AS privilege,\n a.is_grantable AS grantable,\n pg_get_userbyid(a.grantor) AS grantor,\n pg_get_userbyid(c.relowner) AS owner,\n current_user AS revoker,\n pg_has_role(current_user, c.relowner, 'USAGE') AS revoker_as_owner\n FROM pg_attribute v\n JOIN pg_class c ON c.oid = v.attrelid\n CROSS JOIN LATERAL aclexplode(v.attacl) AS a\n WHERE c.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = $1)\n AND v.attnum > 0\n AND NOT v.attisdropped\n AND (a.grantee = 0 OR a.grantee = (SELECT oid FROM pg_roles WHERE rolname = $2))\n ORDER BY c.relname, v.attname`;\n\nexport interface LiveColumn {\n readonly table: string;\n readonly column: string;\n readonly role: ReadonlyArray<string>;\n readonly public: ReadonlyArray<string>;\n /** Role words granted by `current_user`, or by the relation owner when this session revokes\n * AS the owner (superuser or owner-member) — what a table `REVOKE ALL` here actually clears. */\n readonly restorable: ReadonlyArray<string>;\n}\n\nexport const readColumnAcls = (\n pg: PgExecutor,\n schema: string,\n role: string,\n): Effect.Effect<ReadonlyArray<LiveColumn>, SqlError> =>\n Effect.map(\n pg.unsafe<\n AclRow & {\n readonly table: string;\n readonly column: string;\n readonly grantor: string;\n readonly owner: string;\n readonly revoker: string;\n readonly revoker_as_owner: boolean;\n }\n >(COLUMNS_SQL, [schema, role]),\n (rows) => {\n const byColumn = new Map<\n string,\n { role: string[]; public: string[]; restorable: string[] }\n >();\n for (const row of rows) {\n const key = `${row.table}\\u0000${row.column}`;\n const entry = byColumn.get(key) ?? { role: [], public: [], restorable: [] };\n const word = encodeWord(row);\n entry[row.public ? 'public' : 'role'].push(word);\n if (\n !row.public &&\n (row.grantor === row.revoker || (row.grantor === row.owner && row.revoker_as_owner))\n ) {\n entry.restorable.push(word);\n }\n byColumn.set(key, entry);\n }\n return [...byColumn.entries()]\n .map(([key, entry]) => {\n const [table, column] = key.split('\\u0000');\n return {\n table: table as string,\n column: column as string,\n role: [...new Set(entry.role)].sort(),\n public: [...new Set(entry.public)].sort(),\n restorable: [...new Set(entry.restorable)].sort(),\n };\n })\n .sort((a, b) => a.table.localeCompare(b.table) || a.column.localeCompare(b.column));\n },\n );\n\n/** Everything the reconcile and diff paths need about one schema, read in one bounded\n * burst of parallel queries (one pool per operation — `withPg` opens and closes it).\n * `schemaOwnedByRole`/`ownedTables` are the ownership facts (pg_namespace.nspowner,\n * pg_class.relowner, `grants-ownership.ts`) the repair needs so it can LEAVE objects the\n * declared role owns alone: an owner holds every privilege implicitly, and a `REVOKE`\n * cannot take that away (`grants-plan.ts`). */\nexport interface LiveGrants {\n readonly schemaExists: boolean;\n readonly schema: LiveSchemaAcl;\n readonly tables: ReadonlyArray<LiveTable>;\n readonly columns: ReadonlyArray<LiveColumn>;\n readonly defaults: ReadonlyArray<LiveDefault>;\n readonly schemaOwnedByRole: boolean;\n readonly ownedTables: ReadonlyArray<string>;\n}\n\nexport const readGrants = (\n pg: PgExecutor,\n schema: string,\n role: string,\n): Effect.Effect<LiveGrants, SqlError> =>\n Effect.all({\n schemaExists: schemaExists(pg, schema),\n schema: readSchemaAcl(pg, schema, role),\n tables: readTableAcls(pg, schema, role),\n columns: readColumnAcls(pg, schema, role),\n defaults: readDefaultAcls(pg, schema, role),\n schemaOwnedByRole: readSchemaOwnership(pg, schema, role),\n ownedTables: readOwnedTables(pg, schema, role),\n });\n",
33
33
  "/**\n * The ownership reads of `Postgres.Grants`: `pg_namespace.nspowner` and `pg_class.relowner`\n * for the declared role, in one schema. The repair and the delete need these to LEAVE\n * objects the grantee owns alone (H2, `grants-plan.ts`): an owner holds every privilege\n * implicitly and a `REVOKE` cannot take that away, so neither writes nor clears ACL rows\n * on an owned object — measured on PG 18.6, where the docs' own seat example had its\n * owner rights churned by the table-level `REVOKE ALL`.\n *\n * ★ A fresh schema or table the role owns carries NO ACL rows at all, so the ownership\n * facts cannot ride the `aclexplode` reads (`grants-read.ts`) — they are separate\n * queries, still inside the read's one bounded burst.\n */\nimport * as Effect from 'effect/Effect';\nimport type { SqlError } from 'effect/unstable/sql/SqlError';\nimport type { PgExecutor } from './database-sql.ts';\n\n/** `pg_namespace.nspowner = <role>` for one schema. No rows when the schema is absent —\n * the caller then reads the fact as `false`. */\nconst SCHEMA_OWNER_SQL = `SELECT\n n.nspowner = (SELECT oid FROM pg_roles WHERE rolname = $2) AS role_owns\n FROM pg_namespace n\n WHERE n.nspname = $1`;\n\nexport const readSchemaOwnership = (\n pg: PgExecutor,\n schema: string,\n role: string,\n): Effect.Effect<boolean, SqlError> =>\n Effect.map(\n pg.unsafe<{ readonly role_owns: boolean }>(SCHEMA_OWNER_SQL, [schema, role]),\n (rows) => rows[0]?.role_owns === true,\n );\n\n/** Every relation in the schema the declared role OWNS, all relkinds (the table class is\n * not relkind-filtered, and neither is this). */\nconst OWNED_TABLES_SQL = `SELECT c.relname AS table\n FROM pg_class c\n WHERE c.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = $1)\n AND c.relowner = (SELECT oid FROM pg_roles WHERE rolname = $2)\n ORDER BY c.relname`;\n\nexport const readOwnedTables = (\n pg: PgExecutor,\n schema: string,\n role: string,\n): Effect.Effect<ReadonlyArray<string>, SqlError> =>\n Effect.map(pg.unsafe<{ readonly table: string }>(OWNED_TABLES_SQL, [schema, role]), (rows) =>\n rows.map((row) => row.table).sort((a, b) => a.localeCompare(b)),\n );\n",
34
34
  "/**\n * The default-privilege half of the grants read: what `pg_default_acl` says the declared\n * role receives on relations (`defaclobjtype = 'r'`, the only object type this family\n * declares — `pg_default_acl.h@REL_18_6#DEFACLOBJ_RELATION`) created in the schema,\n * whatever role created the entry. Extracted from `grants-read.ts` so that file stays\n * under the 250-line cap; the read still goes through `aclexplode` (see that file's\n * header for the doctrine), never the `aclitem` text.\n */\nimport * as Effect from 'effect/Effect';\nimport type { SqlError } from 'effect/unstable/sql/SqlError';\nimport type { PgExecutor } from './database-sql.ts';\nimport { type AclRow, encodeWord } from './grants-words.ts';\n\n/** One row per default-privilege entry on relations in the schema, with the declared\n * role's words, whatever role created the entry. Sorted by forRole so two reads of the\n * same state compare equal. */\nconst DEFAULTS_SQL = `SELECT\n pg_get_userbyid(d.defaclrole) AS for_role,\n a.privilege_type AS privilege,\n a.is_grantable AS grantable\n FROM pg_default_acl d\n CROSS JOIN LATERAL aclexplode(d.defaclacl) AS a\n WHERE d.defaclnamespace = (SELECT oid FROM pg_namespace WHERE nspname = $1)\n AND d.defaclobjtype = 'r'\n AND a.grantee = (SELECT oid FROM pg_roles WHERE rolname = $2)\n ORDER BY for_role`;\n\nexport interface LiveDefault {\n readonly forRole: string;\n readonly role: ReadonlyArray<string>;\n}\n\nexport const readDefaultAcls = (\n pg: PgExecutor,\n schema: string,\n role: string,\n): Effect.Effect<ReadonlyArray<LiveDefault>, SqlError> =>\n Effect.map(\n pg.unsafe<{ readonly for_role: string } & AclRow>(DEFAULTS_SQL, [schema, role]),\n (rows) => {\n const byRole = new Map<string, string[]>();\n for (const row of rows) {\n const words = byRole.get(row.for_role) ?? [];\n words.push(encodeWord(row));\n byRole.set(row.for_role, words);\n }\n return [...byRole.entries()]\n .map(([forRole, words]) => ({ forRole, role: [...new Set(words)].sort() }))\n .sort((a, b) => a.forRole.localeCompare(b.forRole));\n },\n );\n",
35
- "/**\n * `Postgres.Role` props and attributes, and the plan-time checks that run before any statement.\n *\n * ⛔ EVERY ASSERTED PROP TRACES TO A REAL `CREATE ROLE` / `ALTER ROLE` OPTION AND A REAL CATALOG\n * COLUMN. `role-provenance.test.ts` parses the committed fixtures (`create_role.sgml`,\n * `alter_role.sgml`, `pg_authid.h`, `pg_auth_members.h`) and fails if that mapping breaks.\n * ⛔ NO PASSWORD VALUE AS A PROP (S25). `password` is declared as\n * `{ fromEnv: 'PG_SEAT_WIDGET_PASSWORD' }`, never a string. The name lives in state; the value\n * is resolved from the deploying process's environment at reconcile time, wrapped in\n * `Redacted`, and quoted into the one statement that needs it.\n * ★ UNLIKE `Postgres.Database`, THIS FAMILY IS ALTER-CAPABLE: `LOGIN`/`NOLOGIN`,\n * `INHERIT`/`NOINHERIT`, `CONNECTION LIMIT` and `VALID UNTIL` all have a safe atomic\n * `ALTER ROLE` form (`alter_role.sgml`'s first synopsis variant), so a drifted live row is\n * brought back to the declaration instead of refused.\n */\nimport type { FromEnv } from '../secrets/write-only.ts';\n\n/** Re-exported for tests that operate on identifier byte length. */\nexport { POSTGRES_NAME_MAX_BYTES, nameByteRefusal, utf8ByteLength } from './database-attrs.ts';\n\n/**\n * A declared `validUntil` must carry its own UTC designator (`Z`) or numeric offset (`+02:00`).\n *\n * ⛔ WHY A ZONE-FREE TIMESTAMP IS REFUSED AT PLAN. PostgreSQL reads `VALID UNTIL '2027-01-01'`\n * as midnight in the SESSION's time zone; the deploying process parses the same string as UTC\n * (ECMAScript's rule for date-only forms). The instants differ, so the value read back would\n * never equal the declaration, and every plan would issue the same `ALTER ROLE … VALID UNTIL`\n * forever — the exact silent loop this family refuses elsewhere. A string ECMAScript cannot\n * parse at all reaches the same refusal; PostgreSQL would reject it too, only later and as an\n * unclassified statement error.\n */\nconst VALID_UNTIL_OFFSET = /(?:Z|[+-]\\d{2}:\\d{2})$/;\n\nexport const validUntilRefusal = (\n value: string,\n): { readonly reason: 'unparseable' | 'zone-free' } | undefined => {\n // A zone suffix is not a timestamp. `2027-13-01T00:00:00Z` and `not-a-dateZ` match the\n // offset and `Date.parse` to NaN; accepting them sends a VALID UNTIL PostgreSQL rejects, or\n // one that never compares equal on read-back, so every later reconcile re-issues the ALTER.\n if (Number.isNaN(Date.parse(value))) return { reason: 'unparseable' };\n if (VALID_UNTIL_OFFSET.test(value)) return undefined;\n return { reason: 'zone-free' };\n};\n\n/** Whether a declared `validUntil` and the live serialised value name the same instant. Both\n * sides are plan-checked parseable, so `NaN` cannot reach here. */\nexport const sameValidUntil = (declared: string, live: string | null): boolean =>\n live !== null && Date.parse(declared) === Date.parse(live);\n\n/**\n * Declared properties of one role.\n *\n * `login` and `inherit` are required: the resource configures a LOGIN or NOLOGIN role with\n * INHERIT explicit, per the seat-wiring spec's group-role-per-seat shape (`NOLOGIN`, member of\n * `hf_agent`, owning its own schema). An undeclared boolean would silently adopt whatever the\n * live row already says — the opposite of idempotent.\n */\nexport interface PostgresRoleProps {\n /** At most 63 UTF-8 bytes — refused at plan/reconcile if larger (`PostgresRoleNameRefused`). */\n readonly name: string;\n /** `LOGIN` or `NOLOGIN` — maps to `pg_roles.rolcanlogin`. */\n readonly login: boolean;\n /** `CONNECTION LIMIT n`, `-1` for unlimited — maps to `pg_roles.rolconnlimit`. */\n readonly connectionLimit: number;\n /** `INHERIT` or `NOINHERIT` — maps to `pg_roles.rolinherit`. */\n readonly inherit: boolean;\n /**\n * `VALID UNTIL 'timestamp'` — maps to `pg_roles.rolvaliduntil`. ISO 8601 without a timezone is\n * accepted by PostgreSQL's `timestamptz` input (it is interpreted in the client's time zone);\n * an ISO 8601 string carrying `Z` is unambiguous, so the docs recommend declaring it. Omitted\n * means \"leave the live value alone\" — the resource never clears an expiry it did not declare.\n */\n readonly validUntil?: string;\n /**\n * The roles this role is a member of (`GRANT parent TO this`). Backed by `pg_auth_members`.\n * Compared when declared; omitted leaves live memberships untouched. Empty array means\n * \"ensure none\".\n */\n readonly memberOf?: readonly string[];\n /**\n * `PASSWORD '...'` by the NAME of the environment variable holding it. Omitted means \"leave\n * the live password alone\" (and `NOLOGIN` group roles need none). Required once, before the\n * first create that declares it, and on every later write while the variable is set — a value\n * the environment stopped providing is never guessed.\n */\n readonly password?: FromEnv;\n}\n\n/** Live attributes, read back after every reconcile. `passwordValue` is NEVER stored (S25). */\nexport interface PostgresRoleAttributes {\n readonly name: string;\n readonly oid: number;\n readonly login: boolean;\n readonly connectionLimit: number;\n readonly inherit: boolean;\n /** ISO 8601 (`...Z`), server-side serialised; `null` when the live row has no expiry. */\n readonly validUntil: string | null;\n /**\n * Catalog flags this family never declares. A create lands on the server default (all false).\n * An adopt or alter that finds any of them true is refused — they are not inherited, so a\n * member who `SET ROLE`s to this role would exercise them. Absent on a seeded test row means\n * false, the default a `CREATE ROLE` without the option lands on.\n */\n readonly superuser?: boolean;\n readonly createrole?: boolean;\n readonly createdb?: boolean;\n readonly replication?: boolean;\n readonly bypassrls?: boolean;\n /**\n * Parent role names, sorted. Empty array when the role is a member of nothing. Null means\n * \"memberships were not declared on this resource\", so the field is not asserted.\n */\n readonly memberOf: readonly string[] | null;\n /**\n * The membership rows behind `memberOf`, including `admin_option` and `set_option`. Present\n * on a catalog read; stripped before attributes are stored (`storedAttributes`), because the\n * engine's diff receives stored attributes and would never see them there. The provider's\n * diff reads these rows live. `grantor` is the role that made the grant\n * (`pg_auth_members.grantor`), null when that role was dropped — a dropped-grantor row cannot\n * be named in `REVOKE … GRANTED BY`, so reconcile can only fail typed on it.\n */\n readonly memberships?: readonly {\n readonly parent: string;\n readonly grantor: string | null;\n readonly admin: boolean;\n readonly set: boolean;\n }[];\n /**\n * A seal of the last password value written, or `''` if none was ever written (`seal()` from\n * `secrets/write-only.ts`). Lets a later reconcile notice a rotated environment variable\n * without the state store holding anything a reader could replay.\n */\n readonly passwordSeal: string;\n}\n",
36
- "/**\n * The statements `Postgres.Role` ever issues, and the one read that backs them.\n *\n * ⛔ `CREATE ROLE` / `ALTER ROLE` TAKE NO BIND PARAMETERS FOR ANY OF THEIR VALUES. Measured at\n * `gram.y@REL_18_6`: every option value in `CreateOptRoleStmt` is a `RoleSpec`, a signed\n * `Iconst` or an `Sconst`, and none of those productions reaches `PARAM` (`$n`). Only the\n * catalog reads below bind a role name (`$1`).\n * ⛔ THE PASSWORD NEVER CROSSES THE WIRE AS A PLAIN LITERAL. Postgres has no bind form for it in\n * `CREATE`/`ALTER ROLE`, so the statement carries the SCRAM-SHA-256 verifier `role-scram.ts`\n * computes client-side (what `psql \\password` sends; stored as-is, never reversible): the\n * statement text that reaches the span attribute `db.query.text`, `pg_stat_statements` and a\n * failed `ALTER`'s server log holds no secret. It is quoted with `quoteStringLiteral` like every\n * other string value and NEVER written to state — only its seal is (`role-attrs.ts`,\n * `passwordSeal`).\n * ★ MEMBERSHIP IS TWO ONE-PARENT STATEMENTS (`GRANT` / `REVOKE`), never a multi-role list, so a\n * partially-failed membership write is observable in the state that remains. Those statements\n * and the `pg_auth_members` read live in `role-membership-sql.ts` — this file stays the role\n * row (`pg_roles`), its scalar statements and the compare between them.\n */\nimport type { SqlError } from 'effect/unstable/sql/SqlError';\nimport * as Effect from 'effect/Effect';\nimport type { PgExecutor } from './database-sql.ts';\nimport { quoteIdent, quoteStringLiteral } from './database-sql.ts';\nimport { buildGrantMembershipSql, selectRoleMemberships } from './role-membership-sql.ts';\nimport {\n type PostgresRoleAttributes,\n type PostgresRoleProps,\n sameValidUntil,\n} from './role-attrs.ts';\n\n/** The one read: the row from the `pg_roles` view, plus this role's memberships from\n * `pg_auth_members`. `rolvaliduntil` is a `timestamptz`; it is serialised on the server side\n * (`to_char(rolvaliduntil AT TIME ZONE 'UTC', …)`) so the value that reaches state is a plain\n * ISO-8601 string, never a driver-specific Date that `encodeState` would persist differently\n * across transports (the socket client decodes it as a JS Date; the runner transport would hand\n * back a string). */\nconst SELECT_ROLE_SQL = `SELECT\n r.oid AS oid,\n r.rolname AS name,\n r.rolcanlogin AS login,\n r.rolconnlimit AS \"connectionLimit\",\n r.rolinherit AS inherit,\n r.rolsuper AS superuser,\n r.rolcreaterole AS createrole,\n r.rolcreatedb AS createdb,\n r.rolreplication AS replication,\n r.rolbypassrls AS bypassrls,\n to_char(r.rolvaliduntil AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"') AS \"validUntil\"\n FROM pg_roles r\n WHERE r.rolname = $1`;\n\nexport const selectRole = (\n pg: PgExecutor,\n name: string,\n): Effect.Effect<Omit<PostgresRoleAttributes, 'memberOf' | 'passwordSeal'> | undefined, SqlError> =>\n Effect.map(\n pg.unsafe<Omit<PostgresRoleAttributes, 'memberOf' | 'passwordSeal'>>(SELECT_ROLE_SQL, [name]),\n (rows) => rows[0],\n );\n\n/** One combined read used by reconcile, so a no-op reconcile issues exactly one round trip.\n * `passwordSeal` is state-only — `pg_roles` answers no password (S25) — so the caller merges it. */\nexport const readRoleWithClient = (\n pg: PgExecutor,\n name: string,\n): Effect.Effect<Omit<PostgresRoleAttributes, 'passwordSeal'> | undefined, SqlError> =>\n Effect.gen(function* () {\n const row = yield* selectRole(pg, name);\n if (row === undefined) return undefined;\n const memberships = yield* selectRoleMemberships(pg, name);\n // Two grantors of one parent are two catalog rows. `memberOf` is the set of names.\n return {\n ...row,\n memberOf: [...new Set(memberships.map((membership) => membership.parent))].sort(),\n memberships,\n };\n });\n\n/** The `WITH` options a create carries, in one place so `diff` and the fake agree on the text.\n * A create carries no PASSWORD clause — the password travels through\n * {@link buildSetPasswordSql} as its SCRAM verifier, so the one quoting path is exercised exactly\n * once and a `CREATE ROLE` never carries a credential in its log line. */\nconst withOptions = (props: PostgresRoleProps): string => {\n const parts: string[] = [];\n parts.push(props.login ? 'LOGIN' : 'NOLOGIN');\n parts.push(props.inherit ? 'INHERIT' : 'NOINHERIT');\n parts.push(`CONNECTION LIMIT ${String(Math.trunc(props.connectionLimit))}`);\n if (props.validUntil !== undefined) {\n parts.push(`VALID UNTIL ${quoteStringLiteral(props.validUntil)}`);\n }\n return parts.join(' ');\n};\n\nexport const buildCreateRoleSql = (props: PostgresRoleProps): string =>\n `CREATE ROLE ${quoteIdent(props.name)} WITH ${withOptions(props)}`;\n\n/** One `ALTER ROLE` per drifted scalar. Membership and password are separate statements. */\nexport const buildAlterRoleSql = (\n name: string,\n change:\n | { prop: 'login'; value: boolean }\n | { prop: 'inherit'; value: boolean }\n | {\n prop: 'connectionLimit';\n value: number;\n }\n | { prop: 'validUntil'; value: string },\n): string => {\n const who = quoteIdent(name);\n switch (change.prop) {\n case 'login':\n return `ALTER ROLE ${who} WITH ${change.value ? 'LOGIN' : 'NOLOGIN'}`;\n case 'inherit':\n return `ALTER ROLE ${who} WITH ${change.value ? 'INHERIT' : 'NOINHERIT'}`;\n case 'connectionLimit':\n return `ALTER ROLE ${who} WITH CONNECTION LIMIT ${String(Math.trunc(change.value))}`;\n case 'validUntil':\n return `ALTER ROLE ${who} WITH VALID UNTIL ${quoteStringLiteral(change.value)}`;\n }\n};\n\n/** One dedicated `ALTER ROLE … PASSWORD`. It carries the SCRAM-SHA-256 verifier\n * `role-scram.ts` computes, never the plain password: Postgres takes no bind parameter for a role\n * password, but a string already in SCRAM verifier format is stored as-is (`create_role.sgml`),\n * so the statement text that reaches the span, `pg_stat_statements` and a failed `ALTER`'s server\n * log holds no secret. */\nexport const buildSetPasswordSql = (name: string, verifier: string): string =>\n `ALTER ROLE ${quoteIdent(name)} WITH PASSWORD ${quoteStringLiteral(verifier)}`;\n\nexport const buildDropRoleSql = (name: string): string => `DROP ROLE IF EXISTS ${quoteIdent(name)}`;\n\n/** `CREATE`, the optional password `ALTER`, and one seat `GRANT` per declared parent, in the\n * order a single transaction runs them. Grants are sorted so the script is stable. */\nexport const buildCreateStatements = (\n props: PostgresRoleProps,\n verifier: string | undefined,\n): readonly string[] => [\n buildCreateRoleSql(props),\n ...(verifier === undefined ? [] : [buildSetPasswordSql(props.name, verifier)]),\n ...[...new Set(props.memberOf ?? [])]\n .sort()\n .map((parent) => buildGrantMembershipSql(props.name, parent)),\n];\n\n/** Compare every declared scalar prop against the live row; answer the list of statements\n * reconcile needs to run, empty when nothing drifted. `name` is compared by the caller. */\nexport const scalarDrift = (\n props: PostgresRoleProps,\n live: Omit<PostgresRoleAttributes, 'passwordSeal'>,\n): ReadonlyArray<Parameters<typeof buildAlterRoleSql>[1]> => {\n const changes: Parameters<typeof buildAlterRoleSql>[1][] = [];\n if (props.login !== live.login) changes.push({ prop: 'login', value: props.login });\n if (props.inherit !== live.inherit) changes.push({ prop: 'inherit', value: props.inherit });\n if (props.connectionLimit !== live.connectionLimit) {\n changes.push({ prop: 'connectionLimit', value: props.connectionLimit });\n }\n // Instant comparison, never string equality: the server serialises `rolvaliduntil` with\n // milliseconds, so `'2027-01-01T00:00:00Z'` (declared) and `'2027-01-01T00:00:00.000Z'`\n // (read back) are the same value and must not churn an `ALTER` on every plan.\n if (props.validUntil !== undefined && !sameValidUntil(props.validUntil, live.validUntil)) {\n changes.push({ prop: 'validUntil', value: props.validUntil });\n }\n return changes;\n};\n\n/** Whether a live role is the one an interrupted create would have left: every declared scalar,\n * the declared parent set, and no privilege flag or unsafe membership option. The password is\n * not in `pg_roles`, so it is not part of the proof. */\nexport const declarationMatches = (\n props: PostgresRoleProps,\n live: Omit<PostgresRoleAttributes, 'passwordSeal'>,\n): boolean => {\n const wanted =\n props.memberOf === undefined ? undefined : [...new Set(props.memberOf)].sort().join('\\0');\n const found = [...(live.memberOf ?? [])].sort().join('\\0');\n return (\n props.name === live.name &&\n props.login === live.login &&\n props.inherit === live.inherit &&\n props.connectionLimit === live.connectionLimit &&\n (props.validUntil === undefined || sameValidUntil(props.validUntil, live.validUntil)) &&\n (wanted === undefined || wanted === found) &&\n privilegedFlags(live).length === 0 &&\n (live.memberships ?? []).every((row) => !row.admin && !row.set)\n );\n};\n\n/** Drop the observe-only membership options before attributes reach state. Alchemy's plan diff\n * receives the stored attributes (`Plan.ts` passes `oldState.attr`), so an `admin`/`set` row\n * kept here would still not be what `diff` sees — the provider reads `pg_auth_members` live.\n * What state stores is the parent-name set. */\nexport const storedAttributes = (\n live: Omit<PostgresRoleAttributes, 'passwordSeal'>,\n): Omit<PostgresRoleAttributes, 'passwordSeal'> => {\n const { memberships: _observeOnly, ...stored } = live;\n return stored;\n};\n\n/** Catalog flags this family never declares. A create lands on the server default (all false);\n * an absent field on a seeded test row is that default. */\nexport const privilegedFlags = (\n live: Omit<PostgresRoleAttributes, 'passwordSeal'>,\n): readonly string[] => {\n const flags: string[] = [];\n if (live.superuser === true) flags.push('SUPERUSER');\n if (live.createrole === true) flags.push('CREATEROLE');\n if (live.createdb === true) flags.push('CREATEDB');\n if (live.replication === true) flags.push('REPLICATION');\n if (live.bypassrls === true) flags.push('BYPASSRLS');\n return flags;\n};\n",
37
- "/**\n * Membership statements and the catalog read behind them, split out of `role-sql.ts`\n * (file cap). One file so `diff`, reconcile and the fake agree on the exact texts.\n *\n * ★ ONE PARENT PER STATEMENT. `pg_auth_members` keys a membership on three columns —\n * (parent, member, grantor) — so more than one row can exist for one parent name:\n * another grantor's `ADMIN`-option grant rides beside the safe one. A multi-role\n * `GRANT`/`REVOKE` list would make a partially-failed write harder to attribute.\n * ★ SEAT GRANTS SAY `SET FALSE`. Upstream `GRANT` defaults `SET` to TRUE (`grant.sgml` at\n * REL_18_6), and `SET ROLE` to the parent is how `SUPERUSER` / `CREATEROLE` / `CREATEDB`\n * are exercised (`user-manag.sgml`). A safe seat membership is `ADMIN FALSE, SET FALSE`.\n * ⛔ REVOKE BY GRANTOR. A plain `REVOKE parent FROM member` only touches rows the session's\n * own grantor made; Postgres 18 warns and leaves another grantor's rows standing\n * (`revoke.sgml`). Every revoke here names `GRANTED BY`, so the statement either removes\n * the row it targets or fails loudly — never a silent no-op.\n */\nimport type { SqlError } from 'effect/unstable/sql/SqlError';\nimport * as Effect from 'effect/Effect';\nimport type { PgExecutor } from './database-sql.ts';\nimport { quoteIdent, roleExists } from './database-sql.ts';\nimport { PostgresRoleMembershipUnrepaired, PostgresRoleParentMissing } from './role-errors.ts';\nimport type { PostgresRoleAttributes, PostgresRoleProps } from './role-attrs.ts';\n\n/** One `pg_auth_members` row as this family reads it: the parent name, the grantor who made\n * the grant, and the two options a name-only compare would hide. `admin` true is `WITH ADMIN`;\n * `set` true (the `GRANT` default) lets the member `SET ROLE` to the parent. `grantor` is null\n * when the granting role was later dropped — such a row can never be named in a `REVOKE …\n * GRANTED BY`, so it can only be repaired by hand as a bootstrap superuser. */\nexport interface MembershipRow {\n readonly parent: string;\n readonly grantor: string | null;\n readonly admin: boolean;\n readonly set: boolean;\n}\n\nconst MEMBERSHIP_SQL = `SELECT parent.rolname AS parent,\n grantor.rolname AS grantor,\n m.admin_option AS admin,\n m.set_option AS set\n FROM pg_auth_members m\n JOIN pg_roles member ON member.oid = m.member\n JOIN pg_roles parent ON parent.oid = m.roleid\n LEFT JOIN pg_roles grantor ON grantor.oid = m.grantor\n WHERE member.rolname = $1\n ORDER BY parent.rolname, grantor.rolname NULLS FIRST`;\n\nexport const selectRoleMemberships = (\n pg: PgExecutor,\n name: string,\n): Effect.Effect<readonly MembershipRow[], SqlError> =>\n Effect.map(pg.unsafe<MembershipRow>(MEMBERSHIP_SQL, [name]), (rows) => rows);\n\n/** Seat grants say `SET FALSE`. Upstream `GRANT` defaults `SET` to TRUE, and `SET ROLE` to the\n * parent is how `SUPERUSER` / `CREATEROLE` / `CREATEDB` are exercised (`user-manag.sgml`). */\nexport const buildGrantMembershipSql = (member: string, parent: string): string =>\n `GRANT ${quoteIdent(parent)} TO ${quoteIdent(member)} WITH SET FALSE`;\n\n/** Repair an existing membership in place: one atomic full-options `GRANT` per parent.\n * Upstream keeps any `WITH` option the new `GRANT` omits (`grant.sgml`), so a repair must\n * spell both bits — `ADMIN FALSE, SET FALSE` — rather than rely on `SET FALSE` alone. */\nexport const buildRepairMembershipSql = (member: string, parent: string): string =>\n `GRANT ${quoteIdent(parent)} TO ${quoteIdent(member)} WITH ADMIN FALSE, SET FALSE`;\n\n/** Remove one grantor's row for one parent. Naming the grantor is what makes the revoke\n * bind: a plain `REVOKE` skips rows other grantors made (`revoke.sgml`). */\nexport const buildRevokeGrantorMembershipSql = (\n member: string,\n parent: string,\n grantor: string,\n): string =>\n `REVOKE ${quoteIdent(parent)} FROM ${quoteIdent(member)} GRANTED BY ${quoteIdent(grantor)}`;\n\n/** Catalog flags this family never declares. A create lands on the server default (all false);\n * an absent field on a seeded test row is that default. */\nexport const unsafeMemberships = (\n live: Omit<PostgresRoleAttributes, 'passwordSeal'>,\n): ReadonlySet<string> =>\n new Set((live.memberships ?? []).filter((row) => row.admin || row.set).map((row) => row.parent));\n\n/** Membership drift: sorted set difference between declared and live. Duplicates in the\n * declaration collapse to one; `undefined` means \"not asserted\" — nothing to grant or revoke.\n * A parent already granted `WITH ADMIN`, or with `SET` still at the upstream default TRUE, is\n * a grant again: the name matches, but the options do not, so reconcile repairs in place. */\nexport const membershipDrift = (\n declared: readonly string[] | undefined,\n live: readonly string[],\n unsafe: ReadonlySet<string> = new Set(),\n): { readonly grants: readonly string[]; readonly revokes: readonly string[] } => {\n if (declared === undefined) return { grants: [], revokes: [] };\n const wanted = [...new Set(declared)].sort();\n const current = [...new Set(live)].sort();\n return {\n grants: wanted.filter((parent) => !current.includes(parent) || unsafe.has(parent)),\n revokes: [\n ...current.filter((parent) => !wanted.includes(parent)),\n ...wanted.filter((parent) => current.includes(parent) && unsafe.has(parent)),\n ],\n };\n};\n\n/** Refuse before any membership write when a declared parent is not in `pg_roles`. `GRANT` of a\n * missing role is `42704` (`user.c@REL_18_6`), and on a create that error arrives only after\n * `CREATE ROLE` has committed. */\nexport const assertParentsExist = (\n pg: PgExecutor,\n role: string,\n parents: readonly string[] | undefined,\n): Effect.Effect<void, PostgresRoleParentMissing | SqlError> =>\n Effect.gen(function* () {\n if (parents === undefined) return;\n for (const parent of [...new Set(parents)].sort()) {\n if (!(yield* roleExists(pg, parent))) {\n return yield* Effect.fail(new PostgresRoleParentMissing({ role, parent }));\n }\n }\n });\n\n/** Make live memberships equal the declaration, never dropping a membership the declaration\n * keeps. A wanted parent that is already granted is repaired with one\n * `GRANT … WITH ADMIN FALSE, SET FALSE` — `AddRoleMems` updates that grantor's row in place\n * (`user.c@REL_18_6` `SearchSysCache3` on role, member, grantor) — and any other grantor's\n * unsafe row is then revoked by name.\n *\n * 1. Rows the declaration does not want are revoked **by their own grantor** (dead-grantor\n * rows are skipped and left for the backstop to report).\n * 2. Unsafe-but-wanted rows get one full-options repair `GRANT` per parent — atomic, in place,\n * so the membership never drops even when another grantor's row also exists.\n * 3. A repair leaves other grantors' unsafe rows beside the safe one, so a mid re-read\n * revokes every remaining unsafe row with a live grantor.\n * 4. Absent-but-wanted parents get a fresh seat grant.\n * 5. Backstop re-read: any row that is not wanted, or still unsafe, fails typed — including a\n * dead-grantor row, which no statement this family may issue can repair. */\nexport const syncMemberships = (\n pg: PgExecutor,\n props: PostgresRoleProps,\n rows: readonly MembershipRow[],\n): Effect.Effect<\n readonly string[],\n SqlError | PostgresRoleMembershipUnrepaired | PostgresRoleParentMissing\n> =>\n Effect.gen(function* () {\n if (props.memberOf === undefined) {\n return [...new Set(rows.map((row) => row.parent))].sort();\n }\n yield* assertParentsExist(pg, props.name, props.memberOf);\n const wanted = [...new Set(props.memberOf)].sort();\n // 1. Not-wanted rows: revoke each by its own grantor (dead-grantor rows skipped; the\n // backstop catches them).\n for (const row of rows) {\n if (wanted.includes(row.parent) || row.grantor === null) continue;\n yield* pg\n .unsafe(buildRevokeGrantorMembershipSql(props.name, row.parent, row.grantor))\n .pipe(Effect.asVoid);\n }\n // 2. Unsafe-but-wanted rows: one full-options repair `GRANT` per parent.\n const repaired = [\n ...new Set(\n rows\n .filter(\n (row) => wanted.includes(row.parent) && (row.admin || row.set) && row.grantor !== null,\n )\n .map((row) => row.parent),\n ),\n ];\n for (const parent of repaired) {\n yield* pg.unsafe(buildRepairMembershipSql(props.name, parent)).pipe(Effect.asVoid);\n }\n // 3. If any repair ran, other grantors' unsafe rows may still stand: re-read and revoke\n // them by grantor (the repair's own safe row remains).\n if (repaired.length > 0) {\n const midRead = yield* selectRoleMemberships(pg, props.name);\n for (const row of midRead) {\n if (wanted.includes(row.parent) && (row.admin || row.set) && row.grantor !== null) {\n yield* pg\n .unsafe(buildRevokeGrantorMembershipSql(props.name, row.parent, row.grantor))\n .pipe(Effect.asVoid);\n }\n }\n }\n // 4. Absent-but-wanted parents: fresh seat grant.\n for (const parent of wanted.filter((p) => !rows.some((row) => row.parent === p))) {\n yield* pg.unsafe(buildGrantMembershipSql(props.name, parent)).pipe(Effect.asVoid);\n }\n // 5. Backstop: anything not wanted or still unsafe fails typed.\n for (const row of yield* selectRoleMemberships(pg, props.name)) {\n if (!wanted.includes(row.parent) || row.admin || row.set) {\n return yield* Effect.fail(\n new PostgresRoleMembershipUnrepaired({\n role: props.name,\n parent: row.parent,\n grantor: row.grantor,\n declared: wanted.includes(row.parent),\n }),\n );\n }\n }\n return wanted;\n });\n",
38
- "/**\n * `Postgres.Role` failures as typed tags (S21).\n *\n * ⛔ NONE OF THESE IS A STATUS-CODE OR MESSAGE MATCH. Every one is raised from a fact the\n * provider already checked (a byte count, a live catalog row, a missing environment variable,\n * a vanished create) — never from sniffing a driver error's text. A `DROP ROLE` that the\n * server refuses (the role still owns objects, `2BP01 dependent_objects_still_exist`) surfaces\n * as the `SqlError` the client raised, unclassified by this family.\n */\nimport * as Data from 'effect/Data';\n\n/**\n * A role name would be silently truncated by the server (`NAMEDATALEN` 64, so 63 UTF-8 bytes is\n * the last one that survives whole) — refused at plan, before any statement runs.\n *\n * ⚠️ Same hazard as `PostgresDatabaseNameRefused`: `truncate_identifier` clips at 63 bytes and\n * emits only a NOTICE. A create would succeed against the truncated name; the next plan would\n * look for the original name and find nothing, looping forever.\n */\nexport class PostgresRoleNameRefused extends Data.TaggedError('PostgresRoleNameRefused')<{\n readonly name: string;\n readonly byteLength: number;\n readonly limit: number;\n}> {\n override get message(): string {\n return (\n `Postgres.Role \"${this.name}\": ${String(this.byteLength)} UTF-8 bytes, over the ` +\n `${String(this.limit)}-byte limit (NAMEDATALEN 64, minus the terminator). PostgreSQL would ` +\n 'accept the CREATE and silently truncate the name with only a NOTICE, so this plan refuses ' +\n 'it instead of creating a role no later read will ever find again.'\n );\n }\n}\n\n/** A logical id's `name` changed. A role's name is its identity; this resource never replaces via\n * `DROP` then `CREATE` — role memberships, grants and owned objects would be lost, and the\n * seat-wiring shape depends on the group-role name staying stable. `ALTER ROLE … RENAME TO`\n * exists in PostgreSQL; this family does not drive it, so a rename is refused at plan and the\n * new name is declared as its own logical id. */\nexport class PostgresRoleRenameRefused extends Data.TaggedError('PostgresRoleRenameRefused')<{\n readonly from: string;\n readonly to: string;\n}> {\n override get message(): string {\n return (\n `Postgres.Role: the declared name changed from \"${this.from}\" to \"${this.to}\". A ` +\n 'rename is refused at plan — this provider never replaces a role (that is DROP then ' +\n 'CREATE, which loses memberships, grants and ownerships). Declare a new logical id for ' +\n 'the new name, and remove the old one once its objects have moved.'\n );\n }\n}\n\n/** The password prop names an environment variable that is unset or empty at reconcile time, on a\n * write that must send one (a create that declares it, or any reconcile while the variable is\n * set). Never a guess: a group role left with a stale or empty password is exactly the\n * unauthenticated path the refusal exists to prevent. */\nexport class PostgresRolePasswordEnvUnsetError extends Data.TaggedError(\n 'PostgresRolePasswordEnvUnsetError',\n)<{\n readonly role: string;\n readonly variable: string;\n}> {\n override get message(): string {\n return (\n `Postgres.Role \"${this.role}\": password.fromEnv \"${this.variable}\" is unset or empty ` +\n 'in the deploying process, but this write requires a password this stack has not sealed.'\n );\n }\n}\n\n/** A live role carries a catalog flag this family never declares (`rolsuper`, `rolcreaterole`,\n * `rolcreatedb`, `rolreplication`, `rolbypassrls`). Those are not inherited: a member who\n * `SET ROLE`s to the parent exercises them. Refused before any write, adopt included. */\nexport class PostgresRolePrivilegedRefused extends Data.TaggedError(\n 'PostgresRolePrivilegedRefused',\n)<{\n readonly role: string;\n readonly flags: readonly string[];\n}> {\n override get message(): string {\n return (\n `Postgres.Role \"${this.role}\": the live role has ${this.flags.join(', ')} set. This ` +\n 'family never declares those attributes (a create lands on the server default, all off), ' +\n 'and they are not inherited — a member who SET ROLEs to this role would exercise them. ' +\n 'Clear the flag on the cluster before this stack adopts the role.'\n );\n }\n}\n\n/** The declared `validUntil` is not a timestamp this family can compare: ECMAScript cannot parse\n * it at all, or it names no time zone. Refused at plan, before any statement — see\n * `role-attrs.ts#validUntilRefusal` for the churn loop this prevents. */\nexport class PostgresRoleValidUntilRefused extends Data.TaggedError(\n 'PostgresRoleValidUntilRefused',\n)<{\n readonly role: string;\n readonly value: string;\n readonly reason: 'unparseable' | 'zone-free';\n}> {\n override get message(): string {\n return (\n `Postgres.Role \"${this.role}\": validUntil \"${this.value}\" is ${this.reason === 'unparseable' ? 'not a timestamp this kit can parse' : 'missing its UTC designator or numeric offset'}. ` +\n 'Declare an explicit-zone ISO 8601 value such as \"2027-01-01T00:00:00Z\" — PostgreSQL would ' +\n 'read a zone-free value in the session time zone while the plan compares UTC, and the two ' +\n 'would never agree.'\n );\n }\n}\n\n/** `CREATE ROLE` raised no error, but the immediate re-read still finds nothing (S10/S20).\n * Measured to have no real trigger in a correctly speaking client; still a typed failure the\n * caller can see and retry, never a defect that crashes the engine. */\nexport class PostgresRoleCreateVanished extends Data.TaggedError('PostgresRoleCreateVanished')<{\n readonly role: string;\n}> {\n override get message(): string {\n return (\n `Postgres.Role \"${this.role}\": CREATE ROLE raised no error, but the role is still ` +\n 'absent on the immediate re-read. Re-plan — this is not a state this provider expects to reach.'\n );\n }\n}\n\n/** A `pg_auth_members` row survived reconcile in a shape the declaration does not allow — not\n * wanted, still `ADMIN`, or still `SET` at the upstream default TRUE. A live grantor's row is\n * named in `REVOKE … GRANTED BY`, which either binds or fails loudly; the one shape no\n * statement this family may issue can touch is a row whose grantor role was dropped\n * (`pg_auth_members` keeps it keyed on the dead oid, and no `GRANTED BY` name reaches it), so\n * the message asks the operator to revoke it by hand as a bootstrap superuser and re-plan. */\nexport class PostgresRoleMembershipUnrepaired extends Data.TaggedError(\n 'PostgresRoleMembershipUnrepaired',\n)<{\n readonly role: string;\n readonly parent: string;\n readonly grantor: string | null;\n readonly declared: boolean;\n}> {\n override get message(): string {\n const who =\n this.grantor === null ? 'a grantor role that no longer exists' : `grantor \"${this.grantor}\"`;\n return (\n `Postgres.Role \"${this.role}\": membership of \"${this.parent}\" ` +\n `(${this.declared ? 'declared, options unsafe' : 'not declared'}) could not be repaired ` +\n `after its statements — the row still stands under ${who}. pg_auth_members keys a ` +\n 'membership on (parent, member, grantor), and a grantor that no longer exists cannot be ' +\n 'named in REVOKE … GRANTED BY. Revoke the row by hand as a bootstrap superuser ' +\n '(`REVOKE role FROM member GRANTED BY <grantor>`; a grantor oid with no role name needs ' +\n 'catalog surgery) and re-plan.'\n );\n }\n}\n\n/** A declared `memberOf` parent is not in `pg_roles`. Checked before any statement of a create,\n * so a missing parent never leaves a committed LOGIN role behind a `42704` (`undefined_object`,\n * `user.c@REL_18_6`) from `GRANT`. */\nexport class PostgresRoleParentMissing extends Data.TaggedError('PostgresRoleParentMissing')<{\n readonly role: string;\n readonly parent: string;\n}> {\n override get message(): string {\n return (\n `Postgres.Role \"${this.role}\": memberOf parent \"${this.parent}\" does not exist. ` +\n 'Nothing was written — declare that role first (or drop it from memberOf). A GRANT of a ' +\n 'missing role fails only after CREATE ROLE has committed, and the next plan then needs ' +\n '--adopt to finish the orphan.'\n );\n }\n}\n\n/** The live role's oid is not the one this stack stored. A drop and recreate out of band reuses\n * the name and would otherwise plan as ours: noop while the seal still matches, and a destroy\n * would `DROP` a role this stack never created. */\nexport class PostgresRoleIdentityRefused extends Data.TaggedError('PostgresRoleIdentityRefused')<{\n readonly role: string;\n readonly storedOid: number;\n readonly liveOid: number;\n}> {\n override get message(): string {\n return (\n `Postgres.Role \"${this.role}\": the live oid is ${String(this.liveOid)}, but state recorded ` +\n `${String(this.storedOid)}. The name was dropped and recreated outside this stack. Nothing ` +\n 'was altered and the live role was not dropped — remove the stale state, or adopt the new ' +\n 'role under a new logical id once you mean to own it.'\n );\n }\n}\n\nexport type PostgresRoleError =\n | PostgresRoleNameRefused\n | PostgresRoleRenameRefused\n | PostgresRoleValidUntilRefused\n | PostgresRolePasswordEnvUnsetError\n | PostgresRolePrivilegedRefused\n | PostgresRoleCreateVanished\n | PostgresRoleMembershipUnrepaired\n | PostgresRoleParentMissing\n | PostgresRoleIdentityRefused;\n",
39
- "/**\n * `Postgres.Role` — create / adopt / alter / drop of a LOGIN or NOLOGIN role on the same\n * self-hosted PostgreSQL 18 cluster `Postgres.Database` talks to, over the same transports\n * (runner `psql` or socket). The seat-wiring lane B12a's shape: one group role per seat\n * (NOLOGIN, member of `hf_agent`), plus the LOGIN seat users.\n *\n * ★ ALTER-CAPABLE, UNLIKE `Postgres.Database`. Every scalar this resource asserts has a safe\n * atomic `ALTER ROLE` form (`LOGIN`/`NOLOGIN`, `INHERIT`/`NOINHERIT`, `CONNECTION LIMIT`,\n * `VALID UNTIL` — `alter_role.sgml`'s first synopsis variant), so a drifted live row is\n * brought back to the declaration, never refused. Memberships move through one-parent\n * `GRANT`/`REVOKE` statements (`alter_role.sgml`: \"there are no options for adding or\n * removing memberships; use GRANT and REVOKE\").\n * ⛔ THE PASSWORD IS A REFERENCE, NEVER A VALUE (S25). It is declared as\n * `{ fromEnv: 'PG_SEAT_WIDGET_PASSWORD' }`; the NAME lands in state, the value is resolved\n * from the deploying process's environment at reconcile time, held as `Redacted`, and sent only\n * as the SCRAM-SHA-256 verifier inside the one `ALTER ROLE … PASSWORD` statement that needs it\n * (`role-scram.ts` — the statement text reaching spans, `pg_stat_statements` and a failed\n * `ALTER`'s server log never holds the plain value). What state remembers is a\n * `scrypt:<salt>:<digest>` seal, so a reconcile sends the password only when the environment\n * value differs from the one last written — a plan never re-sends a secret that already\n * matches, and never stores one.\n * ★ MEMBERSHIP IS `pg_auth_members`, compared as a sorted set. `memberOf` omitted leaves live\n * memberships alone; `[]` ensures none.\n * ★ `defaultRemovalPolicy: 'retain'` — a seat group role may own objects and be granted across\n * databases; a destroy is still implemented in full (`DROP ROLE IF EXISTS`), opt in with\n * `.pipe(RemovalPolicy.destroy())`. A role that still owns objects fails the drop with the\n * server's own `2BP01` (`dependent_objects_still_exist`), surfaced as the client's `SqlError`.\n */\nimport { Resource } from 'alchemy';\nimport * as Effect from 'effect/Effect';\nimport * as Redacted from 'effect/Redacted';\nimport type { SqlError } from 'effect/unstable/sql/SqlError';\nimport { type Environment } from '../secrets/write-only.ts';\nimport type { PostgresRoleAttributes, PostgresRoleProps } from './role-attrs.ts';\nimport { nameByteRefusal, validUntilRefusal } from './role-attrs.ts';\nimport { passwordMatchesSeal, resolvePassword, sealPassword } from './role-secrets.ts';\nimport { scramSha256Verifier } from './role-scram.ts';\nimport {\n buildAlterRoleSql,\n buildCreateStatements,\n buildSetPasswordSql,\n privilegedFlags,\n readRoleWithClient,\n scalarDrift,\n storedAttributes,\n} from './role-sql.ts';\nimport { assertParentsExist, syncMemberships } from './role-membership-sql.ts';\nimport {\n PostgresRoleCreateVanished,\n PostgresRoleIdentityRefused,\n type PostgresRoleMembershipUnrepaired,\n PostgresRoleNameRefused,\n type PostgresRoleParentMissing,\n PostgresRolePasswordEnvUnsetError,\n PostgresRolePrivilegedRefused,\n PostgresRoleValidUntilRefused,\n} from './role-errors.ts';\nimport { type PostgresConnection } from './connection.ts';\nimport type { PgExecutor } from './database-sql.ts';\n\nexport interface PostgresRole extends Resource<\n 'Postgres.Role',\n PostgresRoleProps,\n PostgresRoleAttributes,\n never,\n PostgresConnection\n> {}\n\nexport const PostgresRole = Resource<PostgresRole>('Postgres.Role', {\n defaultRemovalPolicy: 'retain',\n});\n\n/** Mirrors `isPostgresDatabase`: a resource constructor is a callable `Object.assign`ed\n * function, not a plain object, so `typeof` must accept both. */\nexport const isPostgresRole = (value: unknown): value is PostgresRole =>\n (typeof value === 'object' || typeof value === 'function') &&\n value !== null &&\n (value as { Type?: unknown }).Type === 'Postgres.Role';\n\n/**\n * The core of `reconcile`, against any {@link PgExecutor} — the real client through `withPg`,\n * or `fake-sql.ts`'s recording fake in tests. `env` defaults to `process.env`; tests pass a\n * recording one. `previousSeal` is the seal in the engine's state — `''` when the role is\n * being written for the first time — because `pg_roles` answers no password (S25), so the live\n * row cannot say whether the environment value still matches the one last written.\n */\nexport const reconcileWithClient = (\n pg: PgExecutor,\n props: PostgresRoleProps,\n env: Environment = process.env,\n previousSeal = '',\n storedOid?: number,\n): Effect.Effect<\n PostgresRoleAttributes,\n | PostgresRolePasswordEnvUnsetError\n | PostgresRolePrivilegedRefused\n | PostgresRoleCreateVanished\n | PostgresRoleMembershipUnrepaired\n | PostgresRoleParentMissing\n | PostgresRoleIdentityRefused\n | SqlError\n> =>\n Effect.gen(function* () {\n const resolved = resolvePassword(props, env);\n const observed = yield* readRoleWithClient(pg, props.name);\n if (observed === undefined) {\n // A create that declares a password must hold it: a LOGIN role with no password set, or\n // one created against a guess, is exactly the unauthenticated path to refuse.\n if (resolved.variable !== undefined && resolved.value === undefined) {\n return yield* Effect.fail(\n new PostgresRolePasswordEnvUnsetError({ role: props.name, variable: resolved.variable }),\n );\n }\n // The create carries no PASSWORD clause. The verifier ALTER and the seat GRANTs share\n // one transaction with the CREATE, so a failure rolls all of them back. A missing parent\n // is refused first — `GRANT` would otherwise be `42704` after the CREATE committed.\n yield* assertParentsExist(pg, props.name, props.memberOf);\n const verifier =\n resolved.value === undefined\n ? undefined\n : scramSha256Verifier(Redacted.value(resolved.value));\n yield* pg.transaction(buildCreateStatements(props, verifier));\n // Never trust the write's own report (S10): re-read what the server actually stored.\n const created = yield* readRoleWithClient(pg, props.name);\n if (created === undefined) {\n return yield* Effect.fail(new PostgresRoleCreateVanished({ role: props.name }));\n }\n return {\n ...storedAttributes(created),\n passwordSeal: resolved.value === undefined ? '' : sealPassword(resolved.value),\n };\n }\n // A recycled name (dropped and recreated out of band) is a different oid. Refuse before\n // any ALTER, PASSWORD or DROP-by-name the caller might follow with.\n if (storedOid !== undefined && observed.oid !== storedOid) {\n return yield* Effect.fail(\n new PostgresRoleIdentityRefused({\n role: props.name,\n storedOid,\n liveOid: observed.oid,\n }),\n );\n }\n // A live role this stack did not create can carry flags CREATE ROLE's default leaves off.\n // They are not inherited: SET ROLE to this role exercises them. Refuse before any write.\n const flags = privilegedFlags(observed);\n if (flags.length > 0) {\n return yield* Effect.fail(new PostgresRolePrivilegedRefused({ role: props.name, flags }));\n }\n // A declared password this stack has never sealed is not \"do not churn\". CREATE ROLE and\n // ALTER ROLE … PASSWORD are two statements; a retry after the second failed, or after the\n // process died before state was saved, sees the role and an empty seal. An unset variable\n // there must refuse — reporting success would leave a LOGIN role with a null password.\n if (resolved.variable !== undefined && resolved.value === undefined && previousSeal === '') {\n return yield* Effect.fail(\n new PostgresRolePasswordEnvUnsetError({ role: props.name, variable: resolved.variable }),\n );\n }\n // Parents before any ALTER, so a missing one does not leave a half-applied scalar update.\n yield* assertParentsExist(pg, props.name, props.memberOf);\n // Adopted or drifted: every scalar comes back to the declaration, one ALTER per field.\n for (const change of scalarDrift(props, observed)) {\n yield* pg.unsafe(buildAlterRoleSql(props.name, change)).pipe(Effect.asVoid);\n }\n // The password goes out only when it changed: the seal matches the last written value, or\n // the variable is unset here (a plan-only run must not churn a secret it cannot read). The\n // same match decides the seal that lands in state, so an unchanged password keeps the seal\n // it already had instead of being re-salted into a new one on every plan.\n const passwordMatched =\n resolved.value !== undefined && passwordMatchesSeal(resolved.value, previousSeal);\n if (resolved.value !== undefined && !passwordMatched) {\n yield* pg\n .unsafe(\n buildSetPasswordSql(props.name, scramSha256Verifier(Redacted.value(resolved.value))),\n )\n .pipe(Effect.asVoid);\n }\n yield* syncMemberships(pg, props, observed.memberships ?? []);\n const after = yield* readRoleWithClient(pg, props.name);\n if (after === undefined) {\n return yield* Effect.fail(new PostgresRoleCreateVanished({ role: props.name }));\n }\n return {\n ...storedAttributes(after),\n passwordSeal:\n resolved.value === undefined || passwordMatched\n ? previousSeal\n : sealPassword(resolved.value),\n };\n });\n\n/** The core of `read`. Answers `undefined` when absent; ownership branding and the state-only\n * `passwordSeal` merge are the caller's. */\nexport const readRole = (pg: PgExecutor, name: string) => readRoleWithClient(pg, name);\n\n/** Every plan-time refusal this family makes, in one place so `diff` and `reconcile` check the\n * same facts. Nothing here touches a client. */\nexport const refuseAtPlan = (\n props: PostgresRoleProps,\n): Effect.Effect<void, PostgresRoleNameRefused | PostgresRoleValidUntilRefused> =>\n Effect.gen(function* () {\n const nameRefusal = nameByteRefusal(props.name);\n if (nameRefusal !== undefined) {\n return yield* Effect.fail(new PostgresRoleNameRefused({ name: props.name, ...nameRefusal }));\n }\n if (props.validUntil !== undefined) {\n const untilRefusal = validUntilRefusal(props.validUntil);\n if (untilRefusal !== undefined) {\n return yield* Effect.fail(\n new PostgresRoleValidUntilRefused({\n role: props.name,\n value: props.validUntil,\n reason: untilRefusal.reason,\n }),\n );\n }\n }\n });\n",
40
- "/**\n * The `Postgres.Role` password: resolution from the environment and the seal arithmetic that\n * lets state answer \"did this value already go out?\" without storing it (S25).\n *\n * ⛔ THE PASSWORD IS A REFERENCE, NEVER A VALUE. It is declared as\n * `{ fromEnv: 'PG_SEAT_WIDGET_PASSWORD' }`; the NAME lands in state, the value is resolved\n * from the deploying process's environment at reconcile/diff time, held as `Redacted`, and\n * quoted into the one `ALTER ROLE … PASSWORD` statement that needs it.\n * ★ What state remembers is a `scrypt:<salt>:<digest>` seal ({@link sealPassword}), so a\n * reconcile sends the password only when the environment value differs from the one last\n * written — a plan never re-sends a secret that already matches, and never stores one.\n */\nimport * as Redacted from 'effect/Redacted';\nimport { type Environment, resolveAll, seal, sealMatches } from '../secrets/write-only.ts';\nimport type { PostgresRoleProps } from './role-attrs.ts';\n\n/** What the environment holds for the declared password. `value` is `undefined` when no\n * password is declared, or when the variable is unset or empty (a renderer that failed writes\n * `NAME=`; `resolveAll` treats empty as missing). ⛔ Reads the environment at CALL time. */\nexport interface ResolvedPassword {\n readonly variable: string | undefined;\n readonly value: Redacted.Redacted<string> | undefined;\n}\n\nexport const resolvePassword = (\n props: PostgresRoleProps,\n env: Environment = process.env,\n): ResolvedPassword => {\n if (props.password === undefined) return { variable: undefined, value: undefined };\n const { values } = resolveAll({ password: props.password }, env);\n const raw = values['password'];\n return {\n variable: props.password.fromEnv,\n value: raw === undefined ? undefined : Redacted.make(raw),\n };\n};\n\n/** `seal({ password })` of the resolved value — the one thing state remembers about it. */\nexport const sealPassword = (value: Redacted.Redacted<string>): string =>\n seal({ password: Redacted.value(value) });\n\n/** Whether the seal was made from the resolved value. Malformed/empty seals answer false, so an\n * adopted role (seal `''`) or one written outside this stack gets the password written on the\n * first reconcile that holds the variable — the declaration is authoritative. */\nexport const passwordMatchesSeal = (value: Redacted.Redacted<string>, sealed: string): boolean =>\n sealMatches(sealed, { password: Redacted.value(value) });\n",
35
+ "/**\n * `Postgres.Role` props and attributes, and the plan-time checks that run before any statement.\n *\n * ⛔ EVERY ASSERTED PROP TRACES TO A REAL `CREATE ROLE` / `ALTER ROLE` OPTION AND A REAL CATALOG\n * COLUMN. `role-provenance.test.ts` parses the committed fixtures (`create_role.sgml`,\n * `alter_role.sgml`, `pg_authid.h`, `pg_auth_members.h`) and fails if that mapping breaks.\n * ⛔ NO PASSWORD VALUE AS A PROP (S25). `password` is declared as\n * `{ fromEnv: 'PG_SEAT_WIDGET_PASSWORD' }`, never a string. The name lives in state; the value\n * is resolved from the deploying process's environment at reconcile time, wrapped in\n * `Redacted`, and quoted into the one statement that needs it.\n * ★ UNLIKE `Postgres.Database`, THIS FAMILY IS ALTER-CAPABLE: `LOGIN`/`NOLOGIN`,\n * `INHERIT`/`NOINHERIT`, `CONNECTION LIMIT` and `VALID UNTIL` all have a safe atomic\n * `ALTER ROLE` form (`alter_role.sgml`'s first synopsis variant), so a drifted live row is\n * brought back to the declaration instead of refused.\n */\nimport type { FromEnv } from '../secrets/write-only.ts';\n\n/** Re-exported for tests that operate on identifier byte length. */\nexport { POSTGRES_NAME_MAX_BYTES, nameByteRefusal, utf8ByteLength } from './database-attrs.ts';\n\n/**\n * A declared `validUntil` must carry its own UTC designator (`Z`) or numeric offset (`+02:00`).\n *\n * ⛔ WHY A ZONE-FREE TIMESTAMP IS REFUSED AT PLAN. PostgreSQL reads `VALID UNTIL '2027-01-01'`\n * as midnight in the SESSION's time zone; the deploying process parses the same string as UTC\n * (ECMAScript's rule for date-only forms). The instants differ, so the value read back would\n * never equal the declaration, and every plan would issue the same `ALTER ROLE … VALID UNTIL`\n * forever — the exact silent loop this family refuses elsewhere. A string ECMAScript cannot\n * parse at all reaches the same refusal; PostgreSQL would reject it too, only later and as an\n * unclassified statement error.\n */\nconst VALID_UNTIL_OFFSET = /(?:Z|[+-]\\d{2}:\\d{2})$/;\n\nexport const validUntilRefusal = (\n value: string,\n): { readonly reason: 'unparseable' | 'zone-free' } | undefined => {\n // A zone suffix is not a timestamp. `2027-13-01T00:00:00Z` and `not-a-dateZ` match the\n // offset and `Date.parse` to NaN; accepting them sends a VALID UNTIL PostgreSQL rejects, or\n // one that never compares equal on read-back, so every later reconcile re-issues the ALTER.\n if (Number.isNaN(Date.parse(value))) return { reason: 'unparseable' };\n if (VALID_UNTIL_OFFSET.test(value)) return undefined;\n return { reason: 'zone-free' };\n};\n\n/** Whether a declared `validUntil` and the live serialised value name the same instant. Both\n * sides are plan-checked parseable, so `NaN` cannot reach here. */\nexport const sameValidUntil = (declared: string, live: string | null): boolean =>\n live !== null && Date.parse(declared) === Date.parse(live);\n\n/**\n * Declared properties of one role.\n *\n * `login` and `inherit` are required: the resource configures a LOGIN or NOLOGIN role with\n * INHERIT explicit, per the seat-wiring spec's group-role-per-seat shape (`NOLOGIN`, member of\n * `hf_agent`, owning its own schema). An undeclared boolean would silently adopt whatever the\n * live row already says — the opposite of idempotent.\n */\nexport interface PostgresRoleProps {\n /** At most 63 UTF-8 bytes — refused at plan/reconcile if larger (`PostgresRoleNameRefused`). */\n readonly name: string;\n /** `LOGIN` or `NOLOGIN` — maps to `pg_roles.rolcanlogin`. */\n readonly login: boolean;\n /** `CONNECTION LIMIT n`, `-1` for unlimited — maps to `pg_roles.rolconnlimit`. */\n readonly connectionLimit: number;\n /** `INHERIT` or `NOINHERIT` — maps to `pg_roles.rolinherit`; false also clears per-grant\n * INHERIT on declared memberships (PG 16+ uses the role flag only to default new grants). */\n readonly inherit: boolean;\n /**\n * `VALID UNTIL 'timestamp'` — maps to `pg_roles.rolvaliduntil`. ISO 8601 without a timezone is\n * accepted by PostgreSQL's `timestamptz` input (it is interpreted in the client's time zone);\n * an ISO 8601 string carrying `Z` is unambiguous, so the docs recommend declaring it. Omitted\n * means \"leave the live value alone\" — the resource never clears an expiry it did not declare.\n */\n readonly validUntil?: string;\n /**\n * The roles this role is a member of (`GRANT parent TO this`). Backed by `pg_auth_members`.\n * Compared when declared; omitted leaves live memberships untouched. Empty array means\n * \"ensure none\".\n */\n readonly memberOf?: readonly string[];\n /**\n * `PASSWORD '...'` by the NAME of the environment variable holding it. Omitted means \"leave\n * the live password alone\" (and `NOLOGIN` group roles need none). Required once, before the\n * first create that declares it, and on every later write while the variable is set — a value\n * the environment stopped providing is never guessed.\n */\n readonly password?: FromEnv;\n}\n\n/** Live attributes, read back after every reconcile. `passwordValue` is NEVER stored (S25). */\nexport interface PostgresRoleAttributes {\n readonly name: string;\n readonly oid: number;\n readonly login: boolean;\n readonly connectionLimit: number;\n readonly inherit: boolean;\n /** ISO 8601 (`...Z`), server-side serialised; `null` when the live row has no expiry. */\n readonly validUntil: string | null;\n /**\n * Catalog flags this family never declares. A create lands on the server default (all false).\n * An adopt or alter that finds any of them true is refused — they are not inherited, so a\n * member who `SET ROLE`s to this role would exercise them. Absent on a seeded test row means\n * false, the default a `CREATE ROLE` without the option lands on.\n */\n readonly superuser?: boolean;\n readonly createrole?: boolean;\n readonly createdb?: boolean;\n readonly replication?: boolean;\n readonly bypassrls?: boolean;\n /**\n * Parent role names, sorted. Empty array when the role is a member of nothing. Null means\n * \"memberships were not declared on this resource\", so the field is not asserted.\n */\n readonly memberOf: readonly string[] | null;\n /**\n * The membership rows behind `memberOf`, including `admin_option`, `set_option` and\n * `inherit_option`. Present\n * on a catalog read; stripped before attributes are stored (`storedAttributes`), because the\n * engine's diff receives stored attributes and would never see them there. The provider's\n * diff reads these rows live. `grantor` is the role that made the grant\n * (`pg_auth_members.grantor`). Null is a defensive inconsistent-catalog case, not an ordinary\n * DROP ROLE outcome; such a row cannot be named in `REVOKE … GRANTED BY`.\n */\n readonly memberships?: readonly {\n readonly parent: string;\n readonly grantor: string | null;\n readonly admin: boolean;\n readonly set: boolean;\n readonly inherit: boolean;\n }[];\n /**\n * A seal of the last password value written, or `''` if none was ever written (`seal()` from\n * `secrets/write-only.ts`). Lets a later reconcile notice a rotated environment variable\n * without the state store holding anything a reader could replay.\n */\n readonly passwordSeal: string;\n}\n",
36
+ "/**\n * The statements `Postgres.Role` ever issues, and the one read that backs them.\n *\n * ⛔ `CREATE ROLE` / `ALTER ROLE` TAKE NO BIND PARAMETERS FOR ANY OF THEIR VALUES. Measured at\n * `gram.y@REL_18_6`: every option value in `CreateOptRoleStmt` is a `RoleSpec`, a signed\n * `Iconst` or an `Sconst`, and none of those productions reaches `PARAM` (`$n`). Only the\n * catalog reads below bind a role name (`$1`).\n * ⛔ THE PASSWORD NEVER CROSSES THE WIRE AS A PLAIN LITERAL. Postgres has no bind form for it in\n * `CREATE`/`ALTER ROLE`, so the statement carries the SCRAM-SHA-256 verifier `role-scram.ts`\n * computes client-side (what `psql \\password` sends; stored as-is, never reversible): the\n * statement text that reaches the span attribute `db.query.text`, `pg_stat_statements` and a\n * failed `ALTER`'s server log holds no secret. It is quoted with `quoteStringLiteral` like every\n * other string value and NEVER written to state — only its seal is (`role-attrs.ts`,\n * `passwordSeal`).\n * ★ MEMBERSHIP IS TWO ONE-PARENT STATEMENTS (`GRANT` / `REVOKE`), never a multi-role list, so a\n * partially-failed membership write is observable in the state that remains. Those statements\n * and the `pg_auth_members` read live in `role-membership-sql.ts` — this file stays the role\n * row (`pg_roles`), its scalar statements and the compare between them.\n */\nimport type { SqlError } from 'effect/unstable/sql/SqlError';\nimport * as Effect from 'effect/Effect';\nimport type { PgExecutor } from './database-sql.ts';\nimport { quoteIdent, quoteStringLiteral } from './database-sql.ts';\nimport { buildGrantMembershipSql, selectRoleMemberships } from './role-membership-sql.ts';\nimport {\n type PostgresRoleAttributes,\n type PostgresRoleProps,\n sameValidUntil,\n} from './role-attrs.ts';\n\n/** The one read: the row from the `pg_roles` view, plus this role's memberships from\n * `pg_auth_members`. `rolvaliduntil` is a `timestamptz`; it is serialised on the server side\n * (`to_char(rolvaliduntil AT TIME ZONE 'UTC', …)`) so the value that reaches state is a plain\n * ISO-8601 string, never a driver-specific Date that `encodeState` would persist differently\n * across transports (the socket client decodes it as a JS Date; the runner transport would hand\n * back a string). */\nconst SELECT_ROLE_SQL = `SELECT\n r.oid AS oid,\n r.rolname AS name,\n r.rolcanlogin AS login,\n r.rolconnlimit AS \"connectionLimit\",\n r.rolinherit AS inherit,\n r.rolsuper AS superuser,\n r.rolcreaterole AS createrole,\n r.rolcreatedb AS createdb,\n r.rolreplication AS replication,\n r.rolbypassrls AS bypassrls,\n to_char(r.rolvaliduntil AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"') AS \"validUntil\"\n FROM pg_roles r\n WHERE r.rolname = $1`;\n\nexport const selectRole = (\n pg: PgExecutor,\n name: string,\n): Effect.Effect<Omit<PostgresRoleAttributes, 'memberOf' | 'passwordSeal'> | undefined, SqlError> =>\n Effect.map(\n pg.unsafe<Omit<PostgresRoleAttributes, 'memberOf' | 'passwordSeal'>>(SELECT_ROLE_SQL, [name]),\n (rows) => rows[0],\n );\n\n/** One combined read used by reconcile, so a no-op reconcile issues exactly one round trip.\n * `passwordSeal` is state-only — `pg_roles` answers no password (S25) — so the caller merges it. */\nexport const readRoleWithClient = (\n pg: PgExecutor,\n name: string,\n): Effect.Effect<Omit<PostgresRoleAttributes, 'passwordSeal'> | undefined, SqlError> =>\n Effect.gen(function* () {\n const row = yield* selectRole(pg, name);\n if (row === undefined) return undefined;\n const memberships = yield* selectRoleMemberships(pg, name);\n // Two grantors of one parent are two catalog rows. `memberOf` is the set of names.\n return {\n ...row,\n memberOf: [...new Set(memberships.map((membership) => membership.parent))].sort(),\n memberships,\n };\n });\n\n/** The `WITH` options a create carries, in one place so `diff` and the fake agree on the text.\n * A create carries no PASSWORD clause — the password travels through\n * {@link buildSetPasswordSql} as its SCRAM verifier, so the one quoting path is exercised exactly\n * once and a `CREATE ROLE` never carries a credential in its log line. */\nconst withOptions = (props: PostgresRoleProps): string => {\n const parts: string[] = [];\n parts.push(props.login ? 'LOGIN' : 'NOLOGIN');\n parts.push(props.inherit ? 'INHERIT' : 'NOINHERIT');\n parts.push(`CONNECTION LIMIT ${String(Math.trunc(props.connectionLimit))}`);\n if (props.validUntil !== undefined) {\n parts.push(`VALID UNTIL ${quoteStringLiteral(props.validUntil)}`);\n }\n return parts.join(' ');\n};\n\nexport const buildCreateRoleSql = (props: PostgresRoleProps): string =>\n `CREATE ROLE ${quoteIdent(props.name)} WITH ${withOptions(props)}`;\n\n/** One `ALTER ROLE` per drifted scalar. Membership and password are separate statements. */\nexport const buildAlterRoleSql = (\n name: string,\n change:\n | { prop: 'login'; value: boolean }\n | { prop: 'inherit'; value: boolean }\n | {\n prop: 'connectionLimit';\n value: number;\n }\n | { prop: 'validUntil'; value: string },\n): string => {\n const who = quoteIdent(name);\n switch (change.prop) {\n case 'login':\n return `ALTER ROLE ${who} WITH ${change.value ? 'LOGIN' : 'NOLOGIN'}`;\n case 'inherit':\n return `ALTER ROLE ${who} WITH ${change.value ? 'INHERIT' : 'NOINHERIT'}`;\n case 'connectionLimit':\n return `ALTER ROLE ${who} WITH CONNECTION LIMIT ${String(Math.trunc(change.value))}`;\n case 'validUntil':\n return `ALTER ROLE ${who} WITH VALID UNTIL ${quoteStringLiteral(change.value)}`;\n }\n};\n\n/** One dedicated `ALTER ROLE … PASSWORD`. It carries the SCRAM-SHA-256 verifier\n * `role-scram.ts` computes, never the plain password: Postgres takes no bind parameter for a role\n * password, but a string already in SCRAM verifier format is stored as-is (`create_role.sgml`),\n * so the statement text that reaches the span, `pg_stat_statements` and a failed `ALTER`'s server\n * log holds no secret. */\nexport const buildSetPasswordSql = (name: string, verifier: string): string =>\n `ALTER ROLE ${quoteIdent(name)} WITH PASSWORD ${quoteStringLiteral(verifier)}`;\n\nexport const buildDropRoleSql = (name: string): string => `DROP ROLE IF EXISTS ${quoteIdent(name)}`;\n\n/** `CREATE`, the optional password `ALTER`, and one seat `GRANT` per declared parent, in the\n * order a single transaction runs them. Grants are sorted so the script is stable. */\nexport const buildCreateStatements = (\n props: PostgresRoleProps,\n verifier: string | undefined,\n): readonly string[] => [\n buildCreateRoleSql(props),\n ...(verifier === undefined ? [] : [buildSetPasswordSql(props.name, verifier)]),\n ...[...new Set(props.memberOf ?? [])]\n .sort()\n .map((parent) => buildGrantMembershipSql(props.name, parent)),\n];\n\n/** Compare every declared scalar prop against the live row; answer the list of statements\n * reconcile needs to run, empty when nothing drifted. `name` is compared by the caller. */\nexport const scalarDrift = (\n props: PostgresRoleProps,\n live: Omit<PostgresRoleAttributes, 'passwordSeal'>,\n): ReadonlyArray<Parameters<typeof buildAlterRoleSql>[1]> => {\n const changes: Parameters<typeof buildAlterRoleSql>[1][] = [];\n if (props.login !== live.login) changes.push({ prop: 'login', value: props.login });\n if (props.inherit !== live.inherit) changes.push({ prop: 'inherit', value: props.inherit });\n if (props.connectionLimit !== live.connectionLimit) {\n changes.push({ prop: 'connectionLimit', value: props.connectionLimit });\n }\n // Instant comparison, never string equality: the server serialises `rolvaliduntil` with\n // milliseconds, so `'2027-01-01T00:00:00Z'` (declared) and `'2027-01-01T00:00:00.000Z'`\n // (read back) are the same value and must not churn an `ALTER` on every plan.\n if (props.validUntil !== undefined && !sameValidUntil(props.validUntil, live.validUntil)) {\n changes.push({ prop: 'validUntil', value: props.validUntil });\n }\n return changes;\n};\n\n/** Whether a live role is the one an interrupted create would have left: every declared scalar,\n * the declared parent set, and no privilege flag or unsafe membership option. The password is\n * not in `pg_roles`, so it is not part of the proof. */\nexport const declarationMatches = (\n props: PostgresRoleProps,\n live: Omit<PostgresRoleAttributes, 'passwordSeal'>,\n): boolean => {\n const wanted =\n props.memberOf === undefined ? undefined : [...new Set(props.memberOf)].sort().join('\\0');\n const found = [...(live.memberOf ?? [])].sort().join('\\0');\n return (\n props.name === live.name &&\n props.login === live.login &&\n props.inherit === live.inherit &&\n props.connectionLimit === live.connectionLimit &&\n (props.validUntil === undefined || sameValidUntil(props.validUntil, live.validUntil)) &&\n (wanted === undefined || wanted === found) &&\n privilegedFlags(live).length === 0 &&\n (live.memberships ?? []).every(\n (row) => !row.admin && !row.set && (!row.inherit || props.inherit),\n )\n );\n};\n\n/** Drop the observe-only membership options before attributes reach state. Alchemy's plan diff\n * receives the stored attributes (`Plan.ts` passes `oldState.attr`), so an `admin`/`set` row\n * kept here would still not be what `diff` sees — the provider reads `pg_auth_members` live.\n * What state stores is the parent-name set. */\nexport const storedAttributes = (\n live: Omit<PostgresRoleAttributes, 'passwordSeal'>,\n): Omit<PostgresRoleAttributes, 'passwordSeal'> => {\n const { memberships: _observeOnly, ...stored } = live;\n return stored;\n};\n\n/** Catalog flags this family never declares. A create lands on the server default (all false);\n * an absent field on a seeded test row is that default. */\nexport const privilegedFlags = (\n live: Omit<PostgresRoleAttributes, 'passwordSeal'>,\n): readonly string[] => {\n const flags: string[] = [];\n if (live.superuser === true) flags.push('SUPERUSER');\n if (live.createrole === true) flags.push('CREATEROLE');\n if (live.createdb === true) flags.push('CREATEDB');\n if (live.replication === true) flags.push('REPLICATION');\n if (live.bypassrls === true) flags.push('BYPASSRLS');\n return flags;\n};\n",
37
+ "/**\n * Membership statements and the catalog read behind them, split out of `role-sql.ts`\n * (file cap). One file so `diff`, reconcile and the fake agree on the exact texts.\n *\n * ★ ONE PARENT PER STATEMENT. `pg_auth_members` keys a membership on three columns —\n * (parent, member, grantor) — so more than one row can exist for one parent name:\n * another grantor's `ADMIN`-option grant rides beside the safe one. A multi-role\n * `GRANT`/`REVOKE` list would make a partially-failed write harder to attribute.\n * ★ SEAT GRANTS SAY `SET FALSE`. Upstream `GRANT` defaults `SET` to TRUE (`grant.sgml` at\n * REL_18_6), and `SET ROLE` to the parent is how `SUPERUSER` / `CREATEROLE` / `CREATEDB`\n * are exercised (`user-manag.sgml`). A safe seat membership is `ADMIN FALSE, SET FALSE`.\n * ⛔ REVOKE BY GRANTOR. A plain `REVOKE parent FROM member` only touches rows the session's\n * own grantor made; Postgres 18 warns and leaves another grantor's rows standing\n * (`revoke.sgml`). Every revoke here names `GRANTED BY`. A mismatched grantor can still\n * produce only a warning; the catalog re-read below catches surviving unsafe rows.\n */\nimport type { SqlError } from 'effect/unstable/sql/SqlError';\nimport * as Effect from 'effect/Effect';\nimport type { PgExecutor } from './database-sql.ts';\nimport { quoteIdent, roleExists } from './database-sql.ts';\nimport { PostgresRoleMembershipUnrepaired, PostgresRoleParentMissing } from './role-errors.ts';\nimport type { PostgresRoleAttributes, PostgresRoleProps } from './role-attrs.ts';\n\n/** One `pg_auth_members` row as this family reads it: the parent name, the grantor who made\n * the grant, and the three options a name-only compare would hide. `admin` true is `WITH ADMIN`;\n * `inherit` true inherits the parent's privileges even when the member is NOINHERIT;\n * `set` true (the `GRANT` default) lets the member `SET ROLE` to the parent. `grantor` is null\n * only in an inconsistent catalog or a synthetic test row, not after an ordinary DROP ROLE:\n * PostgreSQL tracks grantor dependencies. Keep the null guard as a defensive refusal. */\nexport interface MembershipRow {\n readonly parent: string;\n readonly grantor: string | null;\n readonly admin: boolean;\n readonly set: boolean;\n readonly inherit: boolean;\n}\n\nconst MEMBERSHIP_SQL = `SELECT parent.rolname AS parent,\n grantor.rolname AS grantor,\n m.admin_option AS admin,\n m.set_option AS set,\n m.inherit_option AS inherit\n FROM pg_auth_members m\n JOIN pg_roles member ON member.oid = m.member\n JOIN pg_roles parent ON parent.oid = m.roleid\n LEFT JOIN pg_roles grantor ON grantor.oid = m.grantor\n WHERE member.rolname = $1\n ORDER BY parent.rolname, grantor.rolname NULLS FIRST`;\n\nexport const selectRoleMemberships = (\n pg: PgExecutor,\n name: string,\n): Effect.Effect<readonly MembershipRow[], SqlError> =>\n Effect.map(pg.unsafe<MembershipRow>(MEMBERSHIP_SQL, [name]), (rows) => rows);\n\n/** Seat grants say `SET FALSE`. Upstream `GRANT` defaults `SET` to TRUE, and `SET ROLE` to the\n * parent is how `SUPERUSER` / `CREATEROLE` / `CREATEDB` are exercised (`user-manag.sgml`). */\nexport const buildGrantMembershipSql = (member: string, parent: string): string =>\n `GRANT ${quoteIdent(parent)} TO ${quoteIdent(member)} WITH SET FALSE`;\n\n/** ⛔ Do not repair with GRANT … ADMIN FALSE: measured in PR 336, that left grants made\n * by the member standing after stripping its ADMIN. PG 16+ tracks dependent role grants:\n * https://www.postgresql.org/docs/16/sql-grant.html#SQL-GRANT-DESCRIPTION-ROLES\n * https://www.postgresql.org/docs/16/sql-revoke.html\n * Measured 2026-10-02 on PG 17.11: REVOKE ADMIN OPTION … RESTRICT refuses dependents;\n * without dependents, ADMIN/SET revocation keeps membership and its INHERIT bit intact.\n * INHERIT revocation explicitly clears that bit for a declared NOINHERIT role.\n * GRANTED BY targets the observed row, including a different grantor's row. */\nexport const buildRepairMembershipSql = (\n member: string,\n parent: string,\n grantor: string,\n option: 'ADMIN' | 'SET' | 'INHERIT',\n): string =>\n `REVOKE ${option} OPTION FOR ${quoteIdent(parent)} FROM ${quoteIdent(member)} GRANTED BY ${quoteIdent(grantor)} RESTRICT`;\n\n/** Remove one grantor's row for one parent. Naming the grantor is what makes the revoke\n * bind: a plain `REVOKE` skips rows other grantors made (`revoke.sgml`). */\nexport const buildRevokeGrantorMembershipSql = (\n member: string,\n parent: string,\n grantor: string,\n): string =>\n `REVOKE ${quoteIdent(parent)} FROM ${quoteIdent(member)} GRANTED BY ${quoteIdent(grantor)}`;\n\n/** ADMIN/SET are always unsafe; per-grant INHERIT is unsafe for declared NOINHERIT.\n * PG 16–18 GRANT docs: the role attribute only defaults NEW membership grants. */\nexport const unsafeMemberships = (\n live: Omit<PostgresRoleAttributes, 'passwordSeal'>,\n /** The DECLARED inherit flag (never the live one): a declared NOINHERIT role must see live\n * per-grant INHERIT rows as unsafe even when the live role flag says INHERIT. */\n inherit: boolean,\n): ReadonlySet<string> =>\n new Set(\n (live.memberships ?? [])\n .filter((row) => row.admin || row.set || (row.inherit && !inherit))\n .map((row) => row.parent),\n );\n\n/** Membership drift: sorted set difference between declared and live. Duplicates in the\n * declaration collapse to one; `undefined` means \"not asserted\" — nothing to grant or revoke.\n * A parent already granted `WITH ADMIN`, or with `SET` still at the upstream default TRUE, is\n * a grant again: the name matches, but the options do not, so reconcile repairs in place. */\nexport const membershipDrift = (\n declared: readonly string[] | undefined,\n live: readonly string[],\n unsafe: ReadonlySet<string> = new Set(),\n): { readonly grants: readonly string[]; readonly revokes: readonly string[] } => {\n if (declared === undefined) return { grants: [], revokes: [] };\n const wanted = [...new Set(declared)].sort();\n const current = [...new Set(live)].sort();\n return {\n grants: wanted.filter((parent) => !current.includes(parent) || unsafe.has(parent)),\n revokes: [\n ...current.filter((parent) => !wanted.includes(parent)),\n ...wanted.filter((parent) => current.includes(parent) && unsafe.has(parent)),\n ],\n };\n};\n\n/** Refuse before any membership write when a declared parent is not in `pg_roles`. `GRANT` of a\n * missing role is `42704` (`user.c@REL_18_6`), and on a create that error arrives only after\n * `CREATE ROLE` has committed. */\nexport const assertParentsExist = (\n pg: PgExecutor,\n role: string,\n parents: readonly string[] | undefined,\n): Effect.Effect<void, PostgresRoleParentMissing | SqlError> =>\n Effect.gen(function* () {\n if (parents === undefined) return;\n for (const parent of [...new Set(parents)].sort()) {\n if (!(yield* roleExists(pg, parent))) {\n return yield* Effect.fail(new PostgresRoleParentMissing({ role, parent }));\n }\n }\n });\n\n/** Make live memberships equal the declaration, preserving wanted memberships in place.\n * The previous full-options GRANT updated only its own grantor's row, then revoked other\n * unsafe rows; it could silently strip ADMIN despite dependent grants (PR 336 round 2).\n * Now each unsafe option is revoked by its observed grantor with RESTRICT. Unwanted rows\n * commit first, so a blocked ADMIN repair cannot restore unwanted access (PR 349 review).\n * Each retained row's options share a transaction, attributing a dependency/permission\n * refusal to that parent and grantor. No CASCADE and no replacement grantor row.\n * Unnameable grantors are defensive catalog-corruption cases, left to the typed backstop. */\nexport const syncMemberships = (\n pg: PgExecutor,\n props: PostgresRoleProps,\n rows: readonly MembershipRow[],\n): Effect.Effect<\n readonly string[],\n SqlError | PostgresRoleMembershipUnrepaired | PostgresRoleParentMissing\n> =>\n Effect.gen(function* () {\n if (props.memberOf === undefined) {\n return [...new Set(rows.map((row) => row.parent))].sort();\n }\n yield* assertParentsExist(pg, props.name, props.memberOf);\n const wanted = [...new Set(props.memberOf)].sort();\n const revokes: string[] = [];\n for (const row of rows) {\n if (!wanted.includes(row.parent) && row.grantor !== null) {\n revokes.push(buildRevokeGrantorMembershipSql(props.name, row.parent, row.grantor));\n }\n }\n if (revokes.length > 0) yield* pg.transaction(revokes);\n for (const row of rows) {\n if (row.grantor === null || !wanted.includes(row.parent)) continue;\n const statements: string[] = [];\n for (const option of ['ADMIN', 'SET', 'INHERIT'] as const) {\n const unsafe =\n option === 'ADMIN'\n ? row.admin\n : option === 'SET'\n ? row.set\n : row.inherit && !props.inherit;\n if (unsafe) {\n statements.push(buildRepairMembershipSql(props.name, row.parent, row.grantor, option));\n }\n }\n if (statements.length > 0)\n yield* pg.transaction(statements).pipe(\n Effect.catchTag('SqlError', (error) => {\n // Both installed socket and psql transports preserve raw SQLSTATE here.\n // Class 2B is UnknownError, class 42 is SqlSyntaxError; never match messages.\n const cause = error.reason.cause;\n const code =\n typeof cause === 'object' && cause !== null\n ? (cause as { code?: unknown }).code\n : undefined;\n return Effect.fail(\n code === '2BP01' || code === '42501'\n ? new PostgresRoleMembershipUnrepaired({\n role: props.name,\n parent: row.parent,\n grantor: row.grantor,\n declared: true,\n })\n : error,\n );\n }),\n );\n }\n // Absent-but-wanted parents get a fresh seat grant. Existing rows keep their grantor.\n const grants = wanted\n .filter((p) => !rows.some((row) => row.parent === p))\n .map((parent) => buildGrantMembershipSql(props.name, parent));\n if (grants.length > 0) yield* pg.transaction(grants);\n // Backstop: anything not wanted or still unsafe fails typed.\n for (const row of yield* selectRoleMemberships(pg, props.name)) {\n if (!wanted.includes(row.parent) || row.admin || row.set || (row.inherit && !props.inherit)) {\n return yield* Effect.fail(\n new PostgresRoleMembershipUnrepaired({\n role: props.name,\n parent: row.parent,\n grantor: row.grantor,\n declared: wanted.includes(row.parent),\n }),\n );\n }\n }\n return wanted;\n });\n",
38
+ "/**\n * `Postgres.Role` failures as typed tags (S21).\n *\n * ⛔ NEVER MATCH DRIVER MESSAGE TEXT. Most errors are raised from a fact the\n * provider already checked (a byte count, a live catalog row, a missing environment variable,\n * a vanished create). Membership repair also maps raw SQLSTATE 2BP01/42501 to a typed\n * refusal naming the observed parent and grantor. A `DROP ROLE` that the\n * server refuses (the role still owns objects, `2BP01 dependent_objects_still_exist`) surfaces\n * as the `SqlError` the client raised, unclassified by this family.\n */\nimport * as Data from 'effect/Data';\n\n/**\n * A role name would be silently truncated by the server (`NAMEDATALEN` 64, so 63 UTF-8 bytes is\n * the last one that survives whole) — refused at plan, before any statement runs.\n *\n * ⚠️ Same hazard as `PostgresDatabaseNameRefused`: `truncate_identifier` clips at 63 bytes and\n * emits only a NOTICE. A create would succeed against the truncated name; the next plan would\n * look for the original name and find nothing, looping forever.\n */\nexport class PostgresRoleNameRefused extends Data.TaggedError('PostgresRoleNameRefused')<{\n readonly name: string;\n readonly byteLength: number;\n readonly limit: number;\n}> {\n override get message(): string {\n return (\n `Postgres.Role \"${this.name}\": ${String(this.byteLength)} UTF-8 bytes, over the ` +\n `${String(this.limit)}-byte limit (NAMEDATALEN 64, minus the terminator). PostgreSQL would ` +\n 'accept the CREATE and silently truncate the name with only a NOTICE, so this plan refuses ' +\n 'it instead of creating a role no later read will ever find again.'\n );\n }\n}\n\n/** A logical id's `name` changed. A role's name is its identity; this resource never replaces via\n * `DROP` then `CREATE` — role memberships, grants and owned objects would be lost, and the\n * seat-wiring shape depends on the group-role name staying stable. `ALTER ROLE … RENAME TO`\n * exists in PostgreSQL; this family does not drive it, so a rename is refused at plan and the\n * new name is declared as its own logical id. */\nexport class PostgresRoleRenameRefused extends Data.TaggedError('PostgresRoleRenameRefused')<{\n readonly from: string;\n readonly to: string;\n}> {\n override get message(): string {\n return (\n `Postgres.Role: the declared name changed from \"${this.from}\" to \"${this.to}\". A ` +\n 'rename is refused at plan — this provider never replaces a role (that is DROP then ' +\n 'CREATE, which loses memberships, grants and ownerships). Declare a new logical id for ' +\n 'the new name, and remove the old one once its objects have moved.'\n );\n }\n}\n\n/** The password prop names an environment variable that is unset or empty at reconcile time, on a\n * write that must send one (a create that declares it, or any reconcile while the variable is\n * set). Never a guess: a group role left with a stale or empty password is exactly the\n * unauthenticated path the refusal exists to prevent. */\nexport class PostgresRolePasswordEnvUnsetError extends Data.TaggedError(\n 'PostgresRolePasswordEnvUnsetError',\n)<{\n readonly role: string;\n readonly variable: string;\n}> {\n override get message(): string {\n return (\n `Postgres.Role \"${this.role}\": password.fromEnv \"${this.variable}\" is unset or empty ` +\n 'in the deploying process, but this write requires a password this stack has not sealed.'\n );\n }\n}\n\n/** A live role carries a catalog flag this family never declares (`rolsuper`, `rolcreaterole`,\n * `rolcreatedb`, `rolreplication`, `rolbypassrls`). Those are not inherited: a member who\n * `SET ROLE`s to the parent exercises them. Refused before any write, adopt included. */\nexport class PostgresRolePrivilegedRefused extends Data.TaggedError(\n 'PostgresRolePrivilegedRefused',\n)<{\n readonly role: string;\n readonly flags: readonly string[];\n}> {\n override get message(): string {\n return (\n `Postgres.Role \"${this.role}\": the live role has ${this.flags.join(', ')} set. This ` +\n 'family never declares those attributes (a create lands on the server default, all off), ' +\n 'and they are not inherited — a member who SET ROLEs to this role would exercise them. ' +\n 'Clear the flag on the cluster before this stack adopts the role.'\n );\n }\n}\n\n/** The declared `validUntil` is not a timestamp this family can compare: ECMAScript cannot parse\n * it at all, or it names no time zone. Refused at plan, before any statement — see\n * `role-attrs.ts#validUntilRefusal` for the churn loop this prevents. */\nexport class PostgresRoleValidUntilRefused extends Data.TaggedError(\n 'PostgresRoleValidUntilRefused',\n)<{\n readonly role: string;\n readonly value: string;\n readonly reason: 'unparseable' | 'zone-free';\n}> {\n override get message(): string {\n return (\n `Postgres.Role \"${this.role}\": validUntil \"${this.value}\" is ${this.reason === 'unparseable' ? 'not a timestamp this kit can parse' : 'missing its UTC designator or numeric offset'}. ` +\n 'Declare an explicit-zone ISO 8601 value such as \"2027-01-01T00:00:00Z\" — PostgreSQL would ' +\n 'read a zone-free value in the session time zone while the plan compares UTC, and the two ' +\n 'would never agree.'\n );\n }\n}\n\n/** `CREATE ROLE` raised no error, but the immediate re-read still finds nothing (S10/S20).\n * Measured to have no real trigger in a correctly speaking client; still a typed failure the\n * caller can see and retry, never a defect that crashes the engine. */\nexport class PostgresRoleCreateVanished extends Data.TaggedError('PostgresRoleCreateVanished')<{\n readonly role: string;\n}> {\n override get message(): string {\n return (\n `Postgres.Role \"${this.role}\": CREATE ROLE raised no error, but the role is still ` +\n 'absent on the immediate re-read. Re-plan — this is not a state this provider expects to reach.'\n );\n }\n}\n\n/** An option repair was refused, or a catalog row survived outside the declaration. A null grantor is a\n * defensive corruption/test case: PostgreSQL tracks grantor dependencies, so ordinary\n * DROP ROLE does not leave a dangling grantor. Refuse instead of claiming convergence. */\nexport class PostgresRoleMembershipUnrepaired extends Data.TaggedError(\n 'PostgresRoleMembershipUnrepaired',\n)<{\n readonly role: string;\n readonly parent: string;\n readonly grantor: string | null;\n readonly declared: boolean;\n}> {\n override get message(): string {\n const who =\n this.grantor === null\n ? 'an unresolvable grantor (inconsistent catalog)'\n : `grantor \"${this.grantor}\"`;\n return (\n `Postgres.Role \"${this.role}\": membership of \"${this.parent}\" ` +\n `(${this.declared ? 'declared, options unsafe' : 'not declared'}) could not be repaired ` +\n `under ${who}. The server refused the repair or the catalog re-read still found the row ` +\n 'outside the declaration. pg_auth_members keys a membership on (parent, member, grantor). ' +\n 'Check dependent grants, executor permissions and grantor identity before re-planning.'\n );\n }\n}\n\n/** A declared `memberOf` parent is not in `pg_roles`. Checked before any statement of a create,\n * so a missing parent never leaves a committed LOGIN role behind a `42704` (`undefined_object`,\n * `user.c@REL_18_6`) from `GRANT`. */\nexport class PostgresRoleParentMissing extends Data.TaggedError('PostgresRoleParentMissing')<{\n readonly role: string;\n readonly parent: string;\n}> {\n override get message(): string {\n return (\n `Postgres.Role \"${this.role}\": memberOf parent \"${this.parent}\" does not exist. ` +\n 'Nothing was written — declare that role first (or drop it from memberOf). A GRANT of a ' +\n 'missing role fails only after CREATE ROLE has committed, and the next plan then needs ' +\n '--adopt to finish the orphan.'\n );\n }\n}\n\n/** The live role's oid is not the one this stack stored. A drop and recreate out of band reuses\n * the name and would otherwise plan as ours: noop while the seal still matches, and a destroy\n * would `DROP` a role this stack never created. */\nexport class PostgresRoleIdentityRefused extends Data.TaggedError('PostgresRoleIdentityRefused')<{\n readonly role: string;\n readonly storedOid: number;\n readonly liveOid: number;\n}> {\n override get message(): string {\n return (\n `Postgres.Role \"${this.role}\": the live oid is ${String(this.liveOid)}, but state recorded ` +\n `${String(this.storedOid)}. The name was dropped and recreated outside this stack. Nothing ` +\n 'was altered and the live role was not dropped — remove the stale state, or adopt the new ' +\n 'role under a new logical id once you mean to own it.'\n );\n }\n}\n\n/** Never carry the rejected password in this error: errors reach logs and traces. */\nexport class PostgresRolePasswordNonAsciiRefused extends Data.TaggedError(\n 'PostgresRolePasswordNonAsciiRefused',\n)<{ readonly role: string }> {\n override get message(): string {\n return `Postgres.Role \"${this.role}\": password must be ASCII; this provider does not implement PostgreSQL SASLprep normalization. Nothing was written.`;\n }\n}\n\nexport type PostgresRoleError =\n | PostgresRolePasswordNonAsciiRefused\n | PostgresRoleNameRefused\n | PostgresRoleRenameRefused\n | PostgresRoleValidUntilRefused\n | PostgresRolePasswordEnvUnsetError\n | PostgresRolePrivilegedRefused\n | PostgresRoleCreateVanished\n | PostgresRoleMembershipUnrepaired\n | PostgresRoleParentMissing\n | PostgresRoleIdentityRefused;\n",
39
+ "/**\n * `Postgres.Role` — create / adopt / alter / drop of a LOGIN or NOLOGIN role on the same\n * self-hosted PostgreSQL 18 cluster `Postgres.Database` talks to, over the same transports\n * (runner `psql` or socket). The seat-wiring lane B12a's shape: one group role per seat\n * (NOLOGIN, member of `hf_agent`), plus the LOGIN seat users.\n *\n * ★ ALTER-CAPABLE, UNLIKE `Postgres.Database`. Every scalar this resource asserts has a safe\n * atomic `ALTER ROLE` form (`LOGIN`/`NOLOGIN`, `INHERIT`/`NOINHERIT`, `CONNECTION LIMIT`,\n * `VALID UNTIL` — `alter_role.sgml`'s first synopsis variant), so a drifted live row is\n * brought back to the declaration, never refused. Memberships move through one-parent\n * `GRANT`/`REVOKE` statements (`alter_role.sgml`: \"there are no options for adding or\n * removing memberships; use GRANT and REVOKE\").\n * ⛔ THE PASSWORD IS A REFERENCE, NEVER A VALUE (S25). It is declared as\n * `{ fromEnv: 'PG_SEAT_WIDGET_PASSWORD' }`; the NAME lands in state, the value is resolved\n * from the deploying process's environment at reconcile time, held as `Redacted`, and sent only\n * as the SCRAM-SHA-256 verifier inside the one `ALTER ROLE … PASSWORD` statement that needs it\n * (`role-scram.ts` — the statement text reaching spans, `pg_stat_statements` and a failed\n * `ALTER`'s server log never holds the plain value). What state remembers is a\n * `scrypt:<salt>:<digest>` seal, so a reconcile sends the password only when the environment\n * value differs from the one last written — a plan never re-sends a secret that already\n * matches, and never stores one.\n * ★ MEMBERSHIP IS `pg_auth_members`, compared as a sorted set. `memberOf` omitted leaves live\n * memberships alone; `[]` ensures none.\n * ★ `defaultRemovalPolicy: 'retain'` — a seat group role may own objects and be granted across\n * databases; a destroy is still implemented in full (`DROP ROLE IF EXISTS`), opt in with\n * `.pipe(RemovalPolicy.destroy())`. A role that still owns objects fails the drop with the\n * server's own `2BP01` (`dependent_objects_still_exist`), surfaced as the client's `SqlError`.\n */\nimport { Resource } from 'alchemy';\nimport * as Effect from 'effect/Effect';\nimport * as Redacted from 'effect/Redacted';\nimport type { SqlError } from 'effect/unstable/sql/SqlError';\nimport { type Environment } from '../secrets/write-only.ts';\nimport type { PostgresRoleAttributes, PostgresRoleProps } from './role-attrs.ts';\nimport { nameByteRefusal, validUntilRefusal } from './role-attrs.ts';\nimport {\n assertPasswordAscii,\n passwordMatchesSeal,\n resolvePassword,\n sealPassword,\n} from './role-secrets.ts';\nimport { scramSha256Verifier } from './role-scram.ts';\nimport {\n buildAlterRoleSql,\n buildCreateStatements,\n buildSetPasswordSql,\n privilegedFlags,\n readRoleWithClient,\n scalarDrift,\n storedAttributes,\n} from './role-sql.ts';\nimport { assertParentsExist, syncMemberships } from './role-membership-sql.ts';\nimport {\n PostgresRoleCreateVanished,\n PostgresRoleIdentityRefused,\n type PostgresRoleMembershipUnrepaired,\n PostgresRoleNameRefused,\n type PostgresRoleParentMissing,\n PostgresRolePasswordEnvUnsetError,\n type PostgresRolePasswordNonAsciiRefused,\n PostgresRolePrivilegedRefused,\n PostgresRoleValidUntilRefused,\n} from './role-errors.ts';\nimport { type PostgresConnection } from './connection.ts';\nimport type { PgExecutor } from './database-sql.ts';\n\nexport interface PostgresRole extends Resource<\n 'Postgres.Role',\n PostgresRoleProps,\n PostgresRoleAttributes,\n never,\n PostgresConnection\n> {}\n\nexport const PostgresRole = Resource<PostgresRole>('Postgres.Role', {\n defaultRemovalPolicy: 'retain',\n});\n\n/** Mirrors `isPostgresDatabase`: a resource constructor is a callable `Object.assign`ed\n * function, not a plain object, so `typeof` must accept both. */\nexport const isPostgresRole = (value: unknown): value is PostgresRole =>\n (typeof value === 'object' || typeof value === 'function') &&\n value !== null &&\n (value as { Type?: unknown }).Type === 'Postgres.Role';\n\n/**\n * The core of `reconcile`, against any {@link PgExecutor} — the real client through `withPg`,\n * or `fake-sql.ts`'s recording fake in tests. `env` defaults to `process.env`; tests pass a\n * recording one. `previousSeal` is the seal in the engine's state — `''` when the role is\n * being written for the first time — because `pg_roles` answers no password (S25), so the live\n * row cannot say whether the environment value still matches the one last written.\n */\nexport const reconcileWithClient = (\n pg: PgExecutor,\n props: PostgresRoleProps,\n env: Environment = process.env,\n previousSeal = '',\n storedOid?: number,\n): Effect.Effect<\n PostgresRoleAttributes,\n | PostgresRolePasswordEnvUnsetError\n | PostgresRolePasswordNonAsciiRefused\n | PostgresRolePrivilegedRefused\n | PostgresRoleCreateVanished\n | PostgresRoleMembershipUnrepaired\n | PostgresRoleParentMissing\n | PostgresRoleIdentityRefused\n | SqlError\n> =>\n Effect.gen(function* () {\n const resolved = resolvePassword(props, env);\n yield* assertPasswordAscii(props.name, resolved);\n const observed = yield* readRoleWithClient(pg, props.name);\n if (observed === undefined) {\n // A create that declares a password must hold it: a LOGIN role with no password set, or\n // one created against a guess, is exactly the unauthenticated path to refuse.\n if (resolved.variable !== undefined && resolved.value === undefined) {\n return yield* Effect.fail(\n new PostgresRolePasswordEnvUnsetError({ role: props.name, variable: resolved.variable }),\n );\n }\n // The create carries no PASSWORD clause. The verifier ALTER and the seat GRANTs share\n // one transaction with the CREATE, so a failure rolls all of them back. A missing parent\n // is refused first — `GRANT` would otherwise be `42704` after the CREATE committed.\n yield* assertParentsExist(pg, props.name, props.memberOf);\n const verifier =\n resolved.value === undefined\n ? undefined\n : scramSha256Verifier(Redacted.value(resolved.value));\n yield* pg.transaction(buildCreateStatements(props, verifier));\n // Never trust the write's own report (S10): re-read what the server actually stored.\n const created = yield* readRoleWithClient(pg, props.name);\n if (created === undefined) {\n return yield* Effect.fail(new PostgresRoleCreateVanished({ role: props.name }));\n }\n return {\n ...storedAttributes(created),\n passwordSeal: resolved.value === undefined ? '' : sealPassword(resolved.value),\n };\n }\n // A recycled name (dropped and recreated out of band) is a different oid. Refuse before\n // any ALTER, PASSWORD or DROP-by-name the caller might follow with.\n if (storedOid !== undefined && observed.oid !== storedOid) {\n return yield* Effect.fail(\n new PostgresRoleIdentityRefused({\n role: props.name,\n storedOid,\n liveOid: observed.oid,\n }),\n );\n }\n // A live role this stack did not create can carry flags CREATE ROLE's default leaves off.\n // They are not inherited: SET ROLE to this role exercises them. Refuse before any write.\n const flags = privilegedFlags(observed);\n if (flags.length > 0) {\n return yield* Effect.fail(new PostgresRolePrivilegedRefused({ role: props.name, flags }));\n }\n // A declared password this stack has never sealed is not \"do not churn\". CREATE ROLE and\n // ALTER ROLE … PASSWORD are two statements; a retry after the second failed, or after the\n // process died before state was saved, sees the role and an empty seal. An unset variable\n // there must refuse — reporting success would leave a LOGIN role with a null password.\n if (resolved.variable !== undefined && resolved.value === undefined && previousSeal === '') {\n return yield* Effect.fail(\n new PostgresRolePasswordEnvUnsetError({ role: props.name, variable: resolved.variable }),\n );\n }\n // Parents before any ALTER, so a missing one does not leave a half-applied scalar update.\n yield* assertParentsExist(pg, props.name, props.memberOf);\n // Adopted or drifted: every scalar comes back to the declaration, one ALTER per field.\n for (const change of scalarDrift(props, observed)) {\n yield* pg.unsafe(buildAlterRoleSql(props.name, change)).pipe(Effect.asVoid);\n }\n // The password goes out only when it changed: the seal matches the last written value, or\n // the variable is unset here (a plan-only run must not churn a secret it cannot read). The\n // same match decides the seal that lands in state, so an unchanged password keeps the seal\n // it already had instead of being re-salted into a new one on every plan.\n const passwordMatched =\n resolved.value !== undefined && passwordMatchesSeal(resolved.value, previousSeal);\n if (resolved.value !== undefined && !passwordMatched) {\n yield* pg\n .unsafe(\n buildSetPasswordSql(props.name, scramSha256Verifier(Redacted.value(resolved.value))),\n )\n .pipe(Effect.asVoid);\n }\n yield* syncMemberships(pg, props, observed.memberships ?? []);\n const after = yield* readRoleWithClient(pg, props.name);\n if (after === undefined) {\n return yield* Effect.fail(new PostgresRoleCreateVanished({ role: props.name }));\n }\n return {\n ...storedAttributes(after),\n passwordSeal:\n resolved.value === undefined || passwordMatched\n ? previousSeal\n : sealPassword(resolved.value),\n };\n });\n\n/** The core of `read`. Answers `undefined` when absent; ownership branding and the state-only\n * `passwordSeal` merge are the caller's. */\nexport const readRole = (pg: PgExecutor, name: string) => readRoleWithClient(pg, name);\n\n/** Every plan-time refusal this family makes, in one place so `diff` and `reconcile` check the\n * same facts. Nothing here touches a client. */\nexport const refuseAtPlan = (\n props: PostgresRoleProps,\n): Effect.Effect<void, PostgresRoleNameRefused | PostgresRoleValidUntilRefused> =>\n Effect.gen(function* () {\n const nameRefusal = nameByteRefusal(props.name);\n if (nameRefusal !== undefined) {\n return yield* Effect.fail(new PostgresRoleNameRefused({ name: props.name, ...nameRefusal }));\n }\n if (props.validUntil !== undefined) {\n const untilRefusal = validUntilRefusal(props.validUntil);\n if (untilRefusal !== undefined) {\n return yield* Effect.fail(\n new PostgresRoleValidUntilRefused({\n role: props.name,\n value: props.validUntil,\n reason: untilRefusal.reason,\n }),\n );\n }\n }\n });\n",
40
+ "/**\n * The `Postgres.Role` password: resolution from the environment and the seal arithmetic that\n * lets state answer \"did this value already go out?\" without storing it (S25).\n *\n * ⛔ THE PASSWORD IS A REFERENCE, NEVER A VALUE. It is declared as\n * `{ fromEnv: 'PG_SEAT_WIDGET_PASSWORD' }`; the NAME lands in state, the value is resolved\n * from the deploying process's environment at reconcile/diff time, held as `Redacted`, and\n * quoted into the one `ALTER ROLE … PASSWORD` statement that needs it.\n * ★ What state remembers is a `scrypt:<salt>:<digest>` seal ({@link sealPassword}), so a\n * reconcile sends the password only when the environment value differs from the one last\n * written — a plan never re-sends a secret that already matches, and never stores one.\n */\nimport * as Redacted from 'effect/Redacted';\nimport * as Effect from 'effect/Effect';\nimport { PostgresRolePasswordNonAsciiRefused } from './role-errors.ts';\nimport { type Environment, resolveAll, seal, sealMatches } from '../secrets/write-only.ts';\nimport type { PostgresRoleProps } from './role-attrs.ts';\n\n/** What the environment holds for the declared password. `value` is `undefined` when no\n * password is declared, or when the variable is unset or empty (a renderer that failed writes\n * `NAME=`; `resolveAll` treats empty as missing). ⛔ Reads the environment at CALL time. */\nexport interface ResolvedPassword {\n readonly variable: string | undefined;\n readonly value: Redacted.Redacted<string> | undefined;\n}\n\n/** ⛔ PostgreSQL applies SASLprep before SCRAM, with a raw-byte fallback for prohibited input:\n * https://www.postgresql.org/docs/16/sasl-authentication.html#SASL-SCRAM-SHA-256\n * Non-ASCII can normalize to different bytes (e.g. soft hyphen disappears). Refuse before\n * any write, even with a matching old seal, until we have a vendor-compatible normalizer.\n * ASCII is unchanged, including prohibited ASCII controls via PostgreSQL's fallback. */\nexport const assertPasswordAscii = (\n role: string,\n resolved: ResolvedPassword,\n): Effect.Effect<void, PostgresRolePasswordNonAsciiRefused> =>\n resolved.value !== undefined && /[\\u0080-\\uffff]/.test(Redacted.value(resolved.value))\n ? Effect.fail(new PostgresRolePasswordNonAsciiRefused({ role }))\n : Effect.void;\n\nexport const resolvePassword = (\n props: PostgresRoleProps,\n env: Environment = process.env,\n): ResolvedPassword => {\n if (props.password === undefined) return { variable: undefined, value: undefined };\n const { values } = resolveAll({ password: props.password }, env);\n const raw = values['password'];\n return {\n variable: props.password.fromEnv,\n value: raw === undefined ? undefined : Redacted.make(raw),\n };\n};\n\n/** `seal({ password })` of the resolved value — the one thing state remembers about it. */\nexport const sealPassword = (value: Redacted.Redacted<string>): string =>\n seal({ password: Redacted.value(value) });\n\n/** Whether the seal was made from the resolved value. Malformed/empty seals answer false, so an\n * adopted role (seal `''`) or one written outside this stack gets the password written on the\n * first reconcile that holds the variable — the declaration is authoritative. */\nexport const passwordMatchesSeal = (value: Redacted.Redacted<string>, sealed: string): boolean =>\n sealMatches(sealed, { password: Redacted.value(value) });\n",
41
41
  "/**\n * Values a declaration may SEND and must never STORE — a webhook secret, a header carrying a\n * credential, an smtp password — and the one form in which a plan may still remember them.\n *\n * ★ FAMILY-NEUTRAL ON PURPOSE, MOVED HERE FROM `proxmox/` 2026-09-22. The rule it encodes is not\n * about Proxmox: Alchemy's state store is the same unencrypted store for every provider, so the\n * Cloudflare MCP server entry's `auth_credentials` needs exactly this shape. A second copy under\n * `cloudflare/` would be two seal formats for one rule; a cross-family import would make\n * Cloudflare depend on Proxmox. Neither; it lives on its own.\n *\n * ⛔ A SECRET PROP IS A SECRET IN THE STATE STORE, WHATEVER TYPE IT HAS. Alchemy persists props as\n * well as attributes — `delete` is handed `olds`, which can only have come from the store — and\n * it does not encrypt either: `StateEncoding.ts` TAGS a `Redacted` value and writes the inner\n * value beside the tag. So `Redacted` hides a secret from a log line and from nothing else.\n * notification-target.ts (PVE) answered that by making no secret declarable at all, and paid\n * for it: an authenticated smtp target or a signed webhook could not be created from code.\n * ★ SO THE PROP HOLDS A NAME, NOT A VALUE. `{ fromEnv: 'PBS_HOOK_TOKEN' }` names the variable the\n * DEPLOYING process reads at call time — the shape forgejo/org-actions-secrets.ts already uses.\n * The name is what lands in state; the value exists only in that process's memory and on the\n * wire to the server.\n *\n * ⚠️ A PLAN STILL NEEDS TO KNOW WHETHER A VALUE CHANGED, AND IT CANNOT ASK THE SERVER. PBS returns a\n * webhook secret's NAME and never its value, and never returns an smtp password at all. So what\n * was last written is remembered as a SEAL: a salted scrypt digest, which lets the next plan\n * check \"is the value in my environment the one I wrote\" without the store holding anything a\n * reader could send to PBS.\n * ⚠️ A DIGEST OF A GUESSABLE SECRET IS STILL GUESSABLE. The salt defeats precomputed tables and\n * scrypt makes each guess cost memory and time; neither makes a dictionary word safe. The\n * remedy is a secret worth the name — a random token — not a faster hash.\n */\nimport { Buffer } from 'node:buffer';\nimport { randomBytes, scryptSync, timingSafeEqual } from 'node:crypto';\n\n/** A write-only value, by the NAME of the environment variable holding it. Never the value. */\nexport interface FromEnv {\n readonly fromEnv: string;\n}\n\n/** Where a value is looked up. Defaults to `process.env`, read at call time, never at load. */\nexport type Environment = Readonly<Record<string, string | undefined>>;\n\n/**\n * Each `name → FromEnv` resolved, or the variable names that could not be.\n *\n * ⚠️ AN EMPTY VARIABLE IS A MISSING ONE. A secret renderer that failed writes `NAME=` rather than\n * omitting the line, and sending `''` would store an empty secret on the server — a webhook that\n * authenticates with nothing, reported as a successful deploy.\n * ⚠️ THE VALUE IS NOT TRIMMED. A token with a trailing newline is a broken header either way, and\n * trimming here would make the seal disagree with a value written by any other tool.\n */\nexport const resolveAll = (\n refs: Readonly<Record<string, FromEnv>>,\n env: Environment = process.env,\n): { readonly values: Readonly<Record<string, string>>; readonly missing: readonly string[] } => {\n const values: Record<string, string> = {};\n const missing: string[] = [];\n for (const [key, ref] of Object.entries(refs)) {\n const value = env[ref.fromEnv];\n if (value === undefined || value === '') missing.push(ref.fromEnv);\n else values[key] = value;\n }\n return { missing: [...new Set(missing)].sort(), values };\n};\n\n/**\n * ★ PARAMETERS ARE NODE'S OWN SCRYPT DEFAULTS (N 2^14, r 8, p 1) — 16 MiB and tens of\n * milliseconds per digest. Plan runs it a handful of times per resource, which is noise, and a\n * guesser runs it once per guess, which is the point.\n */\nconst COST = { N: 16_384, maxmem: 64 * 1024 * 1024, p: 1, r: 8 } as const;\nconst PREFIX = 'scrypt';\n\n/** Key order must not change a digest, so entries are sorted and serialised as JSON pairs. */\nconst canonical = (values: Readonly<Record<string, string>>): string =>\n JSON.stringify(\n Object.keys(values)\n .sort()\n .map((key) => [key, values[key]]),\n );\n\nconst digest = (salt: Buffer, values: Readonly<Record<string, string>>): Buffer =>\n scryptSync(canonical(values), salt, 32, COST);\n\n/**\n * `scrypt:<salt>:<digest>`, or `''` when there is nothing to seal.\n *\n * ★ A RANDOM SALT BY DEFAULT, FOR WHAT THIS PROVIDER WROTE. Pass a fixed one only for a value the\n * server returns anyway (a header), where a fresh salt per read would churn the state row on\n * every plan without protecting anything the server does not already show its auditors.\n */\nexport const seal = (values: Readonly<Record<string, string>>, salt?: string): string => {\n if (Object.keys(values).length === 0) return '';\n const bytes = salt === undefined ? randomBytes(16) : Buffer.from(salt, 'utf8');\n return `${PREFIX}:${bytes.toString('base64url')}:${digest(bytes, values).toString('base64url')}`;\n};\n\n/**\n * Whether `values` are the ones `sealed` was made from.\n *\n * ⚠️ A MALFORMED OR EMPTY SEAL ANSWERS FALSE, never throws: callers decide what \"no evidence\"\n * means, and every caller here treats it as \"cannot tell\" rather than as drift.\n */\nexport const sealMatches = (sealed: string, values: Readonly<Record<string, string>>): boolean => {\n if (sealed === '') return Object.keys(values).length === 0;\n const [prefix, salt, stored, extra] = sealed.split(':');\n if (prefix !== PREFIX || salt === undefined || stored === undefined || extra !== undefined) {\n return false;\n }\n const expected = Buffer.from(stored, 'base64url');\n const actual = digest(Buffer.from(salt, 'base64url'), values);\n return expected.length === actual.length && timingSafeEqual(expected, actual);\n};\n",
42
- "/**\n * SCRAM-SHA-256 password verifier, built client-side the way `psql \\password` and `createuser -w`\n * do (`createuser.c@REL_18_6` → `pg_format scram verifier`). Postgres stores the verifier as-is in\n * `pg_authid.rolpassword` and never recovers the password from it.\n *\n * ⛔ THE PLAIN PASSWORD NEVER ENTERS A STATEMENT. Before this file, `ALTER ROLE … PASSWORD` carried\n * the plain value as a literal, so it landed in the Effect SQL span attribute `db.query.text`,\n * in `pg_stat_statements` (`track_utility=on` records utility statements), and in the server log\n * of any failed `ALTER`. The verifier is the one form Postgres accepts that is not the secret:\n * `PASSWORD 'SCRAM-SHA-256$4096:<salt>$<StoredKey>:<ServerKey>'` (`create_role.sgml`: a string\n * already in SCRAM verifier format is stored as given).\n * ★ WIRE FORMAT AND MATH (`scram_protocols` / RFC 5802 / `auth-scram.c`): salt 16 bytes,\n * iterations 4096 (both Postgres defaults), standard base64. SaltedPassword = PBKDF2-HMAC-SHA-256\n * (password, salt, 4096, 32 bytes); ClientKey = HMAC(SaltedPassword, \"Client Key\"); StoredKey =\n * SHA-256(ClientKey); ServerKey = HMAC(SaltedPassword, \"Server Key\").\n */\nimport { createHash, createHmac, pbkdf2Sync, randomBytes } from 'node:crypto';\n\nconst ITERATIONS = 4096;\nconst SALT_BYTES = 16;\nconst KEY_BYTES = 32;\n\nconst hmac = (key: Buffer, label: string): Buffer =>\n createHmac('sha256', key).update(label, 'utf8').digest();\n\nconst b64 = (value: Buffer): string => value.toString('base64');\n\n/**\n * `SCRAM-SHA-256$4096:<salt>$<StoredKey>:<ServerKey>` for one password. The salt is fresh per\n * call (same as `psql \\password`); tests pass one to make the output deterministic.\n */\nexport const scramSha256Verifier = (password: string, salt?: Buffer): string => {\n const bytes = salt ?? randomBytes(SALT_BYTES);\n const saltedPassword = pbkdf2Sync(password, bytes, ITERATIONS, KEY_BYTES, 'sha256');\n const storedKey = createHash('sha256').update(hmac(saltedPassword, 'Client Key')).digest();\n const serverKey = hmac(saltedPassword, 'Server Key');\n return `SCRAM-SHA-256$${ITERATIONS}:${b64(bytes)}$${b64(storedKey)}:${b64(serverKey)}`;\n};\n",
43
- "/**\n * `Postgres.Role`'s five lifecycle handlers, wired to `withPg` for anything that touches a\n * client, and the one Layer a consuming stack provides. Split from `role.ts` so the file stays\n * under the house cap: `role.ts` holds reconcile, `role-diff.ts` the plan diff; this file holds\n * only the engine wiring.\n */\nimport * as Provider from 'alchemy/Provider';\nimport { isResolved } from 'alchemy/Diff';\nimport * as Effect from 'effect/Effect';\nimport { ownedRead } from '../ownership/probe.ts';\nimport { noteUnfinished } from '../ownership/resume.ts';\nimport { refuseTakeover } from '../ownership/adopt.ts';\nimport { PostgresRole } from './role.ts';\nimport { readRole, reconcileWithClient, refuseAtPlan } from './role.ts';\nimport { diffPostgresRole } from './role-diff.ts';\nimport { PostgresRoleIdentityRefused } from './role-errors.ts';\nimport { buildDropRoleSql, declarationMatches } from './role-sql.ts';\nimport { withPg } from './connection.ts';\n\nexport const postgresRoleHandlers = PostgresRole.Provider.of({\n // ⚠️ EMPTY, NOT A LIVE SWEEP: `pg_roles` lists every role on the cluster, most of which nothing\n // declared — the same reasoning `Postgres.Database`'s `list` documents.\n list: () => Effect.succeed([]),\n nuke: { skip: true },\n\n read: ({ fqn, instanceId, olds, output }) =>\n Effect.gen(function* () {\n const name = output?.name ?? olds.name;\n const live = yield* withPg((pg) => readRole(pg, name));\n if (live === undefined) return undefined;\n // A recycled name is not the role state recorded. Failing (rather than `Unowned`) matters\n // because drift strips `Unowned` and would then reconcile the foreign role.\n if (output !== undefined && live.oid !== output.oid) {\n return yield* Effect.fail(\n new PostgresRoleIdentityRefused({\n role: name,\n storedOid: output.oid,\n liveOid: live.oid,\n }),\n );\n }\n const passwordSeal = output?.passwordSeal ?? '';\n const found = { ...live, passwordSeal };\n return yield* ownedRead(\n { fqn, instanceId, output },\n found,\n Effect.succeed(declarationMatches(olds, live)),\n );\n }),\n\n diff: ({ news, output, instanceId }) =>\n Effect.gen(function* () {\n // A `creating` row has no attributes. Mark it unfinished so `--adopt` can resume it\n // (ownership/resume.ts); the engine treats `undefined` as \"defer\".\n if (output === undefined) return yield* noteUnfinished(instanceId);\n if (!isResolved(news)) return undefined;\n const found = yield* withPg((pg) => readRole(pg, output.name));\n return yield* diffPostgresRole(news, output, process.env, { found });\n }),\n\n reconcile: ({ fqn, instanceId, news, output }) =>\n Effect.gen(function* () {\n yield* refuseAtPlan(news);\n return yield* withPg((pg) =>\n Effect.gen(function* () {\n // Alchemy skips the plan probe while a prop is still an Output, and a role can\n // appear between plan and apply. A live role with no state is a takeover: refuse\n // before any ALTER, PASSWORD or REVOKE, unless `--adopt` speaks for this apply.\n const observed = yield* readRole(pg, news.name);\n if (observed !== undefined && output === undefined) {\n yield* refuseTakeover({ fqn, instanceId, output }, 'Postgres.Role');\n }\n return yield* reconcileWithClient(\n pg,\n news,\n process.env,\n output?.passwordSeal,\n output?.oid,\n );\n }),\n );\n }),\n\n delete: ({ output }) =>\n withPg((pg) =>\n Effect.gen(function* () {\n if (output === undefined) return;\n const live = yield* readRole(pg, output.name);\n if (live === undefined) return;\n if (live.oid !== output.oid) {\n return yield* Effect.fail(\n new PostgresRoleIdentityRefused({\n role: output.name,\n storedOid: output.oid,\n liveOid: live.oid,\n }),\n );\n }\n yield* pg.unsafe(buildDropRoleSql(output.name)).pipe(Effect.asVoid);\n }),\n ),\n});\n\nexport const PostgresRoleProvider = () => Provider.succeed(PostgresRole, postgresRoleHandlers);\n",
42
+ "/**\n * SCRAM-SHA-256 password verifier, built client-side the way `psql \\password` and `createuser -w`\n * do (`createuser.c@REL_18_6` → `pg_format scram verifier`). Postgres stores the verifier as-is in\n * `pg_authid.rolpassword` and never recovers the password from it.\n *\n * ⛔ THE PLAIN PASSWORD NEVER ENTERS A STATEMENT. Before this file, `ALTER ROLE … PASSWORD` carried\n * the plain value as a literal, so it landed in the Effect SQL span attribute `db.query.text`,\n * in `pg_stat_statements` (`track_utility=on` records utility statements), and in the server log\n * of any failed `ALTER`. The verifier is the one form Postgres accepts that is not the secret:\n * `PASSWORD 'SCRAM-SHA-256$4096:<salt>$<StoredKey>:<ServerKey>'` (`create_role.sgml`: a string\n * already in SCRAM verifier format is stored as given).\n * ★ WIRE FORMAT AND MATH (`scram_protocols` / RFC 5802 / `auth-scram.c`): salt 16 bytes,\n * iterations 4096 (both Postgres defaults), standard base64. SaltedPassword = PBKDF2-HMAC-SHA-256\n * (password, salt, 4096, 32 bytes); ClientKey = HMAC(SaltedPassword, \"Client Key\"); StoredKey =\n * SHA-256(ClientKey); ServerKey = HMAC(SaltedPassword, \"Server Key\").\n */\nimport { createHash, createHmac, pbkdf2Sync, randomBytes } from 'node:crypto';\n\nconst ITERATIONS = 4096;\nconst SALT_BYTES = 16;\nconst KEY_BYTES = 32;\n\nconst hmac = (key: Buffer, label: string): Buffer =>\n createHmac('sha256', key).update(label, 'utf8').digest();\n\nconst b64 = (value: Buffer): string => value.toString('base64');\n\n/**\n * `SCRAM-SHA-256$4096:<salt>$<StoredKey>:<ServerKey>` for one password. The salt is fresh per\n * call (same as `psql \\password`); tests pass one to make the output deterministic.\n * Callers first run `assertPasswordAscii`: raw non-ASCII may differ from PostgreSQL's\n * SASLprep bytes (https://www.postgresql.org/docs/16/sasl-authentication.html).\n */\nexport const scramSha256Verifier = (password: string, salt?: Buffer): string => {\n const bytes = salt ?? randomBytes(SALT_BYTES);\n const saltedPassword = pbkdf2Sync(password, bytes, ITERATIONS, KEY_BYTES, 'sha256');\n const storedKey = createHash('sha256').update(hmac(saltedPassword, 'Client Key')).digest();\n const serverKey = hmac(saltedPassword, 'Server Key');\n return `SCRAM-SHA-256$${ITERATIONS}:${b64(bytes)}$${b64(storedKey)}:${b64(serverKey)}`;\n};\n",
43
+ "/**\n * `Postgres.Role`'s five lifecycle handlers, wired to `withPg` for anything that touches a\n * client, and the one Layer a consuming stack provides. Split from `role.ts` so the file stays\n * under the house cap: `role.ts` holds reconcile, `role-diff.ts` the plan diff; this file holds\n * only the engine wiring.\n */\nimport * as Provider from 'alchemy/Provider';\nimport { isResolved } from 'alchemy/Diff';\nimport * as Effect from 'effect/Effect';\nimport { ownedRead } from '../ownership/probe.ts';\nimport { noteUnfinished } from '../ownership/resume.ts';\nimport { refuseTakeover } from '../ownership/adopt.ts';\nimport { PostgresRole } from './role.ts';\nimport { readRole, reconcileWithClient, refuseAtPlan } from './role.ts';\nimport { diffPostgresRole } from './role-diff.ts';\nimport { PostgresRoleIdentityRefused } from './role-errors.ts';\nimport { buildDropRoleSql, declarationMatches, storedAttributes } from './role-sql.ts';\nimport { withPg } from './connection.ts';\n\nexport const postgresRoleHandlers = PostgresRole.Provider.of({\n // ⚠️ EMPTY, NOT A LIVE SWEEP: `pg_roles` lists every role on the cluster, most of which nothing\n // declared — the same reasoning `Postgres.Database`'s `list` documents.\n list: () => Effect.succeed([]),\n nuke: { skip: true },\n\n read: ({ fqn, instanceId, olds, output }) =>\n Effect.gen(function* () {\n const name = output?.name ?? olds.name;\n const live = yield* withPg((pg) => readRole(pg, name));\n if (live === undefined) return undefined;\n // A recycled name is not the role state recorded. Failing (rather than `Unowned`) matters\n // because drift strips `Unowned` and would then reconcile the foreign role.\n if (output !== undefined && live.oid !== output.oid) {\n return yield* Effect.fail(\n new PostgresRoleIdentityRefused({\n role: name,\n storedOid: output.oid,\n liveOid: live.oid,\n }),\n );\n }\n const passwordSeal = output?.passwordSeal ?? '';\n // Read and reconcile must expose the same shape to Alchemy's drift comparison.\n const found = { ...storedAttributes(live), passwordSeal };\n return yield* ownedRead(\n { fqn, instanceId, output },\n found,\n Effect.succeed(declarationMatches(olds, live)),\n );\n }),\n\n diff: ({ news, output, instanceId }) =>\n Effect.gen(function* () {\n // A `creating` row has no attributes. Mark it unfinished so `--adopt` can resume it\n // (ownership/resume.ts); the engine treats `undefined` as \"defer\".\n if (output === undefined) return yield* noteUnfinished(instanceId);\n if (!isResolved(news)) return undefined;\n const found = yield* withPg((pg) => readRole(pg, output.name));\n return yield* diffPostgresRole(news, output, process.env, { found });\n }),\n\n reconcile: ({ fqn, instanceId, news, output }) =>\n Effect.gen(function* () {\n yield* refuseAtPlan(news);\n return yield* withPg((pg) =>\n Effect.gen(function* () {\n // Alchemy skips the plan probe while a prop is still an Output, and a role can\n // appear between plan and apply. A live role with no state is a takeover: refuse\n // before any ALTER, PASSWORD or REVOKE, unless `--adopt` speaks for this apply.\n const observed = yield* readRole(pg, news.name);\n if (observed !== undefined && output === undefined) {\n yield* refuseTakeover({ fqn, instanceId, output }, 'Postgres.Role');\n }\n return yield* reconcileWithClient(\n pg,\n news,\n process.env,\n output?.passwordSeal,\n output?.oid,\n );\n }),\n );\n }),\n\n delete: ({ output }) =>\n withPg((pg) =>\n Effect.gen(function* () {\n if (output === undefined) return;\n const live = yield* readRole(pg, output.name);\n if (live === undefined) return;\n if (live.oid !== output.oid) {\n return yield* Effect.fail(\n new PostgresRoleIdentityRefused({\n role: output.name,\n storedOid: output.oid,\n liveOid: live.oid,\n }),\n );\n }\n yield* pg.unsafe(buildDropRoleSql(output.name)).pipe(Effect.asVoid);\n }),\n ),\n});\n\nexport const PostgresRoleProvider = () => Provider.succeed(PostgresRole, postgresRoleHandlers);\n",
44
44
  "/**\n * `read` with no attributes — the plan-time half of \"nothing is adopted without `--adopt`\"\n * (adopt.ts has the apply-time half). Alchemy asks it in two situations and passes `output:\n * undefined` in both (alchemy beta.79 Plan.ts):\n * · THE ADOPTION PROBE — no state row at all; `olds` is the declaration, `instanceId` fresh.\n * · THE RECOVERY READ — a `creating` row whose create was interrupted after its write and before\n * its commit; `olds` is that row's props, `instanceId` the row's. (Apply.ts asks the same for a\n * row it must delete that never recorded attributes.)\n * The answer routes the plan: `undefined` → create; plain attributes → ours; `Unowned(…)` → the\n * plan fails with OwnedBySomeoneElse unless `--adopt` / `adopt(true)` (AdoptPolicy.ts).\n *\n * ⛔ THE PROBE ALWAYS ANSWERS `Unowned` FOR A LIVE OBJECT, EVEN ONE IDENTICAL TO THE DECLARATION\n * (decided 2026-09-21). Identical is not ours: a name another stack, a person or an old script put\n * there reads the same, and once state claims it, a delete under `destroy` removes it from its\n * real owner. 🔴 Measured before the change (openbao/rename-adoption.test.ts): a new logical id\n * for a live Bao name adopted it silently, and the old id's delete then removed it, green.\n * ★ THE RECOVERY READ STILL ADOPTS WHAT THE INTERRUPTED CREATE MADE — the instance is ours by the\n * state row, and the object is proven ours when it matches that row's props (`settled`). One that\n * does not match may have lost a race to someone else: `Unowned`, as Plan.ts itself asks.\n * ⛔ ONLY WHEN THE ROW'S PROPS ARE THE WHOLE DECLARATION (whole.ts). A row written while a prop was\n * still an Output has a hole there, and \"matches\" against a hole proves nothing — nor had that\n * deploy's plan ever asked whose object it was, because Alchemy skips the probe for an Output.\n * Such a create resumes with `--adopt`.\n */\nimport { Unowned } from 'alchemy/AdoptPolicy';\nimport * as Effect from 'effect/Effect';\nimport type { Owner } from './adopt.ts';\nimport { recordedInstance } from './rows.ts';\n\n/**\n * Whether the state store proves the live object this instance's own: a row records `ask.instanceId`\n * with its whole declaration (whole.ts) AND `settled` — the family's own \"live matches these props\"\n * — says so. The one proof ownership/ accepts for a live object state holds no attributes for; the\n * recovery read (`ownedRead`) and an adoption check (adopting.ts) both ask it.\n * ⛔ `settled` NEVER FAILS THE CALLER. The recovery read runs with the INTERRUPTED deploy's props, so\n * a declaration that cannot be evaluated any more (a fragments directory since moved, a group\n * name since renamed) would fail every later plan, the fix included. It reads as \"not proven\n * ours\" instead, with the reason logged.\n */\nexport const provenOurs = <E, R>(\n ask: { readonly fqn: string; readonly instanceId: string },\n settled: Effect.Effect<boolean, E, R>,\n): Effect.Effect<boolean, never, R> =>\n Effect.gen(function* () {\n const recorded = yield* recordedInstance(ask.fqn, ask.instanceId);\n if (recorded === 'absent') return false;\n if (recorded === 'partial') {\n yield* Effect.logWarning(\n `${ask.fqn}: the interrupted create's state row lacks part of the declaration (a prop ` +\n 'was still an Output when it was written), so the live object is not proven ours',\n );\n return false;\n }\n const unproven = (reason: unknown) =>\n Effect.as(\n Effect.logWarning(\n `${ask.fqn}: the interrupted create's object could not be compared with its props ` +\n `(${reason instanceof Error ? reason.message : String(reason)}), so it is not treated as ours`,\n ),\n false,\n );\n return yield* settled.pipe(Effect.catch(unproven), Effect.catchDefect(unproven));\n });\n\n/**\n * A family's `read` answer. With attributes in state it is `found` as is. Without, it is the probe\n * or the recovery read (header): `found` is ours only when `provenOurs` says so, else `Unowned`,\n * which `--adopt` resolves.\n */\nexport const ownedRead = <A extends object, E, R>(\n ask: Owner,\n found: A | undefined,\n settled: Effect.Effect<boolean, E, R>,\n): Effect.Effect<A | undefined, never, R> =>\n Effect.gen(function* () {\n if (found === undefined || ask.output !== undefined) return found;\n return (yield* provenOurs(ask, settled)) ? found : Unowned(found);\n });\n",
45
45
  "/**\n * The questions ownership/ asks of Alchemy's state store: does a row record this instance, and with\n * its whole declaration (probe.ts); is this apply a create rather than a replace's new generation\n * (adopt.ts); and — when reconcile refuses a create — forget the row Apply committed for it\n * (adopt.ts). Alchemy's own AWS.EC2.SecurityGroup provider reads the store the same way: the Stack\n * service names the stack and stage, and `State` yields the store.\n *\n * ⚠️ WITHOUT A STACK OR STATE IN CONTEXT, or with a store that errors, a row reads as \"not\n * recorded\" — the object is then `Unowned`, the safe answer — and nothing is forgotten, which\n * leaves the one gap forgetRefusedCreate exists to close. `alchemy deploy` and the Alchemist\n * session provide both.\n */\nimport { Stack } from 'alchemy/Stack';\nimport { State, type StateService, isActionState } from 'alchemy/State/State';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport { wholeDeclaration } from './whole.ts';\n\ntype Where = { readonly stack: string; readonly stage: string };\n\n/** The store, where this stack lives, and what it declares — or undefined outside a stack. */\nconst storeOf = Effect.gen(function* () {\n const stack = yield* Effect.serviceOption(Stack);\n const state = yield* Effect.serviceOption(State);\n if (Option.isNone(stack) || Option.isNone(state)) return undefined;\n const store: StateService = yield* state.value;\n const where: Where = { stack: stack.value.name, stage: stack.value.stage };\n return { resources: stack.value.resources, store, where };\n});\n\nconst rowAt = (store: StateService, where: Where, fqn: string) =>\n store.get({ ...where, fqn }).pipe(Effect.orElseSucceed(() => undefined));\n\n/** One generation of a persisted row, as far as ownership/ reads it. */\nexport type Generation = {\n readonly instanceId?: unknown;\n readonly status?: unknown;\n readonly props?: unknown;\n readonly attr?: unknown;\n readonly old?: unknown;\n /** Set by Apply on the `updating` row of an adoption, until that update commits (Apply.ts). */\n readonly adopting?: unknown;\n};\n\n/** The generation of a persisted row that carries `instanceId`: the row itself, or one in `old`. */\nconst generationOf = (row: unknown, instanceId: string): Generation | undefined => {\n let at = row;\n while (typeof at === 'object' && at !== null && !isActionState(at as never)) {\n const generation = at as Generation;\n if (generation.instanceId === instanceId) return generation;\n at = generation.old;\n }\n return undefined;\n};\n\n/** The generation `instanceId` names — at the FQN, or at a former FQN `renamedFrom` names. */\nexport const recordedGeneration = (\n fqn: string,\n instanceId: string,\n): Effect.Effect<Generation | undefined> =>\n Effect.gen(function* () {\n const found = yield* storeOf;\n if (found === undefined) return undefined;\n for (const at of [fqn, ...(found.resources[fqn]?.FormerFqns ?? [])]) {\n const generation = generationOf(yield* rowAt(found.store, found.where, at), instanceId);\n if (generation !== undefined) return generation;\n }\n return undefined;\n });\n\n/**\n * What the state store says of `instanceId` for this resource (at its FQN, or at a former FQN its\n * `renamedFrom` names — the planner migrates that row before it recovers it):\n * · `absent` — no row holds it. ★ This is what separates the probe from the recovery read: the\n * probe's instance id is minted for the probe (Plan.ts `generateInstanceId()`), 128 random bits\n * no row can hold.\n * · `partial` — a row holds it, but its props lack part of the declaration: a prop stripped at\n * commit because it was still an Output (whole.ts). Those props cannot prove an object ours.\n * · `whole` — a row holds it with every prop the declaration names.\n */\nexport type Recorded = 'absent' | 'partial' | 'whole';\n\nexport const recordedInstance = (fqn: string, instanceId: string): Effect.Effect<Recorded> =>\n Effect.gen(function* () {\n const generation = yield* recordedGeneration(fqn, instanceId);\n if (generation === undefined) return 'absent';\n return (yield* wholeDeclaration(fqn, generation.props)) ? 'whole' : 'partial';\n });\n\n/**\n * Whether this apply's `instanceId` is a CREATE: the row Apply committed for it is `creating`.\n * ⛔ A REPLACE'S NEW GENERATION IS NOT ONE. Apply commits it as `replacing`, and the planner never\n * offers it adoption — the probe runs only for a resource with no state — so `--adopt` must not\n * let it write over whatever sits at its new identity (adopt.ts adoptsAtApply).\n */\nexport const isCreate = (fqn: string, instanceId: string): Effect.Effect<boolean> =>\n Effect.map(\n recordedGeneration(fqn, instanceId),\n (generation) => generation?.status === 'creating',\n );\n\nconst idOf = (attr: unknown): string | undefined => {\n if (typeof attr !== 'object' || attr === null) return undefined;\n const id = (attr as { readonly id?: unknown }).id;\n return typeof id === 'string' && id !== '' ? id : undefined;\n};\n\n/**\n * `attr.id` on every generation OLDER than `instanceId` in this FQN's state chain (and a former\n * FQN `renamedFrom` names). Walks `old` the way {@link generationOf} does, and skips the current\n * generation itself.\n * ⛔ THOSE IDS ARE NOT THIS GENERATION'S. A `replacing` row's reconcile runs with no attributes, so\n * a live row found by name can be the previous generation's own deployment. Recording that id on\n * the new generation makes both the same id, and `destroy()` then deletes the old generation by\n * it (Apply.ts, the retain check near 2168 and the provider delete that follows when the policy\n * is not `retain`). A same-instance `old` snapshot (an `updating` row) is not one of these.\n */\nexport const olderGenerationIds = (\n fqn: string,\n instanceId: string,\n): Effect.Effect<readonly string[]> =>\n Effect.gen(function* () {\n const found = yield* storeOf;\n if (found === undefined) return [];\n const ids: string[] = [];\n for (const at of [fqn, ...(found.resources[fqn]?.FormerFqns ?? [])]) {\n collectOlder(yield* rowAt(found.store, found.where, at), instanceId, ids);\n }\n return ids;\n });\n\n/**\n * Once `instanceId` has been seen, collect `attr.id` from generations with a DIFFERENT instance\n * id. An `updating` row's `old` is the same instance's pre-update snapshot (Apply.ts), not a\n * replacement generation — that snapshot's id is the row this apply is already writing.\n */\nconst collectOlder = (row: unknown, instanceId: string, ids: string[]): void => {\n let at = row;\n let seen = false;\n while (typeof at === 'object' && at !== null && !isActionState(at as never)) {\n const generation = at as Generation;\n if (!seen) {\n seen = generation.instanceId === instanceId;\n at = generation.old;\n continue;\n }\n if (generation.instanceId !== instanceId) {\n const id = idOf(generation.attr);\n if (id !== undefined) ids.push(id);\n }\n at = generation.old;\n }\n};\n\n/**\n * ⛔ A REFUSED CREATE MUST NOT LEAVE A ROW THAT CLAIMS THE OBJECT IT REFUSED. Apply commits a\n * `creating` row for this instance before it calls reconcile, and a failed reconcile leaves it\n * there. The next plan's recovery read would then find our instance id and an object that can\n * match its props — a prop that was an Output is stripped from the row, and an omitted prop is\n * \"not managed\" — and adopt exactly what this apply refused. 🔴 MEASURED 2026-09-21: Bao.Mount\n * and Bao.AuthMethod did (openbao/adopt-core.test.ts). So the row goes, and state reads as if\n * the create never started: the next plan probes, and the probe answers `Unowned`.\n * ⚠️ ONLY a `creating` row of THIS instance with no attributes — the one Apply just wrote. A\n * `replacing` row carries the previous generation in `old` and is never touched.\n */\nexport const forgetRefusedCreate = (fqn: string, instanceId: string): Effect.Effect<void> =>\n Effect.gen(function* () {\n const found = yield* storeOf;\n if (found === undefined) return;\n const row = yield* rowAt(found.store, found.where, fqn);\n const mine = row as { status?: unknown; instanceId?: unknown; attr?: unknown } | undefined;\n if (mine?.status !== 'creating' || mine.instanceId !== instanceId || mine.attr !== undefined) {\n return;\n }\n yield* found.store.delete({ ...found.where, fqn }).pipe(Effect.ignore);\n });\n",
46
46
  "/**\n * Whether a state row's props say everything the declaration says — the test that separates a row\n * whose props can prove an object ours from one that cannot (probe.ts, rows.ts).\n *\n * ★ WHY A ROW CAN BE MISSING PART OF ITS DECLARATION. Apply commits the `creating` (or `replacing`)\n * row BEFORE reconcile runs, and strips every prop still an Output at that moment (alchemy\n * beta.79 Apply.ts `commit` → Diff.ts `stripUnresolved`); a JSON store then drops the key. So a\n * row written while an upstream was still being created carries a HOLE where that prop was.\n * ⛔ A HOLE IS \"UNKNOWN\", NOT \"UNMANAGED\". Most families read an absent prop as \"not managed\", so a\n * recovery read comparing the live object with holed props proves nothing: 🔴 MEASURED 2026-09-21\n * (openbao/adopt-holes.test.ts), a Bao.Mount whose `defaultLeaseTtl` was an Output, killed before\n * its reconcile ran, adopted — and tuned — another owner's mount on the next deploy; with the\n * NAME an Output, every role family read an empty name, found nothing, and the resumed create\n * wrote over another owner's role. Neither deploy had ever asked whose object it was.\n * ★ THE DECLARATION IS WHAT TELLS A HOLE FROM AN OMISSION. It still holds the Output (or the literal)\n * the row lacks, while an optional prop left out is absent from both.\n * ⚠️ CONSERVATIVE BY DESIGN: a prop added to the declaration after the crash also reads as a hole.\n * That costs one `--adopt`, never a takeover.\n */\nimport { Stack } from 'alchemy/Stack';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nconst absent = (value: unknown): boolean => value === undefined || value === null;\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return false;\n const proto: unknown = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n};\n\n/**\n * Whether `recorded` carries a value everywhere `declared` does. Plain objects and arrays are\n * walked; any other declared value — a literal, an Output, an Effect — needs a value in the row.\n */\nexport const carries = (declared: unknown, recorded: unknown): boolean => {\n if (absent(declared)) return true;\n if (absent(recorded)) return false;\n if (Array.isArray(declared)) {\n if (!Array.isArray(recorded)) return false;\n return declared.every((each, index) => carries(each, recorded[index]));\n }\n if (isPlainObject(declared)) {\n if (!isPlainObject(recorded)) return false;\n return Object.entries(declared).every(([key, each]) => carries(each, recorded[key]));\n }\n return true;\n};\n\n/**\n * Whether `props` — one generation's, from the state store — carry the whole declaration of the\n * resource at `fqn`. ⛔ FALSE WITH NOTHING TO COMPARE: no Stack in context, or a resource no longer\n * declared (an orphan's delete). That object then reads as `Unowned` and Apply leaves it in place\n * with a note, rather than deleting what it cannot prove it made.\n */\nexport const wholeDeclaration = (fqn: string, props: unknown): Effect.Effect<boolean> =>\n Effect.map(Effect.serviceOption(Stack), (stack) => {\n const declared = Option.isSome(stack) ? stack.value.resources[fqn] : undefined;\n return declared !== undefined && carries(declared.Props, props);\n });\n",
47
47
  "/**\n * Whether this apply RESUMES a create or replace the engine already started for this resource AND\n * the live object it will find is proven that generation's own — the one case in which a stateless\n * `reconcile` may write over a live object without `--adopt`.\n *\n * ★ HOW THE ENGINE TELLS US. Alchemy calls `diff` whenever a state row exists, and hands it `output`\n * = that row's attributes (alchemy beta.79 Plan.ts). A row with NO attributes is exactly an\n * unfinished generation: `creating` (a create interrupted after its write, before its commit),\n * `replacing` (the same for a replace), or `deleting` re-driven as a create. A fresh create is\n * never diffed at all. So the diff of such a row decides, and the apply that follows (the same\n * instance id: Apply.ts reuses the row's) finds the note.\n * ⛔ A ROW PROVES NOTHING BY ITSELF (red team, 2026-09-21). Apply commits it BEFORE reconcile runs, so\n * a deploy killed before the claim — an upstream that failed, a Ctrl-C — leaves a row whose create\n * never asked whose object sat at its identity. 🔴 MEASURED (openbao/adopt-holes.test.ts): with the\n * name an Output, the next deploy \"resumed\" that create and wrote over another owner's role, in\n * every family that had a note on the row alone. So the note is left only when the family's own\n * `read`, asked as the recovery read (probe.ts ownedRead: a recorded instance, a row carrying the\n * whole declaration, and a live object that matches it), answers \"ours\". For a `creating` row\n * that is the question Plan.ts already asked; for a `replacing` row it is the only time it is asked.\n * ⚠️ WHY NOT THE STATE STORE ALONE. At reconcile both look the same: Apply commits the fresh create's\n * `creating` row before calling reconcile, so a row with this instance id is always there.\n * ★ THE CHANNEL IS ALCHEMY'S OWN: `Artifacts`, the per-FQN bag the engine shares between one plan\n * and its apply (Artifacts.ts: \"diff computes … create / update reads the same artifact\").\n * Deploy.ts and the Alchemist session both hold one store across the pair.\n * ⚠️ IT FAILS CLOSED. No bag, a bag the plan never wrote, or an object the read cannot prove ours\n * reads as a fresh create, and adopt.ts then asks for `--adopt` — the safe direction.\n * ★ AN UNPROVEN RESUME IS STILL MARKED UNFINISHED (`noteUnfinished`), so `--adopt` can take it over\n * the way Alchemy's own \"Cannot resume creating … Re-run with --adopt\" offers for a create — while\n * a FRESH replace's new generation, which no diff ever saw without attributes, stays unadoptable.\n */\nimport { Unowned } from 'alchemy/AdoptPolicy';\nimport { Artifacts } from 'alchemy/Artifacts';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nconst PROVEN = 'homeflare/ownership/resumes';\nconst UNFINISHED = 'homeflare/ownership/unfinished';\n\nconst note = (key: string, instanceId: string): Effect.Effect<void> =>\n Effect.gen(function* () {\n const bag = yield* Effect.serviceOption(Artifacts);\n if (Option.isSome(bag)) yield* bag.value.set(key, instanceId);\n });\n\nconst noted = (key: string, instanceId: string): Effect.Effect<boolean> =>\n Effect.gen(function* () {\n const bag = yield* Effect.serviceOption(Artifacts);\n if (Option.isNone(bag)) return false;\n return (yield* bag.value.get<string>(key)) === instanceId;\n });\n\n/**\n * `diff`'s note for a row with no attributes: `instanceId` is an unfinished generation of this\n * resource's own, which `--adopt` may resume when nothing proves it (adopt.ts adoptable). Returns\n * `undefined`, a diff's \"defer to the engine\".\n */\nexport const noteUnfinished = (instanceId: string): Effect.Effect<undefined> =>\n Effect.as(note(UNFINISHED, instanceId), undefined);\n\n/**\n * Note `instanceId` unfinished, and a proven resume when `recovered` — the family's `read` of the\n * row's props, asked with no attributes — answers a plain object: ours. `Unowned`, nothing, or a\n * read that fails or dies proves nothing. ⚠️ Never fails the plan: an unproven resume is refused\n * at apply instead, unless `--adopt`.\n */\nexport const noteResume = <R>(\n instanceId: string,\n recovered: Effect.Effect<unknown, unknown, R>,\n): Effect.Effect<void, never, R> =>\n Effect.gen(function* () {\n yield* noteUnfinished(instanceId);\n const unproven = () => Effect.succeed(undefined);\n const found = yield* recovered.pipe(Effect.catch(unproven), Effect.catchDefect(unproven));\n if (found === undefined || found === null || Unowned.is(found)) return;\n yield* note(PROVEN, instanceId);\n });\n\n/** Whether the plan for this apply noted `instanceId` as a proven resumed create or replace. */\nexport const resumes = (instanceId: string): Effect.Effect<boolean> => noted(PROVEN, instanceId);\n\n/** Whether the plan for this apply saw `instanceId` as an unfinished generation (proven or not). */\nexport const unfinished = (instanceId: string): Effect.Effect<boolean> =>\n noted(UNFINISHED, instanceId);\n\n/** The fields of a `read` or `diff` call provingResumes uses; a family's own input carries more. */\ntype Ask = {\n readonly id: string;\n readonly fqn: string;\n readonly instanceId: string;\n readonly olds: unknown;\n readonly output: unknown;\n};\ntype Hook = Effect.Effect<unknown, unknown, unknown>;\n\n/** The two hooks provingResumes wraps, as Alchemy's ProviderService declares them. */\ninterface Resumable {\n read?(input: Ask): Hook;\n diff?(input: Ask): Hook;\n}\n\n/**\n * A provider whose `diff`, for a row with no attributes, first asks the provider's own `read` whether\n * the live object is that unfinished generation's (noteResume), then runs as written. Every Bao.*\n * family is built through it, so their diffs answer such a row with a plain `undefined`.\n */\nexport const provingResumes = <S extends Resumable>(service: S): S => {\n const { diff, read } = service;\n if (diff === undefined || read === undefined) return service;\n const proving: Resumable['diff'] = (input) =>\n Effect.gen(function* () {\n if (input.output === undefined) {\n yield* noteResume(input.instanceId, read({ ...input, output: undefined }));\n }\n return yield* diff(input);\n });\n // ⚠️ The one cast: `diff` keeps the family's own signature — it is the family's diff, run after.\n return { ...service, diff: proving } as S;\n};\n",
48
48
  "/**\n * Whether a live object this stack holds no state for may be written — the apply-time half of the\n * house rule that NOTHING IS ADOPTED WITHOUT `--adopt` (decided 2026-09-21 for HostFile, LaunchdJob,\n * CaddyConfig and every Bao.* family). probe.ts is the plan-time half.\n *\n * ★ FAMILY-NEUTRAL ON PURPOSE. The engine questions here — what `--adopt` resolves to for one FQN,\n * whether this apply resumes the resource's own interrupted create — are the same for a vault\n * role, a launchd plist and a Caddy config, so they live once, outside every subpath's directory.\n */\nimport { AdoptPolicy } from 'alchemy/AdoptPolicy';\nimport { AlchemyContext } from 'alchemy/AlchemyContext';\nimport { Stack } from 'alchemy/Stack';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport { resumes, unfinished } from './resume.ts';\nimport { forgetRefusedCreate, isCreate } from './rows.ts';\n\n/**\n * Whether the resource at `fqn` may be adopted, resolved exactly as the planner resolves it (alchemy\n * beta.79 Plan.ts: `resource.Adopt ?? shouldAdopt`): a resource-scoped `adopt(…)`, else the\n * `AdoptPolicy` service, else `AlchemyContext.adopt`, else off.\n * ★ FOR A CREATE THE ENGINE NEVER PROBED. Alchemy skips the adoption probe while `news` holds an\n * Output, so an ownership check that must still honour `--adopt` can only run at apply. All three\n * reach the apply: Alchemist runs plan AND apply under the session context, which provides the\n * services from the CLI flag and the Stack the resources registered on (Alchemist/Session.ts,\n * routes/stack.ts; Apply.ts reads the same Stack).\n * ⛔ THE RESOURCE-SCOPED SETTING WINS, BOTH WAYS. The engine captures `adopt(…)` on the resource at\n * registration (Resource.ts `Adopt`, into `Stack.resources[fqn]`) and never hands it to a\n * provider. Reading only the deploy-wide flag let `--adopt` take over a resource declared\n * `.pipe(adopt(false))` — which the planner refuses — and refused one declared `adopt(true)`.\n * ⚠️ `resources` carries an `@internal` comment in Alchemy's source, but it is in the published types\n * and the planner reads `Adopt` from it. caddy/adopt-scope.test.ts registers through the real\n * `Resource`, so an upgrade that stops recording it there fails the suite.\n */\nexport const adoptEnabled = (fqn: string): Effect.Effect<boolean> =>\n Effect.gen(function* () {\n const stack = yield* Effect.serviceOption(Stack);\n const scoped = Option.isSome(stack) ? stack.value.resources[fqn]?.Adopt : undefined;\n if (scoped !== undefined) return scoped;\n const policy = yield* Effect.serviceOption(AdoptPolicy);\n if (Option.isSome(policy)) return policy.value;\n const context = yield* Effect.serviceOption(AlchemyContext);\n return Option.isSome(context) ? context.value.adopt : false;\n });\n\n/** The three fields of a `reconcile` (or `read`) call that say whose object this is. */\nexport type Owner = {\n readonly fqn: string;\n readonly instanceId: string;\n /** The attributes state holds; `undefined` on a create. */\n readonly output: unknown;\n};\n\n/**\n * Whether `--adopt` may speak for this apply's generation: a CREATE (rows.ts isCreate), or an\n * UNFINISHED generation whose row this plan's diff saw with no attributes (resume.ts) — the\n * resume Alchemy itself offers `--adopt` for (\"Cannot resume creating … Re-run with --adopt\").\n * ⛔ NOT A FRESH REPLACE'S NEW GENERATION. The planner never probes it and never offers it adoption,\n * so the identity it moves to was never asked about under `--adopt`: 🔴 MEASURED 2026-09-21\n * (launchd/adopt-apply.test.ts), a HostFile whose path changed onto a file it did not own\n * overwrote that file under a deploy-wide `--adopt` meant for something else. A Bao rename onto a\n * taken identity already fails the plan, `--adopt` or not (rename.ts judgeMove); this keeps the\n * apply to the same answer.\n */\nconst adoptable = (owner: Owner): Effect.Effect<boolean> =>\n Effect.gen(function* () {\n if (yield* isCreate(owner.fqn, owner.instanceId)) return true;\n return yield* unfinished(owner.instanceId);\n });\n\n/** Whether a stateless `reconcile` may take over a live object: adoption on, for an adoptable one. */\nexport const adoptsAtApply = (owner: Owner): Effect.Effect<boolean> =>\n Effect.gen(function* () {\n if (!(yield* adoptEnabled(owner.fqn))) return false;\n return yield* adoptable(owner);\n });\n\n/** A lifecycle helper's hook for refuseTakeover, bound to one call's Owner: `(what) => …`. */\nexport type Claim = (what: string) => Effect.Effect<void>;\n\n/**\n * `reconcile`'s check, called with the live object it found BEFORE any write: dies unless that\n * object may be written. It may when state already vouches for it (`output`), when this apply\n * resumes the resource's own interrupted create or replace and its diff proved the object that\n * generation's (resume.ts), or when adoption is on for a create or an unfinished generation\n * (adoptable).\n * ⛔ WHY IT EXISTS AT ALL: THE PROBE DOES NOT GUARD EVERY CREATE. Alchemy skips it while `news` holds\n * an Output (Plan.ts), a new generation of a replace is never probed, and an object can appear\n * between plan and apply. Each of those used to be a silent takeover: written over, then recorded\n * as ours, and deleted with the stack under `destroy`.\n * ⚠️ A CHECK, THEN A WRITE — NOT A LOCK. Two creates of one name in the same deploy run\n * concurrently, both read nothing, and both write (measured with the fakes, 2026-09-21). Nothing\n * between a read and a write can close that; declare each name once.\n * ⚠️ AN IDENTICAL OBJECT IS STILL A TAKEOVER (decided 2026-09-21). Nothing would be written, but the\n * state row would claim it, and a later delete would remove what another owner still relies on.\n * ⛔ A REFUSED CREATE FORGETS ITS `creating` ROW (rows.ts forgetRefusedCreate), or the next plan's\n * recovery read would adopt the very object this refused.\n */\nexport const refuseTakeover = (owner: Owner, what: string): Effect.Effect<void> =>\n Effect.gen(function* () {\n if (owner.output !== undefined) return;\n if (yield* resumes(owner.instanceId)) return;\n const may = yield* adoptable(owner);\n if (may && (yield* adoptEnabled(owner.fqn))) return;\n yield* forgetRefusedCreate(owner.fqn, owner.instanceId);\n const remedy = may\n ? 'Deploy with --adopt (or wrap the resource in adopt(true)) to take it over, or remove it first.'\n : 'It is the new identity of a replace, which --adopt does not cover: remove it first.';\n return yield* Effect.die(\n new Error(\n `${what}: already exists, and this stack holds no state for it — the plan could not ask ` +\n 'first (a prop was still an Output, a replace moved onto it, or it appeared after the ' +\n `plan). Nothing was written. ${remedy}`,\n ),\n );\n });\n\n/** refuseTakeover bound to one call's Owner, for a lifecycle helper that finds the live object. */\nexport const claimFor =\n (owner: Owner): Claim =>\n (what) =>\n refuseTakeover(owner, what);\n",
49
- "/**\n * Plan diff for `Postgres.Role`.\n *\n * ⛔ THE ENGINE PASSES STORED ATTRIBUTES, NOT A CATALOG READ. `Plan.ts` (alchemy beta.79,\n * the `provider.diff` call that sets `output: oldState.attr`) hands `diff` whatever reconcile\n * last stored. `storedAttributes` strips `memberships`, so a name-matched `memberOf` looks\n * idle even when the live row is `WITH ADMIN` or still at the `SET TRUE` default. The provider\n * reads the role and passes it as `observation`. Offline tests omit `observation` and compare\n * the stored parent names only.\n */\nimport { isResolved } from 'alchemy/Diff';\nimport type { Input } from 'alchemy/Input';\nimport * as Effect from 'effect/Effect';\nimport type { Environment } from '../secrets/write-only.ts';\nimport type { PostgresRoleAttributes, PostgresRoleProps } from './role-attrs.ts';\nimport {\n PostgresRoleIdentityRefused,\n type PostgresRoleNameRefused,\n PostgresRoleRenameRefused,\n type PostgresRoleValidUntilRefused,\n} from './role-errors.ts';\nimport { membershipDrift, unsafeMemberships } from './role-membership-sql.ts';\nimport { passwordMatchesSeal, resolvePassword } from './role-secrets.ts';\nimport { scalarDrift } from './role-sql.ts';\nimport { refuseAtPlan } from './role.ts';\n\n/** A catalog read the provider performed for this diff. `found: undefined` means the name is\n * absent. Omitting the argument means no catalog read (the offline comparison). */\nexport interface RoleObservation {\n readonly found: Omit<PostgresRoleAttributes, 'passwordSeal'> | undefined;\n}\n\n/**\n * `news` against stored `output`, plus a live row when the provider has one. A rename is a\n * plan-time refusal; so are an over-long name and an unusable `validUntil`. An oid that is not\n * the stored one is refused — the name was recreated out of band. Every other change answers\n * `update`. `delete` is a real drop here, so `diff` never answers `replace`.\n */\nexport const diffPostgresRole = (\n news: Input<PostgresRoleProps>,\n output: PostgresRoleAttributes | undefined,\n env: Environment = process.env,\n observation?: RoleObservation,\n): Effect.Effect<\n { readonly action: 'update' } | { readonly action: 'noop' } | undefined,\n | PostgresRoleRenameRefused\n | PostgresRoleNameRefused\n | PostgresRoleValidUntilRefused\n | PostgresRoleIdentityRefused\n> =>\n Effect.gen(function* () {\n if (output === undefined || !isResolved(news)) return undefined;\n if (news.name !== output.name) {\n return yield* Effect.fail(\n new PostgresRoleRenameRefused({ from: output.name, to: news.name }),\n );\n }\n yield* refuseAtPlan(news);\n const live = observation?.found;\n if (live !== undefined && live.oid !== output.oid) {\n return yield* Effect.fail(\n new PostgresRoleIdentityRefused({\n role: output.name,\n storedOid: output.oid,\n liveOid: live.oid,\n }),\n );\n }\n const compared = live ?? output;\n const scalars = scalarDrift(news, compared);\n // Option rows live only on the catalog read. Stored `memberships` is stripped before it\n // reaches the engine, so it is not consulted here.\n const membership = membershipDrift(\n news.memberOf,\n compared.memberOf ?? [],\n live === undefined ? new Set() : unsafeMemberships(live),\n );\n const resolved = resolvePassword(news, env);\n const passwordStale =\n resolved.value !== undefined && !passwordMatchesSeal(resolved.value, output.passwordSeal);\n const absent = observation !== undefined && live === undefined;\n const changed =\n absent ||\n scalars.length > 0 ||\n membership.grants.length > 0 ||\n membership.revokes.length > 0 ||\n passwordStale;\n return changed ? ({ action: 'update' } as const) : ({ action: 'noop' } as const);\n });\n",
49
+ "/**\n * Plan diff for `Postgres.Role`.\n *\n * ⛔ THE ENGINE PASSES STORED ATTRIBUTES, NOT A CATALOG READ. `Plan.ts` (alchemy beta.79,\n * the `provider.diff` call that sets `output: oldState.attr`) hands `diff` whatever reconcile\n * last stored. `storedAttributes` strips `memberships`, so a name-matched `memberOf` looks\n * idle even when the live row is `WITH ADMIN` or still at the `SET TRUE` default. The provider\n * reads the role and passes it as `observation`. Offline tests omit `observation` and compare\n * the stored parent names only.\n */\nimport { isResolved } from 'alchemy/Diff';\nimport type { Input } from 'alchemy/Input';\nimport * as Effect from 'effect/Effect';\nimport type { Environment } from '../secrets/write-only.ts';\nimport type { PostgresRoleAttributes, PostgresRoleProps } from './role-attrs.ts';\nimport {\n PostgresRoleIdentityRefused,\n type PostgresRoleNameRefused,\n type PostgresRolePasswordNonAsciiRefused,\n PostgresRoleRenameRefused,\n type PostgresRoleValidUntilRefused,\n} from './role-errors.ts';\nimport { membershipDrift, unsafeMemberships } from './role-membership-sql.ts';\nimport { assertPasswordAscii, passwordMatchesSeal, resolvePassword } from './role-secrets.ts';\nimport { privilegedFlags, scalarDrift } from './role-sql.ts';\nimport { refuseAtPlan } from './role.ts';\n\n/** A catalog read the provider performed for this diff. `found: undefined` means the name is\n * absent. Omitting the argument means no catalog read (the offline comparison). */\nexport interface RoleObservation {\n readonly found: Omit<PostgresRoleAttributes, 'passwordSeal'> | undefined;\n}\n\n/**\n * `news` against stored `output`, plus a live row when the provider has one. A rename is a\n * plan-time refusal; so are an over-long name and an unusable `validUntil`. An oid that is not\n * the stored one is refused — the name was recreated out of band. Every other change answers\n * `update`. `delete` is a real drop here, so `diff` never answers `replace`.\n */\nexport const diffPostgresRole = (\n news: Input<PostgresRoleProps>,\n output: PostgresRoleAttributes | undefined,\n env: Environment = process.env,\n observation?: RoleObservation,\n): Effect.Effect<\n { readonly action: 'update' } | { readonly action: 'noop' } | undefined,\n | PostgresRoleRenameRefused\n | PostgresRoleNameRefused\n | PostgresRoleValidUntilRefused\n | PostgresRoleIdentityRefused\n | PostgresRolePasswordNonAsciiRefused\n> =>\n Effect.gen(function* () {\n if (output === undefined || !isResolved(news)) return undefined;\n if (news.name !== output.name) {\n return yield* Effect.fail(\n new PostgresRoleRenameRefused({ from: output.name, to: news.name }),\n );\n }\n yield* refuseAtPlan(news);\n const live = observation?.found;\n if (live !== undefined && live.oid !== output.oid) {\n return yield* Effect.fail(\n new PostgresRoleIdentityRefused({\n role: output.name,\n storedOid: output.oid,\n liveOid: live.oid,\n }),\n );\n }\n const compared = live ?? output;\n const scalars = scalarDrift(news, compared);\n // Option rows live only on the catalog read. Stored `memberships` is stripped before it\n // reaches the engine, so it is not consulted here.\n const membership = membershipDrift(\n news.memberOf,\n compared.memberOf ?? [],\n live === undefined ? new Set() : unsafeMemberships(live, news.inherit),\n );\n const resolved = resolvePassword(news, env);\n yield* assertPasswordAscii(news.name, resolved);\n const passwordStale =\n resolved.value !== undefined && !passwordMatchesSeal(resolved.value, output.passwordSeal);\n const absent = observation !== undefined && live === undefined;\n const changed =\n absent ||\n privilegedFlags(compared).length > 0 ||\n scalars.length > 0 ||\n membership.grants.length > 0 ||\n membership.revokes.length > 0 ||\n passwordStale;\n return changed ? ({ action: 'update' } as const) : ({ action: 'noop' } as const);\n });\n",
50
50
  "/**\n * `Postgres.*` providers, pre-wired for one cluster:\n *\n * const providers = postgresProviders({ host: '/var/run/postgresql', database: 'postgres', username: 'tim' });\n *\n * ★ THE CLUSTER IS THE PARAMETER, NOT A DEFAULT (S15, `docs/postgres.md#path`). This kit is\n * PUBLIC; mini's socket directory, user and port are the CONSUMING stack's values,\n * never baked in here. A stack with more than one cluster calls this once per cluster and merges\n * the results under whatever logical grouping it wants.\n */\nimport * as Layer from 'effect/Layer';\nimport {\n type PostgresConnectionConfig,\n type PostgresRunnerConfig,\n postgresConnection,\n postgresRunnerConnection,\n} from './connection.ts';\nimport { PostgresDatabaseProvider } from './database.ts';\nimport { PostgresGrantsProvider } from './grants.ts';\nimport { PostgresRoleProvider } from './role-provider.ts';\nimport { PostgresSchemaProvider } from './schema.ts';\n\n// ⚠️ `Layer.provideMerge`, NEVER plain `Layer.provide`: the handlers' `withPg` reads\n// `PostgresConnection` when the ENGINE later calls `read`/`reconcile`, and plain `provide`\n// seals it away (\"Service not found: Postgres.Connection\" — measured for `caddyProviders`,\n// see `caddy/providers.ts`). Each resource provider merges its own connection in; the three\n// results are merged per resource (`Layer.mergeAll`, the same shape `unifi/providers.ts`).\nexport const postgresProviders = (config: PostgresConnectionConfig) =>\n Layer.mergeAll(\n PostgresDatabaseProvider().pipe(Layer.provideMerge(postgresConnection(config))),\n PostgresSchemaProvider().pipe(Layer.provideMerge(postgresConnection(config))),\n PostgresGrantsProvider().pipe(Layer.provideMerge(postgresConnection(config))),\n );\n\n/** The same providers over a command runner (`psql-executor.ts`) — for loopback-only clusters. */\nexport const postgresRunnerProviders = (config: PostgresRunnerConfig) =>\n Layer.mergeAll(\n PostgresDatabaseProvider().pipe(Layer.provideMerge(postgresRunnerConnection(config))),\n PostgresSchemaProvider().pipe(Layer.provideMerge(postgresRunnerConnection(config))),\n PostgresGrantsProvider().pipe(Layer.provideMerge(postgresRunnerConnection(config))),\n );\n\n/**\n * `Postgres.Role`'s provider, over the same socket transport and the same cluster parameter.\n *\n * const providers = postgresRoleProviders({ host: '/opt/homeflare/postgres/sockets', database: 'postgres', username: 'tim' });\n */\nexport const postgresRoleProviders = (config: PostgresConnectionConfig) =>\n PostgresRoleProvider().pipe(Layer.provideMerge(postgresConnection(config)));\n\n/** `Postgres.Role` over a command runner (`psql-executor.ts`) — for loopback-only clusters. */\nexport const postgresRoleRunnerProviders = (config: PostgresRunnerConfig) =>\n PostgresRoleProvider().pipe(Layer.provideMerge(postgresRunnerConnection(config)));\n"
51
51
  ],
52
- "mappings": "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",
53
- "debugId": "C4337C797D2364A164756E2164756E21",
52
+ "mappings": "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",
53
+ "debugId": "584CB763916085BE64756E2164756E21",
54
54
  "names": []
55
55
  }