fix(ci): make the CI workflow actually pass on a fresh checkout #136
ci.yml
on: push
test
2m 33s
server
1m 18s
admin-console
32s
e2e
4m 19s
sbom
50s
security
40s
python-recommender
52s
Matrix: rust
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
|
|