feat: live tracker suite - WIKITOOL_TASKS_CONFIG override, real-tracker tests for Super Productivity and CalDAV, nightly workflow and test image (#156)
CI / verify (push) Failing after 2m1s
Release / release (push) Successful in 38s

Files changed:
- .gitea/scripts/start-radicale.sh
- .gitea/sp-live/Dockerfile
- .gitea/sp-live/resolve-version.sh
- .gitea/workflows/ci.yml
- .gitea/workflows/sp-live-image.yml
- .gitea/workflows/tracker-live.yml
- .gitignore
- CHANGES.md
- DEVELOPMENT.md
- INSTALL.md
- VERSION
- instructions/dev/doc-pull-through.md
- instructions/dev/stack-dev/SKILL.md
- instructions/dev/testing-conventions.md
- instructions/dev/tracker-testing.md
- kb/gtd/INDEX.md
- kb/gtd/technik/Chemenu 8.0.0 freigeben.md
- kb/gtd/technik/Windows nativ unterstützen.md
- kb/index.md
- tools/CONTRACT.md
- tools/chemenu/commands/docs_verify.py
- tools/chemenu/commands/doctor.py
- tools/chemenu/commands/review_cmd.py
- tools/chemenu/commands/task_cmd.py
- tools/chemenu/config.py
- tools/chemenu/tasks/config.py
- tools/chemenu/tests/conftest.py
- tools/chemenu/tests/fixtures/sp/MANIFEST.json
- tools/chemenu/tests/fixtures/sp/api/health.json
- tools/chemenu/tests/fixtures/sp/api/projects.json
- tools/chemenu/tests/fixtures/sp/api/tags.json
- tools/chemenu/tests/fixtures/sp/api/tasks.json
- tools/chemenu/tests/fixtures/sp/seed-backup.json
- tools/chemenu/tests/record_sp_fixtures.py
- tools/chemenu/tests/sp_headless.py
- tools/chemenu/tests/test_doctor.py
- tools/chemenu/tests/test_review.py
- tools/chemenu/tests/test_sp_recorded.py
- tools/chemenu/tests/test_task_cmd.py
- tools/chemenu/tests/test_tasks_config.py
- tools/chemenu/tests/test_tracker_live.py
- tools/chemenu/tests/tracker_live.py
- tools/pytest.ini
This commit is contained in:
torben committed 2026-09-30 13:23:24 +02:00
1 parent 529793b255
commit b0c64772cc
43 files changed
+2279 -32

No files matched your search

+39 -1
View File
@@ -59,7 +59,7 @@ concern - readable here, never shipped as something to parse.
---
## 8.0.0-beta.2 - 2026-09-30 - Super Productivity API path: unwrap the {ok, data} envelope, exclude the inbox project, ready-aware health (#162)
## 8.0.0-beta.3 - 2026-09-30 - Live tracker suite: WIKITOOL_TASKS_CONFIG override, real-tracker tests for Super Productivity and CalDAV, nightly workflow and test image
**Author:** Torben Nehmer
@@ -79,6 +79,7 @@ concern - readable here, never shipped as something to parse.
- fail() prints the command's ON FAILURE lines on stderr
- 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
**Low impact**
- version bump no longer points at version release in its output
@@ -109,6 +110,43 @@ concern - readable here, never shipped as something to parse.
- new_page/type_resolver comments no longer claim only entities declare a layout:
<!-- /wikitool:bumps -->
### Live tracker suite: WIKITOOL_TASKS_CONFIG override, real-tracker tests for Super Productivity and CalDAV, nightly workflow and test image (Gitea #156)
The task-tracker adapters were only ever tested against fakes, which is how #162 stayed hidden.
This adds a suite that runs the documented `task new` / `task list` / `task close` / `review`
workflow against a real tracker, and the machinery to run it on a clock.
- **`WIKITOOL_TASKS_CONFIG`** names the tracker configuration `task`, `review` and `doctor`
read instead of `.wikitool-tasks.json`, so one checkout can be run against several trackers in
turn. A set variable that names no file is an error naming the path - never "no tracker
configured". Listed in INSTALL.md's variable table and in the affected command records.
- **The `live_tracker` suite** (`tests/test_tracker_live.py`, `tests/tracker_live.py`) writes only
into a project named `Chemenu Live-Test`, prefixes every item with the run id, deletes
nothing, and aborts before the first write when the marker project is missing. It skips
without a tracker; `CHEMENU_LIVE_REQUIRE` turns a missing one into a failure. A tracker of
your own is named by `.wikitool-tasks.d/<name>.json` (gitignored, absolute paths only) and
`CHEMENU_LIVE_PROFILE`.
- **Headless Super Productivity** (`tests/sp_headless.py`) starts the packaged app on a seeded
profile, accepts its startup restore dialog over the DevTools protocol and refuses to start
when something already answers on the fixed API port.
- **Recorded fixtures** (`tests/fixtures/sp/`) hold real answers of v19.1.0 and a backup the app
wrote itself; `test_sp_recorded.py` replays them in the default run, and
`tests/record_sp_fixtures.py` records them again.
- **CI.** `ci.yml` runs the CalDAV half against a Radicale process on every push.
`tracker-live.yml` runs both providers nightly inside the `chemenu-sp-live` image, which
`sp-live-image.yml` builds daily when the update channel has a new Super Productivity version
and monthly regardless. The image follows the channel rather than a pin, because installed
desktop clients update themselves.
- **Docs.** `instructions/dev/tracker-testing.md` has the profile procedure per tracker, when an
agent dispatches the nightly run, what a red night means and how to refresh the fixtures;
`testing-conventions.md` names the live suite as the one deliberate exception to the hermetic
default. `docs verify` gained an ignore canary for `.wikitool-tasks.d/`.
- **Demo corpus.** `kb/gtd/technik/` gains two project pages taken from the Windows and release
work, matching projects in the seed backup, so `review` has something to join.
The Docker package `chemenu-sp-live` has to be linked to this repository once, by hand, after the
first image build.
### Super Productivity API path: unwrap the {ok, data} envelope, exclude the inbox project, ready-aware health (Gitea #162)
Preparing the live tracker tests (#156) ran the real Super Productivity v19.1.0 headless for the