stack: Telemetrie-Default nach Installationsform, Byte-Deckel und Session-Retention (schliesst #55)
CI / verify (push) Successful in 53s
Release / release (push) Successful in 36s

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:
2026-09-10 23:38:22 +02:00
parent 71446c0f29
commit 82a22eaa93
22 changed files with 801 additions and 44 deletions
+33 -8
View File
@@ -147,7 +147,7 @@ bereit für den ersten `Ingest`.
identifiers](../kb/CONTRACT.md#language-and-identifiers)). Titel, Wikilink-Ziele, Cite-IDs,
Enum-Werte, Tags, Befehle und Pfade folgen keiner KB-Sprache.
`tools/wikitool doctor` prüft das Ergebnis in Schritt 12 (`conventions`): eine fehlende
`tools/wikitool doctor` prüft das Ergebnis in Schritt 13 (`conventions`): eine fehlende
Datei ist ein `FAIL`, eine mit Sentinel oder ohne vollständigen `sections:`-Block ebenso.
`docs verify` prüft zusätzlich `profile:` und `required_by_stack:` auf jedem
`COLLECTION.md`.
@@ -184,7 +184,7 @@ bereit für den ersten `Ingest`.
Invariante 3. Sie ändern keine Regel aus [AGENTS.md](../AGENTS.md), und eine Nutzeraussage
wandert daraus nie ohne den normalen Quelle/Provenance-Prozess nach `kb/`.
`tools/wikitool doctor` prüft das Ergebnis in Schritt 12 (`personalization`): eine fehlende
`tools/wikitool doctor` prüft das Ergebnis in Schritt 13 (`personalization`): eine fehlende
Datei ist ein `FAIL`, eine, die noch den Sentinel trägt, ebenso - ein umbenanntes Template
ist kein ausgefülltes.
@@ -215,24 +215,49 @@ bereit für den ersten `Ingest`.
Schreiben die Sentinel-Zeile (`wikitool:template-unfilled`) entfernen; das `.template`
bleibt liegen.
Wird der Schritt übersprungen, läuft alles weiter: `doctor` meldet in Schritt 12
Wird der Schritt übersprungen, läuft alles weiter: `doctor` meldet in Schritt 13
`environment: absent (optional)`, kein `FAIL`. Die Datei ist gitignored und geht in keinen
Commit ein - sie beschreibt diesen Checkout, nicht das Repo.
10. **Session-Budget scopen** (Details: [session-setup.md](session-setup.md)):
10. **Entscheidungspunkt - Telemetrie.** Der Default hängt am Installationsweg, nicht an
diesem Schritt: eine per `dist export` ausgelieferte Instanz - jede, die hier ankommt, ohne
Weg C (direkter Klon des Ursprungs-Repos) genommen zu haben - trägt eine
`.wikitool-release.json` und startet mit Telemetrie **aus**; niemand hat sie bestellt, und
`EVALS.md` liest ohnehin niemand, bevor die erste Datei geschrieben ist. Dieser Schritt
fragt nur, ob der Betreiber das umdrehen will.
Den Nutzer einmal fragen: Telemetrie an? Falls ja, `.wikitool-telemetry.json` im
Repo-Root anlegen (pro Checkout, gitignored, kein `.template` - wie
`.wikitool-remotes.json`):
```json
{ "enabled": true }
```
`max_session_bytes` (Default 5 MiB) und `keep_sessions` (Default 250) sind optional in
derselben Datei; die meisten Instanzen brauchen sie nicht anzufassen. Falls nein, nichts
tun - der Default steht bereits auf aus, und keine Datei entsteht. `WIKI_TRACE`
überschreibt beide Richtungen weiterhin, falls eine einzelne Session abweichen soll.
`tools/wikitool doctor` meldet das Ergebnis in Schritt 13 (`telemetry`): an/aus, warum
(Installationsform, diese Datei, oder `WIKI_TRACE`), und die aktuelle Menge gegen beide
Deckel - nie ein `FAIL`, in beide Richtungen ist das ein gültiger Zustand. Mehr dazu:
[EVALS.md](../EVALS.md) § "Whether it runs at all".
11. **Session-Budget scopen** (Details: [session-setup.md](session-setup.md)):
```bash
export WIKITOOL_SESSION_ID="wiki-$(date +%s)"
```
11. **Generierte Indizes erzeugen** - `dist export` liefert sie bewusst nicht mit:
12. **Generierte Indizes erzeugen** - `dist export` liefert sie bewusst nicht mit:
```bash
tools/wikitool index rebuild
tools/wikitool sources rebuild-index
```
12. **Verifizieren**, in dieser Reihenfolge:
13. **Verifizieren**, in dieser Reihenfolge:
```bash
tools/wikitool doctor
@@ -245,7 +270,7 @@ bereit für den ersten `Ingest`.
keine `WIKITOOL_SESSION_ID`) ist kein Blocker. Ein `FAIL` benennt sein eigenes Fix-Kommando;
das ausführen und `doctor` erneut aufrufen.
13. **Ersten Commit anstoßen:**
14. **Ersten Commit anstoßen:**
```bash
tools/wikitool publish --message "chore: initial instance setup"
@@ -257,7 +282,7 @@ bereit für den ersten `Ingest`.
Dateiliste und die exakte `--confirm <token>`-Zeile, die nach seiner Freigabe
veröffentlicht. Details zum Gate: [gates.md](gates.md).
14. **Agent-Session neu starten.** Harnesses lesen die Skill-Verzeichnisse beim Start; erst
15. **Agent-Session neu starten.** Harnesses lesen die Skill-Verzeichnisse beim Start; erst
danach sind `wiki-ingest`, `wiki-query`, `wiki-manage`, `wiki-lint` und `wiki-status`
verfügbar.