Compare commits

..
Author SHA1 Message Date
notplants babb83debf chore: update cc-ci input with disk pressure cleanup 2026-11-02 18:16:56 +00:00
autono-bot 93fe2b6f1a journal: rustdesk-server one-off upgrade + enrollment (PR #1 GREEN !testme, cc-ci #48 merged, host switch); memory: gate fixtures must fail loudly + --cc-ci-only deploy path 2026-10-30 21:24:06 +00:00
auto-update 4e286ba777 flake.lock: cc-ci -> main 2026-10-30 21:16:05 +00:00
trav cd1ec01b23 used-recipes: rustdesk-server weekly (enrolled 2026-10-30, cc-ci PR #48) 2026-10-30 18:59:10 +00:00
trav 0fe2827889 upstream(rustdesk-server): release-notes sources (one-off upgrade; not enrolled) 2026-10-30 07:55:19 +00:00
autonomic-bot bb76edde9f journal(upgrade-all): weekly run 2026-10-30 — 12 green, 1 pending canonical v6 seed, 1 failed (mailu backup defect) 2026-10-30 04:58:53 +00:00
autonomic-bot 7f3627e76c upstream(immich): postgres pgvectors 0.2.0->0.3.0 window notes 2026-10-30 03:25:38 +00:00
autonomic-bot 6234e36261 upstream(cryptpad): version-2026.10.0 now on Docker Hub; 2026.10 recipe notes 2026-10-30 02:21:52 +00:00
autonomic-bot 78bbf763ff journal(upgrade-all): weekly run 2026-10-23 — 9 green, 2 pending warm-canonical minio fix
Only this event entry committed; pre-existing uncommitted orchestrator WIP left in the worktree untouched.
2026-10-23 04:05:49 +00:00
autonomic-bot c57ddfd7f1 upstream(n8n): 2.43.7-2.45.2 notes + 2026-10-23 run window 2026-10-23 03:58:32 +00:00
autonomic-bot 5d422207f0 upstream(lasuite-docs): v6 yhub stack, runtime RSA keys, docspec 1.x 2026-10-23 03:31:15 +00:00
autonomic-bot 4b8b617d8c upstream(immich): release-notes sources (v3.3.3-v3.3.5) 2026-10-23 03:13:04 +00:00
cc-ci bot 53b1a76f70 upstream(gitea): add 28.x release/security notes 2026-10-23 02:43:34 +00:00
autonomic-bot f4ed2e3fbe upstream(cryptpad): Docker Hub tag pointer + 2026.10.0/opendesk notes 2026-10-23 02:24:24 +00:00
autonomic-bot 7df1792dc9 Merge pull request 'config: drop mattermost-lts from weekly upgrade set (-> external)' (#30) from chore/external-mattermost-lts into main 2026-10-19 16:56:55 +00:00
autonomic-bot afa6922093 config: drop mattermost-lts from weekly upgrade set (-> external)
Move mattermost-lts from weekly to external in used-recipes.md, matching the
plausible precedent. The weekly /upgrade-all survey, upgrade PRs and their
!testme verification no longer run for it; cc-ci still deploys/tests it and
the recipe + tests stay enrolled.
2026-10-19 16:56:43 +00:00
autonomic-bot 50776ecb0c upstream(n8n): 2.42.3-2.44.2 release notes + 2026-10-09/16 run windows 2026-10-16 03:26:50 +00:00
autonomic-bot 1b3ae31091 upstream(custom-html): nginx 1.31.7 security-window notes 2026-10-16 02:19:30 +00:00
autonomic-bot c97798ff8f upstream(immich): v3.3.0/v3.3.1 pins + release-window notes 2026-10-09 02:55:01 +00:00
autonomic-bot 4a043b12ca Merge pull request 'orchestrator-host: weekly opencode auto-upgrade (latest-release check, reinstall, restart web)' (#29) from opencode-auto-upgrade into main 2026-10-05 18:40:31 +00:00
13 changed files with 314 additions and 9 deletions
+79
View File
@@ -1331,3 +1331,82 @@ Weekly run 2026-10-02 complete: 20 considered · 9 upgraded (PRs opened/extended
Key highlights: gitea upstream shipped its first 2-digit stable (28.0.0-rootless, 2026-09-29 — BREAKING git-egress/actions-retention notes documented in PR #10); ghost 6.67.0 fixes HIGH CVE-2026-84383; nulls held at mysql 8.4 / mariadb 12.3 / postgres 13/15 lines per precedent; matrix-synapse extended to synapse 1.162.0 + MAS 1.26.0; immich bumped v3.2.4 (rc.3.3 declined). Operational: recipe-maintainers/gitea mirror had LOST its master branch (abra whole-recipe FATA) — repaired both refs to upstream HEAD f167b73; reconcile-upstream.sh should learn to recreate a missing upstream-default branch ref, not only sync main. 2 targets (gitea, n8n 2.42.2) were caught in follow-up passes after the initial worklist mis-derivation — nothing left unprocessed. Sweep start: 4 leaked volumes + 46.3 GB images reclaimed (disk 70%->40%); end-of-run reap 0 leaked dev deploys; disk 65% (51G free).
Per-recipe logs: .cc-ci-logs/upgrades/<recipe>-upgrade-2026-10-02.md (10 files incl. survey).
NEVER MERGED anything; all PRs await operator review + the operator's `abra recipe release <recipe> -x/y/z` after each merge.
### Event 2026-10-05 ~17:45 UTC — gitea PR #10 stale test fixed (cc-ci PR #44, verified GREEN, NOT merged)
Operator invoked --with-tests for gitea PR #10 (28.0.0-rootless, RED on test_lfs_roundtrip run #31).
Diagnosis: stale test — `_api()` caught only HTTPError so one urlopen(timeout=20) socket timeout
during the 28.0.0 post-restart migration window escaped the poll loop; poll also hard-coded 120s
deadline vs recipe_meta HTTP_TIMEOUT=600 (STYLE.md §5). Fix: never-raising _api (mirrors
lifecycle.http_fetch) + deadline from recipe_meta.HTTP_TIMEOUT; assertions untouched.
cc-ci PR #44 (branch fix/gitea-lfs-restart-wait) also carries the two PRE-EXISTING main lint
failures (warm.py ruff format; acme-dns.nix statix W201, eval-identical restructure) that had made
push build #33 RED and would have blocked merge — build #34 now success, lint.sh PASS.
Verified: full cold suite on host worktree (e83cd46) vs recipe head 91e42c8 → 5/5 tiers pass,
test_lfs_roundtrip PASSED; unit sample 315 pass / 4 fail = identical pre-existing failures on main.
Pair note posted on both PRs: merge #44, then re-!testme #10. Nothing merged.
### Event 2026-10-05 ~18:00 UTC — wrong-recipe card screenshot root-caused; runner fix #45 merged; gitea !testme re-run GREEN
Operator's !testme on gitea PR #10 (drone build 35) showed a custom-html-tiny screenshot in the card.
Root cause: drone build numbers restarted when its DB was re-created (2026-09-27) while
/var/lib/cc-ci-runs still holds old-era dirs (numbered to 1377) — build 35 collided with a May-31
run 35 whose fossil screenshot.png (12950 B = exactly custom-html-tiny's real shot) was embedded
because screenshot.capture()'s hook branch SKIPPED the snap when out_path existed (no hook saves
itself). Run itself was genuinely gitea level 5. Fix (cosmetics-only, R7): results.fresh_artifact_dir()
wipes owned artifacts at run start + capture() always snaps; 4 unit tests (non-vacuous: capture test
fails on main). Adversary verification PASS (independent fresh clones + own E2E collision test).
cc-ci PR #45 merged (squash, 35ba9976); push self-tests 38/39 green; lint gate now green on main
(#44 had already fixed the two pre-existing lint failures).
Merged #44 first (operator informed; verified earlier via full cold harness run).
Re-ran !testme on gitea PR #10 → drone build 40: GREEN, level 5, card links /runs/40/, screenshot
is a fresh PNG of the run's own gitea (footer 1.24.2 = the upgrade-tier BASE deploy, the last-green
warm canonical — pre-existing capture timing, correct behavior, only freshness was broken before).
Gitea PR #10 now fully green incl. the fixed LFS test (uses merged #44 test). NOTHING else merged;
recipe PR #10 + unrelated PR #4 still await operator merge + `abra recipe release gitea -x`.
Cleanup: host /tmp/v /tmp/r, local worktrees, test-file mis-commit in orch cc-ci clone reverted.
### Event 2026-10-23 04:15 UTC — weekly /upgrade-all run complete (DEFAULT mode, nothing merged)
Run 2026-10-23: 19 considered · 9 upgraded with !testme GREEN · 2 PRs open pending the warm-canonical
minio-prepull fix (lasuite-docs PR #11, lasuite-drive PR #8 — !testme RED at the upgrade BASE prepull:
warm canonicals 0.4.0+v5.4.1 / 0.12.0+v0.21.0 pin the REMOVED docker.io/minio/minio; PR comments
explain; operator: advance those canonicals then re-post !testme) · 0 failed · 8 skipped up-to-date
(cryptpad discourse drone hedgedoc keycloak mailu mumble wordpress — several had stale survey data;
each re-verified against true upstream before skipping). GREEN PRs: bluesky-pds #6 · custom-html #10 ·
custom-html-tiny #9 · ghost #8 · gitea #11 · immich #6 · lasuite-meet #12 · matrix-synapse #8 · n8n #9.
Summary: .cc-ci-logs/upgrades/upgrade-all-2026-10-23.md (per-recipe logs alongside). Step-0 sweep
reclaimed 19GB images (disk 61%->49%); end-of-run reap 0 leaked dev deploys.
NEVER MERGED anything; PRs await operator review + `abra recipe release` after each merge.
### Event 2026-10-30 02:00 UTC — weekly /upgrade-all run complete (DEFAULT mode, nothing merged)
Run 2026-10-30: 19 considered · 12 upgraded with !testme GREEN · 1 PR open pending its stale warm-canonical
base (lasuite-docs PR #11 — !testme RED at the base INSTALL rung: canonical 0.4.0+v5.4.1 references the
removed collab_ss secret; last week's minio blocker is already fixed via #47; head linted + live 12/12;
operator: seed a v6-cold canonical, re-post !testme) · 1 failed (mailu PR #9 — restore tier RED 3x on a
PRE-EXISTING upstream defect: main's new backup support lacks a restart post-hook so /data/main.db is
never restored; PR + operator comment with options) · 5 skipped (gitea + lasuite-meet were already merged
upstream by their turn; custom-html-tiny drone mumble up-to-date). GREEN PRs: bluesky-pds #6 · cryptpad #6
(2026.5.1→2026.10.0 breaking server rewrite handled) · custom-html #10→11 (stale nginx digest re-pin) ·
discourse #12 · ghost #8 · hedgedoc #3 (pgautoupgrade 16→18 in-place) · immich #7 (pgvectors 0.3.0
same-scheme re-tag) · keycloak #13 (mariadb 12.3→13.0 + AUTO_UPGRADE) · lasuite-drive #8 (+collabora +
onlyoffice direct checks) · matrix-synapse #8 · n8n #10 · wordpress #3.
Summary: .cc-ci-logs/upgrades/upgrade-all-2026-10-30.md (per-recipe logs alongside). Step-0 sweep
reclaimed 66.76GB images + orphan stacks (disk 92%->49%); end-of-run reap 0 leaked dev deploys.
NEVER MERGED anything; PRs await operator review + `abra recipe release` after each merge.
### Event 2026-10-30 19:00–21:30 UTC — rustdesk-server one-off upgrade + FULL ENROLLMENT (orchestrator)
One-off upgrade requested from scratch: public mirror `recipe-maintainers/rustdesk-server` created +
synced; recipe PR https://git.autonomic.zone/recipe-maintainers/rustdesk-server/pulls/1 (1.1.12→1.1.16,
branch upgrade-2e65135, unmerged — operator merges). Upstream checked (low-churn, stray 1.4.5 docker
tags = aborted push; CVE fix POV: UDP punch-hole amplification GH #670 + mio bump; scan 0 CVE-ids,
client-side CVEs fixed in client 1.4.9). Dev-deploy converged clean twice, then !== enrollment: tests
authored (status-key health sidecar overlay compose.ccci.yml serving the private-tool-unreachable
real hbbs public key; ports 21115-21119 + UDP; ws 101 on 21118/19; identity-key cross-source assert;
punch-hole-amplification regression test w/ version-gate), committed d71a53c, cc-ci PR #48.
Verify: run 1 RED (custom tier) — hand-rolled version read returned None so the punch-hole gate
didn't skip on the 1.1.12 head; fixed via harness lifecycle.deployed_identity + loud fail on
unparsable tag (1653582, f5f11cd); runs 2+3 GREEN level 5/5 (recipe main with gate skipping, AND
the upgrade head with the punch-hole test passing actively). PR #48 evidence-commented + MERGED
(200); --cc-ci-only deploy: flake.lock cc-ci 2f6787f→a8b836e, lock commit 4e286ba pushed,
/etc/cc-ci ff to a8b836e, detached nixos-rebuild test → health (0 failed, swarm 1/1) → switch
(21:17 UTC). Bridge env confirms POLL_REPOS += recipe-maintainers/rustdesk-server (1/1, no auth
errors). !testme posted on recipe PR #1 via testme-on-pr.sh → build 119 VERDICT=GREEN (level 5,
lint pass, clean_teardown, no_secret_leak; card embedded in PR by bridge). Card saved:
.cc-ci-logs/upgrades/rustdesk-server-testme-20261030.png. Next weekly /upgrade-all picks
rustdesk-server up automatically (used-recipes.md row committed cd1ec01). /root/cc-ci-test-verify
removed. Operator merges PR #1 then `abra recipe release`.
+1
View File
@@ -23,3 +23,4 @@ restarts the loops on boot. Count the lines below to see how often it's happenin
- 2026-05-30 17:03:05 BST — reboot detected; loops auto-started by systemd (resuming phase index 6). boot_id=f565f752-0463-42db-b787-9e0db35a5e3f
- 2026-05-31 03:38:29 UTC — reboot detected; loops auto-started by systemd (resuming phase index 5). boot_id=51c17fc3-8391-4109-bce2-413fbee6f26d
- 2026-08-23 03:11:24 UTC — reboot detected; loops auto-started by systemd (resuming phase index 14). boot_id=8215fc5e-8032-4844-b2b8-e0f8c0d9b13e
- 2026-09-28 19:54:59 UTC — reboot detected; loops auto-started by systemd (resuming phase index 14). boot_id=66dadc4e-7f44-493a-aee9-fa76952d78c3
+16 -1
View File
@@ -2,11 +2,26 @@
| service | image | source repo | releases / changelog |
|---------|-------|-------------|----------------------|
| app | cryptpad/cryptpad | https://github.com/cryptpad/cryptpad | https://github.com/cryptpad/cryptpad/releases |
| app | cryptpad/cryptpad | https://github.com/cryptpad/cryptpad | https://github.com/cryptpad/cryptpad/releases · https://hub.docker.com/r/cryptpad/cryptpad/tags |
| web | nginx | https://github.com/nginx/nginx | https://nginx.org/en/CHANGES |
## Standing notes
- `abra recipe upgrade` cannot parse the `version-YYYY.M.D` tag format of the cryptpad/cryptpad image,
so the app image is bumped by hand; the nginx sidecar is what `abra recipe upgrade` actually moves.
- Only use tags in the canonical `version-YYYY.M.x` scheme. The `opendesk-YYYY.MM.DD` tags on
Docker Hub are openDesk-specific builds, not newer CryptPad releases — e.g. `opendesk-2026.08.04`
(built 2026-08-04) still contains CryptPad `2026.5.1` in `/cryptpad/package.json`.
- CryptPad's GitHub releases and Docker Hub tags are not simultaneous: `2026.10.0` was released
2026-10-21; `version-2026.10.0` appeared on Docker Hub on 2026-10-23 (first seen by the weekly
upgrade run on 2026-10-30). Re-check the Docker Hub tags page before treating a GitHub release as
available for the recipe.
- The 2026.10.0 release is a breaking one for the recipe: full server rewrite (separate
`cryptpad-server` package), split `config.js` → `config/infra.js` (public origin/ports move),
one proxy port for HTTP + websocket (no separate `3003` websocket port), SSO plugin v1.0.0
required, and Euro-Office 9.3 replacing the OnlyOffice editors. Recipe handling in the
`upgrade-2026.10.0` PR: `CPAD_MAIN_DOMAIN`/`CPAD_SANDBOX_DOMAIN` must be full `https://…` URLs
(the new server assigns them verbatim to `infra.public.origin`/`sandboxOrigin`; the image's
entrypoint auto-creates `config/infra.js`), nginx `/cryptpad_websocket` proxies to `:3000`,
`abra.sh` config/nginx/SSO-entrypoint version labels bumped, SSO default 1.0.0.
- nginx is HTTP/1.1-only here (sidecar on :8083, `proxy_http_version 1.1`), so HTTP/2/3 CVE changes in
nginx releases generally don't affect this recipe — but still note them.
+1
View File
@@ -7,6 +7,7 @@
## Standing notes
- nginx even-numbered minor versions (1.28.x, 1.30.x) are mainline; odd (1.27.x, 1.29.x) are stable. The recipe tracks mainline.
- nginx 1.31.7 (14 Oct 2026) is a security patch release with FIVE security fixes: CVE-2026-15176 (buffer overflow in a worker using `alias` when the URI was changed by `rewrite`), CVE-2026-93479 (buffer overflow evaluating string expressions with variables — affects document-root calculation and request logging in http/stream), CVE-2026-95101 (HTTP/3: part of an unknown frame treated as request body — bypasses `client_max_body_size` / injects into proxied request), CVE-2026-97629 (TLS session-ticket key rotation left one key uninitialized — session forgery), CVE-2026-97205 (use-after-free with async file I/O when an SSI page has `include virtual`). Features: geoip MMDB support, backend SSL cert verification by IP, QUIC reconfiguration + binary upgrade with `quic_bpf`. Change: `ngx_http_v2_module` now uses RFC 9218 prioritisation (RFC 7540 priority signals ignored). Bugfixes (X-Accel-Redirect cached response segfault, dav COPY/MOVE with alias segfault, QUIC flood false positives, SSL close_notify handling). NONE affect the custom-html static-file-serving use case (no HTTP/3/QUIC, no AIO/SSI, no `rewrite`+`alias` path mapping, no session-ticket rotation config) — but the 5 CVEs are why this bump is warranted. No breaking config changes; no operator action beyond the image pull.
- compose.git-pull.yml is an optional overlay for git-pull functionality; alpine/git version lives there.
- compose.sftp.yml and compose.sso.yml are other optional overlays; linuxserver/openssh-server uses `latest` tag and is not version-pinned.
- nginx 1.31.6 (15 Sep 2026) is a security patch release: CVE-2026-90439 (heap buffer overflow in a worker under certain configurations when using HTTP/3 with OpenSSL 3.5.0 and earlier). Change: QUIC transport parameters extension received in an SSL connection is now always ignored. Bugfixes: binary upgrade with control API socket + perl module; predicate-location evaluation error ignored; nested location lookup with regex/predicate locations; segfault reading config with `geo` … `ranges` + corrupted binary base file. None affect the custom-html static-file-serving use case (no HTTP/3/QUIC, no predicate locations, no perl, no `geo`).
+4
View File
@@ -41,3 +41,7 @@ in this file, so keep vendor security pages listed here.
- **1.26.3**: carries a regression (#38177 "context deadline exceeded" opening repo code pages) — upstream says upgrade straight to 1.26.4, skip 1.26.3.
- **1.27.0** (released 2026-07-13, MINOR with BREAKING changes): `Feat(actions)!: improve support for reusable workflows` (#37478) and `Use Content-Security-Policy: script nonce` (#37232, may break custom inline JS / reverse-proxy CSP). Many security + feature additions. A dedicated minor-bump run should evaluate CSP / reusable-workflow impact before adopting.
- **1.27.1** (released 2026-07-27, PATCH): security fix (oauth2 mandatory 2FA enforcement on authorize/grant endpoints, #38606), API swagger alignment, diff-contrast enhancement, and many bugfixes (actions reusable-workflow/job-stranding, OIDC end-session, repo-deletion cleanup, webhook/mail). No breaking changes; safe patch bump from 1.27.0. Release notes: https://github.com/go-gitea/gitea/releases/tag/v1.27.1
- **28.0.0** (released 2026-09-29, NEW MAJOR, BREAKING): git network operations now route through an internal proxy and egress settings changed (`Fix(git)!`, #39426) — outbound Git may need `[egress]` allow-listing; Actions adds `RUN_RETENTION_DAYS` (#38855). Also a large SECURITY batch (SSH key fingerprint identification, rejected invalid/duplicate Git objects, repo-scoped team authz, x/crypto DoS). GitHub notes: https://github.com/go-gitea/gitea/releases/tag/v28.0.0 — vendor post: https://blog.gitea.com/release-of-28.0.0/
- **28.1.0** (released 2026-10-06, MINOR): 9 security fixes (push-mirror permission/`DISABLE_NEW_PUSH`, local-path import authz, repository media stored XSS, OAuth2 refresh-token kind, issue-attachment authz, `FORCE_PRIVATE` push-to-create, private RSS/Atom feed leak, tag-delete deleting releases, migration page-size DoS), plus MySQL/MariaDB `READ COMMITTED` and go-git repack fixes. No breaking changes. GitHub notes: https://github.com/go-gitea/gitea/releases/tag/v28.1.0 — vendor post (CVE list): https://blog.gitea.com/release-of-28.1.0/
- **28.2.0** (released 2026-10-18, MINOR): 9 newly-fixed Gitea CVEs (SSH cert principal confusion, OpenID linking `state`, locked-issue reactions authz, release-attachment metadata leak, `/{username}/-/repositories` panic, draft-release attachment disclosure, Actions artifact v4 body limit, CSRF on repo topics, cross-org label deletion) plus dependency CVE-2026-78659 (`golang.org/x/net` v0.60.0). Three more CVEs are disclosed here but were already fixed in ≤28.1 (CVE-2026-110324, CVE-2026-109844, CVE-2026-97859). No breaking changes and no Postgres requirement. GitHub notes: https://github.com/go-gitea/gitea/releases/tag/v28.2.0 — vendor post (CVE list): https://blog.gitea.com/release-of-28.2.0/
- **app.ini writability**: Gitea 1.24+ writes runtime config (e.g. `WORK_PATH`) back to `app.ini`; mounting it directly from a read-only swarm config makes that write fail (non-fatal but warned). The unmerged mirror PR #4 (`fix-app-ini-writable`) seeds a writable copy in the `config` volume. Image bumps must not change the config mount / `docker-setup.sh` handling on their own.
+37
View File
@@ -97,6 +97,43 @@
Valkey CVE note: CVE-2026-56684 / CVE-2026-63639 (UAF→RCE) are fixed in 9.1.1 and are therefore
** already closed** by the recipe's pinned 9.1.1 — not by this app bump; ignore the live-`9`-tag
drift. CVE-2026-25243 (valkey RESTORE zipmap) is vendor-page-only and undecided.
- **immich-server v3.3.0 (2026-10-07) + v3.3.1 (2026-10-08, latest stable) pins** (from
`docker/docker-compose.yml` @ the v3.3.1 tag): `postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357…`
(UNCHANGED vs v3.2.4) and `valkey:9@sha256:c123e3715db63d06d4ad6964884037aa0d5d4d703939b9929954112889708e1d`
— the **valkey pin moved** 9.1.1 (`70739f85…`) → **9.1.2 (`c123e371…`)**, which is now immich's own
official tested pin (the live `9` tag has since drifted to `418652cf…`; keep immich's `c123e371…`
per the 2026-07-17 precedent). `example.env` @ v3.3.1 is **byte-identical** to v3.2.4. v3.3.0 is a
feature release (people sharing / cluster groups, birthday memories, auto-stacked mobile edits,
higher-quality thumbnails via linear-light resampling, OAuth claims synced on every login, PP-OCRv6
OCR models); v3.3.1 is a patch (people-sharing + mobile scroll fixes). **No breaking server-side
changes, no required config, no operator action.** New TypeORM migrations auto-run
(`ConvertUserOAuthIdEmptyStringToNull`, `RenameGeoNamesCountries`, `PersonSharing`,
`AddPersonUserTableSharedBySharedWithConstraint`) — all succeeded in a live v3.2.4→v3.3.1 deploy.
Opt-in only: `MACHINE_LEARNING_MODEL_REVISION=v2` (optimized models, numerically equivalent, no job
re-run) and the people-sharing feature (user-triggered button, not a deploy migration). Done in the
2026-10-09 upgrade (v3.2.4→v3.3.1, app+ML+valkey, extending PR #6; fresh `!testme` GREEN — build #45).
- **immich-server v3.3.3 (2026-10-14) + v3.3.4 (2026-10-20) + v3.3.5 (2026-10-21, latest stable) pins** (from
`docker/docker-compose.yml` @ the v3.3.5 tag): `postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357…`
(UNCHANGED since v3.3.0) and `valkey:9@sha256:c123e371…` (immich's tested 9.1.2, also unchanged). Upstream
coopcloud published v3.3.4 as `1.12.0+v3.3.4` (`6b294fce`) and moved the recipe's `redis` pin to the then-live
`418652cf…`; that divergence is left as upstream has it (no reason to churn a sidecar in an app bump).
`docker/docker-compose.yml` and `docker/example.env` are byte-identical between v3.3.4 and v3.3.5.
v3.3.3 = bug fixes (mobile memories date, people-query perf); v3.3.4 = further people-query perf + translation;
**v3.3.5 = security patch** (certifi CA-trust fix + October 2026 Node.js security patches). No schema
migration, no config/env change, no breaking server-side change. Done in the 2026-10-23 upgrade
(v3.3.4→v3.3.5, app+ML only, extending PR #6; live v3.3.4→v3.3.5 dev deploy healthy — migrations finished,
`vector`/`vchord` present, no pgvectors drop; `!testme` GREEN first run — build #78).
- **2026-10-30: postgres sidecar pgvectors 0.2.0 → 0.3.0 (same PG14 + VectorChord 0.4.3 scheme).** With
app/ML already at v3.3.5, the only newer same-scheme tag is
`ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.3.0` (multi-arch OCI index digest
`sha256:87c050465fb969a68c7ac23e375e21f4c95cfacd0edce5fa1bc31e63b7891891`; re-verified via ghcr +
`docker buildx imagetools inspect`). immich v3.3.5's own compose still names 0.2.0, but immich only
supports `vchord`/`vector` now — `vectors` (pgvecto.rs) is not in its `VECTOR_EXTENSIONS`, so the
sidecar library is unused; 0.3.0 is backward-compatible (`ALTER EXTENSION vectors UPDATE`), immich
added 0.3.0 support in immich-app/immich#11624, and this recipe previously shipped 0.3.0 with
v3.0.1/v2.7.5. Direct dev deploy: 0.2.0-created volume reused by the 0.3.0 task, PG14 clean start,
`vchord 0.4.3`/`vector 0.8.1` installed, `/api/server/version` = 3.3.5, `!testme` GREEN (build #105).
Recipe PR extends upstream main `ac03d23`; publish with `abra recipe release immich -z`.
- **2026-08-07 INFRA note: cc-ci runner's gitea clone-token is STALE (HTTP 401).** `!testme` build
#1210 died at the recipe `git clone` step (~5s, before any deploy) with `could not read Username for
'https://git.autonomic.zone'` — the runner's mounted gitea token `13e299f2…` is rejected (verified
+17 -2
View File
@@ -6,6 +6,9 @@
| backend | lasuite/impress-backend | https://github.com/suitenumerique/docs | https://github.com/suitenumerique/docs/releases |
| celery | lasuite/impress-backend | https://github.com/suitenumerique/docs | https://github.com/suitenumerique/docs/releases |
| y-provider | lasuite/impress-y-provider | https://github.com/suitenumerique/docs | https://github.com/suitenumerique/docs/releases |
| yhub | lasuite/impress-yhub | https://github.com/suitenumerique/docs | https://github.com/suitenumerique/docs/releases |
| yhub-valkey | valkey/valkey | https://github.com/valkey-io/valkey | https://github.com/valkey-io/valkey/releases |
| jwt-keys | lasuite/impress-yhub (Node crypto sidecar) | https://github.com/suitenumerique/docs | https://github.com/suitenumerique/docs/blob/main/UPGRADE.md |
| docspec | ghcr.io/docspec/api | https://github.com/docspec/docspec | https://github.com/docspec/docspec/releases |
| db | pgautoupgrade/pgautoupgrade | https://github.com/pgautoupgrade/docker-pgautoupgrade | https://github.com/pgautoupgrade/docker-pgautoupgrade/releases |
| redis | redis | https://github.com/redis/redis | https://hub.docker.com/_/redis/tags |
@@ -13,8 +16,20 @@
| web | nginx | https://github.com/nginx/nginx | https://nginx.org/en/CHANGES |
## Standing notes
- impress-frontend, impress-backend (used for both backend + celery services), impress-y-provider all
share the same version tag from the suitenumerique/docs monorepo. Upgrade all four in lockstep.
- **v6.0.x replaces the collaboration server**: hocuspocus/y-provider collaboration is gone; a new
`yhub` service (port 3002) serves `/collaboration/*`, with its own `yhub` PostgreSQL database and a
Valkey store. `y-provider` is conversion-only. New RSA keys (`JWT_PRIVATE_KEY_FILE` backend,
`YHUB_JWT_PRIVATE_KEY_FILE` yhub), `COLLABORATION_SERVER_SECRET` removed. Docs must be migrated into
yhub (`SOFT_MIGRATION=true` + `backend migrate_documents`). See UPGRADE.md `[6.0.0]`.
- **v6.0.2** moves yhub to `@y/hub 0.10.1`, adding the `yhub_ydoc_versions_v1` table/indexes: re-run the
yhub schema script (`init-db`) — the recipe does it on every yhub start.
- **The recipe generates the two RSA keys at runtime** into a `jwt_keys` volume (`jwt-keys` sidecar)
because abra cannot generate PEM secrets (`generate=false`) and Swarm secrets must pre-exist.
- **docspec**: since Docs v5.7.0 the Rust `ghcr.io/docspec/api` (port 3000) replaces the archived Elixir
`ghcr.io/docspecio/api` (port 4000); Docs v6.0.2 expects `DOCSPEC_API_URL=http://docspec:3000/conversion`.
- impress-frontend, impress-backend (used for both backend + celery services), impress-y-provider,
impress-yhub (and the jwt-keys sidecar image) all share the same version tag from the
suitenumerique/docs monorepo. Upgrade all of them in lockstep.
- AUTO_MIGRATIONS=true means DB migrations run automatically on backend startup. No manual step needed.
- Minio tag uses a date-based RELEASE.YYYY-MM-DDTHH-MM-SSZ format — abra cannot parse it for upgrades;
check manually on https://github.com/minio/minio/releases.
+84
View File
@@ -302,3 +302,87 @@
`Array.merge`→`mergeIntoObject`; 2.37.0 JSON content-type on decorator body routes + binary-data
endpoint adapt; 2.39.0 workflow-version endpoint deprecation; 2.40.x `POST /rest/login`
`emailOrLdapLoginId` rename). Recommended release: `-y`.
- 2.42.3 (2026-10-05, patch): API fix (let global members grant variable scopes to API keys) + core
fix (keep the task runner running on an unhandled promise rejection) + editor feature (Gateway
credits promotions on community nodes).
- 2.42.4 (2026-10-07, patch): release body empty (republish / no listed changes).
- 2.42.5 (2026-10-08, patch): 1 editor fix (show the Agent artifact while the builder creates it).
- 2.42.6 (2026-10-09, patch): core feature (block create/update of workflows with deprecated nodes) +
Gemini node feature (Nano Banana 2.1 + 2 Lite in the image-model list). Backport of the 2.43.3 pair
onto the stable 2.42 line.
- 2.42.7 (2026-10-12, patch): 2 core fixes (concurrent credential tests no longer share one node-type
registry; resume tool calls for deferred tools a skill loaded).
- 2.43.0 (2026-10-06, Pre-release; the 2.43 feature minor): a large feature/bugfix release. Features:
Agent Builder / Instance AI / editor improvements + ~many core/API/editor fixes (valid schemas for
untyped values in the Public API spec; global members can grant variable scopes to API keys; return
an execution when its stored trace context is incomplete; Azure OpenAI Chat Model; etc.). **No
breaking compose/env/migration changes; no `N8N_*` env renames.** (2.43.1/2.43.2 = patch bugfixes:
editor Assistant/Execute UI; Kimi K3 + OpenAI-compatible Assistant providers self-hosted; Agent
artifact preview; agent-builder prompt-caching/background-sandbox perf.)
- 2.43.3 (2026-10-09, Pre-release): core feature (block create/update of workflows with deprecated
nodes) + Gemini node feature (Nano Banana 2.1 + 2 Lite in the image-model list).
- 2.43.4 (2026-10-12, patch, **stable line**): 2 core fixes (handle each Chat Hub segment once in
queue mode; resume tool calls for deferred tools a skill loaded).
- 2.43.5 (2026-10-14, patch, stable line): core fix (validate the `size` arg of the `chunk()`
expression extension) + editor feature (show Gemini models by name / prioritised first).
- 2.43.6 (2026-10-15, patch, **stable line — `stable` floating Docker tag points here**, digest
`sha256:dd580fe1…`): 1 core fix (create an XML parser per webhook request body). Backport of the
2.44.2 fix onto the stable 2.43 line.
- 2.44.0 (2026-10-13, **Pre-release / beta line — `beta` floating Docker tag points to 2.44.2**): the
2.44 feature minor. Large core/editor change set (credential/node-type policy enforcement across
agent tools, credential tests/probes, package import, folder/credential/delete-transfer moves;
block the assistant when AI credits hit zero; per-process crash-journal paths; configurable
healthcheck timeout; Microsoft SharePoint Trigger node; many bugfixes). **No breaking
compose/env/volume/label changes; no `N8N_*` renames.**
- 2.44.1 (2026-10-14, Pre-release/beta): 1 editor feature (Gemini models by name / prioritised first).
- 2.44.2 (2026-10-15, Pre-release/beta; **newest numeric tag abra lists**; Docker Hub `beta` floating
tag = `sha256:b57e7a9c…`): 1 core fix (create an XML parser per webhook request body).
- 2026-10-09 run (not separately logged here): PR #9 (branch `upgrade-a144baf`) extended from the
2.42.2 of the 2026-10-02 run to **2.43.2** (newest numeric tag abra listed that day). 2.43.2 was
still Pre-release on GitHub at the time (tracking-the-newest-tag precedent).
- 2026-10-16 run: reconcile confirmed coopcloud upstream main still `9141e23` (3.5.1+2.40.5) and
PR #9 (branch `upgrade-a144baf`, at 2.43.2) still open/unmerged, so per the one-evolving-PR
contract the run extends PR #9 **2.43.2 → 2.43.6**. Operator guidance this run: verify whether
2.44.x is the newest STABLE line and take the newest SAFE patch. **2.44.x is the beta/pre-release
line** — GitHub marks 2.44.0/2.44.1/2.44.2 `prerelease=true`, and Docker Hub's `beta` floating tag
points at 2.44.2 while `stable` points at 2.43.6 (verified live). So the safe target is **2.43.6**
(newest patch on the now-stable 2.43 line), NOT the beta 2.44.2. 2.43.2→2.43.6 is patch-only
(2.43.3 deprecated-node workflow guard + Gemini image list; 2.43.4 Chat-Hub queue-mode + deferred
tools; 2.43.5 `chunk()` size-arg validation + Gemini picker; 2.43.6 per-request XML parser). No
breaking compose/env/migration changes. Live-deployed on cc-ci `dev-n8n` (2.40.5 → 2.43.6): TypeORM
migrations completed cleanly, editor `/rest/login` 401 (auth-gated, as expected), `/healthz` 200 —
converged. Advisory scan 2.43.2→2.43.6: 0 CVEs fixed (9 sources, none failed). Recommended
release: `-y` (relative to the published label app tag 2.40.5 the delta spans feature minors
2.41/2.42/2.43).
- 2.43.7 (2026-10-16, patch): core suspend in-flight production executions at worker shutdown.
- 2.43.8 (2026-10-19, patch): core turn off expression spans by default (backport of 2.44.4).
- 2.44.3 (2026-10-16, patch): core keep Observer detail lines instead of discarding the response.
- 2.44.4 (2026-10-19, patch): core reuse connections in the log-streaming webhook destination; turn
off expression spans by default.
- 2.44.5 (2026-10-21, patch): core key queue job outcomes by job on shutdown resume; editor load
credential types on startup.
- 2.44.6 (2026-10-22, patch; **`stable` floating tag points here**): Postgres Node prevent global
pgtypes overwrite.
- 2.45.0 (2026-10-20, Pre-release; the 2.45 feature minor): automated migrations for removed nodes;
node and credential type policies enabled by default; durable scheduler enabled by default;
Idempotency-Key on Public API POSTs; workflow migration-findings endpoints/notifications; Kafka v2
default for new nodes; Monday.com V2 default; AI Agent/Assistant, editor and node fixes; UI rebrand.
**No breaking compose/env/volume/label changes; no `N8N_*` renames.**
- 2.45.1 (2026-10-21, Pre-release): core claim an idle worker's next queue job and its lock atomically;
Microsoft Teams Trigger Graph subscription renewal via lifecycle notifications; editors can triage
migration findings.
- 2.45.2 (2026-10-22, Pre-release; **`beta` floating tag points here — newest numeric tag**): core read
type-availability policies from memory at enforcement points; Postgres Node prevent global pgtypes
overwrite; migration report CSV export; OAuth-confirmation/email logo update.
- 2026-10-23 run: reconcile confirmed coopcloud upstream main moved to `c834df2` ("NODE_FUNCTION_ALLOW_EXTERNAL
in env file", on top of 3.5.1+2.40.5) and PR #9 (branch `upgrade-a144baf`, at 2.43.6) still
open/unmerged. Per the one-evolving-PR contract, PR #9 extended **2.40.5 → 2.45.2** (explicit target
= highest tag abra lists). 2.45.x is the current Pre-release/beta line; **stable = 2.44.6** (verified
live via Docker Hub floating tags), flagged to the operator. Window spans feature minors 2.41–2.45,
but release notes show **no breaking compose/env/volume/label changes and no `N8N_*` renames**.
Live-deployed on cc-ci `dev-n8n`: TypeORM migrations completed cleanly through
`CreatePromotionRunAndReviewTables1792139680417`, editor accessible, `/healthz` 200, `/rest/login`
401; runtime deprecation warnings only (`WEBHOOK_URL`→`N8N_WEBHOOK_URL`, internal runner mode,
unverified-packages default, runner-timeout/compression-limit default reductions). Advisory scan
2.40.5→2.45.2: 0 CVEs identified, BUT the GitHub advisory sources failed (unauthenticated rate
limit) — scan incomplete, not to be read as clean. Recommended release: `-y`.
+23
View File
@@ -0,0 +1,23 @@
# Upstream sources — rustdesk-server
| service | image | source repo | releases / changelog |
|---------|-------|-------------|----------------------|
| app | rustdesk/rustdesk-server | https://github.com/rustdesk/rustdesk-server | https://github.com/rustdesk/rustdesk-server/releases |
| signal | rustdesk/rustdesk-server | https://github.com/rustdesk/rustdesk-server | https://github.com/rustdesk/rustdesk-server/releases |
## Standing notes
- **NOT enrolled** in the cc-ci weekly set (operator 2026-10-30: single client, maintenance contract
pending). Mirror `recipe-maintainers/rustdesk-server` exists + this registry entry so one-off
`/recipe-upgrade` runs and advisory scans work; if the client confirms, enroll via `/recipe-enroll`
(test suite + bridge + used-recipes weekly row).
- Both services (`app` = hbbs, `signal` = hbbr) use the SAME image — always bump them together.
- Docker Hub has stray `1.4.5-*` arch tags (pushed 2026-01-12, top-level `1.4.5` tag deleted, no
GitHub release) — an aborted/alias push, NOT a real version line. The real line is `1.1.x`;
GitHub "Latest" + docker `latest` agree (1.1.16 as of 2026-07-20). Ignore 1.4.5.
- Recipe uses `-k _` on both hbbs and hbbr (enforces key verification, enforced-key mode since
1.1.11) and publishes host-mode ports 21115-21119 (hbbs) + 21117/21119 (hbbr) — direct
client connections, only 21118/21119 are the web-socket/http endpoints behind nothing; the
traefik labels on `app` are vestigial (hbbs has no HTTP :80 service; healthcheck commented out).
- 1.1.15 raised **default bandwidth limits** and added auth-failure logging (fail2ban-friendly);
1.1.16 fixed **unauthenticated UDP punch-hole reflection/amplification abuse** + critical `mio`
0.8.5→0.8.11 issue + i32 overflow (peers offline 24.9–49.7d shown online).
+2 -1
View File
@@ -28,10 +28,11 @@ lasuite-drive weekly
lasuite-meet weekly
mailu weekly
matrix-synapse weekly
mattermost-lts weekly
mattermost-lts external # maintained elsewhere — used/tested by cc-ci but NOT weekly-upgraded
mumble weekly
n8n weekly
plausible external # maintained elsewhere — used/tested by cc-ci but NOT weekly-upgraded
rustdesk-server weekly
uptime-kuma external # maintained elsewhere — used/tested by cc-ci but NOT weekly-upgraded
wordpress weekly
```
Generated
+4 -4
View File
@@ -10,11 +10,11 @@
]
},
"locked": {
"lastModified": 1790010051,
"narHash": "sha256-0dz8fg4zqg54tk+1A7CHZAw+lK9vWxre6Tioi5B0ocU=",
"lastModified": 1793642332,
"narHash": "sha256-OJhw1h9CvIjbQ1y+sApq01cQwoaMe9gf+bGVXAnj2Ak=",
"ref": "refs/heads/main",
"rev": "2f6787f0433e7ff3053116039f10c00cde34128f",
"revCount": 1558,
"rev": "a47c1caa8cd44512a1b988ee5296ff9129672a2a",
"revCount": 1585,
"type": "git",
"url": "https://git.autonomic.zone/recipe-maintainers/cc-ci.git"
},
+2
View File
@@ -1,5 +1,7 @@
# Memory index
- [Enroll gate fixtures must fail loudly](enroll-gate-fixtures-fail-loudly.md) — version-gate reads via lifecycle.deployed_identity, never None-into-if; post-host-merge deploy = --cc-ci-only after merge (staging obsolete)
- [Orchestrator host: Hetzner](orchestrator-host-hetzner.md) — runs on Hetzner cpx22; rebuild cmd, loops-service bounce, git-identity gotcha
- [Push commits to remote](push-commits-to-remote.md) — push to git.autonomic.zone right after every commit in this repo
- [Regression canary cadence](regression-canary-cadence.md) — server E2E canaries run on polish/review/release, not every commit
@@ -0,0 +1,43 @@
---
tags: [cc-ci, enrollment, testing, deploy]
---
# Enroll-verify gate fixtures must fail loudly
## Context
During rustdesk-server enrollment (2026-10-30, cc-ci PR #48) the first full-suite verification
run came back RED only because of the *fixture*, not the app: the punch-hole regression test's
version gate read the deployed image with a hand-rolled `docker service inspect`, got None, and
the `if version is not None and version < (1,1,16)` gate silently decided to RUN on a 1.1.12 head
where pre-fix answering is the expected behavior. An expected-RED looked like a real bug.
## Lesson
- A test gate that cannot decide its condition must `pytest.fail` LOUDLY with the raw value —
never default to None-into-an-if (silently runs → wrong RED) or silent skip (vacuous green).
- cc-ci already has a first-class image reader: `runner/harness/lifecycle.py::deployed_identity(domain)`
→ `{"version","image","chaos"}`; parse the tag from `.image` and strip any `@sha256:` digest.
Hand-rolled service inspects in recipe_meta/custom tests are a duplication hazard.
- Version-gated custom tests skip on pre-fix heads by design (STYLE §2) — that is fine as long
as the version read itself cannot fail silently.
# cc-ci host deploy mechanism (post host-merge, 2026-09+)
To run any merged cc-ci main change on the live host now, use the `--cc-ci-only` path from
/cc-ci-orchestrator-update — merge the PR first (enrollment PRs: comment verification evidence,
then merge — invocation = authorization), then:
```
ssh cc-ci 'sudo -H -u loops bash -lc "cd /srv/cc-ci-orch && nix flake update cc-ci &&
git -c user.name=auto-update -c user.email=auto-update@cc-ci commit -qm \"flake.lock: cc-ci -> main\" -- flake.lock &&
git push -q origin HEAD:main"'
ssh cc-ci 'git -C /etc/cc-ci pull --ff-only --recurse-submodules'
systemd-run --unit=ccci-rebuild-test --collect -E HOME=/root -p WorkingDirectory=/srv/cc-ci-orch \
bash -lc "nixos-rebuild test --flake /srv/cc-ci-orch#cc-ci" # := health checks := then switch
```
The old staging procedure (branch clone at /root/cc-ci-deploy, referenced by the retired
/cc-ci-server-update skill and old enroll SKILL.md step 7 lines) is obsolete — the combined-host
flake takes the cc-ci module from the lockfile, so a BRANCH cannot be staged that way; deploy
after merge instead.