Commit graph

4 commits

Author SHA1 Message Date
7e15e63dae classifier: Point at gemma4:26b and retry transient fetches
Every classification returned "HTTP Error 404" because the configured
model gemma4:26b-64k no longer exists on the Ollama host: the tag was
retired upstream and the local weights were deleted, so all pending
updates fell back to manual review. Switch to the current gemma4:26b
tag (25.2B, 262k context) and make it explicit in .env so the
classifier no longer depends on the code default matching reality.

PieFed intermittently returned an empty body, which surfaced as a
current version error in the digest. Retry version fetches with a
short backoff so one bad response no longer triggers an alert.

Leave-one-out validation for the new model: immich 6/7 (the miss is
the conditional-breaking example where the model follows the written
rule that thresholds below the running version do not apply),
freshrss 6/6, uptime-kuma 4/4.
2026-09-14 05:37:37 +00:00
ea90b8569b feat: Add Grafana auto-update & improve classifier
Add auto-update for Grafana on Synology via SSH + docker compose,
with review examples and a context.txt describing the specific setup
(Prometheus + Node Exporter, no plugins) so the classifier can
ignore plugin-only breaking changes.

The classifier now loads an optional context.txt per service to
tailor decisions to the actual deployment. It also truncates large
release notes intelligently, keeping important sections (breaking
changes, deprecations, migration notes) while dropping long PR
lists that add no signal.

test_classifier.py now also loads context.txt and accepts any
service name as argument.
2026-04-13 03:57:22 +00:00
67a9509eaa feat: Add PeerTube & PieFed auto-update, improve classifier
Add auto-update scripts and review examples for PeerTube and PieFed,
bringing total auto-updating services to three.

The classifier now includes the current and target version in the
prompt so it can correctly evaluate conditional upgrade notes like
"follow v8.1.0 instructions if upgrading from <= v8.0.2". Without
this context the model would conservatively flag patch releases as
manual.

All auto-update wrappers now use `bash -euo pipefail` when calling
remote scripts so failures in upstream deploy/upgrade scripts
propagate correctly instead of silently succeeding.

test_classifier.py now accepts a service name argument and derives
realistic version numbers from the release notes for testing.
2026-04-12 23:13:26 +00:00
f55f3d8e91 feat: Add AI-driven auto-update & restructure into package
The monolithic check_updates.py has been split into the update_monitor/
package with separate modules for fetching, extraction, comparison,
classification, and notification. This makes the codebase easier to
navigate and test.

The flat services.yaml is replaced by per-service directories under
services/<name>/config.yaml, co-locating config with update scripts
and AI review examples.

When --auto-update is enabled, services with an auto-update.sh script
get their release notes classified by a local Ollama model (using
few-shot examples from review-examples/) to decide whether the update
can be applied automatically or needs manual admin intervention. Results
are reported in a single consolidated Matrix message.

Immich is the first service with auto-update configured, using 7
real release note examples to train the classifier.
2026-04-09 12:49:57 +00:00