stack: Telemetrie-Default nach Installationsform, Byte-Deckel und Session-Retention (schliesst #55)
Files changed: - .gitea/workflows/ci.yml - .gitignore - CHANGES.md - EVALS.md - INSTALL-MCP.md - INSTALL.md - VERSION - instructions/setup-instance.md - reports/CONTRACT.md - tools/CONTRACT.md - tools/chemenu/commands/doctor.py - tools/chemenu/config.py - tools/chemenu/mcp/server.py - tools/chemenu/telemetry/policy.py - tools/chemenu/telemetry/schema.py - tools/chemenu/telemetry/writer.py - tools/chemenu/tests/conftest.py - tools/chemenu/tests/test_doctor.py - tools/chemenu/tests/test_mcp_server.py - tools/chemenu/tests/test_telemetry_emit.py - tools/chemenu/tests/test_telemetry_policy.py - tools/chemenu/version.py
This commit is contained in:
+53
-1
@@ -35,7 +35,7 @@ dev-checkout concern - readable here, never shipped as something to parse.
|
||||
|
||||
---
|
||||
|
||||
## 5.0.0-beta.8 - 2026-09-10 - CLAUDE.md-Importkette entdrifted, Modellwahl nach docs/ verschoben (schliesst #81)
|
||||
## 5.0.0-beta.9 - 2026-09-10 - Telemetrie-Default nach Installationsform, Byte-Deckel und Session-Retention
|
||||
|
||||
**Author:** Torben Nehmer
|
||||
|
||||
@@ -61,6 +61,7 @@ dev-checkout concern - readable here, never shipped as something to parse.
|
||||
- version-parts.md dokumentiert den --migration-required-Ruecknahmepfad
|
||||
- wiki-status verweist auf session-setup.md (schliesst #84)
|
||||
- CLAUDE.md-Importkette entdrifted, Modellwahl nach docs/ verschoben (schliesst #81)
|
||||
- Telemetrie-Default nach Installationsform, Byte-Deckel und Session-Retention
|
||||
<!-- /wikitool:bumps -->
|
||||
|
||||
|
||||
@@ -1047,6 +1048,57 @@ nirgends geschah. `USER.md` und `SOUL.md` verlieren an derselben Stelle
|
||||
Rahmen- bzw. Herkunftsprosa, die `USER.md.template` bzw. ein Kommentar in
|
||||
`SOUL.md` selbst schon trägt.
|
||||
|
||||
**Telemetrie-Default nach Installationsform** (#55): `chemenu.telemetry.writer.enabled()` war
|
||||
eine Zeile - immer an, `WIKI_TRACE=0` das einzige Opt-out. Richtig für dieses Repo, dessen
|
||||
Traces das Messinstrument sind, mit dem der Stack sich selbst bewertet, aber die falsche
|
||||
Voreinstellung für eine ausgelieferte Instanz: dort hat niemand Telemetrie bestellt, und
|
||||
niemand liest `EVALS.md`, bevor die erste Datei geschrieben ist. Dazu kam eine zweite Lücke:
|
||||
keine Mengenbegrenzung irgendeiner Art - `reports/telemetry/<session>/trace.jsonl` wächst,
|
||||
solange die Instanz läuft, und nichts räumt je etwas weg.
|
||||
|
||||
`tools/chemenu/telemetry/policy.py` (neu) löst jetzt beides an einer Stelle, gekeyt auf den
|
||||
aufgelösten Root, damit `wikitool doctor`, der Writer und der MCP-Server-Start-Guard dieselbe
|
||||
Antwort für denselben Checkout geben. Ein Git-Clone dieses Repos bleibt beim alten Verhalten
|
||||
(an, `WIKI_TRACE=0` schaltet ab); eine per `dist export` ausgelieferte Instanz startet ab jetzt
|
||||
mit Telemetrie **aus** - erkannt an der ohnehin vorhandenen, maschinengeschriebenen
|
||||
`.wikitool-release.json` (Invariante 1). Wer sie dort anschalten will, legt eine
|
||||
`.wikitool-telemetry.json` an (pro Checkout, gitignored, kein `.template` - wie
|
||||
`.wikitool-remotes.json`); `WIKI_TRACE` überschreibt weiterhin beide Richtungen und schlägt die
|
||||
Datei.
|
||||
|
||||
Zwei unabhängige, fail-silent durchgesetzte Mengendeckel greifen in beiden Installationsformen:
|
||||
ein Byte-Deckel pro Session-Trace (Default 5 MiB, ein `stat` vor jedem Append) und eine
|
||||
Retention über die Anzahl der Session-Verzeichnisse (Default 250). Die Retention reserviert den
|
||||
Platz der gerade entstehenden Session, statt sie mitzuzählen - sonst pendelt der Bestand
|
||||
dauerhaft bei `keep+1` statt bei `keep`, weil jeder Lauf immer nur das räumt, was der *vorige*
|
||||
Lauf über dem Limit gelassen hat. Am Byte-Limit schreibt ein weiterer Aufruf nichts mehr außer
|
||||
einem einmaligen `telemetry.limit`-Event, per Exclusive-Create auf eine `.limit`-Sentinel-Datei
|
||||
ausgelost - derselbe Ein-Schreiber-Trick wie beim `session.start`-Header, für den Fall, dass
|
||||
mehrere Prozesse gleichzeitig auf denselben Trace schreiben. Eine Retention-Runde löscht
|
||||
ausschließlich `trace.jsonl`/`.limit` der überzähligen Verzeichnisse und `rmdir`t nur, wenn
|
||||
danach leer - nie `rmtree`, aus demselben Grund wie bei `upstream merge` (#30):
|
||||
`reports/telemetry/` hält lokale, nicht rekonstruierbare Daten, die `eval score` liest.
|
||||
|
||||
`wikitool doctor` bekommt einen neuen `telemetry`-Check (an/aus, warum, Menge gegen beide
|
||||
Deckel, nie `FAIL`, wie `publish-remotes` und `environment`). Der MCP-Server-Start-Guard
|
||||
(`check_trace_destination`) las `WIKI_TRACE` bisher selbst statt den Writer zu fragen - eine
|
||||
zweite Kopie derselben Regel, die Invariante 8 verletzte, bevor diese Änderung sie schließt; er
|
||||
fragt jetzt dieselbe Policy. `instructions/setup-instance.md` bekommt einen neuen
|
||||
Entscheidungspunkt (Schritt 10).
|
||||
|
||||
**MINOR, kein neuer Boundary-Crossing:** additiv in beide Richtungen - eine bestehende Instanz
|
||||
kopiert die neue Maschinerie über sich und hört still auf zu schreiben, ohne Hand-Arbeit oder
|
||||
Migration; die alte Version zurücklegen stellt den alten Default wieder her, weil sie die neue
|
||||
Datei und die neuen Variablen schlicht ignoriert. Der Kandidat trägt seine `--breaking`-Zeile
|
||||
bereits aus einem früheren Bump (Confidence-Entfernung); diese Änderung fügt keine neue hinzu.
|
||||
|
||||
Geändert: `tools/chemenu/telemetry/policy.py` (neu), `tools/chemenu/telemetry/writer.py`,
|
||||
`tools/chemenu/telemetry/schema.py`, `tools/chemenu/commands/doctor.py`,
|
||||
`tools/chemenu/mcp/server.py`, `tools/chemenu/config.py`, `tools/chemenu/version.py`,
|
||||
`.gitignore`, `tools/chemenu/tests/conftest.py` und die Telemetrie-/Doctor-/MCP-Server-Tests,
|
||||
`.gitea/workflows/ci.yml`, `EVALS.md`, `INSTALL.md`, `INSTALL-MCP.md`, `reports/CONTRACT.md`,
|
||||
`tools/CONTRACT.md`, `instructions/setup-instance.md`. Schließt #55.
|
||||
|
||||
---
|
||||
|
||||
## 4.7.4 - 2026-09-04 - bootstrap.md nennt den session-id-WARN nach frischem Bootstrap explizit als erwartet
|
||||
|
||||
Reference in New Issue
Block a user