Repository navigation
v7.86.3
Pairs with engine-service-v0.1.164 (REQUIRED_ENGINE_VERSION unchanged from 7.86.2), already deployed; no engine changesets. Ships the conexus-tool-spill plugin that missed 7.86.2, the manifest-heal data-loss fix, and traverse/plan_save failures reported as errors. Engine work on develop (the re-embed refusal, per-document section labels) waits for the next engine release.
Added
conexus-tool-spill, an opt-in Claude Code mod in thenexus-pluginsmarketplace (nexus-121ke). A third plugin besideconexusandsn, installed with/plugin install conexus-tool-spill@nexus-plugins; nothing changes for anyone who does not. In the main conversation, aBashresult overlimitbytes (default 4000) is written to<temp dir>/claude-tool-spill-<user>/<tool_use_id>.txt, and the model sees the firstheadbytes (1400) and the lasttailbytes (800) of each stream, cut at line ends, with a note between them naming the file, how many middle lines were cut and how many of those mention an error or failure; a failure on the last line of an exit-0 pipeline is therefore still seen. A whole-fileReadover the limit is cut with the next offset and a limit to use; aReadwith an offset or limit, an instruction file (SKILL.md,AGENTS.md,CLAUDE.md, files underskills/,agents/,commands/,rules/), an errored or denied call, output Claude Code already persisted, subagent calls and every other tool (Grep, MCP tools, ToolSearch, Skill) pass untouched, andclaude -pruns are left alone unlessincludeHeadlessis on. Limits are counted in UTF-8 bytes and never split a character. The options arelimit,head,tailandincludeHeadless. The plugin replaces any machine-local copy of the mod (two loaded together would both act); spill files are per user and never deleted by the mod. The directory istool-spill/(README there); the plugin channel's allowlist, the drift ledger andscripts/cut_plugin_release.pyknow it, and the cut now accepts a plugin the base marketplace does not list yet.FALLBACK_PLUGINSinsrc/nexus/plugin_registry.pynames it too, which is client code and so reaches users only with the next client release (the plugin itself ships through a plugin cut). The plugin's tests run withclaude plugin test tool-spill, by hand: no workflow installs theclaudeCLI.
Fixed
traverseandplan_saveanswers that read like an empty result are failures (nexus-4jwr0). Over MCP,traversewith an unknownpurpose, atraversewhere no seed parses as a tumbler, and aplan_savethe plan library refuses ("Plan not saved: ...") now answerisError: true; in-process callers get the same values as before. Atraversethat drops some unparseable seeds, or returns no chunk ids because the manifest lookup failed, still succeeds but now says so in awarningentry; both used to be silent.- The manifest heal no longer writes into a document that has manifest rows, and no longer lowers the
chunk_countof one (nexus-8o06q).nx index repo(its self-heal pass) andnx catalog reconciletreat a document as gapped when its manifest has fewer rows than itschunk_count, which includes a partly manifested one, and rebuilt the manifest from the T3 chunk rows carrying the document's file hash. A chunk row is shared by every document holding that text and carries the last writer's hash, so a chunk the document shared with a document that wrote it last was not fetched; the replace then deleted the document's own correct row for it, booked the shortfall as a duplicate-text collapse, and loweredchunk_count, so the gap never showed again and the document was never re-indexed. Now a gapped document that already has manifest rows is left as it is,chunk_countincluded, and marked for re-index: its index fence is set tofailed, which every index path reads as stale, so re-indexing its source rewrites the manifest at the right positions without re-embedding unchanged text. The route depends on how the document was indexed: the nextnx index repofor a repo file,nx index pdf/md/rdrfor one indexed that way,nx store putagain under the same collection and title for a note;nx catalog reconcilecovers the whole catalog, so it can mark documents annx index reponever walks. A document with no manifest rows is still rebuilt from the stored chunks, now by appending (it cannot delete a row a concurrent run wrote), and only if its fence is notindexing; the append sets itschunk_countto the number of rows rebuilt. If that is fewer rows than thechunk_countit had, the document is marked for re-index too, because the heal cannot tell repeated text inside one document (one manifest row per position, one T3 row) from a lost chunk; its rows then equal its newchunk_count, so a later pass does not list it again, and the failed fence is what makes the next index of its source rewrite it and restore the count. If the rebuild holds more rows than thechunk_count(rows of an older chunker run of the same file) nothing is written and the document is marked. The heal never writeschunk_countitself.nx catalog reconcileprints aREINDEXline for each of the first 20 marked documents and a count of the rest, and thenx index repoself-heal line counts them;--dry-runreports the same and changes nothing. A marked document makesnx t3 gcrefuse its collection until it is re-indexed (unless--allow-incomplete-index-stateis passed), and one whose source is not re-indexed (an--since-headrun, a file that is gone, or a document nonx index repowalks) stays marked; a marked document that still has rows is listed again on every pass. Thenx doctor"failed index runs with hidden chunks" row is unchanged: it examines only documents that are alreadyfailedand counts those whose manifest the heal would rebuild. The "chunk_count corrected N -> M for duplicate-text collapse" note is gone. The fetch still includes chunk rows with no live manifest owner (they are the rows the heal exists to find), so a manifest-less document's rebuild can include rows left by an older chunker run when the counts happen to match.
Changed
- The sequential-thinking rule names its decision points (nexus-rkats; Sam 2026-10-25). The SessionStart guidance and the orchestration skill asked for a sequential-thinking call before every decision; they now name the closed list: dispatching an agent, choosing a fix (and again after one fails), acting on a verdict, test result or measurement, pushing, merging, closing a bead or preparing a release, and anything hard to undo.