Telegram notifications now show which test suite was used (light/heavy)
and how many tests were not in that suite (deselected).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When tests fail, ci-runner.sh generates an HTML report with:
- Build metadata (branch, commit, actor, duration)
- Test stats (passed/failed/skipped/errors)
- Failed test table (file + test name)
- Failure detail output
ci-notify.sh sends the HTML as a document attachment alongside
the text notification in the CICD Pipeline topic.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Multiple simultaneous test runs compete for PostgreSQL connections,
causing spurious errors. Global flock ensures one branch runs at a time.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
If pytest reports 0 passed, 0 failed, 0 skipped, treat it as a
failure. Something is wrong if no tests ran at all.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
--timeout flag caused pytest to fail silently on branches without
pytest-timeout installed. Now checks for the package first. Also
detects when pytest exits non-zero with 0 results (collection error)
and properly reports it as a failure.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Complete CI system that lives outside TSHARPS branches:
- ci-webhook.py: HTTP server on port 9500, receives Gitea push webhooks
- ci-runner.sh: runs feature manifests, pytest, package checks (read-only)
- ci-notify.sh: sends results to Telegram CICD Pipeline topic (4706)
- ci-config.json: branch→worktree mapping, tokens, timeouts
- README.md: branch model, promotion workflow, switch-back plan
Same tests for ALL branches. No drift. Runner self-monitors for crashes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>