Betriebs-Luecken: Restore-Probe, Venv-Audit, Disk-Waechter, PC-Watch
Scope-Entscheid 17.07.: MC2 bleibt Box-Zentrale (KEINE Homelab-Zentrale) - Infra-Radar (Proxmox/PBS/QNAP/Gitea) geht als eigenes Projekt an Lucys Queue. - restore-probe.sh (Cron 1. d. M. 06:40, no-agent): stellt WIRKLICH wieder her - PBS-Canary aus hermes.pxar (selektiv via --pattern, sudo-frei ueber die User-Unit-Zugaenge) + Tarball-Probe + Frische-Check <36h; Erstlauf-Fallbacks (llamaswap.pxar / Kern-Datei) bis der Canary in den Sicherungen ankommt. - venv-audit.sh (Cron 2. d. M. 06:40, no-agent): pip outdated + pip-audit-CVEs fuer mem0-/voice-venv ueber eigenes Audit-venv; Funde -> Kanban-Karte je Monat, Update bleibt Commander-Entscheid. - self-smoke: Disk-Waechter (Check 7, Schwelle 85%, nennt die groessten Brocken). - Trend-Radar-Watchlist: neue Typen github_release_major + pypi; Eintraege electron-major (PC-Shell auf 33!) und pocket-tts (PyPI-Versionswatch). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -239,7 +239,7 @@ echo
|
||||
# =====================================================================
|
||||
echo "### 3. WATCH-LISTE (mechanisch geprüft)"
|
||||
python3 - "$WATCHLIST" "$STATE" "$TMPD/watch.txt" <<'PY'
|
||||
import json, sys, urllib.request
|
||||
import json, re, sys, urllib.request
|
||||
|
||||
def hole(url, timeout=30):
|
||||
req = urllib.request.Request(url, headers={"User-Agent": "mc2-trend-radar"})
|
||||
@@ -272,6 +272,22 @@ for e in eintraege:
|
||||
neu = " ⚠️ NEU seit letzter Woche!" if tag != gesehen.get(key) else ""
|
||||
zeilen.append(f"- {key}: neuester Release {tag}{neu} ({e['warum']})")
|
||||
gesehen[key] = tag
|
||||
elif typ == "github_release_major":
|
||||
# PC-Watch (17.07.): nur MAJOR-Sprünge melden — Electron released wöchentlich,
|
||||
# relevant ist der Chromium-Jahrgang, nicht jeder Patch.
|
||||
d = json.loads(hole(f"https://api.github.com/repos/{e['repo']}/releases?per_page=1"))
|
||||
tag = (d[0].get("tag_name") if isinstance(d, list) and d else "?") or "?"
|
||||
m = re.search(r"(\d+)", tag)
|
||||
major = m.group(1) if m else "?"
|
||||
neu = " ⚠️ NEUE MAJOR-VERSION!" if major != gesehen.get(key, major) and major != "?" else ""
|
||||
zeilen.append(f"- {key}: neuester Release {tag} (Major {major}){neu} ({e['warum']})")
|
||||
gesehen[key] = major
|
||||
elif typ == "pypi":
|
||||
d = json.loads(hole(f"https://pypi.org/pypi/{e['paket']}/json"))
|
||||
ver = ((d.get("info") or {}).get("version")) or "?"
|
||||
neu = " ⚠️ NEU seit letzter Woche!" if ver != gesehen.get(key, ver) and ver != "?" else ""
|
||||
zeilen.append(f"- {key}: PyPI-Version {ver}{neu} ({e['warum']})")
|
||||
gesehen[key] = ver
|
||||
elif typ == "url_zeilen":
|
||||
text = hole(e["url"], timeout=45)
|
||||
passend = [z.strip() for z in text.splitlines() if e.get("muster", "") in z]
|
||||
|
||||
Reference in New Issue
Block a user