Skip to content

Vulnerability fixes (5376): 13 image bumps + pgvector CVE in 14 bundling templates - #685

Merged
jacobecox merged 195 commits into
mainfrom
jacob/5376-vulnerability-fixes
Oct 29, 2026
Merged

jacobecox merged 195 commits into
mainfrom
jacob/5376-vulnerability-fixes

Conversation

@jacobecox

@jacobecox jacobecox commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Work item 5376: the 10-22 Trivy scan of every template's latest version. Every fix is in one PR, so it is one merge (maintainer request 10-27).

Each template's branch is merged in unchanged (--no-ff, one merge commit per template), so its original commits and review diffs still apply. Each template lives in its own directory and no two branches touch the same file. Each original PR has been closed but keeps the full write-up: release-notes review, guard tables and test-round evidence. They are linked below.

How to review one template: git diff <copy-commit>..origin/jacob/5376-vulnerability-fixes -- <template>/versions/<new>/. The copy commit is the verbatim copy of the previous version, so this shows only the real change, per the two-commit rule.

The changes

Template Version Change Copy commit Was
keycloak 1.5.1 Keycloak 26.6.3 → 26.8.1: CVE-2026-18963 (Critical), unauthenticated account takeover 996e5ba4 #640
minio 1.4.0 MinIO images are no longer pullable (quay 401), so it runs Silo (pgsty/silo) 9e396400 #639
pgvector 1.0.1 pgvector 0.8.7: CVE-2026-103484 18b0e655 #646
nginx 1.1.3 nginx 1.31.7 (six advisories), a wizard, nginxConf as a value, Capacity AI removed fdbcf8f9 #647
postgres-highly-available 2.8.1 patroni-postgres 0.8 (pgvector 0.8.7). Chart upgrades no longer refuse writes for ~2 min (HAProxy startup fix) 5b6a3bea #674
postgres-multi-location 2.0.1 patroni-postgres 0.8, the same HAProxy fix, and the upgrade write-loss documented (fix tracked in #5396) e05fab06 #665
timescaledb-highly-available 1.2.1 timescaledb-ha pg18.6-ts2.31.0 (pgvector 0.8.7), the same HAProxy fix, PgBouncer installs again 321a547e #664
open-webui 1.4.0 Open WebUI v0.12.4. Trivy Critical/High 32/599 → 10/131 b7bef49d #679
n8n 1.5.0 n8n 2.45.4 (vm2 sandbox escapes). Trivy 29/126 → 0/17. Exports N8N_WEBHOOK_URL 7c7349f4 #680
uptime-kuma 1.3.0 Uptime Kuma 2.5.8 (admin RCE, DoS). Trivy 103/1184 → 12/223. TCP-monitor caveat documented 683f4d62 #683
umami 1.5.0 Umami 3.4.1 (Next.js RCE). Trivy 7/48 → 0/5. Optional 2FA key af6faefa #684
ollama 1.2.0 Bundled Open WebUI v0.12.4 (Trivy 32/599 → 10/131). UI memory 1Gi → 2Gi (v0.12 at 1Gi intermittently fails API calls) 51179bdb — (tested on its branch; report in the PR comment below)
langfuse 2.0.0 Langfuse 3.225.2 → 4.70.1 (Next.js RCE), ClickHouse 25.10 → 26.8. Trivy 6/49 → 0/3. A v3 → v4 migration path from 1.3.0 (langfuse.migration.writeMode / historicBackfill) 092cfa4b — (tested on its branch; report in the PR comment below)

Common to every image bump:

  • A {template}.validateImage render-time fail refuses the vulnerable tags. It is mirrored by a wizard rule, because the Console stores image in release values and a helm upgrade -f would otherwise keep the old tag.
  • README and wizard upgrade notes for anything the user must do: back up first, because migrations are one-way.
  • An updated briefing for each template.

pgvector in the 14 templates that bundle postgres-highly-available

Their bundled HA database ran controlplanecorporation/patroni-postgres:0.7 (pgvector 0.8.0, CVE-2026-103484). postgres-highly-available 2.8.1 is not published until this PR merges, so each template keeps its vendored subchart version and overrides the image to patroni-postgres:0.8 (maintainer decision 10-27). Each adds {svc}.validatePostgresHAImage (refuses tags 0.1–0.7 and an empty image when HA is on; the subchart's own default is still 0.7), mirrored by a wizard rule, plus a README "Upgrading from …" note (ALTER EXTENSION vector UPDATE; where the extension exists). HA is the default in chatwoot, glitchtip, grafana, metabase, unleash, temporal, keycloak and n8n; cdc-pipeline is HA-only; listmonk, nocodb, polaris, twenty and umami default to plain postgres:18 (no pgvector) and are affected only in HA mode. Only chatwoot creates vector itself.

Template Version Vendored pg-ha Branch
chatwoot 1.3.1 2.5.0 jacob/chatwoot-1.3.1
glitchtip 1.4.1 2.5.0 jacob/glitchtip-1.4.1
grafana 1.5.1 2.5.0 jacob/grafana-1.5.1
metabase 1.5.1 2.5.0 jacob/metabase-1.5.1
listmonk 1.6.1 2.5.0 jacob/listmonk-1.6.1
nocodb 1.4.1 2.5.0 jacob/nocodb-1.4.1
polaris 1.3.1 2.5.0 jacob/polaris-1.3.1
twenty 1.4.1 2.5.0 jacob/twenty-1.4.1
unleash 1.5.1 2.5.0 jacob/unleash-1.5.1
temporal 2.1.1 2.7.0 jacob/temporal-2.1.1
cdc-pipeline 1.1.2 2.8.0 jacob/cdc-pipeline-1.1.2
keycloak 1.5.1 (also in the table above) 2.5.0 extra commits on jacob/keycloak-1.5.1
n8n 1.5.0 (also above) 2.5.0 extra commits on jacob/n8n-1.5.0
umami 1.5.0 (also above) 2.5.0 extra commits on jacob/umami-1.5.0

Live round per template (HA mode in every row): upgrade from the previous version with data created through the app → all three Patroni members on :0.8 / pgvector 0.8.7, data intact; the README ALTER EXTENSION step run verbatim; the guard refusing :0.7 and an empty image on the live release with nothing touched; a fresh install + drift-diff.py (no new drift: every field identical to the previous version, deferred per the 10-22 ruling) + two no-op upgrades; teardown with janitor clean ✓. All 14 PASS. HAProxy never restarts (helm may print Updated from a tag bump). The interruption is either the DB leader change (seconds) or, for single-replica stateful-style app tiers (chatwoot, n8n, listmonk, umami, nocodb, twenty), the app's own restart; each README says which.

E2E: all 14 onboarded to tests/ (none had a suite before), each run locally green in the round; this push is their first CI run. Each includes pgvector-0-8-7-available and every-patroni-member-on-0-8 (catches a partly rolled cluster).

Known platform issue, not filed (maintainer: being fixed): in 2 of ~16 HA rollouts one Patroni member stayed initializing with its volume unbound; a re-run passed.

Verification already done (per template, in its original PR)

  • Live test round:
    • an upgrade from the previous version with real data created through the product;
    • a fresh install;
    • a live guard refusal;
    • two no-op upgrades;
    • teardown with janitor clean ✓.
  • Console wizard round (on the test console) for keycloak, pgvector, nginx, postgres-highly-available, postgres-multi-location and timescaledb-highly-available.
  • Combined branch: every new version renders (helm template) and tw lint gives 0 errors and 0 warnings. validate_catalog.py → 92 valid catalog entries … 0 with problems.

Console wizard rounds (test console, 10-28)

  • Full rounds (install + upgrade from the previous version through the wizard, Preview = helm template, stored values = tw render/tw carry, teardown clean ✓): keycloak, pgvector, nginx, postgres-highly-available, postgres-multi-location, timescaledb-highly-available (earlier), and minio, open-webui, langfuse, ollama, umami, n8n. Findings fixed in this PR:
    • minio: the replica quota note was wrong (replicaDirect quota is 6, not 5); the 1.3.x → 1.4.0 outage warning moved to the Cluster step.
    • open-webui: the first-boot memory text; the upgrade note moved to the Sign-in step with the snapshot command and two upstream hazards.
    • langfuse: the pre-upgrade steps moved to the top of the step and onto Review; SDK versions now match the upstream v3→v4 guide; cut-over rules added.
    • ollama: the sign-out note; a rule for UI memory below 2Gi.
    • umami: a false 2FA lock-out warning on every 1.4.0 upgrade fixed with a migration; HA upgrade note added.
    • n8n: the downtime figure (~2 min); HA upgrade note added.
    • minio 1.3.1 → 1.4.0 upgrade could not be staged (1.3.1's image is unpullable); langfuse readiness needs a bucket the test console lacks (proven live in the test round).
  • Light check (maintainer-approved scope for a one-field change): uptime-kuma and the 11 new bundling-template versions. tw lint/tw render/helm template pass, and in the console the refused image blocks Install and clears on the default.
  • Console findings for the console team (non-blocking): Preview counts the CLI "Saving N charts" line as an item; Tab in a number field commits the highlighted suggestion.

CI: green on 3f1b44d3 (all 16 e2e suites). Fixes from the first runs: nocodb's sign-in check now waits out the post-upgrade restart; the postgres-highly-available pgvector check waits for the whole rollout. Drift warnings are the pre-existing probe fields, deferred (incl. langfuse minReadySeconds, maintainer 10-28).

Maintainer rulings (10-29)

🤖 Generated with Claude Code

https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4

jacobecox and others added 30 commits October 23, 2026 07:59
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
26.6.3 is open to an unauthenticated account takeover via the reset-credentials
flow (CVE-2026-18963, Critical; work item 5376). 26.8.1 fixes it and scans to
1 Critical / 1 High (OpenJDK eMudhra distrust + font CPU, no upstream fix yet),
down from 7 / 48. No setting the chart uses changed in 26.7 or 26.8.

README: "Upgrading from 1.5.0" (no values change; schema migration means no
rollback to 1.5.0, back up first). Briefing image line updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…lable

quay.io/minio/minio now refuses anonymous pulls and docker.io/minio/minio is
gone, so every 1.0.0–1.3.1 install fails ErrImagePull on a fresh pull (work item
5376). Pin pgsty/silo:RELEASE.2026-10-18T00-00-00Z, the maintained AGPL fork
(same S3 API, MINIO_* env and on-disk format; scan 0 Critical / 3 High).

- start script runs `silo` or `minio`, whichever the image has (Silo has no
  `minio` on PATH; a user's own upstream image keeps working), FATAL if neither
- README: intro names Silo; "Upgrading from 1.3.x"; values comment
- wizard: image description; the unpullable-image info rule also covers quay
- catalog summary/keywords; briefing image trap rewritten + 1.4.0 entry

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…zard note, briefing); Links to Silo docs

A Silo node won't join a pool still running mostly MinIO, so the 1.3.x → 1.4.0
rollout fails a share of S3 requests until about half the nodes run Silo
(measured on 6 replicas; data byte-identical after). The min.io doc links now
redirect to MinIO's commercial AIStor docs, so Links point at silo.pigsty.io.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…ade fixes

Test finding: releases installed through the 1.5.0 Console wizard store
`image: quay.io/keycloak/keycloak:26.6.3`, so `helm upgrade -f` with the old
values moved the chart to 1.5.1 while still running the vulnerable image.
keycloak.validateImage now fails for quay.io/keycloak/keycloak tags below 26.7.2
(unparseable tags and other registries pass); wizard rule mirrors it. tw carry
already moves the stored image to 26.8.1. Default render byte-identical to ea66b21.

README "Upgrading from 1.5.0": change or remove a pinned `image`; a rollback
reports healthy but every login returns HTTP 500 (recover: upgrade again or
restore); 2+ replicas serve throughout, replicas: 1 is briefly unavailable.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
Copied from PR #626's head (f076085) so the new version carries its
reviewed wizard.yaml and in-place README fixes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
- image pgvector/pgvector:0.8.7-pg18; appVersion, lastModified.
- pgvector.validateImage refuses an official pgvector tag below 0.8.7:
  a wizard install stores image in the release values, so an upgrade
  reusing them would keep 0.8.6. Mirrored by a rule on the wizard's image
  field.
- README: Upgrading from 1.0.0; version mentions. Briefing updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
The example backend only answers paths no location matches; a missing
target returns /fail with a 502 rather than stopping the proxy; a routing
change rolls the proxy without a forced redeployment; an upstream 5XX keeps
its status code. Wizard notes, README, values comment and briefing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
The CVE message keeps the release's -pgNN suffix (a pg17 volume must not be
told to use -pg18), in the wizard rule and the chart fail; the wizard rule
matches every tag the chart refuses (0.8.6.1, 0.8.6rc1); an upgrade note
says \dx keeps the old vector version until ALTER EXTENSION vector UPDATE.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
Container port read-only at 80 with a blocking rule; the target picker
warns rather than blocks on a workload that does not exist yet (the route
answers 502 until it does); drop an item rule the picker pre-empts; note
the example backend image is unpinned; softer rollout wording.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…opens

The chart-files annotation file-nginxConf sent every install and upgrade to
the classic YAML screen. nginxConf is now an ordinary value: empty renders
the generated file, set renders the user's file in its place (tpl, as
before). The classic screen already stored the file under that key, so an
edited config carries over; the wizard migration clears an unedited copy of
a shipped default. Wizard section, README and briefing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
Upgrade note on Custom nginx.conf explaining where a pre-1.1.3 file went;
the rollout note also fires for a custom-config change; the custom-config
warning says the example workload still runs; Locations says a custom file
replaces it. The target picker goes back to mustExist: error (warning
blocks the same way, so 75c8f62's change did nothing).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
It could never apply: the proxy scales on CPU and the platform refuses
Capacity AI with that metric. The workload keeps capacityAI: false; the
wizard drops the value with a note.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
Copied from 1b0c144 (head of PR #629: 2.0.0's reviewed wizard.yaml and in-place fixes).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
Seeded from 1644e41 (head of unmerged PR #628: 1.2.0's reviewed wizard.yaml + in-place README fix).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…CVE-2026-103484)

Default image controlplanecorporation/patroni-postgres:0.7 -> 0.8 (spilo-17 4.0-p3,
PGDG pgvector 0.8.0 -> 0.8.7). pg-ha.validateImage refuses patroni-postgres tags
0.1-0.7, mirrored by a wizard rule on image. README upgrade note; briefing updated.
appVersion stays "17" (it tracks the PostgreSQL major, not the image tag).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…VE-2026-103484)

- Default image controlplanecorporation/patroni-postgres:0.7 -> 0.8 (spilo-17 4.0-p3 with PGDG
  pgvector 0.8.0 -> 0.8.7; ca-certificates/curl refreshed). Used by the Patroni container and the
  WAL-G sidecar.
- pg-ml.validateImage refuses patroni-postgres plain-version tags 0.1-0.7 (with or without
  docker.io/); digests, other registries and non-version tags pass. Mirrored by a wizard rule on
  the image field, plus an upgrade note on the extension version record.
- README: "Upgrading from 2.0.0" section; image default updated.
- Chart.yaml: version 2.0.1, lastModified 2026-10-23. appVersion stays "17" (it tracks the
  PostgreSQL major, not the image tag).
- Briefing (seeded from 1b0c144, PR #629's version): image default and a 2.0.1 section.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…gvector 0.8.7, CVE-2026-103484)

- image default pg18.4-ts2.28.3 -> pg18.6-ts2.31.0: pgvector 0.8.5 -> 0.8.7, PostgreSQL 18.4 -> 18.6,
  TimescaleDB 2.28.3 -> 2.31.0. The image keeps the 2.28.3 library, so existing databases run unchanged
  until ALTER EXTENSION timescaledb UPDATE.
- tsdb-ha.validateImage refuses the pg18 timescale/timescaledb-ha tags built before pgvector 0.8.7
  (pinned <= ts2.30.1, frozen pg18-ts2.0..2.29); mirrored wizard rule.
- README "Upgrading from a version before 1.2.1"; wizard upgrade note; example tag in the pg18 rule.
- Briefing: default image, pg17 fallback caveat, 1.2.1 history.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…every Patroni member

The startup gate waited for every member to answer :8008 before starting
HAProxy, and the proxy workload had no readiness probe. A chart upgrade
redeploys the proxy while Patroni is rolling, so the new proxies were counted
ready and the old ones retired while the new ones sat in the gate: writes
were refused for ~75-130 s although the leader never moved (measured
on all three Patroni charts in 5376 testing).

- HAProxy re-resolves server names at runtime (resolvers mesh, copied from
  pgedge 3.0.0), so a placeholder address from the mesh DNS heals itself;
  that was the gate's only reason to exist.
- The start script waits at most 60s for ANY member's Patroni API, then
  starts regardless.
- readinessProbe on /healthz :8404 (a leader is routable), so an upgrade
  keeps the old proxy replicas serving until a new one can reach the primary.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…ery Patroni member

The startup gate waited for every member to answer :8008 before starting
HAProxy, and the proxy workload had no readiness probe. A chart upgrade
redeploys the proxy while Patroni is rolling, so the new proxies were counted
ready and the old ones retired while the new ones sat in the gate: writes
were refused for ~75-130 s although the leader never moved (measured
on all three Patroni charts in 5376 testing).

- HAProxy re-resolves server names at runtime (resolvers mesh, copied from
  pgedge 3.0.0), so a placeholder address from the mesh DNS heals itself;
  that was the gate's only reason to exist.
- The start script waits at most 120s for ANY member's Patroni API, then
  starts regardless.
- readinessProbe on /healthz :8404 (a leader is routable), so an upgrade
  keeps the old proxy replicas serving until a new one can reach the primary.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…on every Patroni member

The startup gate waited for every member to answer :8008 before starting
HAProxy, and the proxy workload had no readiness probe. A chart upgrade
redeploys the proxy while Patroni is rolling, so the new proxies were counted
ready and the old ones retired while the new ones sat in the gate: writes
were refused for ~75-130 s although the leader never moved (measured
on all three Patroni charts in 5376 testing).

- HAProxy re-resolves server names at runtime (resolvers mesh, copied from
  pgedge 3.0.0), so a placeholder address from the mesh DNS heals itself;
  that was the gate's only reason to exist.
- The start script waits at most 60s for ANY member's Patroni API, then
  starts regardless.
- readinessProbe on /healthz :8404 (a leader is routable), so an upgrade
  keeps the old proxy replicas serving until a new one can reach the primary.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…nts to what testing measured

The replica names are per-replica mesh addresses that exist from workload
creation (measured 2026-10-26), so no placeholder address was observed;
runtime DNS stays as a safety net. The resolvers comment moves out of the
heredoc so it is no longer written into haproxy.cfg and the start log.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…s to what testing measured

The replica names are per-replica mesh addresses that exist from workload
creation (measured 2026-10-26), so no placeholder address was observed;
runtime DNS stays as a safety net. The resolvers comment moves out of the
heredoc so it is no longer written into haproxy.cfg and the start log.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
github-actions Bot added a commit that referenced this pull request Oct 28, 2026
5376: vulnerability fixes across 11 templates (keycloak, minio, pgvector, nginx, Patroni charts, open-webui, n8n, uptime-kuma, umami)
jacobecox and others added 11 commits October 28, 2026 13:31
… step; wizard wording

The workload uses replicaDirect, so the quota that applies is
replicas-per-replica-direct-workload (6 by default, measured in the test
env and production); the default 6-node install fits. Fix the wizard note
(threshold > 6), README Prerequisites, catalog prerequisite (now
required: false, when replicas above 6) and briefing; drop the duplicate
info rule. Move the 1.3.x -> 1.4.0 maintenance-window hazard from a
top-level info rule to a Cluster-step warning note. Label the image field
"Server image"; place the port-forward note after "Who can connect".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…; upgrade warning on Cluster step)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
… on Sign-in step)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…t-over rules)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…d-older rejected; Python 4.7+/JS 5.4+ direct)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…t (16 x 15 s)

CI run 40750208015: after the 1.4.0 -> 1.4.1 upgrade the bases API returned non-JSON for 90 s while
NocoDB was still restarting (the live round measured ~2 min).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
@github-actions

Copy link
Copy Markdown

@jacobecox template e2e tests failed, so this PR cannot merge yet. See the report above and the run logs.

jacobecox and others added 4 commits October 28, 2026 15:46
…pgrade note)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
…pgrade note)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4
@github-actions

Copy link
Copy Markdown

@jacobecox template e2e tests failed, so this PR cannot merge yet. See the report above and the run logs.

…le Patroni rollout (20 x 30 s)

CI run on ac8cd6b read AVAIL 0.8.0 after 6 tries: the old leader restarts last.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZ5WWhTn9mEkPY7cLt1cr4

This branch was successfully deployed

1 active deployment
e2e-nifah — 3f1b44d3 Deployed Oct 29, 2026 by jacobecox via test (unleash/1.5.1) #168
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant