Die `### TPnn`-Header trugen weiterhin Status-Anspruche (▸ ✅ FERTIG …, ▸ ⏳ CUTOVER …),
obwohl Index/Status seit dem TP36-Cutover in Gitea liegt. Das war eine dritte Statusquelle,
die den Labels nachlief — Header-Marker datierten teils Wochen vor dem Issue-Update.
- 75 Header (32 aktiv + 43 Archiv) auf `### TPnn · Gitea #N — <Titel> — <Caveat>` umgestellt.
Caveats, Warnungen, Querverweise und Archiv-Links bleiben erhalten, nur der Status faellt weg.
Status-Marker im Fliesstext (Messchronik, Unterpunkte) bleiben — sie beschreiben Historie.
- TP47 fehlte als Gitea-Issue komplett (nur in der Datei seit 808d3a1) -> als #74 angelegt.
- bin/gitea-tp-sync.py schrieb in die falsche Richtung: der Abgleich leitete den Zielzustand
aus dem Datei-Marker ab (fest ✅) und haette #24 (TP34, bewusst status:dropped) auf status:done
gezogen. Jetzt werden nur noch FEHLENDE Archiv-Issues angelegt, bestehende nie angefasst.
- CLAUDE.md: Header-Form + Werkzeug-Richtung festgehalten.
- Announcement 2026-10-03 für die naechste Session.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4.6 KiB
Announcements — bf-infra
Breaking News / Querschnitts-Änderungen, die jede folgende Session kennen muss, bevor sie
losarbeitet — Dinge, die man sonst erst nach dem ersten Fehlschlag merkt. Kein Ersatz für die
TP-Prosa (docs/teilprojekte.md) oder das Gitea-Board; hier steht nur, was quer zu den TPs gilt.
Format je Eintrag: Überschrift ## YYYY-MM-DD — <Titel>, dann die Zeilen
Betrifft: (wer/was) und Aktion: (was eine Session konkret anders machen muss),
optional ein, zwei Sätze Kontext. Neueste oben. Der Skill /news liest diese Datei und
zeigt die Einträge, die seit dem letzten /news-Lauf dazugekommen sind (Rest auf Wunsch).
2026-10-03 — TP-Header tragen keinen Status mehr (SSoT-Drift geschlossen)
Betrifft: alle, die docs/teilprojekte.md oder teilprojekte-archiv.md lesen oder editieren, und
alle, die ein TP anlegen/abschließen.
Aktion: Die ### TPnn-Header haben die Form ### TP25 · Gitea #17 — <Titel> — <Caveat>.
Der Status-Anspruch (▸ ✅ FERTIG (2026-09-15), ▸ ⏳ CUTOVER …) ist entfernt — er war eine
dritte Statusquelle neben Issue und Prosa und lief den Labels nachweislich hinterher. Wer einen
Status braucht, liest das status:*-Label im Gitea-Board, nicht den Datei-Kopf — · Gitea #N
ist die Brücke. Status-Marker im Fließtext (Messchronik, └─-Zeilen) bleiben: sie beschreiben
Historie, keinen Stand.
Dazu zwei Befunde, die dabei behoben wurden:
- TP47 existierte nur in der Datei, ohne Gitea-Issue (seit Commit
808d3a1, 2026-09-27) — jetzt #74. Das war ein echter SSoT-Bruch, kein fehlender Zeiger. bin/gitea-tp-sync.pyschrieb in die falsche Richtung: der Abgleich leitete den Zielzustand aus dem Datei-Marker ab (fest✅) und hätte #24 (TP34, bewusststatus:dropped) aufstatus:donegezogen. Das Werkzeug schreibt jetzt nur noch fehlende Archiv-Issues neu und fasst bestehende nie an.
2026-09-12 — Golden-Config-Backups laufen jetzt täglich (vorher KEIN Scheduler)
Betrifft: alle, die sich auf GC-Backups/Compliance oder gc-snapshot.py-Werte verlassen.
Aktion: Es gab nie einen automatischen GC-Backup-Zeitplan — Backup/Intended/Compliance liefen
nur manuell aus Sessions (zuletzt 09-04 → 8 Tage Stillstand). Jetzt ScheduledJob „GC Backup+Compliance
– taeglich" (Nautobot, Execute All GC Jobs - Multiple Device, platform=RouterOS, täglich 03:30 UTC,
Reihenfolge Backup→Intended→Compliance). Wenn backup_last_success_date eines Geräts alt ist: zuerst
prüfen, ob der ScheduledJob noch enabled ist (/api/extras/scheduled-jobs/), nicht das Gerät verdächtigen.
2026-09-12 — claude.json-Secrets laufen über {env:} (TP35 Schicht 2 ✅)
Betrifft: alle, die ~/.claude.json oder ~/.secrets/exports.zsh anfassen.
Aktion: Keine Klartext-Secrets mehr in ~/.claude.json — MCP-Credentials referenzieren jetzt
{env:MCP_*} (dieselben Namen wie opencode.jsonc, bidirektional kompatibel). SSoT ist
~/.secrets/exports.zsh (25 Vars). Nach jeder Änderung dort: ~/dev/.bin/gui-env-sync.sh
und App-Neustart (laufender Prozess erbt die launchd-Umgebung nicht). ⚠ ~/.claude.json nie aus
einer laufenden Session editieren — Claude Code schreibt dort State, der Edit würde überschrieben;
der Flip läuft bei beendeter App über ~/dev/.bin/schicht2-claude-json-migrate.py --apply-claude.
2026-09-12 — TP36-Live: Gerätedaten stehen als CustomFields in Nautobot
Betrifft: alle, die Geräte-Ist-Werte (RouterOS-Version, Compliance %, DHCP-Server-Zahl,
DNS-Modus, Mgmt-IP) brauchen.
Aktion: Nicht mehr aus der Prosa ablesen und nicht raten — die fünf Felder (grouping: TP36-Live)
hängen an den 5 RouterOS-dcim.Device in Nautobot. Aktualisieren: python3 nautobot/gc-snapshot.py --commit (liest nur aus Nautobot/GC, kontaktiert kein Gerät). Die Werte sind so aktuell wie das
letzte Golden-Config-Backup (backup_last_success_date am Gerät).
2026-09-07 — SSoT-Cutover: Index/Status = Gitea, NICHT mehr teilprojekte.md
Betrifft: jede Session, die einen TP-Status ändert, anlegt oder abschließt.
Aktion: Status/Reihenfolge/„was lief zuletzt" gehen ins Gitea-Issue
(admin/bf-infra, Labels status:*/thema:*),
nicht in eine Tabelle in docs/teilprojekte.md. Die Datei trägt nur noch die ### TPnn-Prosa.
/projektstatus liest Baum + Status aus der Gitea-API. Branch tpNN-kurz jederzeit möglich, Merge
nach main, sobald Code/Config steht.