@rafinery/cli 0.15.1 → 0.15.2

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
@@ -4,6 +4,18 @@ The machine-readable version of this lives in [`lib/releases.mjs`](lib/releases.
4
4
  CLI reads it to tell a client, on `rafa update`, exactly what an upgrade requires (nothing,
5
5
  a re-scan, or a `rafa migrate`).
6
6
 
7
+ ## 0.15.2 — rafa-validate implements the parallel-brain check
8
+
9
+ sage caught a card-ahead-of-procedure gap: prism's card claimed "a refresh that
10
+ minted parallel ids is a BLOCKER," but `rafa-validate` — the procedure prism
11
+ follows — never implemented the check. It was documented, not load-bearing.
12
+
13
+ `rafa-validate` step 9 now performs the continuity check: for every note the
14
+ refresh *added*, compare against the prior manifest — same domain/category +
15
+ equal-ish title or ≥50% shared cited files = a parallel-id blocker (founding
16
+ scans exempt). It's the scan-time twin of the reconciler's merge-time guard, so
17
+ the rule is enforced by a procedure at both ends.
18
+
7
19
  ## 0.15.1 — fix `rafa reflex --consume` verdict parsing
8
20
 
9
21
  A `rafa reflex --consume <id> --reason session-only` silently recorded `banked`
@@ -86,9 +86,21 @@ agent. So:
86
86
  (it violates the net-positive law: a wrong note is worse than none).
87
87
  8. **Connectivity** — orphan notes, dangling links (the checker's LINKS warn lane —
88
88
  `citation-check.md` § Links — is your pre-built worklist), literal `[[...]]` in prose → minor.
89
+ 9. **Continuity — the parallel-brain check (REFRESH scans only; contract §12.4).** A refresh
90
+ MUST update the existing brain in place, never re-derive a differently-named twin over
91
+ concepts the org already carries. Detect it: for each note/improvement the scan ADDED
92
+ (not in the prior brain), check whether an existing note in the same `domain`/`category`
93
+ already covers the concept — same/near-equal `title`, or ≥50% shared cited files. A new id
94
+ that duplicates an existing concept is a **BLOCKER** (continuity is the product: a parallel
95
+ brain orphans triage, resets trends, and destroys id stability). Ground it against the prior
96
+ brain: compare the scan's output ids to the pre-scan manifest; every genuinely-new id must
97
+ name, in its body, why no existing note covers it. (This is the validation twin of the
98
+ reconciler's deterministic parallel-brain guard — prism catches at scan-time what the guard
99
+ catches at merge-time; a founding scan, with no prior brain, is exempt.)
89
100
 
90
101
  ## Severity + decision
91
- - **Blocker** — hard-gate failure, broken checker, or a wrong/misleading note. Must be **0**.
102
+ - **Blocker** — hard-gate failure, broken checker, a wrong/misleading note, or a refresh that
103
+ minted parallel ids over existing concepts (continuity, step 9). Must be **0**.
92
104
  - **Major** — a real gap: missing essence, under-covered domain, unanswerable question.
93
105
  - **Minor** — nits (orphan, cosmetic). Logged, not looped on.
94
106
  - **PASS** = hard gates pass · quality score ≥ 85 · 0 blockers · majors ≤ 2 · **and no
package/lib/releases.mjs CHANGED
@@ -515,6 +515,20 @@ export const RELEASES = [
515
515
  "reflex.jsonl + the loop event). No assumed values — a session-only " +
516
516
  "correction is recorded session-only, or the consume errors.",
517
517
  },
518
+ {
519
+ version: "0.15.2",
520
+ contract: 1,
521
+ plans: 2,
522
+ requires: "update",
523
+ summary:
524
+ "FIX a card-ahead-of-procedure gap (sage-caught): prism's card claimed " +
525
+ "'a refresh that minted parallel ids is a BLOCKER' but rafa-validate — " +
526
+ "the procedure prism follows — never implemented the check. rafa-validate " +
527
+ "step 9 now performs the continuity/parallel-brain check (added-note ids " +
528
+ "vs the prior manifest; same domain/category + title-or-cite overlap = " +
529
+ "blocker; founding exempt) — the scan-time twin of the reconciler's " +
530
+ "deterministic guard. A documented rule made load-bearing.",
531
+ },
518
532
  ];
519
533
 
520
534
  // The release this CLI build ships (last entry).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rafinery/cli",
3
- "version": "0.15.1",
3
+ "version": "0.15.2",
4
4
  "description": "rafa — the AI engineer CLI. Vendors the rafa blueprint into your repo (shadcn-style) and runs the deterministic contract gates.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-07-26T22:59:22.774Z",
2
+ "generatedAt": "2026-07-26T23:37:59.067Z",
3
3
  "skills": {
4
4
  "tdd": {
5
5
  "version": "1.0.0",