|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to Trust5 are documented here. Versions before 0.7.0 |
| 4 | +predate this changelog. |
| 5 | + |
| 6 | +## [Unreleased] |
| 7 | + |
| 8 | +### Fixed |
| 9 | +- **Test discovery no longer hands package markers to pytest** — passing |
| 10 | + `tests/__init__.py` as a CLI argument made pytest collect the whole package |
| 11 | + on top of explicitly listed files, double-counting every test (a 106-test |
| 12 | + suite reported as 121). `conftest.py` is likewise excluded from runnable |
| 13 | + test lists; the write-protection layer still covers both. |
| 14 | +- **Venv safety net fires once Python files actually exist** — it previously |
| 15 | + ran only in the Setup stage, which sees an empty directory when the planner |
| 16 | + emits no setup commands; suites then ran on whatever `pytest` the ambient |
| 17 | + environment provided. Validate now re-runs the idempotent net at its |
| 18 | + runtime language-detection point, and the net installs the project's |
| 19 | + `requirements.txt` into the venv. |
| 20 | +- **Planner non-compliance is loud** — a plan missing the mandatory |
| 21 | + `SETUP_COMMANDS` / `QUALITY_CONFIG` / EARS-criteria blocks now emits |
| 22 | + explicit warnings, and the quality gate announces when SPEC compliance is |
| 23 | + skipped for lack of criteria instead of passing vacuously. |
| 24 | +- **`trust5 loop` test runs are hardened** — the LSP loop executed the test |
| 25 | + command via raw `subprocess.run(shell=True, timeout=120)`; it now uses the |
| 26 | + same process-group/tree-kill primitive and configured timeout as the rest |
| 27 | + of the pipeline (closes the audit's one high-severity bandit finding). |
| 28 | + |
| 29 | +### Changed |
| 30 | +- The documented `mypy .` gate passes as written: production code stays |
| 31 | + strict; test modules are parsed and import-resolved but not type-scored. |
| 32 | +- `cryptography` cap widened (`<44` → `<46`). |
| 33 | +- CI (GitHub Actions): ruff, mypy, bandit, and the full test suite on |
| 34 | + Python 3.10–3.14 (Ubuntu) plus a macOS job. |
| 35 | +- README gained a Security Model section describing what the guardrails do |
| 36 | + and do not guarantee. |
| 37 | + |
| 38 | +## [0.7.0] - 2026-07-23 |
| 39 | + |
| 40 | +### Added |
| 41 | +- **Interface contracts** — the planner emits per-module public signatures in |
| 42 | + the MODULES block; every test-writer and implementer prompt is held to |
| 43 | + them, keeping parallel modules compatible. |
| 44 | +- **One-shot test arbitration** — after two identical failing-test cycles |
| 45 | + with no pass progress, the repairer may fix the module's own tests under |
| 46 | + audit rules (justify against acceptance criteria; no deletion, no |
| 47 | + tautologies, no renaming). |
| 48 | +- **Watchdog live per-module jump accounting** — worst-module rules, |
| 49 | + module-scoped rebuild signals, and re-driven watchdogs on auto-retry. |
| 50 | + |
| 51 | +### Fixed |
| 52 | +- **The "Raft wall"** — the defect stack that made hard multi-module tasks |
| 53 | + bail deterministically: double jump counting (30 budget was really 15), |
| 54 | + progress measured in tests *executed* instead of *passed*, a dead 120s |
| 55 | + test timeout overriding configuration, head-only output truncation hiding |
| 56 | + pytest failures, the final repair's work never being tested, bailed |
| 57 | + modules being unhealable, and futile auto-retries after designed |
| 58 | + exhaustion (now non-retryable walls + integration-validate healing). |
| 59 | +- Planner-declared module `deps` drive parallel stage sequencing. |
| 60 | +- Repeated-failure detection keys on failing-test identity, not raw output. |
| 61 | +- Flat-layout Python packages are importable by the test runner |
| 62 | + (project root on `PYTHONPATH`). |
| 63 | +- Entry/demo scripts must belong to a module — unowned planned files were |
| 64 | + never created and failed their acceptance criteria unconditionally. |
| 65 | +- Serial `trust5 loop` retry storm stopped; loop actually runs. |
| 66 | + |
| 67 | +### Changed |
| 68 | +- Requires `stabilize >= 0.19.1, < 0.20` — atomic jumps, restart-proof |
| 69 | + message dedup, zombie-stage re-claim, queue lock heartbeat (prevents |
| 70 | + double execution of long agent tasks), and duplicate-`StartTask`-proof |
| 71 | + recovery sweeps. |
| 72 | +- `trust5.__version__` reports the real version (was stuck at 0.1.0). |
| 73 | + |
| 74 | +## [0.6.4] and earlier |
| 75 | + |
| 76 | +Context engine (token-accounted compaction), capability tools |
| 77 | +(whitespace-tolerant Edit, MultiEdit, TodoWrite, read-only SubAgent, |
| 78 | +parallel read tools, Anthropic prompt caching), streaming stall fallback, |
| 79 | +disk-persisted tool results, file-freshness guard, TUI status bar and live |
| 80 | +todo panel, process-explosion watchdog, WebFetch SSRF defense, encrypted |
| 81 | +token store. Not individually changelogged. |
0 commit comments