Skip to content

fix(ci): make the CI workflow actually pass on a fresh checkout #136

fix(ci): make the CI workflow actually pass on a fresh checkout

fix(ci): make the CI workflow actually pass on a fresh checkout #136

Triggered via push August 31, 2026 09:16
Status Failure
Total duration 4m 22s
Artifacts 1

ci.yml

on: push
Matrix: rust
Fit to window
Zoom out
Zoom in

Annotations

12 errors and 10 warnings
sbom
Process completed with exit code 254.
src/store/postgres-rls.test.ts > Tenant isolation under the restricted runtime role (integration — requires DATABASE_URL + RUNTIME_DATABASE_URL) > the runtime role cannot DELETE audit_log rows (P1: immutable audit ingestion — migrations/013): server/src/store/postgres-rls.test.ts#L66
error: deadlock detected ❯ node_modules/pg-pool/index.js:45:11 ❯ src/store/postgres-rls.test.ts:66:13 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 314, severity: 'ERROR', code: '40P01', detail: 'Process 122 waits for AccessExclusiveLock on relation 16447 of database 16384; blocked by process 121.\nProcess 121 waits for RowShareLock on relation 16398 of database 16384; blocked by process 122.', hint: 'See server log for query details.', position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, dataType: undefined, constraint: undefined, file: 'deadlock.c', routine: 'DeadLockReport' }
src/store/postgres-idempotency-store.test.ts > PostgresIdempotencyStore (integration — requires DATABASE_URL) > returns a put record verbatim, including a JSONB response body: server/src/store/postgres-idempotency-store.ts#L57
error: deadlock detected ❯ node_modules/pg/lib/client.js:694:17 ❯ PostgresIdempotencyStore.put src/store/postgres-idempotency-store.ts:57:9 ❯ src/store/postgres-idempotency-store.test.ts:43:9 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 314, severity: 'ERROR', code: '40P01', detail: 'Process 167 waits for RowShareLock on relation 16398 of database 16384; blocked by process 164.\nProcess 164 waits for AccessExclusiveLock on relation 16516 of database 16384; blocked by process 167.', hint: 'See server log for query details.', position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, dataType: undefined, constraint: undefined, file: 'deadlock.c', routine: 'DeadLockReport' }
src/store/postgres-compute-control-store.test.ts > PostgresComputeControlStore (integration — requires DATABASE_URL) > the SECURITY DEFINER maintenance functions actually run: stale nodes go offline, expired leases requeue their request: server/src/store/postgres-compute-control-store.ts#L149
ZodError: [ { "origin": "string", "code": "invalid_format", "format": "datetime", "pattern": "/^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$/", "path": [ "updatedAt" ], "message": "Invalid ISO datetime" } ] ❯ src/store/postgres-compute-control-store.ts:149:341 ❯ PostgresComputeControlStore.tenantTx src/store/postgres-compute-control-store.ts:39:27 ❯ src/store/postgres-compute-control-store.test.ts:133:17 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { _zod: { def: [ { origin: 'string', code: 'invalid_format', format: 'datetime', pattern: '/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$/', path: [ 'updatedAt' ], message: 'Invalid ISO datetime' } ], constr: 'Function<ZodError>', traits: { constructor: 'Function<Set>', has: 'Function<has>', add: 'Function<add>', delete: 'Function<delete>', clear: 'Function<clear>', entries: 'Function<entries>', forEach: 'Function<forEach>', size: 2, values: 'Function<values>', keys: 'Function<values>', union: 'Function<union>', intersection: 'Function<intersection>', difference: 'Function<difference>', symmetricDifference: 'Function<symmetricDifference>', isSubsetOf: 'Function<isSubsetOf>', isSupersetOf: 'Function<isSupersetOf>', isDisjointFrom: 'Function<isDisjointFrom>' }, deferred: [] }, issues: [ { origin: 'string', code: 'invalid_format', format: 'datetime', pattern: '/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$/', path: [ 'updatedAt' ], message: 'Invalid ISO datetime' } ], format: 'Function<value>', flatten: 'Function<value>', addIssue: 'Function<value>', addIssues: 'Function<value>', isEmpty: false }
src/store/postgres-compute-control-store.test.ts > PostgresComputeControlStore (integration — requires DATABASE_URL) > real fencing tokens: a stale token is rejected by acknowledge/renew/release even though the lease itself is valid: server/src/store/postgres-compute-control-store.ts#L60
error: insert or update on table "compute_nodes" violates foreign key constraint "compute_nodes_organization_id_fkey" ❯ node_modules/pg/lib/client.js:694:17 ❯ src/store/postgres-compute-control-store.ts:60:13 ❯ PostgresComputeControlStore.tenantTx src/store/postgres-compute-control-store.ts:39:27 ❯ src/store/postgres-compute-control-store.test.ts:99:9 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 341, severity: 'ERROR', code: '23503', detail: 'Key (organization_id)=(b2c27e23-6bbb-4742-8bb0-04c5b697181f) is not present in table "organizations".', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'compute_nodes', dataType: undefined, constraint: 'compute_nodes_organization_id_fkey', file: 'ri_triggers.c', routine: 'ri_ReportViolation' }
src/store/postgres-compute-control-store.test.ts > PostgresComputeControlStore (integration — requires DATABASE_URL) > enforces RLS tenant isolation — a node registered for org A is invisible when queried as org B: server/src/store/postgres-compute-control-store.ts#L60
error: deadlock detected ❯ node_modules/pg/lib/client.js:694:17 ❯ src/store/postgres-compute-control-store.ts:60:13 ❯ PostgresComputeControlStore.tenantTx src/store/postgres-compute-control-store.ts:39:27 ❯ src/store/postgres-compute-control-store.test.ts:62:9 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 314, severity: 'ERROR', code: '40P01', detail: 'Process 154 waits for RowShareLock on relation 16398 of database 16384; blocked by process 155.\nProcess 155 waits for AccessExclusiveLock on relation 16972 of database 16384; blocked by process 154.', hint: 'See server log for query details.', position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, dataType: undefined, constraint: undefined, file: 'deadlock.c', routine: 'DeadLockReport' }
src/store/postgres-case-store.test.ts > PostgresCaseStore (integration — requires DATABASE_URL) > deleteOne returns notFound for an id that was never created: server/src/store/postgres-case-store.test.ts#L44
error: deadlock detected ❯ node_modules/pg-pool/index.js:45:11 ❯ src/store/postgres-case-store.test.ts:44:9 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 314, severity: 'ERROR', code: '40P01', detail: 'Process 146 waits for AccessExclusiveLock on relation 16447 of database 16384; blocked by process 135.\nProcess 135 waits for RowShareLock on relation 16398 of database 16384; blocked by process 146.', hint: 'See server log for query details.', position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, dataType: undefined, constraint: undefined, file: 'deadlock.c', routine: 'DeadLockReport' }
src/store/postgres-case-store.test.ts > PostgresCaseStore (integration — requires DATABASE_URL) > version numbers are per-organization and never reused after a delete: server/src/store/postgres-case-store.test.ts#L44
error: deadlock detected ❯ node_modules/pg-pool/index.js:45:11 ❯ src/store/postgres-case-store.test.ts:44:9 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 314, severity: 'ERROR', code: '40P01', detail: 'Process 136 waits for AccessExclusiveLock on relation 16447 of database 16384; blocked by process 135.\nProcess 135 waits for RowShareLock on relation 16398 of database 16384; blocked by process 136.', hint: 'See server log for query details.', position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, dataType: undefined, constraint: undefined, file: 'deadlock.c', routine: 'DeadLockReport' }
src/store/postgres-case-store.test.ts > PostgresCaseStore (integration — requires DATABASE_URL) > writeOne with a matching expectedVersion updates the case and bumps the version: server/src/store/postgres-case-store.test.ts#L46
error: Unknown organization ❯ node_modules/pg-pool/index.js:45:11 ❯ src/store/postgres-case-store.test.ts:46:9 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 156, severity: 'ERROR', code: 'P0001', detail: undefined, hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: 'PL/pgSQL function provision_tenant_clinical_schema(uuid) line 6 at RAISE', schema: undefined, table: undefined, dataType: undefined, constraint: undefined, file: 'pl_exec.c', routine: 'exec_stmt_raise' }
src/store/postgres-case-store.test.ts > PostgresCaseStore (integration — requires DATABASE_URL) > writeOne rejects a create when the id already exists (expectedVersion: null but a row is present): server/src/store/postgres-case-store.test.ts#L44
error: deadlock detected ❯ node_modules/pg-pool/index.js:45:11 ❯ src/store/postgres-case-store.test.ts:44:9 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 417, severity: 'ERROR', code: '40P01', detail: 'Process 123 waits for AccessExclusiveLock on relation 16398 of database 16384; blocked by process 122.\nProcess 122 waits for AccessExclusiveLock on relation 16447 of database 16384; blocked by process 121.\nProcess 121 waits for RowShareLock on relation 16398 of database 16384; blocked by process 123.', hint: 'See server log for query details.', position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, dataType: undefined, constraint: undefined, file: 'deadlock.c', routine: 'DeadLockReport' }
src/store/postgres-case-migration-store.test.ts > PostgresCaseMigrationStore (integration — requires DATABASE_URL) > audit log (see store/audit-store.ts's doc comment) > records an audit row for each migration lifecycle action: server/src/store/postgres-case-migration-store.test.ts#L144
AssertionError: expected [ 'caseMigration.rollback' ] to deeply equal [ 'caseMigration.start', …(4) ] - Expected + Received [ - "caseMigration.start", - "caseMigration.upload", - "caseMigration.validate", - "caseMigration.activate", "caseMigration.rollback", ] ❯ src/store/postgres-case-migration-store.test.ts:144:72
e2e
Process completed with exit code 1.
admin-console
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@11d5960a326750d5838078e36cf38b85af677262, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
security
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@11d5960a326750d5838078e36cf38b85af677262, actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
sbom
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@11d5960a326750d5838078e36cf38b85af677262, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
python-recommender
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@11d5960a326750d5838078e36cf38b85af677262, actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
rust (ubuntu-latest)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830, actions/checkout@11d5960a326750d5838078e36cf38b85af677262, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
server
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@11d5960a326750d5838078e36cf38b85af677262, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
rust (macos-latest)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830, actions/checkout@11d5960a326750d5838078e36cf38b85af677262, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@11d5960a326750d5838078e36cf38b85af677262, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
rust (windows-latest)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830, actions/checkout@11d5960a326750d5838078e36cf38b85af677262, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
e2e
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@11d5960a326750d5838078e36cf38b85af677262, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/

Artifacts

Produced during runtime
Name Size Digest
playwright-report Expired
3.83 MB
sha256:8a2e17d4fd45c0526ac5f18dcc9ead961145882d293cbe85ceb18b4c2fa6cf77