feat(cluster-server): add durable PostgreSQL public gateway ledger #618
ci.yml
on: pull_request
changes
12s
Matrix: official-omp-gate0
legacy-bridge-continuity
7m 57s
cluster
1m 0s
tooling
5m 30s
android-debug
1m 55s
flutter
2m 25s
flutter-android
6m 37s
flutter-apple
8m 43s
verify
3s
Annotations
18 errors and 13 warnings
|
core
Process completed with exit code 1.
|
|
core
Type 'string' is not assignable to type '{ authorized: boolean; available: boolean; deprecation?: { message: string; replacement?: string | undefined; sinceVersion?: string | undefined; sunsetAt?: string | undefined; } | undefined; enabled: boolean; supported: boolean; }'.
|
|
core
Type 'string' is not assignable to type '{ authorized: boolean; available: boolean; deprecation?: { message: string; replacement?: string | undefined; sinceVersion?: string | undefined; sunsetAt?: string | undefined; } | undefined; enabled: boolean; supported: boolean; }'.
|
|
core
Type 'string' is not assignable to type '{ authorized: boolean; available: boolean; deprecation?: { message: string; replacement?: string | undefined; sinceVersion?: string | undefined; sunsetAt?: string | undefined; } | undefined; enabled: boolean; supported: boolean; }'.
|
|
core
Type 'string' is not assignable to type '{ authorized: boolean; available: boolean; deprecation?: { message: string; replacement?: string | undefined; sinceVersion?: string | undefined; sunsetAt?: string | undefined; } | undefined; enabled: boolean; supported: boolean; }'.
|
|
core
Type 'string' is not assignable to type '{ authorized: boolean; available: boolean; deprecation?: { message: string; replacement?: string | undefined; sinceVersion?: string | undefined; sunsetAt?: string | undefined; } | undefined; enabled: boolean; supported: boolean; }'.
|
|
core
Type 'string' is not assignable to type '{ authorized: boolean; available: boolean; deprecation?: { message: string; replacement?: string | undefined; sinceVersion?: string | undefined; sunsetAt?: string | undefined; } | undefined; enabled: boolean; supported: boolean; }'.
|
|
test/durable-gateway-postgres.test.ts > PostgreSQL-backed public T4 API v1 > case-folds lowercase and mixed-case Bearer schemes without altering mixed-case credential bytes:
packages/cluster-server/test/durable-gateway-postgres.test.ts#L836
AssertionError: expected 401 to be 200 // Object.is equality
- Expected
+ Received
- 200
+ 401
❯ test/durable-gateway-postgres.test.ts:836:28
|
|
test/durable-gateway-postgres.test.ts > PostgreSQL-backed public T4 API v1 > reclaims a same-owner claim only after the named stale-apply deadline and immediately fences the abandoned claim:
packages/cluster-server/test/durable-gateway-postgres.test.ts#L820
AssertionError: expected undefined to be 1n // Object.is equality
- Expected:
1n
+ Received:
undefined
❯ test/durable-gateway-postgres.test.ts:820:31
|
|
test/durable-gateway-postgres.test.ts > PostgreSQL-backed public T4 API v1 > rejects claimed outbox rows with null or empty owners and nonpositive owner epochs at the table boundary:
packages/cluster-server/test/durable-gateway-postgres.test.ts#L709
AssertionError: promise resolved "[ , count: 1, command: 'UPDATE', …(2) ]" instead of rejecting
- Expected:
Error {
"message": "rejected promise",
}
+ Received:
[]
❯ test/durable-gateway-postgres.test.ts:709:157
|
|
test/durable-gateway-postgres.test.ts > PostgreSQL-backed public T4 API v1 > rejects forged acknowledge claims unless command, kind, and target match the locked outbox row:
packages/cluster-server/test/durable-gateway-postgres.test.ts#L691
AssertionError: expected true to be false // Object.is equality
- Expected
+ Received
- false
+ true
❯ test/durable-gateway-postgres.test.ts:691:82
|
|
test/kubernetes-client.test.ts > Kubernetes legacy annotation reconciliation > reconciles legacy full command payload annotations on untouched listed sessions:
packages/cluster-server/test/kubernetes-client.test.ts#L703
AssertionError: expected [] to have a length of 1 but got +0
- Expected
+ Received
- 1
+ 0
❯ test/kubernetes-client.test.ts:703:20
|
|
test/kubernetes-client.test.ts > durable public Kubernetes applier > removes the legacy full command payload on session patch without clearing the bounded pointer:
packages/cluster-server/test/kubernetes-client.test.ts#L626
AssertionError: expected undefined to be null
- Expected:
null
+ Received:
undefined
❯ test/kubernetes-client.test.ts:626:57
|
|
test/kubernetes-client.test.ts > durable public Kubernetes applier > removes the legacy full command payload on submit while replacing the bounded pointer:
packages/cluster-server/test/kubernetes-client.test.ts#L593
AssertionError: expected undefined to be null
- Expected:
null
+ Received:
undefined
❯ test/kubernetes-client.test.ts:593:57
|
|
test/kubernetes-client.test.ts > durable public Kubernetes applier > persists and safely replays exact-UID stale-create cleanup after DELETE 503:
packages/cluster-server/test/kubernetes-client.test.ts#L366
AssertionError: expected [] to deeply equal [ { …(4) } ]
- Expected
+ Received
- [
- {
- "resourceType": "t4workspaces",
- "resourceVersion": "91",
- "targetId": "workspace-one",
- "uid": "workspace-created-uid",
- },
- ]
+ []
❯ test/kubernetes-client.test.ts:366:27
|
|
test/kubernetes-client.test.ts > durable public Kubernetes applier > persists and safely replays exact-UID stale-create cleanup after DELETE 409:
packages/cluster-server/test/kubernetes-client.test.ts#L366
AssertionError: expected [] to deeply equal [ { …(4) } ]
- Expected
+ Received
- [
- {
- "resourceType": "t4workspaces",
- "resourceVersion": "91",
- "targetId": "workspace-one",
- "uid": "workspace-created-uid",
- },
- ]
+ []
❯ test/kubernetes-client.test.ts:366:27
|
|
test/kubernetes-client.test.ts > durable public Kubernetes applier > does not compensate an objectless non-success POST with fallback GET or DELETE:
packages/cluster-server/test/kubernetes-client.test.ts#L261
AssertionError: expected [ 'POST', 'GET' ] to deeply equal [ 'POST' ]
- Expected
+ Received
[
"POST",
+ "GET",
]
❯ test/kubernetes-client.test.ts:261:66
|
|
verify
Process completed with exit code 1.
|
|
changes
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
t4-api-generation
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02, pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
core
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
cluster
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
official-omp-gate0 (linux-x64)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02, pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
official-omp-gate0 (linux-arm64)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02, pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
official-omp-gate0 (darwin-arm64)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02, pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
android-debug
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, android-actions/setup-android@9fc6c4e9069bf8d3d10b2204b1fb8f6ef7065407, pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
flutter
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
tooling
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
flutter-android
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
legacy-bridge-continuity
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02, pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
flutter-apple
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5, actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020, pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1. 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 | |
|---|---|---|---|
|
legacy-bridge-continuity-29893394045
|
15.1 KB |
sha256:fd17522fbe33e63bc0e95b9e87d593abfa9656910ce09ddf32a1b94b5e301c73
|
|
|
official-omp-gate0-darwin-arm64-29893394045
|
1.12 KB |
sha256:c309b8f0a25216b7770927f89a71bbaebfbe5652bcda2da66f129b7b17be5544
|
|
|
official-omp-gate0-linux-arm64-29893394045
|
1.11 KB |
sha256:c1c38dcee2367910840b85f16b506e5e0c641c8135bf89f14f025d730c694b41
|
|
|
official-omp-gate0-linux-x64-29893394045
|
1.1 KB |
sha256:29fed4a8e37aa10d2f86cdacf7a4fe7c16eca95b2928bae81e4f5404a879cb5d
|
|
|
t4-api-generated-29893394045
|
4.6 KB |
sha256:7873cd4ba7c6ed0d09b8fbc0b89966d49df124f2a9812d2b58526e78104b5d91
|
|