@mindrian_os/install 1.13.0-beta.28 → 1.13.0-beta.30
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mos",
|
|
3
3
|
"description": "MindrianOS -- Your AI innovation co-founder. Larry thinks with you through PWS methodology, builds your Data Room as you explore, and chains frameworks intelligently. Install and go.",
|
|
4
|
-
"version": "1.13.0-beta.
|
|
4
|
+
"version": "1.13.0-beta.30",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Jonathan Sagir",
|
|
7
7
|
"url": "https://mindrian.ai"
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
## [1.13.0-beta.30] - 2026-05-23
|
|
2
|
+
|
|
3
|
+
### Fixed (Engine 1 Act 1 silent-failure class, Phase 127.2 Plan 03 -- FIRST hotfix from external tester evidence)
|
|
4
|
+
- **`scripts/doctor.cjs --check-rs-engine` pre-flight pre-flights Python deps for the Engine 1 Act 1 surface (Finding F1 -- `.planning/debug/resolved/windows-tester-find-bottlenecks-silent-failure-qa-sweep.md`).** ADD-ONLY flag handler (NOT a class flag; owns its own exit-code contract). Probes critical deps reachable from `scripts/rs-engine.py` -- `requests` (transitive via `lib/core/rs_corpus.py`, the actual silent-failure root cause on the Windows tester's machine) + `numpy` -- plus umbrella deps from `requirements-hsi.txt` (`sentence_transformers`, `sklearn`). Resolves python interpreter via `MINDRIAN_PYTHON` env override > `python3` > `python` fallback. On missing critical deps: exit 1 + actionable fix line `Run: pip install -r requirements-hsi.txt --user (use python -m pip if pip is not in PATH)`. JSON variant returns `{ ok, ready, python, probes[], missing, missing_critical, missing_umbrella, fix }`. Defensive: any uncaught probe error surfaces as exit 1 -- the probe never crashes `/mos:doctor`'s other gates. Closes the Windows tester 2026-05-23 silent-failure class for the pre-flight surface.
|
|
5
|
+
- **`lib/agents/reverse-salient-agent.cjs` forwards rs-engine stderr to `result.detail.diagnostic` (Finding F2 -- same RCA).** The `runRsEngine()` catch block now captures `e.stderr` from the failed child python process, takes the LAST 200 chars (preserving the actionable fix line + exception name at the tail), and embeds it in `result.detail.diagnostic`. Backward compatible: when stderr is empty, `detail` stays a plain string (the existing `e.message` slice); when stderr is present, `detail` upgrades to `{ message, diagnostic }`. The existing `ok` / `reason` fields are untouched. Before this fix, every actionable error from rs-engine was silently discarded at the agent layer -- the worst-shape silent failure in a methodology surface.
|
|
6
|
+
- **`commands/find-bottlenecks.md` empty-result UX disambiguates analyzer-down from no-findings (Finding F7 -- same RCA).** New "Empty-result UX" sub-section distinguishes two categorically different cases: (a) analyzer ran with no findings (plausible if room is small or genuinely balanced); (b) analyzer could not start -- detected via `result.detail.diagnostic` or `reason: rs_engine_invocation_failed`. The second path explicitly tells the user to run `/mos:doctor --check-rs-engine` with the pip-install one-liner inline. Before this fix, both cases rendered as "no findings" -- which reads as "your work is clean" regardless of whether the analyzer ran or crashed. The single most dangerous reading in a methodology surface.
|
|
7
|
+
|
|
8
|
+
### Internal (Phase 127.2 Plan 03)
|
|
9
|
+
- **New test:** `tests/test-127.2-03-rs-engine-silent-failure-fixes.sh` verifies all three findings landed (F1 flag-handler + actionable fix line embedded; F2 diagnostic-field reference + stderr-capture pattern; F7 disambiguation copy present in find-bottlenecks.md or agent file) plus a functional probe asserting `node scripts/doctor.cjs --check-rs-engine --json` returns valid JSON and `--help` documents the new flag. 7/7 PASS on origin/main.
|
|
10
|
+
- **Phase 134 scaffolded as v1.14.0 architectural stub (Finding F6 -- structural answer to install-fragility class).** New `.planning/phases/134-cjs-port-of-python-analyzers-via-xenova-transformers-elimina/134-CONTEXT.md` captures the design vision: replace `scripts/rs-engine.py` + `lib/core/rs_*.py` + `scripts/hsi-*.py` with CJS equivalents using `@xenova/transformers` (ONNX `Xenova/multilingual-e5-large` in-process). Eliminates Python from user-machine surface entirely. Estimate ~3 weeks. Plan 127.2-03's original spec named "Phase 130" but slot 130 was already taken; SDK assigned 134 as next free slot. No PLAN.md (scaffolding only); enters v1.14.0 planning cycle.
|
|
11
|
+
- **RCA closed and moved.** `.planning/debug/windows-tester-find-bottlenecks-silent-failure-qa-sweep.md` -> `.planning/debug/resolved/` with `resolved_by: phase-127.2 Plan 127.2-03 (hotfix; F1+F2+F7 shipped)` + `resolved_disposition: 3-of-4-fixed-in-code; F3 narrative drift deferred to next docs reconciliation; F6 architectural port scaffolded as Phase 134 stub`. Knowledge-base entry appended at `.planning/debug/knowledge-base.md` so `gsd-debugger` surfaces this as a known-pattern hypothesis on future investigations.
|
|
12
|
+
- **Dog-fooding milestone:** the FIRST hotfix shaped from an EXTERNAL tester's transcript (Aryeh's Windows machine, 2026-05-23). Plans 127.2-00 + 127.2-02 were both maintainer-discovered. This one closes a defect a real user hit on a machine the maintainer doesn't own, and ships in the same week the transcript landed -- empirically demonstrating that the dog-fooding loop the QA sweep itself flagged as broken (RS-2 thesis: one-person QA is the lagging subsystem) is no longer one-person.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
1
16
|
## [1.13.0-beta.28] - 2026-05-23
|
|
2
17
|
|
|
3
18
|
### Fixed (post-ship QA-sweep closeout, Phase 127.2 Plan 02)
|
|
@@ -37,6 +37,15 @@ Procedure (CLI / Desktop / Cowork):
|
|
|
37
37
|
- On DEFER: DEFERRED memory_event records the deferral for Phase 116 unresolved-tension-hook consumption.
|
|
38
38
|
4. If the agent returns `{ ok: false }` OR finds nothing OR is suppressed (tier 0 / JUST_TALK), fall back to the standard Setup + Session Flow below.
|
|
39
39
|
|
|
40
|
+
### Empty-result UX (Phase 127.2 Plan 03 -- Finding F7)
|
|
41
|
+
|
|
42
|
+
When the agent returns no findings, you MUST distinguish two cases for the user, because "no findings" reads as "your work is clean" -- the worst possible signal if the analyzer crashed:
|
|
43
|
+
|
|
44
|
+
- **Analyzer ran successfully and found nothing.** Surface: "No reverse-salient findings were returned -- the analyzer ran across your room and could not identify a lagging component above the threshold. This is plausible if the room is small (less than 5 substantive artifacts) or if the system is genuinely balanced; continue with the Session Flow below to do the framework manually if you want a second pass."
|
|
45
|
+
- **Analyzer could not start (rs-engine failed -- look for `result.detail.diagnostic` in the agent payload, OR `ok: false, reason: rs_engine_invocation_failed`).** Surface: "No reverse-salient findings were returned. If you expected results, the analyzer may not have started -- run `/mos:doctor --check-rs-engine` to verify your Engine 1 Act 1 environment is healthy. Common cause: missing Python deps (`pip install -r requirements-hsi.txt --user`)."
|
|
46
|
+
|
|
47
|
+
The disambiguation is critical because the agent layer historically swallowed the actionable error message (Windows tester 2026-05-23 silent-failure class). Always surface the `--check-rs-engine` hint on the analyzer-failure path.
|
|
48
|
+
|
|
40
49
|
Anti-pattern reminder (per docs/AGENTIC-SURFACING-PATTERN.md):
|
|
41
50
|
- Never print findings to console; the F.0 dispatcher IS the surfacing surface.
|
|
42
51
|
- Never query the Brain directly; the agent reads pre-derived BRAIN.md via folder-memory.readQuadruple (LOCAL only, Canon Part 8).
|
|
@@ -189,10 +189,26 @@ function runRsEngine(opts) {
|
|
|
189
189
|
timeout: 60000,
|
|
190
190
|
});
|
|
191
191
|
} catch (e) {
|
|
192
|
+
// Phase 127.2-03 Task 1 (Finding F2): forward the child python process's
|
|
193
|
+
// stderr LAST 200 chars to result.detail.diagnostic so callers can
|
|
194
|
+
// self-recover from missing-deps / import errors (the Windows tester
|
|
195
|
+
// 2026-05-23 silent-failure class). Truncate at the START so the tail
|
|
196
|
+
// (which carries the exception name + actionable fix line printed by
|
|
197
|
+
// rs_corpus -- e.g. "Run: pip install -r requirements-hsi.txt") is the
|
|
198
|
+
// half that survives the cap. Backward compatible: ok / reason / detail
|
|
199
|
+
// (e.message) unchanged; detail upgraded from plain string to object
|
|
200
|
+
// ONLY when stderr is present, so legacy callers reading detail as a
|
|
201
|
+
// string still get the truncated message via detail.message.
|
|
202
|
+
const message = String((e && e.message) || '').slice(0, 120);
|
|
203
|
+
const stderrRaw = (e && e.stderr) ? String(e.stderr) : '';
|
|
204
|
+
const diagnostic = stderrRaw.length > 200 ? stderrRaw.slice(-200) : stderrRaw;
|
|
205
|
+
const detail = stderrRaw.length > 0
|
|
206
|
+
? { message: message, diagnostic: diagnostic }
|
|
207
|
+
: message;
|
|
192
208
|
return {
|
|
193
209
|
ok: false,
|
|
194
210
|
reason: 'rs_engine_invocation_failed',
|
|
195
|
-
detail:
|
|
211
|
+
detail: detail,
|
|
196
212
|
pairs: [],
|
|
197
213
|
};
|
|
198
214
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mindrian_os/install",
|
|
3
|
-
"version": "1.13.0-beta.
|
|
3
|
+
"version": "1.13.0-beta.30",
|
|
4
4
|
"description": "Install MindrianOS into Claude Code with one command -- `npx @mindrian_os/install`. 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",
|