@nexus-cortex/cli 4.90.1 → 4.91.0

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.
Files changed (2) hide show
  1. package/.env.example +23 -6
  2. package/package.json +2 -2
package/.env.example CHANGED
@@ -4,7 +4,11 @@
4
4
  # ║ stands. Each lever carries a "# [LEDGER <date> @<version>] STATUS — evidence" ║
5
5
  # ║ line (ON | DARK/RETIRED | DARK/PENDING | DARK by design). Update the line when a ║
6
6
  # ║ cell moves the verdict and when each iteration ships. Cell ledgers live in ║
7
- # ║ .cortex/bench/r-*.md; the k=5 candidate = ON set + the DARK/PENDING trio. ║
7
+ # ║ .cortex/bench/r-*.md. K=5 CONFIG (settled 2026-09-03 @4.90.1, r-v4-validation): ║
8
+ # ║ ON set + CORTEX_ENDTURN_GATE=true + CORTEX_ENDTURN_REQUIREMENTS=strict + ║
9
+ # ║ ENABLE_WEBTOOLS=false (bench pin) + VISION_HELPER_MODEL on + TOOL_TIMEOUT_MODE=auto; ║
10
+ # ║ MENTOR_AUTO / EFFORT_TAIL / EFFORT_PULSE dark. Pin nexus-cortex@4.90.2 (4.90.0.s ║
11
+ # ║ timeout-promote was inert). Both models. ║
8
12
  # ╚══════════════════════════════════════════════════════════════════════════════════╝
9
13
  # Copy to .env and fill in the API keys for the providers you use. Every other value
10
14
  # has a proven-optimal default.
@@ -152,7 +156,7 @@ WEB_TOOLS_MODEL=gemini-2.5-flash
152
156
  # {{toolNames}} prompt vars) AND refused at dispatch.
153
157
  # 🔴 Bench arms must PIN true/false explicitly: keyed bench containers carry job tokens for every
154
158
  # provider, so auto resolves ON there. Hot-toggleable.
155
- # [LEDGER 2026-09-02 @4.89.0] ON=auto (NEW 4.89.0) — keyless A/B 08-31: wall pages + hallucination pressure; benches paid 3 taxes (pulse trigger fed by failing browse/WebFetch, Stage-5 unattested-web rejections, wasted turns). BENCH ARMS PIN false (keyed containers carry every provider token → auto=ON); c3 pinned false: 0 refusals, clean. Live: keyless 49 tools/WebFetch only; keyed 51/all; false 48/none.
159
+ # [LEDGER 2026-09-03 @4.90.1] ON=auto (since 4.89.0) — v4 (bench pin false): 0 web refusals in either arm = the deny-list is clean and silent. — keyless A/B 08-31: wall pages + hallucination pressure; benches paid 3 taxes (pulse trigger fed by failing browse/WebFetch, Stage-5 unattested-web rejections, wasted turns). BENCH ARMS PIN false (keyed containers carry every provider token → auto=ON); c3 pinned false: 0 refusals, clean. Live: keyless 49 tools/WebFetch only; keyed 51/all; false 48/none.
156
160
  ENABLE_WEBTOOLS=auto
157
161
 
158
162
  # ============================================
@@ -257,11 +261,20 @@ MENTORSHIP_HELPER_MODEL=deepseek-v4-pro
257
261
  # image task of the c3/p3 cells (chess-best-move ×2, gcode-to-text, code-from-image ×2) the text model SEARCHED
258
262
  # for an image tool by name, found none, and hand-built tesseract/PIL pipelines that ate the budget. Same DeepSeek
259
263
  # key. Set false to restrict ReadImage to vision-capable primaries.
260
- # [LEDGER 2026-09-03 @4.90.0] ON — VALIDATED on the real bench (r-v4-validation-2026-09-03, n=1): fired HEAVILY
264
+ # [LEDGER 2026-09-03 @4.90.1] ON — VALIDATED on the real bench (r-v4-validation-2026-09-03, n=1): fired HEAVILY
261
265
  # (flash 25 / pro 45 vision_handoff events) and drove flips — flash chess-best-move PASS (ReadImage×6, first flash-family
262
266
  # chess pass ever), pro dna-insert PASS (vis×6, p3-without-vision failed it), code-from-image PASS both models. Headline
263
- # k=5 lever.
267
+ # k=5 lever. POST-RUN FINDINGS (audit of the 9 fails): (a) NO per-turn hand-off budget — gcode-to-text burned its whole
268
+ # task budget on self-rendered slice reads (flash 14 / pro 34 ReadImage calls, never converged) → planned lever
269
+ # VISION_HANDOFF_MAX (~8/turn) + a "consolidate into ONE labeled montage" reminder (def-fcb719427f); (b) structured
270
+ # images misread — pro chess got a wrong whole-board transcription → bad FEN → nonsense move, while flash passed via a
271
+ # montage of individually LABELED squares (def-a3e7920cf9): grid/crop-aware prompts beat whole-image reads; a stronger
272
+ # vision card is the next lever once available.
264
273
  VISION_HELPER_MODEL=deepseek-v4-flash-vision-exp
274
+ # Per-turn cap on ReadImage→vision-helper hand-offs (0 = unlimited). Past the cap ReadImage returns a
275
+ # "consolidate your reads into ONE labeled montage / change approach" reminder instead of another vision call.
276
+ # [LEDGER 2026-09-03 @4.91.0] ON=8 (NEW) — v4 gcode-to-text: 14 (flash) / 34 (pro) slice reads burned the whole task budget without converging (def-fcb719427f); chess flash passed with 6 reads. Cap event kind: vision_handoff_capped. Measure at k=5 (gcode budget_frac, chess flips).
277
+ VISION_HANDOFF_MAX=8
265
278
  # Periodic mentorship review every N turns
266
279
  MENTORSHIP_TURN_BASED_ENABLED=false
267
280
  # Turns between periodic reviews (1-50)
@@ -333,7 +346,7 @@ TOOL_BUDGET_SOFT=400
333
346
  # Per-tool execution timeout in milliseconds (2 minutes). With TOOL_TIMEOUT_MODE=auto this is the
334
347
  # PROMOTE threshold in headless sessions (the command keeps running in the background), the KILL
335
348
  # deadline in interactive ones.
336
- # [LEDGER 2026-09-02 @4.90.0] ON=120000 — p3 timeout audit (r-p3): the 120s kill fired 42× across 14 task-runs and RESCUED NONE (train-fasttext busy-wait driver, long builds); every p3 timeout was Harbor's budget, not ours. Kept at 120s because TOOL_TIMEOUT_MODE=auto now promotes instead of kills in headless (item 8); v4 cell measures tool_promoted events.
349
+ # [LEDGER 2026-09-02 @4.90.0] ON=120000 — p3 timeout audit (r-p3): the 120s kill fired 42× across 14 task-runs and RESCUED NONE (train-fasttext busy-wait driver, long builds); every p3 timeout was Harbor's budget, not ours. Kept at 120s because TOOL_TIMEOUT_MODE=auto promotes instead of kills in headless (item 8). v4 audit: pro/train-fasttext = the busy-wait driver again (249 bash, 22 cancels) and 4.90.0's promote was INERT (outer-abort race, fixed 4.90.1) → train-fasttext is the 4.90.1 re-test task.
337
350
  TOOL_TIMEOUT_MS=120000
338
351
  # [LEDGER 2026-09-03 @4.90.1] ON=auto — 🔴 4.90.0 was INERT: the orchestrator's outer abort raced ShellTool's deadline and always won (v4 pro/train-fasttext: 22 cancelled, 0 promoted). 4.90.1: outer cap = TOOL_TIMEOUT_MS+30s, ShellTool default follows TOOL_TIMEOUT_MS; LIVE-VERIFIED (5s deadline, 9s command → tool_promoted event, model read the background output). Re-test task: train-fasttext. PROMOTE-AT-DEADLINE: when a Bash call exceeds TOOL_TIMEOUT_MS in a
339
352
  # headless/auto-approve session, the still-running command is moved to a background shell (bash_id) and the tool
@@ -438,7 +451,7 @@ ROUTER_MIN_SAMPLES=3
438
451
 
439
452
  # Mandatory EndTurn pre-delivery self-audit + Stage 2/3 verifiers. Default OFF; ON =
440
453
  # graded cortex-channel training records (the tool is hidden when off).
441
- # [LEDGER 2026-09-02 @4.89.0] DARK/PENDING → **RECOMMENDED ON for k=5** — 3 cells: 4.71 fp 11→1 · fd +2/5 · c3 (n=2, r-c3-candidate-config) code-from-image FLIP 2/2 (first flash-family pass ever; Stage-4 requirement rejections, no mentor) + dna-insert 1/2; 0 clean regressions outside its LIMIT (accepts a re-attested wrong artifact: pytorch-model-cli r2, dna-insert fd). Cost: attestation turns. Operator decision pending. PRO (r-p3, n=1): controls 3/3 held with NO attestation tax (bn-fit 53→30 turns), 0 regressions, 0 paralysis; 0/13 flips on pro's hard core (budget timeouts while working). → k=5 config for BOTH models: guards + GATE+REQ + ENABLE_WEBTOOLS=false, mentor/tail off.
454
+ # [LEDGER 2026-09-03 @4.90.2] DARK/PENDING → **RECOMMENDED ON for k=5 (with REQUIREMENTS=strict)** — COST (v4 pass mining + doctrine-mine): every pass paid 4-8 EndTurn round-trips, the biggest share = Stage-2 CITATION rejects (17/43 doctrine findings; the model never re-ran a command for a fresh verbatim line) → 4.90.2 nudge teaches per-turn grounding + re-run; expect controls' +25-35% turn tax to drop — measure at k=5. — v4 (n=1, @4.90.0): gate engaged heavily under strict (flash gate_req=22/cite=13, pro 17/4), controls bn-fit+sqlite held on BOTH models, pro flips vs p3: dna-insert, pytorch-model-cli, cancel-async (n=1 candidates). Prior 3 cells: 4.71 fp 11→1 · fd +2/5 · c3 (n=2, r-c3-candidate-config) code-from-image FLIP 2/2 (first flash-family pass ever; Stage-4 requirement rejections, no mentor) + dna-insert 1/2; 0 clean regressions outside its LIMIT (accepts a re-attested wrong artifact: pytorch-model-cli r2, dna-insert fd). Cost: attestation turns. Operator decision pending. PRO (r-p3, n=1): controls 3/3 held with NO attestation tax (bn-fit 53→30 turns), 0 regressions, 0 paralysis; 0/13 flips on pro's hard core (budget timeouts while working). → k=5 config for BOTH models: guards + GATE+REQ + ENABLE_WEBTOOLS=false, mentor/tail off.
442
455
  CORTEX_ENDTURN_GATE=false
443
456
  # Stage 4 (4.70.0, requires the gate ON): task-requirements attestation —
444
457
  # enumerate each stated requirement with what satisfies it + how it was
@@ -745,6 +758,10 @@ CORTEX_SURRENDER_NUDGE=true
745
758
  # N-in-window → one diversify nudge; 2N → break. Default off; bench/serving arm it.
746
759
  # [LEDGER 2026-09-02 @4.89.0] ON — guard stack; the retry-loop ladder (retry_loop = 65-74% of fails pre-guards). Code defaults NEARDUP_NUDGE_AT=12 (8 regressed rstan-class grinds) / NEARDUP_WINDOW=30 (break rung unreachable at 20).
747
760
  CORTEX_NEARDUP_BREAKER=true
761
+ # Slice-reader nudge: after the 3rd bash slice-read (sed -n N,Mp / head -n / tail -n) of the SAME file in a session,
762
+ # append a one-line reminder to read the file once with Read (offset/limit) instead. Event kind: slice_read.
763
+ # [LEDGER 2026-09-03 @4.91.0] ON (NEW) — doctrine gap flagged 08-29 (A′ doctrine-mine) and recurring in v4 make-doom on BOTH models (5 sed slices of /app/vm.js each); the Bash description's Read-preference line alone does not hold under the bash-edit frame. Post-tool reminder = no turn-1 prompt mass.
764
+ CORTEX_SLICE_NUDGE=true
748
765
  # [LEDGER 2026-09-02 @4.89.0] code default 30 (4.88.0) — 20 made the break rung (2N=24) unreachable; preserves 40%/80% density semantics.
749
766
  #NEARDUP_WINDOW=30
750
767
  # [LEDGER 2026-09-02 @4.89.0] code default 12 (4.88.0) — 8 misfired on persistence-wins grinds (rstan-to-pystan regressed both arms).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexus-cortex/cli",
3
- "version": "4.90.1",
3
+ "version": "4.91.0",
4
4
  "description": "Nexus Cortex CLI - Terminal interface for multi-provider LLM orchestration",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -19,7 +19,7 @@
19
19
  "prepack": "node ../../scripts/copy-pkg-cortex-scaffold.mjs"
20
20
  },
21
21
  "dependencies": {
22
- "@nexus-cortex/core": "4.90.1",
22
+ "@nexus-cortex/core": "4.91.0",
23
23
  "chalk": "^4.1.2",
24
24
  "cli-spinners": "^2.9.0",
25
25
  "commander": "^11.0.0",