prjct-cli 2.20.2 → 2.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,48 +1,40 @@
1
1
  # Changelog
2
2
 
3
- ## [2.20.2] - 2026-05-17
3
+ ## [2.21.1] - 2026-05-18
4
4
 
5
5
  ### Bug Fixes
6
6
 
7
- - skill routing triages complexity FIRST spec is the exception, not the default (v2.20.1) (#341)
7
+ - route all remaining os.homedir()/.prjct-cli sites through pathManager (#344)
8
+ - optimistic CAS on StorageManager.update() — close the lost-update data race (#346)
9
+ - gate workflow rules ingested from repo markdown (close clone-to-RCE) (#345)
8
10
 
9
11
 
10
12
  ## [Unreleased]
11
13
 
12
- ### Changed
13
-
14
- - **Skill routing triages complexity FIRST — spec is the exception, not the default.** `prjct-skill-body.ts` (skill SSOT) led with "substantive work → default to `spec` first", which pushed every simple one-file change through `spec` + `audit-spec` + 3 reviewer subagents — ceremony tax that slowed ship for zero protection on a fix. Inverted: an explicit **triage** step routes simple work (≈1 file, known root cause, reversible, "fix"/"hoy") DIRECT to `task` → implement → `qa`/`review` → `ship` with no spec; `spec`/`audit-spec` reserved for genuinely complex/high-stakes framing. Prose-only, no code-path change; skill-generator suite green (31/31).
15
-
16
- ## [2.20.1] - 2026-05-17
17
-
18
- ### Bug Fixes
19
-
20
- - skill-miss-detector — crew-isolation guard (no false nags after crew runs) (v2.19.10) (#339)
21
-
22
-
23
- ## [Unreleased]
14
+ ## [2.21.0] - 2026-05-17
24
15
 
25
- ### Fixed
16
+ ### Features
26
17
 
27
- - **skill-miss-detector no longer false-positives after a crew run (#16 follow-up).** Crew implementer/reviewer run as isolated subagents in the *shared* working tree, so at the leader's Stop hook `getModifiedFiles()` saw their edits and path-overlap relevance fired — but the leader transcript never carries the memory references the subagent made in its own isolated transcript, producing a false skill-miss nag for every crew-touched file. Fix: `detectSkillMisses` collects the `files_touched` of crew runs whose `ended_at` is within `CREW_RUN_RECENCY_MS` (6h) via `crewRunStorage.list` and excludes them from path-overlap relevance; token-overlap detection stays active so non-crew work in the same session is still covered. Crew itself is unchanged (it was architecturally correct). Best-effort — any failure degrades to prior behavior. Tests: `core/__tests__/services/skill-miss-detector.test.ts`.
18
+ - **`prjct review-risk [--md]`** advisory size/delivery-geometry signal (minimal cut of harnesses #18/19/20). Reads the committed changeset vs the merge-base with the default branch (`git diff --shortstat`), derives a size tier (trivial/normal/large) and suggests a delivery geometry (`direct`/`single`/`split`, with the touched top-level dirs as natural split lines). Read-only/Tier-1 (retro/health shape); never gates, never splits, never mutates git; graceful no-signal when there is no base or nothing committed. (#340)
28
19
 
29
- ## [2.20.0] - 2026-05-17
20
+ ## [2.20.2] - 2026-05-17
30
21
 
31
- ### Features
22
+ ### Added
32
23
 
33
- - Skill Resolution Feedback (#16) — skill-miss detector + improvement-signals widening + prjct skill-adherence (v2.19.9) (#338)
24
+ - **Architecture guard: SQLite connection factory is now an enforced invariant.** `openDatabase()` in `core/storage/database/sqlite-compat.ts` already baked the daemon-safety PRAGMAs (`journal_mode=WAL`, `busy_timeout=5000`) into every connection, but nothing stopped a future caller from doing a raw `new Database(...)` / `require('bun:sqlite')` / `require('better-sqlite3')` and silently bypassing them the open half of the HIGH-severity daemon-vs-CLI write-lock anti-pattern. New `core/__tests__/storage/sqlite-factory-guard.test.ts` scans `core/` + `bin/` and fails CI if any file outside the sanctioned factory acquires a driver, and separately asserts the factory keeps both PRAGMAs. Closes the anti-pattern by moving it from convention to enforced. No runtime code change. (#342)
34
25
 
26
+ ### Bug Fixes
35
27
 
36
- ## [2.19.9] - 2026-05-16
28
+ - skill routing triages complexity FIRST — spec is the exception, not the default (v2.20.1) (#341)
37
29
 
38
- ### Bug Fixes
30
+ ## [2.20.1] - 2026-05-17
39
31
 
40
- - strictly-monotonic updated_at so the CAS token can't collide (#337)
32
+ ### Fixed
41
33
 
34
+ - **skill-miss-detector no longer false-positives after a crew run (#16 follow-up) (#339).** Crew implementer/reviewer run as isolated subagents in the *shared* working tree, so at the leader's Stop hook `getModifiedFiles()` saw their edits and path-overlap relevance fired — but the leader transcript never carries the memory references the subagent made in its own isolated transcript, producing a false skill-miss nag for every crew-touched file. Fix: `detectSkillMisses` collects the `files_touched` of crew runs whose `ended_at` is within `CREW_RUN_RECENCY_MS` (6h) via `crewRunStorage.list` and excludes them from path-overlap relevance; token-overlap detection stays active so non-crew work in the same session is still covered. Crew itself is unchanged (it was architecturally correct). Best-effort — any failure degrades to prior behavior. Tests: `core/__tests__/services/skill-miss-detector.test.ts`.
42
35
 
43
- ## [Unreleased]
44
36
 
45
- ## [2.19.9] - 2026-05-16
37
+ ## [2.20.0] - 2026-05-17
46
38
 
47
39
  ### Added
48
40
 
@@ -56,6 +48,12 @@
56
48
  ### Fixed
57
49
  - **`getProjectId` no longer silently mints a random orphan project.** Root cause: `ConfigManager.getProjectId()` fell through to `pathManager.generateProjectId()` (`crypto.randomUUID()`) whenever `readConfig()` returned null, so any path-resolution miss (daemon resolving the wrong cwd, config transiently unreadable, case-variant path) forked a brand-new project and scattered specs/memory across ghost projects with no error surfaced. Now returns `''` — the falsy sentinel 31/32 call sites already guard with `if (!projectId)` → callers fail loud ("run prjct init") instead of writing into a random new project. Only explicit `prjct init` (`createConfig`) mints. Regression test: `core/__tests__/infrastructure/config-manager-getprojectid.test.ts`.
58
50
 
51
+ ## [2.19.9] - 2026-05-16
52
+
53
+ ### Bug Fixes
54
+
55
+ - strictly-monotonic updated_at so the CAS token can't collide (#337)
56
+
59
57
  ## [2.19.8] - 2026-05-14
60
58
 
61
59
  Crew-mode persistence v7 (spec a50b32d1). SQLite becomes the single source of truth for crew runs, team enrollment, and checkpoint customization. Disk mirrors exist only where an external read contract demands one (the pre-commit hook).
@@ -172,15 +170,7 @@ Crew-mode persistence v7 (spec a50b32d1). SQLite becomes the single source of tr
172
170
 
173
171
  ## [2.15.0] - 2026-05-03
174
172
 
175
- ### Features
176
-
177
- - prjct as a Spec-Driven Development system (#318)
178
- - self-heal prjct SKILL.md on every CLI invocation (#317)
179
-
180
-
181
- ## [Unreleased]
182
-
183
- ### Features — SDD: Spec-Driven Development
173
+ ### Features — SDD: Spec-Driven Development (#318)
184
174
 
185
175
  prjct now ships an end-to-end SDD primitive. The canonical sequence is `spec → audit-spec → task --spec → implement → ship (acceptance gate) → remember learning`.
186
176
 
@@ -193,6 +183,8 @@ prjct now ships an end-to-end SDD primitive. The canonical sequence is `spec →
193
183
  - **Skill body** — Claude is taught the SDD canonical sequence and the `spec` / `audit-spec` verbs in the intent map. The skill body's verb intent map now leads with `spec` for substantive work; `task` is the right call for routine work that doesn't deserve a spec.
194
184
  - **Templates** — `templates/spec-template.md`, `templates/spec-reviewer-rubrics/{strategic,architecture,design}.md`, `templates/sdd-canonical-sequence.md`. Old `templates/planning-methodology.md` renamed to `planning-methodology-deep.md` (retained but de-defaulted).
195
185
 
186
+ - self-heal prjct SKILL.md on every CLI invocation (#317)
187
+
196
188
  ### Schema
197
189
 
198
190
  - Migration 16 adds the `specs` table and the `tasks.linked_spec_id` column. Additive — existing memory and tasks unaffected.
package/README.md CHANGED
@@ -58,6 +58,7 @@ After install, **next session in any prjct project**:
58
58
  - `security` — OWASP Top 10 + STRIDE, 8/10 confidence gate, concrete exploit per finding
59
59
  - `investigate` — Iron Law (no fix without investigation), max 3 failed hypotheses
60
60
  - `ship` (endurecido) — Coverage Gate + Auto-Document
61
+ - **Delivery-geometry advisory** (`prjct review-risk`): reads the committed changeset vs the merge-base and suggests a size tier (trivial/normal/large) + whether to ship direct, as one PR, or split — with the touched top-level dirs as natural split lines. Purely advisory: never gates, never mutates git.
61
62
 
62
63
  ## How it works
63
64
 
@@ -132,6 +133,7 @@ Cursor / Windsurf use the same commands with a `/` prefix: `/capture`, `/task`,
132
133
  | `prjct sync` | Re-index files, git co-change, imports; refresh project analysis. |
133
134
  | `prjct regen` | Full rebuild of the Obsidian vault snapshot from SQLite. |
134
135
  | `prjct suggest` | Smart recommendations based on current project state. |
136
+ | `prjct review-risk` | Advisory change-size + delivery-geometry signal for the branch (read-only; never gates, never splits). |
135
137
  | `prjct seed <add\|list>` | Manage packs (persona, memory types, workflow slots). |
136
138
 
137
139
  ## Personas & Packs
@@ -205,6 +207,7 @@ prjct watch Auto-sync on file changes
205
207
  prjct doctor Check system health
206
208
  prjct hooks <install|uninstall|status> Git hooks for auto-sync
207
209
  prjct context <files|signatures|imports|recent|summary> Smart context filters
210
+ prjct review-risk Advisory change-size + delivery-geometry hint (read-only)
208
211
  prjct workflow ["config"] Configure hooks via natural language
209
212
  prjct stop / restart Background daemon control
210
213
  prjct login / logout / auth Cloud sync authentication