tools/bugreport: --bundle/--chronology tauscht die Chronologie eines vorhandenen Bündels - Geheimnisse, Titelschutz und Pseudonyme wie beim Sammeln, kein wikitool-Aufruf, kein zweites Bündel; bug-report.md prüft die Chronologie vor dem Sammeln und nennt den Austausch als Entscheidungspunkt (#220); 10.1.0-beta.15
CI / verify (push) Successful in 8m17s
CI / pwsh (push) Successful in 2m53s
Release / converters (push) Successful in 26s
Release / release (push) Successful in 37s
Release / wiki-mirror (push) Skipped

Files changed:
- CHANGES.md
- VERSION
- docs/how-to/troubleshoot.md
- instructions/bug-report.md
- tools/README.md
- tools/bugreport.py
- tools/chemenu/tests/test_bugreport.py

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2
This commit is contained in:
torbenandClaude Sonnet 5.5 committed 2026-10-16 06:50:53 +02:00
1 parent b219adde91
commit b48a35b224
7 files changed
+371 -27

No files matched your search

+25 -2
View File
@@ -47,6 +47,14 @@ four layers:
`MANIFEST.md` lists every file and marks the ones that may contain page content and titles: the trace,
the chronology and the transcripts.
**A bundle is the output of one run.** Its `wikitool` outputs come from one moment. A chronology
that is wrong or missing afterwards is swapped into the bundle that exists
(`--bundle <dir> --chronology <file>`, see [Decision points](#decision-points)), never collected again: that changes
`CHRONOLOGY.md` and the zip and nothing else, runs no `wikitool` command, and leaves no second bundle
under `reports/` for the user to choose between. The new text goes through the same processing as at
collection - secrets removed, page titles kept out unless the bundle was collected with `--titles`,
and in a pseudonymised bundle every identity replaced from its mapping.
Two rules hold for everything the script generates itself. **Secrets are always removed**: values of
keys that look like a token, password, secret, key or auth entry, credentials in URLs, and every value
of that kind found while collecting is also replaced wherever else it turns up. **Page titles are kept
@@ -96,6 +104,12 @@ session. The bundle does not leave that place because of it.
[template](#chronology-template) below. Facts only - no diagnosis. If the session's own history is
too long to reconstruct, say what is missing instead of filling the gap.
**Check the chronology against the template before you collect.** Each step carries its command
literally, as it ran - no placeholder and no abbreviation such as `types describe <entity|concept|...>` -
with its exit code and the first relevant line of output, verbatim. Fix it now: it is the
cheap place to do so. Once the bundle exists, a correction is the swap in
[Decision points](#decision-points).
3. **Run the collector** through its launcher, which finds a Python 3.8 or later itself:
```bash
@@ -131,8 +145,8 @@ session. The bundle does not leave that place because of it.
one, in the session. The exception it gets in [gates.md](gates.md) § "Taking a new session id"
belongs to the script alone.
6. **Report the result.** Quote the bundle path, the archive path and the privacy notice the script
prints, name the gaps in `MANIFEST.md`, and tell the user to read the bundle before sharing it.
6. **Report the result.** Name exactly one bundle: quote its path, the archive path and the privacy
notice the script prints (after a swap, the one the swap printed), name the gaps in `MANIFEST.md`, and tell the user to read the bundle before sharing it.
After stage 2, name the residual uncertainty in words of your own: stage 2 is a model's judgement
and can have missed names, above all in the free text of a trace or transcript over 100 KB.
Say that the mapping, the review list and the candidate file hold originals and stay on this
@@ -172,6 +186,15 @@ Facts only: no page content, no guessed cause, no advice.
- **The mapping is gone before stage 2?** Stage 2 refuses: it needs the salt stage 1 used, or it would
replace a word differently from the path it already replaced. Collect the report again with
`--pseudonymise`.
- **The chronology is wrong, incomplete or missing after collecting?** Write the corrected file and
run `tools/bugreport --bundle reports/bugreport-<stamp> --chronology <file>`. **Never collect a
second time**: that makes a second bundle with `wikitool` outputs from another moment, and nothing
says which one counts. The swap works on a bundle collected without a chronology too (it adds
one). Add `--root <dir>` if the checkout is not the one holding `tools/`. If stage 2 had already
run, read the new `CHRONOLOGY.md` completely and run stage 2 again with the names you now find
there. If the swap exits 1 because the mapping is gone, handle it like "The mapping is gone"
above: collect again with `--pseudonymise`, and then say in the report which earlier bundle is
superseded. Delete nothing under `reports/` yourself; which bundles to keep is the user's call.
- **The user wants a name added after stage 2?** Run stage 2 again with a candidate file holding only
that line. The same run also works when the human spots a name while reading the bundle.
- **The user declines the trace?** Run with `--no-trace`. The manifest records the exclusion.