feat: bug-report collector tools/bugreport.py and instructions/bug-report.md (#157)
CI / verify (push) Successful in 2m11s
Release / release (push) Successful in 38s

Files changed:
- .gitea/workflows/ci.yml
- CHANGES.md
- INSTALL.md
- VERSION
- instructions/bug-report.md
- instructions/gates.md
- instructions/setup-instance.md
- instructions/upgrade-instance.md
- reports/CONTRACT.md
- tools/README.md
- tools/bugreport.py
- tools/chemenu/tests/test_bugreport.py
This commit is contained in:
torben committed 2026-09-30 17:29:39 +02:00
1 parent 40413f966d
commit f9c047bd2e
12 files changed
+1497 -3

No files matched your search

+30 -1
View File
@@ -59,7 +59,7 @@ concern - readable here, never shipped as something to parse.
---
## 8.0.0-beta.4 - 2026-09-30 - Demo corpus follows the decided project pages: three states, seed with their items (#156)
## 8.0.0-beta.5 - 2026-09-30 - Bug-report collector: tools/bugreport.py and instructions/bug-report.md
**Author:** Torben Nehmer
@@ -80,6 +80,7 @@ concern - readable here, never shipped as something to parse.
- Budget gate and loop-breaker refusals exit without a traceback
- Super Productivity API path: unwrap the {ok, data} envelope, exclude the inbox project, ready-aware health (#162)
- Live tracker suite: WIKITOOL_TASKS_CONFIG override, real-tracker tests for Super Productivity and CalDAV, nightly workflow and test image
- Bug-report collector: tools/bugreport.py and instructions/bug-report.md
**Low impact**
- version bump no longer points at version release in its output
@@ -111,6 +112,34 @@ concern - readable here, never shipped as something to parse.
- Demo corpus follows the decided project pages: three states, seed with their items (#156)
<!-- /wikitool:bumps -->
### Bug-report collector: tools/bugreport.py and instructions/bug-report.md (Gitea #157)
A failure on one machine used to reach the maintainer as a description. `tools/bugreport.py` now
collects the first round of answers into one bundle, and it does so when `wikitool` itself does
not start: it uses the standard library only, imports nothing from `chemenu`, and keeps to
Python 3.8 syntax.
- **Four layers.** The environment (OS, every Python and shell found, harness, `PATH`, git
configuration, venv, line endings, on Windows also long paths, execution policy and
mark-of-the-web), the stack (`VERSION`, the `.wikitool-*.json` files, git status and log, the
shape of `kb/` and `raw/` with path lengths and names that break on Windows), verbatim output of
`version show`, `doctor`, `budget status`, `instructions verify` and `docs verify` plus the
caller's session trace, and the agent's chronology with any transcripts. The result is
`reports/bugreport-<UTC stamp>/` and a zip beside it.
- **Secrets are always removed; page titles are kept out of everything the script generates**
unless `--titles` is given. Environment variable names are all recorded, values only for a
fixed list. The trace, the chronology and the transcripts are marked in the manifest as
possibly containing page content and titles. Nothing is uploaded.
- **Its own session id.** The two counting calls run under `WIKITOOL_SESSION_ID=bugreport-<stamp>`,
so collecting a report neither spends nor is refused by the caller's budget. `gates.md` §
"Taking a new session id" names this as the second permitted case, for that script alone.
- **`instructions/bug-report.md`** (`manual: true`) is the agent's side: what to tell the user,
a fact-only chronology template, and the rule to stop before sending anything. `setup-instance.md`
and `upgrade-instance.md` offer it at a failure that has no obvious cause.
- `reports/CONTRACT.md` names the bundle as a third kind of output, `tools/README.md` explains why the
script sits beside the package, `INSTALL.md` has a troubleshooting entry, and CI runs the script
from the exported distribution.
### Demo corpus follows the decided project pages: three states, seed with their items (Gitea #156)
The first build of the live tracker suite shipped two demo project pages whose names came from a