@mindrian_os/cli 1.16.0-beta.1 → 1.16.0-beta.5
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 +82 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,85 @@
|
|
|
1
|
+
## [1.16.0-beta.5] - 2026-07-31
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
- **The ranked dial you pick from now actually listens to what you said, and Brain's own
|
|
5
|
+
suggestion can no longer be silently discarded (Phase 245).** The previous entry documented an
|
|
6
|
+
honest finding: the sensor bank that watches a turn decides only WHETHER a dial appears, never
|
|
7
|
+
WHAT sits on top of it -- that ranking came entirely from your room's graph-node recency, a
|
|
8
|
+
completely separate code path. This phase closes that gap for real, at the one seam that
|
|
9
|
+
actually renders the dial (`scripts/intent-classifier.cjs`), not the seam that looked like the
|
|
10
|
+
right place but turned out to be a dead end -- a same-day research pass caught that the obvious
|
|
11
|
+
fix (wiring the fusion into `reach-hedge-ranker.cjs`) would have shipped, passed every test, and
|
|
12
|
+
moved the visible dial by nothing, because that ranker and the dial's renderer read the same
|
|
13
|
+
score map without either one feeding the other. Two turns with different intent in the same
|
|
14
|
+
session now surface two different top-ranked cards, proven by literally commenting out the merge
|
|
15
|
+
and watching the acceptance test fail with the exact symptom the SPEC named, then restoring it
|
|
16
|
+
and watching it pass. Brain's own suggested next step, when Brain has one, now genuinely factors
|
|
17
|
+
into that ranking too -- previously it was computed nowhere reachable, buried behind a routing
|
|
18
|
+
precedence chain a fired sensor almost always won first, so even a fresh, correct Brain read had
|
|
19
|
+
no way to ever surface. Bounded so it stays a nudge: no single signal can push a card across the
|
|
20
|
+
frozen 0.70 "recommended" threshold on its own, verified by sweeping the fusion math with
|
|
21
|
+
deliberately extreme inputs.
|
|
22
|
+
- **`BRAIN.md` now actually refreshes itself instead of quietly going stale for weeks while still
|
|
23
|
+
claiming to be fresh (Phase 245).** The re-derivation trigger, queue, and drain machinery for
|
|
24
|
+
keeping a room's Brain-derived insight current already existed, fully wired -- it just silently
|
|
25
|
+
did nothing. The drain measured its own timing budget starting *before* a slow one-time
|
|
26
|
+
`require()`, so a cold process routinely blew a 100ms budget it thought it had 100ms left in,
|
|
27
|
+
aborted after spawning zero re-derive jobs, and had already removed every job from the queue on
|
|
28
|
+
the way in. No error, no warning -- just a room that reports `staleness: "fresh"` while running
|
|
29
|
+
on a read from 12 days ago. Fixed at the root (hoist the slow require above the clock, and make
|
|
30
|
+
queue removal contingent on an actual job having spawned, so a future slow tick degrades
|
|
31
|
+
gracefully instead of losing work outright), not patched at the symptom. `BRAIN.md` now
|
|
32
|
+
re-derives on any of three real triggers: the room's governing thought changing, a section aging
|
|
33
|
+
past its staleness window, or an explicit ask -- never a blanket call on every single turn, which
|
|
34
|
+
independent research confirmed would blow the product's own 1200ms navigation budget.
|
|
35
|
+
- **Six Thinking Hats can now surface itself, proactively, for the first time (Phase 245).** `hats`
|
|
36
|
+
has been one of exactly six frozen reach categories since Phase 148 -- fully built on the render
|
|
37
|
+
side, completely unreachable from the sensor side. A navigator could only ever get there by
|
|
38
|
+
picking it manually, directly contradicting the product's own doctrine for when a hats rotation
|
|
39
|
+
should be offered. A new sensor closes the gap, firing when two or more fresh, unresolved
|
|
40
|
+
contradictions accumulate in a room (one is treated as a bridge to another topic; two or more
|
|
41
|
+
unresolved is treated as a genuine perspective lock worth rotating hats on) -- tuned specifically
|
|
42
|
+
not to double-fire alongside the existing sensor that already reacts to the first contradiction.
|
|
43
|
+
Also repaired: three shipped commands had been declaring a hats trigger that pointed at a sensor
|
|
44
|
+
which fires a completely different category and could never have produced hats in the first
|
|
45
|
+
place -- a real, live registry-truth bug now corrected alongside the sensor that actually makes
|
|
46
|
+
the declaration true.
|
|
47
|
+
- **When multiple signals fire on the same turn, the winner is now a documented priority, not
|
|
48
|
+
whichever file happened to load first (Phase 245).** 65% of the sensor bank can independently
|
|
49
|
+
produce the same output category on a single turn, and until now the tie always went to
|
|
50
|
+
registration order -- an accident of file layout, not a designed hierarchy. A frozen,
|
|
51
|
+
doctrine-authored priority table now decides, enforced by a completeness gate that fails the
|
|
52
|
+
build closed if a sensor ships without a ranked entry, so this can't silently drift again the way
|
|
53
|
+
the registration-order behavior did.
|
|
54
|
+
- **A Part 8 privacy guard was blocking harmless, contentless Brain calls while letting real
|
|
55
|
+
user-content calls through -- backwards from what a leak-prevention guard should ever do (Phase
|
|
56
|
+
245).** Root-caused to a single over-broad catch-all with no way to recognize a call that
|
|
57
|
+
structurally cannot carry user data. A stats-style call with no arguments now passes; the
|
|
58
|
+
catch-all itself is untouched and still blocks by default on anything that actually could carry
|
|
59
|
+
content.
|
|
60
|
+
- **Frozen, zero-cost mapping from the product's ten canonical routing verbs to the six dial
|
|
61
|
+
categories they can actually produce (Phase 245).** Half the vocabulary had no path to ever fire
|
|
62
|
+
at all -- not a bug exactly, but an unmeasured gap nobody had named. Derived once, offline, from
|
|
63
|
+
a local sentence encoder already shipped in this repo for an unrelated feature (Canon Part 7:
|
|
64
|
+
reuse, don't rebuild) -- zero network calls, zero ongoing cost, and ground truth checked first so
|
|
65
|
+
a close embedding score can never overrule a fact the routing engine already knows for certain.
|
|
66
|
+
|
|
67
|
+
## [1.16.0-beta.3] - 2026-07-31
|
|
68
|
+
|
|
69
|
+
### Added
|
|
70
|
+
- **A documented, honest line on what the sensor bank actually controls about the reach dial
|
|
71
|
+
(quick-260731-35r).** When Larry surfaces the reach dial, the little ranked menu of next moves,
|
|
72
|
+
two different things are happening and it is easy to think they are one thing. The sensors, the
|
|
73
|
+
17 small detectors that watch a turn and fire when they recognise something, decide WHETHER that
|
|
74
|
+
dial appears at all. They do not decide WHAT sits at the top of it. The ordering comes entirely
|
|
75
|
+
from scoring your room's own graph nodes, on a completely separate code path that no sensor ever
|
|
76
|
+
reaches. Nothing changed in how any of it runs; what changed is that the boundary is now written
|
|
77
|
+
down at the exact function where a future reader would otherwise assume the opposite, plus a
|
|
78
|
+
finding artifact with every file and line number so anyone can check it in a minute instead of
|
|
79
|
+
tracing the code themselves. The practical payoff: nobody builds on the wrong mental model,
|
|
80
|
+
and nobody mistakes "a sensor fired" for "a sensor ranked what you are seeing."
|
|
81
|
+
-
|
|
82
|
+
|
|
1
83
|
## [1.16.0-beta.1] - 2026-07-31
|
|
2
84
|
|
|
3
85
|
### Added
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mindrian_os/cli",
|
|
3
|
-
"version": "1.16.0-beta.
|
|
3
|
+
"version": "1.16.0-beta.5",
|
|
4
4
|
"description": "Install MindrianOS into Claude Code with one command -- `npx @mindrian_os/cli`. Ships the MindrianOS plugin (Larry + PWS methodology + Data Room) plus a setup/diagnostics CLI (install/doctor/update).",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"mcp": "node bin/mindrian-mcp-server.cjs",
|