Commit Graph
67 Commits
Author SHA1 Message Date
autonomic-bot e89da2d842 audit-sources: check we are still looking where releases actually happen
A recipe tracks an image repo and a set of registry URLs. When upstream moves,
nothing errors — the old repo just stops receiving tags and the recipe looks
'up to date' forever. plausible is the case: it tracked plausible/analytics on
Docker Hub while upstream moved to ghcr.io/plausible/community-edition. Every
survey said 'no upgrades available' while v3 shipped elsewhere.

audit-sources.py reports the signals that catch it, per image and per registry
URL: image gone quiet (newest tag older than --quiet-days), deprecation wording
in the registry description, and GitHub repos that are archived, renamed or
gone. Signals, not verdicts — a stable image can be quiet for good reason — so
each finding says what was measured.

First run over 22 recipes, 11 findings, 4 alerts. It independently re-derived
the plausible case (analytics quiet 1126 days), and found:
  - drone: harness/drone now answers as harness/harness (the image is fine)
  - lasuite-docs, lasuite-drive: minio/minio is ARCHIVED on GitHub
  - lasuite-docs: docspecio/api is ARCHIVED
  - matrix-synapse: halfshot/matrix-appservice-discord image quiet 2078 days
  - mumble: NO cc-ci-plan/upstream/mumble.md at all

That last one exposed a scanner bug. With no registry file there is no source to
query, yet the scan still printed '0 identified by the deterministic scan' — and
that 0 was published as a clean count in the 2026-08-11 CVE check. A scan with no
usable source has measured nothing and must not report a number, least of all 0.
It now returns UNKNOWN and says the registry file is missing.

upstream/mumble.md added; mumble now scans 6 sources for a genuine 0.
2026-08-11 15:02:06 +00:00
autonomic-bot 318d09bdab advisory-scan: eliminate spurious '?' — url punctuation, stale URL, and ? semantics
The 2026-08-07 regeneration rendered '?' for 5 of 21 recipes. '?' is meant to be a
rare 'we tried and could not tell'; at that rate it is indistinguishable from noise
and hides the real unknowns. Three causes, none of them genuine uncertainty:

1. URL EXTRACTION BUG (mine). The registry is markdown, so urls appear inside
   `backticks` and 'quotes'. The extractor captured the trailing punctuation, so
   it fetched https://docs.n8n.io/release-notes/` and https://git.autonomic.zone'`
   — both 404 on the malformed url, both 200 when clean. Trailing markdown
   punctuation is now stripped. Fixed immich + n8n.
2. STALE REGISTRY URL. mattermost-lts pointed at
   docs.mattermost.com/about/mattermost-changelog.html, which 404s; the page moved
   to /deploy/. Corrected (same class as the pgautoupgrade fix).
3. WRONG SEMANTICS FOR 'NO UPGRADE'. lasuite-docs and custom-html-tiny were
   up-to-date this run, so no scan block existed and the report fell back to '?'.
   But a recipe with no upgrade has nothing an upgrade could have fixed — that is
   0, not unknown. The report skill now says so explicitly, restricts '?' to scans
   that RAN and reported genuinely failed sources, states that benign notes
   (no-advisories-published / template URL) never trigger '?', and instructs that
   many '?' is itself a bug to raise in the Addendum.

Result across all 16 scanned recipes of that run: 0 failed sources (was 5).
Counts also improved with the classifier fix: discourse 130->133, keycloak ->7.
2026-08-10 20:23:10 +00:00
autonomic-bot 3307bdb0fe advisory-scan: separate benign source absence from real failures; fix pgautoupgrade URLs
Two refinements found by running the scan across all 14 recipes of the 2026-08-07 run:

1. A repo with no advisory feed returns HTTP 404 on /security-advisories (e.g. the
   pgautoupgrade sidecar image). That is a BENIGN ABSENCE, not a failed check.
   Likewise registry entries that are TEMPLATE urls for humans
   (…/changelog/v<VERSION>/, …/<vX.Y.Z>/…) are documentation, not fetchable.
   Counting either as a failure pushed most recipes to '?', which would make the
   unknown-vs-clean distinction meaningless again — the exact signal the ? exists to
   preserve. Both are now recorded in sources_benign; only genuine errors (rate
   limit, network, 5xx, wrong URL) land in sources_failed.

2. upstream/*.md pointed at github.com/pgautoupgrade/pgautoupgrade, which 404s —
   the repo is pgautoupgrade/docker-pgautoupgrade. Corrected in n8n, lasuite-docs,
   lasuite-drive, lasuite-meet. A 404ing registry URL means we were not scanning a
   source we believed we were.

Effect on the 2026-08-07 data: recipes with genuine failed sources 5 -> 3 (the
remainder are really unreachable vendor pages). CVE counts unchanged where they
were already sound: discourse 130, gitea 2, plausible 1.
2026-08-10 18:45:45 +00:00
autonomic-bot 5775fe23f8 security: deterministic advisory scan as an ADDITIVE pre-step
Why: gitea 1.27.1 fixed CVE-2026-60004 + CVE-2026-59774 (both CVSS 9.8). The
2026-08-03 report printed gitea's CVE count as '1', the 2026-08-07 report as
'none'. Cause chain: the upgrade subagent read the GitHub release notes, which
name NEITHER cve (they are announced only in the vendor blog's security section),
so it recorded one unrelated minor item; the report then derived security content
from those notes plus model knowledge, and the model's training predates the CVEs.
Nothing in the pipeline ever queried an advisory source.

cc-ci-plan/advisory-scan.py — deterministic, per recipe, per upgrade window:
  1. GitHub Security Advisories API for every source repo in the upstream registry.
     PRIMARY: CVE + GHSA + severity + vulnerable/patched ranges, so 'fixed by THIS
     upgrade' is computed. Needs no new per-recipe config (134 registry URLs are
     already github.com).
  2. Vendor release/security pages — every registry URL, fetched + regex-scanned.
     This is the source that actually had the gitea CVEs.
  3. OSV where a package mapping exists — supplementary.
Each source reports its own status so 'checked, none found' is never confused with
'not checked'. Source selection was measured, not assumed: for these two CVEs OSV
404'd and NVD's API had them by neither CPE, id, nor keyword — advisory DBs lag the
vendor, hence 1+2 lead.

Wiring is strictly ADDITIVE:
- /recipe-upgrade gains step 2a: run the scan, paste the block into the per-recipe
  log, and report the UNION of it and the existing release-note reading. The scan
  may never lower a count established by reading.
- /recipe-report treats the block as a FURTHER source, prefers its advisory ids /
  severities / fixed-in versions for citation, and must render '?' (not 'none')
  when a scan is absent or has failed sources — the false-clean 'none' is exactly
  what happened on 2026-08-07.
- upstream/gitea.md records blog.gitea.com as the security-announcement URL.

Verified on the real regression: 1.27.0 -> 1.27.1 now yields exactly the 2 missed
criticals with their GHSA ids; the wider 1.26.2 -> 1.27.1 window yields 62.
2026-08-10 18:25:58 +00:00
autonomic-bot d101147b93 upstream(plausible): note v3.2.1 ships with clickhouse 24.12-alpine 2026-08-07 05:14:27 +00:00
autonomic-bot fb1dc7af9c upstream(mattermost-lts): 2026-08-07 re-check (11.10.0 pre-release; ESR=11.7.8) 2026-08-07 04:47:40 +00:00
autonomic-bot 0347511a84 upstream(n8n): release-notes sources 2026-08-07 04:44:40 +00:00
autonomic-bot f8888b2082 upstream(lasuite-drive): fix collabora release-notes URL + note minio AIStor move 2026-08-07 04:21:19 +00:00
autonomic-bot a56734de0b upstream(immich): 2026-08-07 — upstream main at v3.1.0; runner clone-token stale 2026-08-07 03:51:02 +00:00
autonomic-bot 5424954b3f upstream(gitea): note 1.27.1 patch release 2026-08-07 03:15:22 +00:00
autonomic-bot 51b067770c upstream(discourse): re-confirm pg18 newest (2026-08-07) 2026-08-07 02:53:05 +00:00
autonomic-bot e8d7d09445 upstream(n8n): add 2.32.x / 2.33.x release-notes coverage
Covers the 2.32.4 -> 2.33.3 range for the 2026-08-03 /upgrade-all run:
2.33.0 minor features (admin-managed instance creds, workflow review
requests + publish/unpublish API, API deprecation of activate/deactivate
endpoints, optional N8N_SCHEDULER_MAX_ATTEMPTS env) and the 2.33.1-2.33.3
patches; notes 2.34.0 exists but is not this run's target.
2026-08-04 16:27:43 +00:00
autonomic-bot b2063b8235 upstream(mattermost-lts): 2026-08-04 re-check — 11.9.0 exists, operator-directed bump 2026-08-04 16:07:53 +00:00
autonomic-bot 02cc2c29e2 upstream(lasuite-meet): release-notes sources 2026-08-04 01:21:43 +00:00
autonomic-bot 388e7f38c9 upstream(lasuite-docs): record v5.4.0 Bearer-auth removal + redis sidecar note 2026-08-04 00:13:50 +00:00
autonomic-bot 6b3a3b1934 upstream(discourse): 2026.1→2026.7 ESR jump notes 2026-08-03 22:35:36 +00:00
autonomic-bot 74a57d37b3 recipes: enroll wordpress as weekly-maintained
used-recipes.md: wordpress weekly row. upstream/wordpress.md: registry entry
(wordpress official image + mariadb; install-wizard/XML-RPC test notes).
Mirror recipe-maintainers/wordpress created + synced (adcd0e9f). Test suite +
bridge enrollment: cc-ci PR #14 (verify + bridge deploy deferred until the
in-flight /upgrade-all completes).
2026-08-03 21:06:20 +00:00
autonomic-bot 865eb45966 upstream(immich): v3.1.0 sidecar pins (valkey 8e8d64b4…, postgres unchanged) 2026-07-31 03:26:34 +00:00
cc-ci-bot 39c7d08dbd upstream(mattermost-lts): re-check 2026-07-24, 11.7.7 latest ESR patch 2026-07-24 13:08:03 +00:00
autonomic-bot d53a80eed4 upstream(lasuite-meet): add v1.24.0 / livekit v1.13.2-4 / nginx 1.31.3 notes 2026-07-24 04:35:54 +00:00
cc-ci 095b1dc75f upstream(custom-html): add nginx 1.31.3 release notes 2026-07-24 03:40:00 +00:00
cc-ci-bot 117685343b upstream(immich): note v3.0.3 release + valkey pin rationale 2026-07-17 02:19:46 +00:00
autonomic-bot 9e8ddc132e upstream(n8n): docs.n8n.io release-notes 404 -> use GitHub Releases; confirm live 2.27.2->2.31.0 sqlite migration clean 2026-07-15 00:11:13 +00:00
autonomic-bot 3ee026c2af upstream(mattermost-lts): 2026-07-13 re-check — 11.7.6 still latest ESR, 11.9 is innovation 2026-07-13 23:26:24 +00:00
autonomic-bot 89af8e4ed3 upstream(matrix-synapse): document signalbridge calver tag-form gotcha (abra blind spot) 2026-07-13 23:20:33 +00:00
autonomic-bot 4f2dd96c85 upstream(lasuite-meet): release-notes for meet v1.22/v1.23 + livekit v1.13.2/v1.13.3 2026-07-13 23:04:49 +00:00
autonomic-bot 82ae406667 upstream(immich): v3.0.2 pins (valkey:9 digest refreshed, postgres pgvectors0.3.0 unchanged) 2026-07-13 20:08:45 +00:00
autonomic-bot c1695dcf72 upstream(gitea): note 1.26.3 regression + 1.27.0 breaking changes 2026-07-13 20:05:06 +00:00
autonomic-bot d45a55a65f upstream(discourse): update for official image + calver release notes 2026-07-13 17:45:04 +00:00
autonomic-bot 52e7c954a3 upstream(hedgedoc): fix pgautoupgrade source repo URL 2026-07-03 04:09:57 +00:00
autonomic-bot 00335d6261 upstream(mattermost-lts): refresh to 11.7.6 ESR; correct survey's 10.x-LTS misread 2026-06-29 01:27:51 +00:00
autonomic-bot 816985160d upstream(matrix-synapse): correct bridge/db notes (previous attempt did not ship) 2026-06-23 01:27:37 +00:00
autonomic-bot 3762efcce3 upstream(matrix-synapse): document bridge calver + telegram Go rewrite + PG13→15 2026-06-22 21:46:42 +00:00
autonomic-bot 438819a94a upstream(mattermost-lts): 2026-06-22 re-check — 11.7.5 still latest ESR 2026-06-22 21:44:13 +00:00
autonomic-bot 543b98d030 upstream(ghost): document MySQL 9.x is NOT supported by Ghost (do not bump past 8.x) 2026-06-22 21:19:31 +00:00
autonomic-bot 25ef098581 upstream(discourse): bitnamilegacy frozen at 3.5.0; 9.x are Helm chart OCI artifacts 2026-06-22 20:56:17 +00:00
autonomic-bot 8887c1089e upstream(custom-html-tiny): fix alpine/git source repo URL 2026-06-22 20:52:55 +00:00
autonomic-bot 2a682b1fe5 upstream(custom-html): fix alpine/git source repo URL + add 1.31.2 notes 2026-06-22 20:43:38 +00:00
autonomic-botandClaude Sonnet 4.6 68bbfc72f2 upstream(mattermost-lts): update to 11.7 ESR; note restore fix, schemeid gotcha
- Mattermost now on 11.7 ESR (EOL 2027-05-15); 10.11 ESR expires 2026-08-15
- Latest patch: 11.7.5 (2026-06-18)
- Note: avoid 11.7.0–11.7.2 (schemeid bug upgrading from 10.11.17+)
- Backup/restore now uses pg_backup.sh (proper restore hook; PR #2/PR #1 fix)
- Next ESR expected ~Feb 2027

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mbq9p2eCzZH59qfw9WsgKZ
2026-06-19 03:53:48 +00:00
autonomic-bot 15e88eaca2 upstream(hedgedoc): add release-notes sources registry 2026-06-19 02:49:42 +00:00
autonomic-bot f195dfc828 upstream(gitea): release-notes sources 2026-06-19 02:45:01 +00:00
autonomic-bot 0ccd98fa8e upstream(drone): release-notes sources 2026-06-19 02:21:11 +00:00
autonomic-bot e844ae3909 upstream(bluesky-pds): update registry — 0.4.5001 is new versioning scheme, not a mis-tag 2026-06-19 02:12:41 +00:00
autonomic-bot 5141335fb3 upstream(mattermost-lts): update ESR notes — 10.11 ESR (Aug 2026), 10.12 expired, 11.7 next ESR; backup format notes 2026-06-12 04:14:04 +00:00
autonomic-bot e89884beba upstream(n8n): update standing notes for 2.26.3 upgrade 2026-06-12 04:12:32 +00:00
autonomic-bot c7fae6cbee upstream(matrix-synapse): update notes for 7.3.0+v1.154.0 PR#2 2026-06-12 04:00:59 +00:00
autonomic-bot 4f31abc0c7 upstream(mailu): update Redis standing note — operator approved 8.8.x jump 2026-06-12 03:48:52 +00:00
autonomic-bot d3a9455eb3 upstream(lasuite-meet): document livekit v1.13.1 TURN-auth note + redis 8.8.0 2026-06-12 03:43:29 +00:00
autonomic-bot 7ce898e0e4 upstream(immich): document concurrent app+db restart update_config fix 2026-06-12 03:26:37 +00:00
autonomic-bot 28b9431035 upstream(immich): note pgvectors0.3.0 bump in PR #2 + new digest (2026-06-12) 2026-06-12 02:50:45 +00:00