@mmmbuto/nexuscrew 0.9.23 → 0.9.25

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
@@ -2,6 +2,106 @@
2
2
 
3
3
  All notable changes to NexusCrew are tracked here.
4
4
 
5
+ ## 0.9.25 - 2026-09-13
6
+
7
+ - **Compatibility note**: codex-vl >= 0.154.0-vl.3 inside a bound Fleet cell
8
+ requires NexusCrew >= 0.9.25 for the `nc_*` tools; NexusCrew 0.9.24 only
9
+ reads the legacy identity variables, which vl.3 removes from MCP children on
10
+ verified bindings. Standalone (legacy) cells keep working with both.
11
+
12
+ - **MCP identity reads the verified binding metadata first (fail-closed).**
13
+ `nexuscrew mcp` now evaluates the `NEXUSCREW_VERIFIED_*` metadata delivered
14
+ by codex-vl >= 0.154.0-vl.3 launchers before any legacy source: version,
15
+ owner instance, cell, channel and the authority introspection must all be
16
+ coherent (source `verified-env`, verified identity in `nc_identity`), and any
17
+ incoherence fails closed with `NEXUSCREW_MCP_IDENTITY_VERIFIED_ENV_INVALID`
18
+ instead of falling back to the legacy variables. Without the metadata the
19
+ legacy path is unchanged.
20
+ - **`CODEX_APP_SERVER_IDENTITY_REQUIRED=1` is exported only in authority
21
+ mode.** The fleet launcher now exports the flag for codex-vl cells only when
22
+ the fleet identity mode is `authority` and the authority is constructible;
23
+ in legacy mode it exports an explicit `0` and names the reason in a
24
+ structured log line. Explicit user overrides (`engine.env`, `cfg.env`) still win, with a
25
+ warning when they force `1` outside authority mode.
26
+ - **Standalone cells (`CODEX_APP_SERVER_IDENTITY_REQUIRED=0`) no longer
27
+ receive the identity channel.** The launcher created fd 3:4 and
28
+ `NEXUSCREW_IDENTITY_FD` even when it had resolved the flag to `0`, so the
29
+ child started an identity handshake against a legacy lease server that
30
+ answered `revoked` and the cell died at startup. The channel decision now
31
+ comes from the same resolution that produces the flag.
32
+ - **A configured but unavailable fleet identity authority now refuses
33
+ protected cell launches instead of silently falling back to standalone.**
34
+ The launch fails with `IDENTITY_AUTHORITY_UNAVAILABLE` naming the reason
35
+ (never a value), and `nexuscrew doctor` reports the same state.
36
+ - **Upgrade NexusCrew before codex-vl**: `codex-vl >= 0.154.0-vl.3` with
37
+ `NexusCrew <= 0.9.24` fails closed in Fleet cells (the old launcher forces
38
+ identity without an authority).
39
+ - **`nexuscrew identity provision`.** New command that generates the two
40
+ distinct authority credentials (32 random bytes each, files `0600` inside a
41
+ `0700` directory under `~/.nexuscrew/identity-authority/`), never overwrites
42
+ existing credentials without `--force`, activates
43
+ `fleet.identity.mode = "authority"` in the config (or prints the exact keys
44
+ with `--no-write-config`). `loadConfig` reads the credential files
45
+ automatically and `nexuscrew doctor` shows the identity mode and authority
46
+ constructibility (no values).
47
+ - **MCP identity remediation rewritten.** `nc_identity` and `doctor` no longer
48
+ recommend allowlisting `TMUX`/`TMUX_PANE`/`NEXUSCREW_MCP_SESSION` in the MCP
49
+ server `env_vars`: on a shared verified spawn that allowlist fails the launch
50
+ (the names are reserved). The two valid paths are a verified session
51
+ (codex-vl >= 0.154.0-vl.3 + NexusCrew >= 0.9.25 with provisioned authority)
52
+ or a legacy session inheriting the three variables.
53
+
54
+ - **Ollama Cloud catalog refreshed against the official measured sample of
55
+ 2026-09-12.** Bare-name `gemma4` and `qwen3.5` enter the catalog (verified
56
+ alive with a 200 on `/v1/chat/completions`; official measured sample:
57
+ 22 live ids / 8 dead variants), with context and capabilities taken from
58
+ the channel cards (`gemma4` 128K text+image, `qwen3.5` 256K text+image).
59
+ The 404 variants (`gemma4:12b`/`:e4b`, `qwen3.5:27b`/`:35b`/`:122b`, bare
60
+ `mistral-large-3`, `nemotron-3-super:120b`, `nemotron-3-nano:4b`) and
61
+ community ids stay out on purpose. `glm-5.3` and `deepseek-v4.1-flash`
62
+ were already listed and are not duplicated.
63
+ - **Fixture-based liveness guard for the Ollama Cloud models.** New test
64
+ (`tests/fleet-ollama-liveness.test.js`): every catalog id must belong to
65
+ the official measured sample; when upstream retires an id, the test goes
66
+ red naming it as "to be verified". No network calls in tests; the real
67
+ periodic check remains a separate item.
68
+ - **OpenCode Go catalog refreshed signal-only (401 CreditsError on
69
+ 2026-09-12).** The Go plan could not generate (credits exhausted, listing
70
+ OK): the additions are wire signals, not end-to-end measurements.
71
+ `glm-5.3`, `glm-5.3-flash`, `longcat-2.0`, `deepseek-v4.1-flash` and
72
+ `hy4-preview` enter all three wires; `qwen3.8-flash` enters Messages/Chat
73
+ ONLY (Responses rejected, measured). New limits declared by models.dev
74
+ (1M context; `hy4-preview` 1024000), marked "declared, not measured".
75
+ Retired `glm-5`, `kimi-k2.5`, `minimax-m2.5` and `qwen3.5-plus` are
76
+ removed from the lists, LIMITS and the catalog, with a test guard against
77
+ re-introduction. `hy3` unchanged (diverging source on its output limit:
78
+ to be re-checked), default `deepseek-v4-flash` unchanged, VISION
79
+ unchanged (only the PNG-measured vision-exp id).
80
+
81
+ ## 0.9.24 — 2026-09-12
82
+
83
+ - **Verifica dell'identità legata alla challenge, con claims completi.** La
84
+ verifica online di un identity proof (metodo `nexuscrew/identity/verify`, sul
85
+ canale di lease per cella) ora riceve dall'authority i claims che la challenge
86
+ ha effettivamente emesso, e il risultato è legato alla challenge stessa: una
87
+ risposta che non corrisponde alla challenge emessa viene rifiutata
88
+ (`challenge_mismatch`) invece di essere accettata. Il `nonce` torna fra i
89
+ claims perché il lato client lo confronta con la propria challenge al momento
90
+ del commit, senza fallback su claim esterni.
91
+
92
+ - **Il canale serve più verifiche per connessione.** Dopo una verifica
93
+ conclusa il relay azzera il riferimento pendente: una seconda verifica sulla
94
+ stessa connessione (reconnect, resume, nuova incarnazione) non trovava più il
95
+ canale libero e falliva pur essendo il canale sano. Corretto, con e2e che
96
+ copre verifica ripetuta e challenge successiva.
97
+
98
+ - **Requisito di compatibilità — la coppia versioni conta.** `codex-vl` **≥
99
+ 0.154.0-vl.3** richiede **NexusCrew ≥ 0.9.24**: il daemon `codex-vl` con
100
+ identità obbligatoria e canale di verifica assente o inutilizzabile **non si
101
+ avvia** (fail-closed) e non può verificare l'identità contro un server che non
102
+ espone `verify`. Con NexusCrew 0.9.23 una cella gestita resta quindi
103
+ inutilizzabile; aggiornate il server prima del daemon.
104
+
5
105
  ## 0.9.23 — 2026-09-11
6
106
 
7
107
  - **Frontend bundle ricostruito.** Il banner «new version available /