You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**REQ-354/355/356** and **TEST-354/355/356/357** (318 tests total, 28/28 audit clean)
17
+
8
18
## [Unreleased]
9
19
10
20
## [0.11.3-post3] — 2026-05-17
@@ -100,7 +110,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
100
110
101
111
## [0.11.2] — 2026-05-11
102
112
### Added
103
-
-**esdb rollback real restore (REQ-252)** — now finds the N-th most recent backup in .specsmith/backups/ and restores equirements.json + estcases.json from it. Exits non-zero when no backups exist.
113
+
-**esdb rollback real restore (REQ-252)** — now finds the N-th most recent backup in .specsmith/backups/ and restores
114
+
equirements.json + estcases.json from it. Exits non-zero when no backups exist.
104
115
-**esdb compact real deduplication (REQ-253)** — reads .specsmith/requirements.json and .specsmith/testcases.json, deduplicates by ID (last-write-wins), drops ID-less entries, writes compacted lists back to disk.
105
116
-**12 CodeQL security fixes** — py/path-injection (10): _safe_resolve() + _safe_file_read() helpers reject null bytes and .. traversal before file reads; py/http-response-splitting (1): strip CR/LF from HTTP response headers; py/incomplete-url-substring-sanitization (1): urlparse() hostname comparison in test.
106
117
### Changed
@@ -109,7 +120,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
109
120
- Test suite updated to match new esdb rollback/compact contracts. 670 passing.
110
121
### Validation
111
122
- pytest: **670 passed, 2 skipped, 5 xfailed**.
112
-
- uff check + uff format --check: clean.
123
+
-
124
+
uff check +
125
+
uff format --check: clean.
113
126
## [0.11.1] — 2026-05-11
114
127
### Added
115
128
-**`specsmith channel` group (REQ-248)** — `channel set {stable|dev}`, `channel get [--json]`, `channel clear`. Persists preferred update channel to `~/.specsmith/channel`; `self-update` and project-update checks honour the resolved channel.
0 commit comments