gencow 0.1.210 → 0.1.211

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.
@@ -36,6 +36,10 @@ function projectSchemaSourcePaths({
36
36
  const missing = declared.filter((pathValue) => !existsSyncImpl(pathValue));
37
37
  if (missing.length > 0) throw new Error("Configured schema source is missing from the project");
38
38
  }
39
+ // An explicit schema list is the customer's immutable migration contract.
40
+ // Deploy codegen may materialize a compatibility auth schema later in the
41
+ // same workspace; it must not silently widen that declared contract.
42
+ if (config?.schema) return declared.filter((pathValue) => existsSyncImpl(pathValue));
39
43
  return resolveDrizzleSchemaPaths(config ?? { rootDir: backendDir }, {
40
44
  cwd,
41
45
  existsSyncImpl,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gencow",
3
- "version": "0.1.210",
3
+ "version": "0.1.211",
4
4
  "description": "Gencow — AI Backend Engine",
5
5
  "type": "module",
6
6
  "bin": {
@@ -34,8 +34,8 @@
34
34
  "@types/node": "^25.9.5",
35
35
  "better-auth": "^1.6.23",
36
36
  "@gencow/core": "0.1.43",
37
- "@gencow/client": "0.2.6",
38
- "@gencow/react": "0.2.6"
37
+ "@gencow/react": "0.2.6",
38
+ "@gencow/client": "0.2.6"
39
39
  },
40
40
  "scripts": {
41
41
  "prebuild": "pnpm --filter @gencow/migration-contract run build && pnpm --filter @gencow/server run build",
@@ -9660,7 +9660,13 @@ var init_deployment_executor_authority_contract = __esm({
9660
9660
  objectAuthority("app_runtime_activity_state", ["SELECT", "INSERT", "UPDATE"]),
9661
9661
  objectAuthority("app_runtime_activity_observers", ["SELECT", "INSERT", "UPDATE", "DELETE"]),
9662
9662
  objectAuthority("app_runtime_activity_leases", ["SELECT", "INSERT", "UPDATE", "DELETE"]),
9663
- objectAuthority("runtime_drain_requests", ["SELECT"]),
9663
+ // runtime_stop_intents is owned by the public runtime role and references a
9664
+ // drain request. PostgreSQL's FK check takes a KEY SHARE lock, which needs
9665
+ // UPDATE authority on one referenced column. Constrain that capability to
9666
+ // the immutable drain-request identity.
9667
+ objectAuthority("runtime_drain_requests", ["SELECT"], {
9668
+ columnPrivileges: [{ columns: ["id"], privileges: ["UPDATE"] }]
9669
+ }),
9664
9670
  // The public Platform owns node heartbeat, readiness, capacity admission,
9665
9671
  // and authenticated node administration. These are system-plane data
9666
9672
  // mutations, not lifecycle execution authority.
@@ -185372,7 +185378,8 @@ function fleetSelection() {
185372
185378
  return {
185373
185379
  ...bindingSelection(),
185374
185380
  authorityMode: appRuntimeDesiredState.authorityMode,
185375
- desiredRuntimeState: appRuntimeDesiredState.desiredRuntimeState
185381
+ desiredRuntimeState: appRuntimeDesiredState.desiredRuntimeState,
185382
+ hasBackend: apps.hasBackend
185376
185383
  };
185377
185384
  }
185378
185385
  function queryBindingRows(db) {
@@ -185424,6 +185431,7 @@ function fleetAuthorityDigest(rows4) {
185424
185431
  row.appId,
185425
185432
  row.appName,
185426
185433
  row.authorityMode,
185434
+ row.hasBackend,
185427
185435
  row.desiredActivationId,
185428
185436
  row.desiredRuntimeState,
185429
185437
  row.desiredActivationEpoch,
@@ -185483,7 +185491,7 @@ async function loadCanonicalTenantRouteFleetSnapshot(input) {
185483
185491
  const removalTargets = [];
185484
185492
  for (const appRows of grouped.values()) {
185485
185493
  const desired = appRows[0];
185486
- if (desired.desiredRuntimeState === "serving" && desired.desiredNodeId === input.nodeId) {
185494
+ if (desired.hasBackend && desired.desiredRuntimeState === "serving" && desired.desiredNodeId === input.nodeId) {
185487
185495
  const joinedRows = appRows.filter((row) => row.instanceId !== null);
185488
185496
  try {
185489
185497
  bindings.push(bindingFromRows(joinedRows));
@@ -401291,7 +401299,7 @@ function requestLocalHealth(url2, init) {
401291
401299
  },
401292
401300
  (response) => {
401293
401301
  const status = response.statusCode ?? 0;
401294
- response.once("end", () => resolve115({ ok: status >= 200 && status < 300 }));
401302
+ resolve115({ ok: status >= 200 && status < 300 });
401295
401303
  response.resume();
401296
401304
  }
401297
401305
  );