conexus 2.3.4__tar.gz → 2.3.6__tar.gz

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 (360) hide show
  1. {conexus-2.3.4 → conexus-2.3.6}/.claude-plugin/marketplace.json +1 -1
  2. {conexus-2.3.4 → conexus-2.3.6}/CHANGELOG.md +28 -0
  3. {conexus-2.3.4 → conexus-2.3.6}/PKG-INFO +15 -11
  4. {conexus-2.3.4 → conexus-2.3.6}/README.md +13 -8
  5. {conexus-2.3.4 → conexus-2.3.6}/docs/cli-reference.md +6 -5
  6. {conexus-2.3.4 → conexus-2.3.6}/docs/configuration.md +26 -21
  7. {conexus-2.3.4 → conexus-2.3.6}/docs/contributing.md +3 -3
  8. conexus-2.3.6/docs/getting-started.md +166 -0
  9. {conexus-2.3.4 → conexus-2.3.6}/docs/memory-and-tasks.md +1 -1
  10. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-007-claude-adoption-session-context-and-search-guidance.md +2 -2
  11. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr-overview.md +1 -1
  12. {conexus-2.3.4 → conexus-2.3.6}/docs/repo-indexing.md +6 -10
  13. {conexus-2.3.4 → conexus-2.3.6}/docs/storage-tiers.md +10 -8
  14. {conexus-2.3.4 → conexus-2.3.6}/nx/CHANGELOG.md +11 -0
  15. {conexus-2.3.4 → conexus-2.3.6}/nx/README.md +1 -1
  16. {conexus-2.3.4 → conexus-2.3.6}/pyproject.toml +2 -3
  17. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/config.py +1 -1
  18. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/db/t3.py +1 -9
  19. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/doc_indexer.py +1 -7
  20. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/indexer.py +1 -7
  21. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/retry.py +7 -9
  22. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/scoring.py +1 -7
  23. {conexus-2.3.4 → conexus-2.3.6}/uv.lock +4 -8
  24. conexus-2.3.4/docs/getting-started.md +0 -143
  25. {conexus-2.3.4 → conexus-2.3.6}/.beads/.gitignore +0 -0
  26. {conexus-2.3.4 → conexus-2.3.6}/.beads/README.md +0 -0
  27. {conexus-2.3.4 → conexus-2.3.6}/.beads/config.yaml +0 -0
  28. {conexus-2.3.4 → conexus-2.3.6}/.beads/hooks/post-checkout +0 -0
  29. {conexus-2.3.4 → conexus-2.3.6}/.beads/hooks/post-merge +0 -0
  30. {conexus-2.3.4 → conexus-2.3.6}/.beads/hooks/pre-commit +0 -0
  31. {conexus-2.3.4 → conexus-2.3.6}/.beads/hooks/pre-push +0 -0
  32. {conexus-2.3.4 → conexus-2.3.6}/.beads/hooks/prepare-commit-msg +0 -0
  33. {conexus-2.3.4 → conexus-2.3.6}/.beads/interactions.jsonl +0 -0
  34. {conexus-2.3.4 → conexus-2.3.6}/.beads/issues.jsonl +0 -0
  35. {conexus-2.3.4 → conexus-2.3.6}/.beads/metadata.json +0 -0
  36. {conexus-2.3.4 → conexus-2.3.6}/.claude/skills/release.md +0 -0
  37. {conexus-2.3.4 → conexus-2.3.6}/.devcontainer/Dockerfile +0 -0
  38. {conexus-2.3.4 → conexus-2.3.6}/.devcontainer/devcontainer.json +0 -0
  39. {conexus-2.3.4 → conexus-2.3.6}/.dockerignore +0 -0
  40. {conexus-2.3.4 → conexus-2.3.6}/.env.example +0 -0
  41. {conexus-2.3.4 → conexus-2.3.6}/.gitattributes +0 -0
  42. {conexus-2.3.4 → conexus-2.3.6}/.github/workflows/ci.yml +0 -0
  43. {conexus-2.3.4 → conexus-2.3.6}/.github/workflows/release.yml +0 -0
  44. {conexus-2.3.4 → conexus-2.3.6}/.gitignore +0 -0
  45. {conexus-2.3.4 → conexus-2.3.6}/.markdownlint.json +0 -0
  46. {conexus-2.3.4 → conexus-2.3.6}/AGENTS.md +0 -0
  47. {conexus-2.3.4 → conexus-2.3.6}/CLAUDE.md +0 -0
  48. {conexus-2.3.4 → conexus-2.3.6}/Formula/nx.rb +0 -0
  49. {conexus-2.3.4 → conexus-2.3.6}/LICENSE +0 -0
  50. {conexus-2.3.4 → conexus-2.3.6}/docs/README.md +0 -0
  51. {conexus-2.3.4 → conexus-2.3.6}/docs/architecture.md +0 -0
  52. {conexus-2.3.4 → conexus-2.3.6}/docs/historical/README.md +0 -0
  53. {conexus-2.3.4 → conexus-2.3.6}/docs/historical/architecture.md +0 -0
  54. {conexus-2.3.4 → conexus-2.3.6}/docs/historical/plans/2026-02-23-rdr-workflow-skills-design.md +0 -0
  55. {conexus-2.3.4 → conexus-2.3.6}/docs/historical/plans/2026-02-23-rdr-workflow-skills-impl-plan.md +0 -0
  56. {conexus-2.3.4 → conexus-2.3.6}/docs/historical/plans/2026-02-24-nx-plugin-v0.4.0.md +0 -0
  57. {conexus-2.3.4 → conexus-2.3.6}/docs/historical/plans/2026-02-24-smart-repo-indexing-design.md +0 -0
  58. {conexus-2.3.4 → conexus-2.3.6}/docs/historical/plans/2026-02-24-smart-repo-indexing-impl-plan.md +0 -0
  59. {conexus-2.3.4 → conexus-2.3.6}/docs/historical/spec.md +0 -0
  60. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-02-28-rdr-004-four-store-cloud-design.md +0 -0
  61. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-02-28-rdr-004-four-store-cloud-impl-plan.md +0 -0
  62. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-01-dry-run-pdf-design.md +0 -0
  63. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-01-dry-run-pdf-impl-plan.md +0 -0
  64. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-01-pdfplumber-tier-design.md +0 -0
  65. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-01-rc10-1.0.0-readiness-design.md +0 -0
  66. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-01-rc10-critique-findings.md +0 -0
  67. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-02-classifier-skip-design.md +0 -0
  68. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-03-chunk-byte-cap-design.md +0 -0
  69. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-03-chunk-byte-cap-impl-plan.md +0 -0
  70. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-03-force-reindex-impl-plan.md +0 -0
  71. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-03-rdr017-phase2-cli-monitor-design.md +0 -0
  72. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-03-rdr017-phase2-cli-monitor-impl-plan.md +0 -0
  73. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-03-rdr018-git-hooks-impl-plan.md +0 -0
  74. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-04-doc-ux-polish-design.md +0 -0
  75. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-04-rdr-doc-polish-design.md +0 -0
  76. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-07-rdr-023-agent-tool-permissions-design.md +0 -0
  77. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-07-rdr-023-agent-tool-permissions-impl-plan.md +0 -0
  78. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-08-rdr-025-language-agnostic-agents-impl-plan.md +0 -0
  79. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-09-rdr-027-search-ux-impl-plan.md +0 -0
  80. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-09-rdr-028-language-registry-impl-plan.md +0 -0
  81. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-09-rdr-029-pipeline-versioning-impl-plan.md +0 -0
  82. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-09-rdr-030-reliability-hardening-impl-plan.md +0 -0
  83. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-11-rdr-034-mcp-server-impl-plan.md +0 -0
  84. {conexus-2.3.4 → conexus-2.3.6}/docs/plans/2026-03-21-rdr039-phase2-hooks-impl-plan.md +0 -0
  85. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/README.md +0 -0
  86. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/001-rdr-process-validation.md +0 -0
  87. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/002-t2-status-synchronization.md +0 -0
  88. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/010-t1-http-server.md +0 -0
  89. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/011-pdf-ingest-test-coverage.md +0 -0
  90. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/012-pdfplumber-extraction-tier.md +0 -0
  91. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/014-knowledge-base-retrieval-quality.md +0 -0
  92. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/015-indexing-pipeline-rethink.md +0 -0
  93. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/016-ast-chunk-line-range-bug.md +0 -0
  94. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/017-indexing-progress-reporting.md +0 -0
  95. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/018-replace-serve-with-git-hooks.md +0 -0
  96. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/023-agent-tool-permissions-audit.md +0 -0
  97. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/024-rdr-process-guardrails.md +0 -0
  98. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/028-language-registry-unification.md +0 -0
  99. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/029-pipeline-versioning.md +0 -0
  100. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/post-mortem/cce-query-model-mismatch.md +0 -0
  101. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-001-rdr-process-validation.md +0 -0
  102. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-002-t2-status-synchronization.md +0 -0
  103. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-004-four-store-architecture.md +0 -0
  104. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-005-chromadb-cloud-quota-enforcement.md +0 -0
  105. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-006-chunk-size-configuration.md +0 -0
  106. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-008-nx-workflow-integration.md +0 -0
  107. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-009-remove-agentic-and-answer-flags.md +0 -0
  108. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-010-t1-scratch-persistent-bounded-store.md +0 -0
  109. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-011-pdf-ingest-test-coverage.md +0 -0
  110. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-012-pdfplumber-extraction-tier.md +0 -0
  111. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-013-remove-nx-pm-layer.md +0 -0
  112. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-014-knowledge-base-retrieval-quality.md +0 -0
  113. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-015-indexing-pipeline-rethink.md +0 -0
  114. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-016-ast-chunk-line-range-bug.md +0 -0
  115. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-017-indexing-progress-reporting.md +0 -0
  116. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-018-replace-serve-with-git-hooks.md +0 -0
  117. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-019-chromadb-transient-retry.md +0 -0
  118. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-020-voyage-chromadb-read-timeout.md +0 -0
  119. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-021-docling-pdf-extraction.md +0 -0
  120. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-022-memory-delete-command.md +0 -0
  121. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-023-agent-tool-permissions-audit.md +0 -0
  122. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-024-rdr-process-guardrails.md +0 -0
  123. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-025-language-agnostic-agents.md +0 -0
  124. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-026-hybrid-search-fusion.md +0 -0
  125. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-027-search-results-ux.md +0 -0
  126. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-028-code-search-recall.md +0 -0
  127. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-029-pipeline-versioning.md +0 -0
  128. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-030-reliability-hardening.md +0 -0
  129. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-031-collection-portability.md +0 -0
  130. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-032-indexer-decomposition.md +0 -0
  131. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-033-pdf-agent-nx-index-alignment.md +0 -0
  132. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-034-mcp-server-agent-storage.md +0 -0
  133. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-035-plugin-agent-mcp-tool-access.md +0 -0
  134. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-036-post-accept-planning-workflow.md +0 -0
  135. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-037-t3-database-consolidation.md +0 -0
  136. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-038-local-t3-backend.md +0 -0
  137. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr/rdr-039-claude-code-framework-alignment.md +0 -0
  138. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr-nexus-integration.md +0 -0
  139. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr-templates.md +0 -0
  140. {conexus-2.3.4 → conexus-2.3.6}/docs/rdr-workflow.md +0 -0
  141. {conexus-2.3.4 → conexus-2.3.6}/nx/.mcp.json +0 -0
  142. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/_shared/CONTEXT_PROTOCOL.md +0 -0
  143. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/_shared/ERROR_HANDLING.md +0 -0
  144. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/_shared/MAINTENANCE.md +0 -0
  145. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/_shared/README.md +0 -0
  146. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/_shared/RELAY_TEMPLATE.md +0 -0
  147. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/architect-planner.md +0 -0
  148. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/code-review-expert.md +0 -0
  149. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/codebase-deep-analyzer.md +0 -0
  150. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/debugger.md +0 -0
  151. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/deep-analyst.md +0 -0
  152. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/deep-research-synthesizer.md +0 -0
  153. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/developer.md +0 -0
  154. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/knowledge-tidier.md +0 -0
  155. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/orchestrator.md +0 -0
  156. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/pdf-chromadb-processor.md +0 -0
  157. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/plan-auditor.md +0 -0
  158. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/plan-enricher.md +0 -0
  159. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/strategic-planner.md +0 -0
  160. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/substantive-critic.md +0 -0
  161. {conexus-2.3.4 → conexus-2.3.6}/nx/agents/test-validator.md +0 -0
  162. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/analyze-code.md +0 -0
  163. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/architecture.md +0 -0
  164. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/create-plan.md +0 -0
  165. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/debug.md +0 -0
  166. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/deep-analysis.md +0 -0
  167. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/enrich-plan.md +0 -0
  168. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/implement.md +0 -0
  169. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/knowledge-tidy.md +0 -0
  170. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/nx-preflight.md +0 -0
  171. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/pdf-process.md +0 -0
  172. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/plan-audit.md +0 -0
  173. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/rdr-accept.md +0 -0
  174. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/rdr-close.md +0 -0
  175. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/rdr-create.md +0 -0
  176. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/rdr-gate.md +0 -0
  177. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/rdr-list.md +0 -0
  178. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/rdr-research.md +0 -0
  179. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/rdr-show.md +0 -0
  180. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/research.md +0 -0
  181. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/review-code.md +0 -0
  182. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/substantive-critique.md +0 -0
  183. {conexus-2.3.4 → conexus-2.3.6}/nx/commands/test-validate.md +0 -0
  184. {conexus-2.3.4 → conexus-2.3.6}/nx/hooks/hooks.json +0 -0
  185. {conexus-2.3.4 → conexus-2.3.6}/nx/hooks/scripts/post_compact_hook.sh +0 -0
  186. {conexus-2.3.4 → conexus-2.3.6}/nx/hooks/scripts/rdr_hook.py +0 -0
  187. {conexus-2.3.4 → conexus-2.3.6}/nx/hooks/scripts/session_start_hook.py +0 -0
  188. {conexus-2.3.4 → conexus-2.3.6}/nx/hooks/scripts/stop_failure_hook.py +0 -0
  189. {conexus-2.3.4 → conexus-2.3.6}/nx/hooks/scripts/subagent-start.sh +0 -0
  190. {conexus-2.3.4 → conexus-2.3.6}/nx/hooks/scripts/t2_prefix_scan.py +0 -0
  191. {conexus-2.3.4 → conexus-2.3.6}/nx/registry.yaml +0 -0
  192. {conexus-2.3.4 → conexus-2.3.6}/nx/resources/rdr/README-TEMPLATE.md +0 -0
  193. {conexus-2.3.4 → conexus-2.3.6}/nx/resources/rdr/TEMPLATE.md +0 -0
  194. {conexus-2.3.4 → conexus-2.3.6}/nx/resources/rdr/post-mortem/TEMPLATE.md +0 -0
  195. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/architecture/SKILL.md +0 -0
  196. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/brainstorming-gate/SKILL.md +0 -0
  197. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/cli-controller/SKILL.md +0 -0
  198. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/code-review/SKILL.md +0 -0
  199. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/codebase-analysis/SKILL.md +0 -0
  200. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/debugging/SKILL.md +0 -0
  201. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/deep-analysis/SKILL.md +0 -0
  202. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/development/SKILL.md +0 -0
  203. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/enrich-plan/SKILL.md +0 -0
  204. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/knowledge-tidying/SKILL.md +0 -0
  205. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/nexus/SKILL.md +0 -0
  206. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/nexus/reference.md +0 -0
  207. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/orchestration/SKILL.md +0 -0
  208. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/pdf-processing/SKILL.md +0 -0
  209. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/plan-validation/SKILL.md +0 -0
  210. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/rdr-accept/SKILL.md +0 -0
  211. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/rdr-close/SKILL.md +0 -0
  212. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/rdr-create/SKILL.md +0 -0
  213. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/rdr-gate/SKILL.md +0 -0
  214. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/rdr-list/SKILL.md +0 -0
  215. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/rdr-research/SKILL.md +0 -0
  216. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/rdr-show/SKILL.md +0 -0
  217. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/research-synthesis/SKILL.md +0 -0
  218. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/serena-code-nav/SKILL.md +0 -0
  219. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/strategic-planning/SKILL.md +0 -0
  220. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/substantive-critique/SKILL.md +0 -0
  221. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/test-validation/SKILL.md +0 -0
  222. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/using-nx-skills/SKILL.md +0 -0
  223. {conexus-2.3.4 → conexus-2.3.6}/nx/skills/writing-nx-skills/SKILL.md +0 -0
  224. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/__init__.py +0 -0
  225. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/chunker.py +0 -0
  226. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/classifier.py +0 -0
  227. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/cli.py +0 -0
  228. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/code_indexer.py +0 -0
  229. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/__init__.py +0 -0
  230. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/_helpers.py +0 -0
  231. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/_provision.py +0 -0
  232. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/collection.py +0 -0
  233. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/config_cmd.py +0 -0
  234. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/doctor.py +0 -0
  235. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/hook.py +0 -0
  236. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/hooks.py +0 -0
  237. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/index.py +0 -0
  238. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/memory.py +0 -0
  239. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/scratch.py +0 -0
  240. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/search_cmd.py +0 -0
  241. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/commands/store.py +0 -0
  242. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/corpus.py +0 -0
  243. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/db/__init__.py +0 -0
  244. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/db/chroma_quotas.py +0 -0
  245. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/db/local_ef.py +0 -0
  246. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/db/t1.py +0 -0
  247. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/db/t2.py +0 -0
  248. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/errors.py +0 -0
  249. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/exporter.py +0 -0
  250. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/formatters.py +0 -0
  251. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/frecency.py +0 -0
  252. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/hooks.py +0 -0
  253. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/index_context.py +0 -0
  254. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/indexer_utils.py +0 -0
  255. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/languages.py +0 -0
  256. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/mcp_server.py +0 -0
  257. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/md_chunker.py +0 -0
  258. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/pdf_chunker.py +0 -0
  259. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/pdf_extractor.py +0 -0
  260. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/prose_indexer.py +0 -0
  261. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/registry.py +0 -0
  262. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/ripgrep_cache.py +0 -0
  263. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/search_engine.py +0 -0
  264. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/session.py +0 -0
  265. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/ttl.py +0 -0
  266. {conexus-2.3.4 → conexus-2.3.6}/src/nexus/types.py +0 -0
  267. {conexus-2.3.4 → conexus-2.3.6}/tests/__init__.py +0 -0
  268. {conexus-2.3.4 → conexus-2.3.6}/tests/__snapshots__/test_search_snapshot.ambr +0 -0
  269. {conexus-2.3.4 → conexus-2.3.6}/tests/conftest.py +0 -0
  270. {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/auth-login.sh +0 -0
  271. {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/lib.sh +0 -0
  272. {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/run.sh +0 -0
  273. {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/sandbox.sh +0 -0
  274. {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/scenarios/00_debug_load.sh +0 -0
  275. {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/scenarios/01_smoke.sh +0 -0
  276. {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/scenarios/02_sequential_thinking.sh +0 -0
  277. {conexus-2.3.4 → conexus-2.3.6}/tests/e2e/scenarios/03_skills.sh +0 -0
  278. {conexus-2.3.4 → conexus-2.3.6}/tests/hooks/__init__.py +0 -0
  279. {conexus-2.3.4 → conexus-2.3.6}/tests/hooks/test_post_compact_hook.py +0 -0
  280. {conexus-2.3.4 → conexus-2.3.6}/tests/hooks/test_stop_failure_hook.py +0 -0
  281. {conexus-2.3.4 → conexus-2.3.6}/tests/test_ast_languages.py +0 -0
  282. {conexus-2.3.4 → conexus-2.3.6}/tests/test_chroma_quotas.py +0 -0
  283. {conexus-2.3.4 → conexus-2.3.6}/tests/test_chroma_retry.py +0 -0
  284. {conexus-2.3.4 → conexus-2.3.6}/tests/test_chunker.py +0 -0
  285. {conexus-2.3.4 → conexus-2.3.6}/tests/test_chunker_ast_languages.py +0 -0
  286. {conexus-2.3.4 → conexus-2.3.6}/tests/test_classifier.py +0 -0
  287. {conexus-2.3.4 → conexus-2.3.6}/tests/test_collection_cmd.py +0 -0
  288. {conexus-2.3.4 → conexus-2.3.6}/tests/test_config.py +0 -0
  289. {conexus-2.3.4 → conexus-2.3.6}/tests/test_config_cmd.py +0 -0
  290. {conexus-2.3.4 → conexus-2.3.6}/tests/test_corpus.py +0 -0
  291. {conexus-2.3.4 → conexus-2.3.6}/tests/test_doc_indexer.py +0 -0
  292. {conexus-2.3.4 → conexus-2.3.6}/tests/test_doc_indexer_hash_sync.py +0 -0
  293. {conexus-2.3.4 → conexus-2.3.6}/tests/test_doc_indexer_pagination.py +0 -0
  294. {conexus-2.3.4 → conexus-2.3.6}/tests/test_doctor_cmd.py +0 -0
  295. {conexus-2.3.4 → conexus-2.3.6}/tests/test_doctor_integrity.py +0 -0
  296. {conexus-2.3.4 → conexus-2.3.6}/tests/test_e2e.py +0 -0
  297. {conexus-2.3.4 → conexus-2.3.6}/tests/test_exporter.py +0 -0
  298. {conexus-2.3.4 → conexus-2.3.6}/tests/test_formatters.py +0 -0
  299. {conexus-2.3.4 → conexus-2.3.6}/tests/test_frecency.py +0 -0
  300. {conexus-2.3.4 → conexus-2.3.6}/tests/test_git_hooks.py +0 -0
  301. {conexus-2.3.4 → conexus-2.3.6}/tests/test_hooks.py +0 -0
  302. {conexus-2.3.4 → conexus-2.3.6}/tests/test_hybrid_boost.py +0 -0
  303. {conexus-2.3.4 → conexus-2.3.6}/tests/test_index_cmd.py +0 -0
  304. {conexus-2.3.4 → conexus-2.3.6}/tests/test_index_lock.py +0 -0
  305. {conexus-2.3.4 → conexus-2.3.6}/tests/test_index_rdr_cmd.py +0 -0
  306. {conexus-2.3.4 → conexus-2.3.6}/tests/test_index_reminder.py +0 -0
  307. {conexus-2.3.4 → conexus-2.3.6}/tests/test_indexer.py +0 -0
  308. {conexus-2.3.4 → conexus-2.3.6}/tests/test_indexer_chunk_flow.py +0 -0
  309. {conexus-2.3.4 → conexus-2.3.6}/tests/test_indexer_e2e.py +0 -0
  310. {conexus-2.3.4 → conexus-2.3.6}/tests/test_indexer_modules.py +0 -0
  311. {conexus-2.3.4 → conexus-2.3.6}/tests/test_integration.py +0 -0
  312. {conexus-2.3.4 → conexus-2.3.6}/tests/test_languages.py +0 -0
  313. {conexus-2.3.4 → conexus-2.3.6}/tests/test_local_mode.py +0 -0
  314. {conexus-2.3.4 → conexus-2.3.6}/tests/test_mcp_concurrency.py +0 -0
  315. {conexus-2.3.4 → conexus-2.3.6}/tests/test_mcp_integration.py +0 -0
  316. {conexus-2.3.4 → conexus-2.3.6}/tests/test_mcp_server.py +0 -0
  317. {conexus-2.3.4 → conexus-2.3.6}/tests/test_mcp_session.py +0 -0
  318. {conexus-2.3.4 → conexus-2.3.6}/tests/test_md_chunker.py +0 -0
  319. {conexus-2.3.4 → conexus-2.3.6}/tests/test_md_chunker_semantic_integrity.py +0 -0
  320. {conexus-2.3.4 → conexus-2.3.6}/tests/test_md_preservation.py +0 -0
  321. {conexus-2.3.4 → conexus-2.3.6}/tests/test_memory.py +0 -0
  322. {conexus-2.3.4 → conexus-2.3.6}/tests/test_minified_chunking.py +0 -0
  323. {conexus-2.3.4 → conexus-2.3.6}/tests/test_p0_regressions.py +0 -0
  324. {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_chunker.py +0 -0
  325. {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_chunker_integration.py +0 -0
  326. {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_e2e.py +0 -0
  327. {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_extractor.py +0 -0
  328. {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_extractor_integration.py +0 -0
  329. {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_extractor_normalization.py +0 -0
  330. {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_normalization.py +0 -0
  331. {conexus-2.3.4 → conexus-2.3.6}/tests/test_pdf_subsystem.py +0 -0
  332. {conexus-2.3.4 → conexus-2.3.6}/tests/test_pipeline_version.py +0 -0
  333. {conexus-2.3.4 → conexus-2.3.6}/tests/test_plugin.py +0 -0
  334. {conexus-2.3.4 → conexus-2.3.6}/tests/test_plugin_install.py +0 -0
  335. {conexus-2.3.4 → conexus-2.3.6}/tests/test_plugin_structure.py +0 -0
  336. {conexus-2.3.4 → conexus-2.3.6}/tests/test_ppid_chain_hypothesis.py +0 -0
  337. {conexus-2.3.4 → conexus-2.3.6}/tests/test_provision.py +0 -0
  338. {conexus-2.3.4 → conexus-2.3.6}/tests/test_registry.py +0 -0
  339. {conexus-2.3.4 → conexus-2.3.6}/tests/test_ripgrep_cache.py +0 -0
  340. {conexus-2.3.4 → conexus-2.3.6}/tests/test_schema.py +0 -0
  341. {conexus-2.3.4 → conexus-2.3.6}/tests/test_scoring.py +0 -0
  342. {conexus-2.3.4 → conexus-2.3.6}/tests/test_scratch.py +0 -0
  343. {conexus-2.3.4 → conexus-2.3.6}/tests/test_scratch_cmd.py +0 -0
  344. {conexus-2.3.4 → conexus-2.3.6}/tests/test_search_cmd.py +0 -0
  345. {conexus-2.3.4 → conexus-2.3.6}/tests/test_search_engine.py +0 -0
  346. {conexus-2.3.4 → conexus-2.3.6}/tests/test_search_modules.py +0 -0
  347. {conexus-2.3.4 → conexus-2.3.6}/tests/test_search_snapshot.py +0 -0
  348. {conexus-2.3.4 → conexus-2.3.6}/tests/test_session.py +0 -0
  349. {conexus-2.3.4 → conexus-2.3.6}/tests/test_session_propagation_hypotheses.py +0 -0
  350. {conexus-2.3.4 → conexus-2.3.6}/tests/test_silent_error_logging.py +0 -0
  351. {conexus-2.3.4 → conexus-2.3.6}/tests/test_store_cmd.py +0 -0
  352. {conexus-2.3.4 → conexus-2.3.6}/tests/test_t1.py +0 -0
  353. {conexus-2.3.4 → conexus-2.3.6}/tests/test_t2.py +0 -0
  354. {conexus-2.3.4 → conexus-2.3.6}/tests/test_t2_prefix_scan.py +0 -0
  355. {conexus-2.3.4 → conexus-2.3.6}/tests/test_t3.py +0 -0
  356. {conexus-2.3.4 → conexus-2.3.6}/tests/test_t3_quota_enforcement.py +0 -0
  357. {conexus-2.3.4 → conexus-2.3.6}/tests/test_ttl.py +0 -0
  358. {conexus-2.3.4 → conexus-2.3.6}/tests/test_tuning_config.py +0 -0
  359. {conexus-2.3.4 → conexus-2.3.6}/tests/test_types_and_errors.py +0 -0
  360. {conexus-2.3.4 → conexus-2.3.6}/tests/test_voyage_retry.py +0 -0
@@ -9,7 +9,7 @@
9
9
  "name": "nx",
10
10
  "source": "./nx",
11
11
  "description": "Self-hosted three-tier knowledge management with 15 specialized agents, semantic search, and RDR decision tracking for Claude Code.",
12
- "version": "2.3.4"
12
+ "version": "2.3.6"
13
13
  }
14
14
  ]
15
15
  }
@@ -6,6 +6,34 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.3.6] - 2026-03-23
10
+
11
+ ### Fixed
12
+ - **Restore voyageai as required dependency** — the `conexus[cloud]` optional extra
13
+ was an unnecessary workaround. Since `requires-python < 3.14` blocks the only
14
+ incompatible Python version, voyageai always works on supported Pythons. Reverted
15
+ to direct `import voyageai` with no guards. Removed the `cloud` extra.
16
+
17
+ ## [2.3.5] - 2026-03-23
18
+
19
+ ### Docs
20
+ - **Streamlined getting-started guide** — linear flow from prerequisites through
21
+ install, verify, use, plugin, cloud. Added `nx doctor` verify step, Python 3.14
22
+ workaround, `uv tool update` instructions, and `conexus[cloud]`/`conexus[local]`
23
+ extras documentation.
24
+ - **Three-pass substantive critique** — fixed query model docs (CCE collections use
25
+ voyage-context-3 for both index and query), removed "T3 cloud" mislabeling from
26
+ CLI reference, corrected tuning YAML structure (nested subsections, not flat keys),
27
+ fixed local-mode auto-detection docs (either key absent, not both), added missing
28
+ `--on-locked` flag and `NX_VOYAGEAI_READ_TIMEOUT_SECONDS` env var, corrected
29
+ minified code detection description, and replaced all `pip install` with `uv` syntax.
30
+ - **Unprefixed skill references** — corrected `/rdr-create` → `/nx:rdr-create` etc.
31
+ across all documentation and RDR files.
32
+
33
+ ### Fixed
34
+ - **`is_local_mode()` docstring** — corrected to match implementation (either key
35
+ absent triggers local mode, not both).
36
+
9
37
  ## [2.3.4] - 2026-03-23
10
38
 
11
39
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: conexus
3
- Version: 2.3.4
3
+ Version: 2.3.6
4
4
  Summary: Self-hosted semantic search and knowledge management for LLM-driven development
5
5
  Project-URL: Homepage, https://github.com/Hellblazer/nexus
6
6
  Project-URL: Repository, https://github.com/Hellblazer/nexus
@@ -33,8 +33,7 @@ Requires-Dist: pyyaml>=6.0
33
33
  Requires-Dist: structlog>=24.0
34
34
  Requires-Dist: tqdm>=4.65
35
35
  Requires-Dist: tree-sitter-language-pack==0.7.1
36
- Provides-Extra: cloud
37
- Requires-Dist: voyageai>=0.2; extra == 'cloud'
36
+ Requires-Dist: voyageai>=0.2
38
37
  Provides-Extra: local
39
38
  Requires-Dist: fastembed>=0.7.0; extra == 'local'
40
39
  Description-Content-Type: text/markdown
@@ -72,22 +71,27 @@ nx store put --collection knowledge__myapp "API rate limit is 10k/min per the ve
72
71
 
73
72
  ## Quick Start
74
73
 
74
+ Requires Python 3.12–3.13 and [uv](https://docs.astral.sh/uv/).
75
+
75
76
  ```bash
76
77
  uv tool install conexus # install the nx CLI
77
- nx index repo . # index your repo (works immediately — no API keys needed)
78
+ nx doctor # verify installation
79
+ nx index repo . # index your repo (no API keys needed)
78
80
  nx search "what does X do" # semantic search, fully local
79
81
  ```
80
82
 
81
- Local mode uses bundled ONNX embeddings — zero configuration required. For higher-quality cloud embeddings, run `nx config init` to set up API keys. See [Getting Started](https://github.com/Hellblazer/nexus/blob/main/docs/getting-started.md) for the full walkthrough.
83
+ Update: `uv tool update conexus`
84
+
85
+ Works immediately with local ONNX embeddings — no accounts, no API keys. For higher-quality cloud embeddings (Voyage AI), see the [cloud setup instructions](https://github.com/Hellblazer/nexus/blob/main/docs/getting-started.md#cloud-mode-optional).
82
86
 
83
- For Claude Code, also install the plugin (see [plugin documentation](https://github.com/Hellblazer/nexus/blob/main/nx/README.md)):
87
+ For Claude Code, install the plugin:
84
88
 
85
89
  ```bash
86
90
  /plugin marketplace add Hellblazer/nexus
87
91
  /plugin install nx@nexus-plugins
88
92
  ```
89
93
 
90
- All three tiers work with **zero API keys** — including semantic search, which uses local ONNX embeddings by default. For higher-quality embeddings, optionally configure [ChromaDB Cloud](https://www.trychroma.com/) and [Voyage AI](https://www.voyageai.com/) (free tiers available). See [Getting Started](https://github.com/Hellblazer/nexus/blob/main/docs/getting-started.md) for the full walkthrough.
94
+ See [Getting Started](https://github.com/Hellblazer/nexus/blob/main/docs/getting-started.md) for the full walkthrough.
91
95
 
92
96
  ## Three tiers, one lifecycle
93
97
 
@@ -111,7 +115,7 @@ nx index pdf paper.pdf --collection knowledge__ml # reference papers
111
115
  nx store put --collection knowledge__ops "Redis maxmemory-policy: allkeys-lru for cache, noeviction for queues"
112
116
  ```
113
117
 
114
- Repository indexing (`nx index repo`) is the most automated path. It classifies git-tracked files, chunks code into logical pieces via tree-sitter AST parsing across 31 languages, and embeds each chunk with purpose-matched Voyage AI models. Recently-touched files rank higher via git frecency scoring.
118
+ Repository indexing (`nx index repo`) is the most automated path. It classifies git-tracked files, chunks code into logical pieces via tree-sitter AST parsing across 31 languages, and embeds each chunk using local ONNX models by default, or Voyage AI models in cloud mode. Recently-touched files rank higher via git frecency scoring.
115
119
 
116
120
  See [Repo Indexing](https://github.com/Hellblazer/nexus/blob/main/docs/repo-indexing.md) for details and `.nexus.yml` configuration.
117
121
 
@@ -172,12 +176,12 @@ Full details: [CLI Reference](https://github.com/Hellblazer/nexus/blob/main/docs
172
176
  2. [Workflow](https://github.com/Hellblazer/nexus/blob/main/docs/rdr-workflow.md) — Create → Research → Gate → Accept → Close
173
177
  3. [Nexus Integration](https://github.com/Hellblazer/nexus/blob/main/docs/rdr-nexus-integration.md) — How storage tiers and agents amplify RDRs
174
178
  4. [Templates](https://github.com/Hellblazer/nexus/blob/main/docs/rdr-templates.md) — Minimal and full examples, post-mortem template
175
- 5. [Project RDR Index](https://github.com/Hellblazer/nexus/blob/main/docs/rdr/README.md) — All 36 project RDRs with status
179
+ 5. [Project RDR Index](https://github.com/Hellblazer/nexus/blob/main/docs/rdr/README.md) — All project RDRs with status
176
180
 
177
181
  ## Prerequisites
178
182
 
179
- - Python 3.12+, [`uv`](https://docs.astral.sh/uv/), `git`
180
- - For semantic search: [ChromaDB cloud](https://www.trychroma.com/) + [Voyage AI](https://www.voyageai.com/) (free tiers available)
183
+ - Python 3.12–3.13, [`uv`](https://docs.astral.sh/uv/), `git`
184
+ - For cloud embeddings (optional): [ChromaDB Cloud](https://www.trychroma.com/) + [Voyage AI](https://www.voyageai.com/) accounts (free tiers available)
181
185
  - For hybrid search: [`ripgrep`](https://github.com/BurntSushi/ripgrep)
182
186
 
183
187
  ## License
@@ -31,22 +31,27 @@ nx store put --collection knowledge__myapp "API rate limit is 10k/min per the ve
31
31
 
32
32
  ## Quick Start
33
33
 
34
+ Requires Python 3.12–3.13 and [uv](https://docs.astral.sh/uv/).
35
+
34
36
  ```bash
35
37
  uv tool install conexus # install the nx CLI
36
- nx index repo . # index your repo (works immediately — no API keys needed)
38
+ nx doctor # verify installation
39
+ nx index repo . # index your repo (no API keys needed)
37
40
  nx search "what does X do" # semantic search, fully local
38
41
  ```
39
42
 
40
- Local mode uses bundled ONNX embeddings — zero configuration required. For higher-quality cloud embeddings, run `nx config init` to set up API keys. See [Getting Started](https://github.com/Hellblazer/nexus/blob/main/docs/getting-started.md) for the full walkthrough.
43
+ Update: `uv tool update conexus`
44
+
45
+ Works immediately with local ONNX embeddings — no accounts, no API keys. For higher-quality cloud embeddings (Voyage AI), see the [cloud setup instructions](https://github.com/Hellblazer/nexus/blob/main/docs/getting-started.md#cloud-mode-optional).
41
46
 
42
- For Claude Code, also install the plugin (see [plugin documentation](https://github.com/Hellblazer/nexus/blob/main/nx/README.md)):
47
+ For Claude Code, install the plugin:
43
48
 
44
49
  ```bash
45
50
  /plugin marketplace add Hellblazer/nexus
46
51
  /plugin install nx@nexus-plugins
47
52
  ```
48
53
 
49
- All three tiers work with **zero API keys** — including semantic search, which uses local ONNX embeddings by default. For higher-quality embeddings, optionally configure [ChromaDB Cloud](https://www.trychroma.com/) and [Voyage AI](https://www.voyageai.com/) (free tiers available). See [Getting Started](https://github.com/Hellblazer/nexus/blob/main/docs/getting-started.md) for the full walkthrough.
54
+ See [Getting Started](https://github.com/Hellblazer/nexus/blob/main/docs/getting-started.md) for the full walkthrough.
50
55
 
51
56
  ## Three tiers, one lifecycle
52
57
 
@@ -70,7 +75,7 @@ nx index pdf paper.pdf --collection knowledge__ml # reference papers
70
75
  nx store put --collection knowledge__ops "Redis maxmemory-policy: allkeys-lru for cache, noeviction for queues"
71
76
  ```
72
77
 
73
- Repository indexing (`nx index repo`) is the most automated path. It classifies git-tracked files, chunks code into logical pieces via tree-sitter AST parsing across 31 languages, and embeds each chunk with purpose-matched Voyage AI models. Recently-touched files rank higher via git frecency scoring.
78
+ Repository indexing (`nx index repo`) is the most automated path. It classifies git-tracked files, chunks code into logical pieces via tree-sitter AST parsing across 31 languages, and embeds each chunk using local ONNX models by default, or Voyage AI models in cloud mode. Recently-touched files rank higher via git frecency scoring.
74
79
 
75
80
  See [Repo Indexing](https://github.com/Hellblazer/nexus/blob/main/docs/repo-indexing.md) for details and `.nexus.yml` configuration.
76
81
 
@@ -131,12 +136,12 @@ Full details: [CLI Reference](https://github.com/Hellblazer/nexus/blob/main/docs
131
136
  2. [Workflow](https://github.com/Hellblazer/nexus/blob/main/docs/rdr-workflow.md) — Create → Research → Gate → Accept → Close
132
137
  3. [Nexus Integration](https://github.com/Hellblazer/nexus/blob/main/docs/rdr-nexus-integration.md) — How storage tiers and agents amplify RDRs
133
138
  4. [Templates](https://github.com/Hellblazer/nexus/blob/main/docs/rdr-templates.md) — Minimal and full examples, post-mortem template
134
- 5. [Project RDR Index](https://github.com/Hellblazer/nexus/blob/main/docs/rdr/README.md) — All 36 project RDRs with status
139
+ 5. [Project RDR Index](https://github.com/Hellblazer/nexus/blob/main/docs/rdr/README.md) — All project RDRs with status
135
140
 
136
141
  ## Prerequisites
137
142
 
138
- - Python 3.12+, [`uv`](https://docs.astral.sh/uv/), `git`
139
- - For semantic search: [ChromaDB cloud](https://www.trychroma.com/) + [Voyage AI](https://www.voyageai.com/) (free tiers available)
143
+ - Python 3.12–3.13, [`uv`](https://docs.astral.sh/uv/), `git`
144
+ - For cloud embeddings (optional): [ChromaDB Cloud](https://www.trychroma.com/) + [Voyage AI](https://www.voyageai.com/) accounts (free tiers available)
140
145
  - For hybrid search: [`ripgrep`](https://github.com/BurntSushi/ripgrep)
141
146
 
142
147
  ## License
@@ -17,7 +17,7 @@ nx search "authentication middleware" --corpus code --hybrid --n 20
17
17
  | `QUERY` (positional) | Search query text |
18
18
  | `PATH` (positional, optional) | Scope search to files under that directory |
19
19
  | `--corpus NAME` | Collection prefix or full name (repeatable; default: `knowledge`, `code`, `docs`) |
20
- | `--hybrid` | Merge semantic + ripgrep results for code (0.7*vector + 0.3*frecency) |
20
+ | `--hybrid` | Augment semantic results with frecency-weighted ranking and ripgrep keyword matches (0.7*vector + 0.3*frecency). Requires ripgrep |
21
21
  | `--no-rerank` | Disable cross-corpus reranking (use round-robin instead) |
22
22
  | `--where KEY=VALUE` | Metadata filter (repeatable; multiple flags are ANDed) |
23
23
  | `--max-file-chunks N` | Exclude chunks from files larger than N chunks (code corpora only; ANDs with `--where`) |
@@ -38,7 +38,7 @@ nx search "authentication middleware" --corpus code --hybrid --n 20
38
38
 
39
39
  ## nx index
40
40
 
41
- Index content into T3 cloud collections.
41
+ Index content into T3 collections.
42
42
 
43
43
  ```
44
44
  nx index repo ./my-project
@@ -64,6 +64,7 @@ nx index repo ./my-project
64
64
  |------|-------------|
65
65
  | `--frecency-only` | Update frecency scores only; skip re-embedding (faster, for re-ranking refresh). Mutually exclusive with `--force` |
66
66
  | `--force-stale` | Re-index only if collection pipeline version is outdated (smart force — skips current collections) |
67
+ | `--on-locked {skip,wait}` | Behavior when another process holds the repo lock: `skip` exits immediately, `wait` blocks (default: `wait`) |
67
68
 
68
69
  **`pdf` and `md` flags:**
69
70
 
@@ -82,7 +83,7 @@ nx index repo ./my-project
82
83
 
83
84
  ## nx store
84
85
 
85
- Manage T3 cloud knowledge entries.
86
+ Manage T3 knowledge entries.
86
87
 
87
88
  ```
88
89
  echo "# Cache Strategy" | nx store put - --collection knowledge --title "decision-cache" --tags "decision,arch"
@@ -220,7 +221,7 @@ nx scratch put "hypothesis: cache invalidation is stale"
220
221
 
221
222
  ## nx collection
222
223
 
223
- Manage T3 cloud collections.
224
+ Manage T3 collections (local or cloud).
224
225
 
225
226
  ```
226
227
  nx collection list
@@ -228,7 +229,7 @@ nx collection list
228
229
 
229
230
  | Subcommand | Description |
230
231
  |------------|-------------|
231
- | `list` | All cloud collections with document counts |
232
+ | `list` | All T3 collections with document counts |
232
233
  | `info NAME` | Details for one collection |
233
234
  | `verify NAME` | Existence check + document count |
234
235
  | `delete NAME` | Delete collection (irreversible) |
@@ -13,7 +13,7 @@ Each level is deep-merged, with higher-priority values winning.
13
13
 
14
14
  ## Local Mode
15
15
 
16
- Nexus auto-detects local mode when cloud credentials are absent. No configuration needed — just `pip install conexus && nx index repo .`.
16
+ Nexus auto-detects local mode when cloud credentials are absent. No configuration needed — just `uv tool install conexus && nx index repo .`.
17
17
 
18
18
  | Env var | Default | Description |
19
19
  |---|---|---|
@@ -21,9 +21,9 @@ Nexus auto-detects local mode when cloud credentials are absent. No configuratio
21
21
  | `NX_LOCAL_CHROMA_PATH` | `~/.local/share/nexus/chroma` | Override local ChromaDB storage path |
22
22
  | `NX_LOCAL_EMBED_MODEL` | (auto) | Force a specific local embedding model name |
23
23
 
24
- **Auto-detection**: When both `CHROMA_API_KEY` and `VOYAGE_API_KEY` are absent, local mode activates. Set `NX_LOCAL=1` to force local mode even with cloud credentials.
24
+ **Auto-detection**: When either `CHROMA_API_KEY` or `VOYAGE_API_KEY` is absent, local mode activates — both are required for cloud mode. Set `NX_LOCAL=1` to force local mode even with cloud credentials.
25
25
 
26
- **Embedding tiers**: Tier 0 (bundled MiniLM-L6-v2, 384d) is always available. Install `pip install conexus[local]` for tier 1 (bge-base-en-v1.5, 768d, better quality).
26
+ **Embedding tiers**: Tier 0 (bundled MiniLM-L6-v2, 384d) is always available. Install with `uv tool install conexus --with "conexus[local]" --force` for tier 1 (bge-base-en-v1.5, 768d, better quality).
27
27
 
28
28
  **Storage path**: Defaults to `$XDG_DATA_HOME/nexus/chroma` or `~/.local/share/nexus/chroma`. Override with `NX_LOCAL_CHROMA_PATH`.
29
29
 
@@ -54,8 +54,9 @@ Set via `nx config init` (wizard) or `nx config set KEY VALUE`. Stored in `~/.co
54
54
  |---|---|---|---|
55
55
  | `embeddings.rerankerModel` | `NX_EMBEDDINGS_RERANKER_MODEL` | `rerank-2.5` | Voyage reranker for multi-corpus merge |
56
56
  | `client.host` | `NX_CLIENT_HOST` | `localhost` | Override ChromaDB host URL |
57
+ | `voyageai.read_timeout_seconds` | `NX_VOYAGEAI_READ_TIMEOUT_SECONDS` | `120` | Request timeout (seconds) for Voyage AI API calls. Increase for large PDF indexing |
57
58
 
58
- Embedding models are selected automatically based on collection type (see [Storage Tiers](storage-tiers.md)): `voyage-code-3` for code, `voyage-context-3` for docs/knowledge at index time, `voyage-4` for all queries.
59
+ Embedding models are selected automatically based on collection type (see [Storage Tiers](storage-tiers.md)): `voyage-code-3` for code, `voyage-context-3` (CCE) for docs/rdr/knowledge at both index and query time, `voyage-4` for code queries only.
59
60
 
60
61
  ## Per-Repo Overrides (.nexus.yml)
61
62
 
@@ -77,26 +78,30 @@ The `[tuning]` section in `~/.config/nexus/config.yml` controls search scoring,
77
78
 
78
79
  ```yaml
79
80
  tuning:
80
- vector_weight: 0.7 # weight for vector similarity in hybrid scoring
81
- frecency_weight: 0.3 # weight for git frecency in hybrid scoring
82
- file_size_threshold: 30 # chunks files larger than this are down-ranked
83
- decay_rate: 0.01 # frecency decay rate (higher = faster decay)
84
- code_chunk_lines: 150 # target lines per code chunk (fallback splitter)
85
- pdf_chunk_chars: 1500 # target chars per PDF chunk
86
- git_log_timeout: 30 # seconds — timeout for git log subprocess
87
- ripgrep_timeout: 10 # seconds timeout for ripgrep subprocess in hybrid search
81
+ scoring:
82
+ vector_weight: 0.7 # weight for vector similarity in hybrid scoring
83
+ frecency_weight: 0.3 # weight for git frecency in hybrid scoring
84
+ file_size_threshold: 30 # chunks files larger than this are down-ranked
85
+ frecency:
86
+ decay_rate: 0.01 # frecency decay rate (higher = faster decay)
87
+ chunking:
88
+ code_chunk_lines: 150 # target lines per code chunk (fallback splitter)
89
+ pdf_chunk_chars: 1500 # target chars per PDF chunk
90
+ timeouts:
91
+ git_log: 30 # seconds — timeout for git log subprocess
92
+ ripgrep: 10 # seconds — timeout for ripgrep subprocess in hybrid search
88
93
  ```
89
94
 
90
- | Key | Default | Description |
95
+ | YAML path | Default | Description |
91
96
  |-----|---------|-------------|
92
- | `vector_weight` | `0.7` | Vector similarity weight in hybrid scoring formula |
93
- | `frecency_weight` | `0.3` | Git frecency weight in hybrid scoring formula |
94
- | `file_size_threshold` | `30` | Chunk count above which code files are down-ranked |
95
- | `decay_rate` | `0.01` | Exponential decay rate for frecency scoring |
96
- | `code_chunk_lines` | `150` | Target lines per code chunk (line-based fallback) |
97
- | `pdf_chunk_chars` | `1500` | Target characters per PDF chunk |
98
- | `git_log_timeout` | `30` | Timeout (seconds) for `git log` subprocess |
99
- | `ripgrep_timeout` | `10` | Timeout (seconds) for `rg` subprocess in hybrid search |
97
+ | `tuning.scoring.vector_weight` | `0.7` | Vector similarity weight in hybrid scoring formula |
98
+ | `tuning.scoring.frecency_weight` | `0.3` | Git frecency weight in hybrid scoring formula |
99
+ | `tuning.scoring.file_size_threshold` | `30` | Chunk count above which code files are down-ranked |
100
+ | `tuning.frecency.decay_rate` | `0.01` | Exponential decay rate for frecency scoring |
101
+ | `tuning.chunking.code_chunk_lines` | `150` | Target lines per code chunk (line-based fallback) |
102
+ | `tuning.chunking.pdf_chunk_chars` | `1500` | Target characters per PDF chunk |
103
+ | `tuning.timeouts.git_log` | `30` | Timeout (seconds) for `git log` subprocess |
104
+ | `tuning.timeouts.ripgrep` | `10` | Timeout (seconds) for `rg` subprocess in hybrid search |
100
105
 
101
106
  These values are exposed as a `TuningConfig` dataclass in `nexus.config`. The search command, indexer, and scoring modules all read from this config — changes take effect on the next invocation without restarting anything.
102
107
 
@@ -31,7 +31,7 @@ uv run pytest -m integration
31
31
 
32
32
  ## Code Conventions
33
33
 
34
- - **Python 3.12+**: use `match/case`, `tomllib`, `typing.Protocol`, walrus operator
34
+ - **Python 3.12–3.13**: use `match/case`, `tomllib`, `typing.Protocol`, walrus operator
35
35
  - **Type hints everywhere**: all public functions, methods, module-level variables
36
36
  - **No ORM**: raw `sqlite3` for T2
37
37
  - **Logging**: `structlog` — never `print()` in library code
@@ -76,7 +76,7 @@ Do not bump these without testing the full chunking pipeline.
76
76
  ## Git Workflow
77
77
 
78
78
  - Branch naming: `feature/<bead-id>-<short-description>`
79
- - Never push directly to `main` — all changes via PR
79
+ - Never push directly to `main` — all changes via PR (exception: version-bump release commits, see Release Process below)
80
80
  - Use `bd` (beads) for task tracking
81
81
 
82
82
  The `main` branch requires CI to pass before merging. Configure branch protection at
@@ -176,7 +176,7 @@ Every step below is **required**. Missing any one of them has caused problems in
176
176
  ```bash
177
177
  gh run watch # watch CI until green
178
178
  gh release view vX.Y.Z
179
- pip index versions conexus # confirm new version appears on PyPI
179
+ uv pip compile --no-deps conexus==X.Y.Z # confirm version resolves on PyPI
180
180
  ```
181
181
 
182
182
  11. **Yank pre-release versions** (if applicable)
@@ -0,0 +1,166 @@
1
+ # Getting Started with Nexus
2
+
3
+ ## Prerequisites
4
+
5
+ - **Python 3.12 or 3.13** (3.14 is not yet supported — [upstream dependency issue](https://github.com/pydantic/pydantic/issues))
6
+ - **[uv](https://docs.astral.sh/uv/)** — Python package manager
7
+ - **git**
8
+
9
+ Check your Python version:
10
+
11
+ ```bash
12
+ python3 --version
13
+ ```
14
+
15
+ If you're on 3.14+, install 3.13 with `uv python install 3.13` — uv will use it automatically.
16
+
17
+ ## Install
18
+
19
+ ```bash
20
+ uv tool install conexus
21
+ ```
22
+
23
+ Verify:
24
+
25
+ ```bash
26
+ nx --version
27
+ nx doctor
28
+ ```
29
+
30
+ `nx doctor` checks dependencies, credentials, and connectivity. Everything should show `✓` except cloud credentials (which are optional).
31
+
32
+ ## Update
33
+
34
+ ```bash
35
+ uv tool update conexus
36
+ ```
37
+
38
+ ## Use it (no API keys needed)
39
+
40
+ Everything below works immediately — no accounts, no network.
41
+
42
+ ### Index and search a repo
43
+
44
+ ```bash
45
+ cd your-project
46
+ nx index repo . # index with local ONNX embeddings
47
+ nx search "retry logic" # semantic search, fully local
48
+ ```
49
+
50
+ ### Scratch — ephemeral inter-agent context (T1)
51
+
52
+ ```bash
53
+ nx scratch put "working hypothesis: the cache TTL is too short"
54
+ nx scratch list
55
+ nx scratch search "cache"
56
+ ```
57
+
58
+ ### Memory — persistent project notes (T2)
59
+
60
+ ```bash
61
+ nx memory put "auth uses JWT with 24h expiry" -p myproject -t auth-notes
62
+ nx memory search "JWT" -p myproject
63
+ nx memory get -p myproject -t auth-notes
64
+ ```
65
+
66
+ ## Claude Code plugin (optional)
67
+
68
+ The `nx` plugin gives Claude Code agents access to all three storage tiers, 15 specialized agents, and 28 development workflow skills.
69
+
70
+ ```bash
71
+ /plugin marketplace add Hellblazer/nexus
72
+ /plugin install nx@nexus-plugins
73
+ ```
74
+
75
+ After installing, run `/nx:nx-preflight` to verify all plugin dependencies (nx CLI, beads, superpowers plugin) are present.
76
+
77
+ See [plugin documentation](https://github.com/Hellblazer/nexus/blob/main/nx/README.md) for the full agent/skill reference. For local development from a repo checkout:
78
+
79
+ ```bash
80
+ claude --plugin-dir ./nx
81
+ ```
82
+
83
+ ## Cloud mode (optional)
84
+
85
+ Local mode uses bundled ONNX embeddings (384d MiniLM). Cloud mode upgrades to Voyage AI (1024d), cross-chunk context (CCE), and reranking.
86
+
87
+ ### 1. Create accounts
88
+
89
+ | Service | Purpose | Free tier |
90
+ |---------|---------|-----------|
91
+ | [ChromaDB Cloud](https://trychroma.com) | Vector storage | Generous for individual use |
92
+ | [Voyage AI](https://voyageai.com) | Embeddings | 200M tokens/month |
93
+
94
+ Both free tiers cover typical usage at no cost.
95
+
96
+ ### 2. Configure credentials
97
+
98
+ Interactive wizard:
99
+
100
+ ```bash
101
+ nx config init
102
+ ```
103
+
104
+ Or set individually:
105
+
106
+ ```bash
107
+ nx config set chroma_api_key sk-...
108
+ nx config set chroma_database nexus
109
+ nx config set voyage_api_key pa-...
110
+ ```
111
+
112
+ ### 3. Verify
113
+
114
+ ```bash
115
+ nx doctor
116
+ ```
117
+
118
+ All items should show `✓`. Fix anything marked `✗` before proceeding.
119
+
120
+ ### 4. Index and search
121
+
122
+ ```bash
123
+ nx index repo .
124
+ nx search "how does authentication work"
125
+ nx search "retry logic" --corpus code
126
+ nx search "API changelog" --corpus docs
127
+ nx search "database pool" --hybrid # semantic + keyword matching
128
+ ```
129
+
130
+ Common flags: `-n 20` (result count), `--json`, `--files` (paths only), `-c` (show matched text). `--hybrid` requires [ripgrep](https://github.com/BurntSushi/ripgrep).
131
+
132
+ ### Upgrade local embedding quality (optional)
133
+
134
+ For better local-only embeddings (768d bge-base) without cloud:
135
+
136
+ ```bash
137
+ uv tool install conexus --with "conexus[local]" --force
138
+ ```
139
+
140
+ To force local mode even when cloud credentials exist: `NX_LOCAL=1`.
141
+
142
+ ## Troubleshooting
143
+
144
+ **`nx` command not found** — Make sure `~/.local/bin` is on your PATH. Run `uv tool install conexus` again and check the output for the install location.
145
+
146
+ **Crash on startup (Python 3.14)** — Nexus requires Python 3.12–3.13. If `python3 --version` shows 3.14, install 3.13: `uv python install 3.13`, then reinstall: `uv tool install conexus --force`.
147
+
148
+ **`nx doctor` reports credentials not set** — Expected for local mode. Only needed if you want cloud embeddings — run `nx config init`.
149
+
150
+ **Provisioning failed during `nx config init`** — If your ChromaDB plan restricts automatic database creation, create the database manually in the [dashboard](https://trychroma.com) using your `chroma_database` value as the name.
151
+
152
+ **`nx index repo .` fails with "credentials not set"** — In cloud mode, indexing requires T3 credentials. Run `nx config init` first, or use local mode (no credentials needed).
153
+
154
+ **`import voyageai` error** — Reinstall: `uv tool install conexus --force`. If on Python 3.14, downgrade to 3.13: `uv python install 3.13` then reinstall.
155
+
156
+ **First index is slow or hits a rate limit** — Large repos may take a few minutes. Add `--monitor` for per-file progress. Re-running is safe — unchanged files are skipped.
157
+
158
+ **`nx search` returns no results** — Run `nx doctor` to verify connectivity. If indexing was interrupted, re-run `nx index repo .` to resume.
159
+
160
+ ## Next steps
161
+
162
+ - [CLI Reference](https://github.com/Hellblazer/nexus/blob/main/docs/cli-reference.md) — every command, every flag
163
+ - [Storage Tiers](https://github.com/Hellblazer/nexus/blob/main/docs/storage-tiers.md) — T1, T2, T3 architecture
164
+ - [Repo Indexing](https://github.com/Hellblazer/nexus/blob/main/docs/repo-indexing.md) — file classification, chunking, frecency
165
+ - [Configuration](https://github.com/Hellblazer/nexus/blob/main/docs/configuration.md) — config keys, environment variables, tuning
166
+ - [RDR Overview](https://github.com/Hellblazer/nexus/blob/main/docs/rdr-overview.md) — decision tracking with Research-Design-Review
@@ -22,7 +22,7 @@ active decisions, working state — and retrieve it by project and title.
22
22
  The plugin's SessionStart hooks automatically surface T2 memory context so
23
23
  agents know where a project stands without being told. Two hooks contribute:
24
24
 
25
- 1. `nx hook session-start` lists recent T2 entries for the current repo.
25
+ 1. `nx hook session-start` (internal, invoked by plugin hooks) lists recent T2 entries for the current repo.
26
26
 
27
27
  2. The plugin's `session_start_hook.py` scans all T2 namespaces for the
28
28
  project (bare, `_rdr`, etc.) and injects a summary, along with ready beads.
@@ -94,7 +94,7 @@ The following was tested in a single session against the arcaneum project:
94
94
  --show-toplevel` → `Path(toplevel).name`. For repo `arcaneum`, this produces
95
95
  `arcaneum`. The hook then calls `nx memory list --project arcaneum`.
96
96
 
97
- The RDR workflow (via `/rdr-create` and the `rdr_hook.py`) populates T2 under
97
+ The RDR workflow (via `/nx:rdr-create` and the `rdr_hook.py`) populates T2 under
98
98
  `{repo_name}_rdr` (e.g., `arcaneum_rdr`). These are different keys in the T2
99
99
  store.
100
100
 
@@ -348,7 +348,7 @@ contradicts the actual namespace conventions in use (`{repo}_rdr`,
348
348
  **Project naming**: Use purpose-specific suffixes for different memory domains:
349
349
 
350
350
  - bare `{repo}` — general project memory and notes
351
- - `{repo}_rdr` — RDR documents and gate results (populated by `/rdr-create`)
351
+ - `{repo}_rdr` — RDR documents and gate results (populated by `/nx:rdr-create`)
352
352
  - `{repo}_pm` — project management context (populated by `nx pm`)
353
353
 
354
354
  The session hook discovers all populated namespaces by prefix scan; content
@@ -56,7 +56,7 @@ Flag assumptions that your design depends on. Low-stakes assumptions need no ver
56
56
 
57
57
  RDRs are not waterfall documents written once before implementation. They're iterative — write one, build, learn from what you find, write the next one. Each RDR builds on what earlier ones established, and sometimes an implementation reveals that a prior decision needs revisiting.
58
58
 
59
- The Nexus project has produced 36 RDRs across its development. The corpus is searchable, so when starting a new design, prior decisions surface automatically — preventing contradictions and avoiding redundant investigation.
59
+ The Nexus project has produced over 35 RDRs across its development. The corpus is searchable, so when starting a new design, prior decisions surface automatically — preventing contradictions and avoiding redundant investigation.
60
60
 
61
61
  ## Statuses and types
62
62
 
@@ -41,12 +41,12 @@ Classification is overridable via `.nexus.yml` (see [Per-Repo Configuration](#ne
41
41
 
42
42
  ## Dual-Collection Architecture
43
43
 
44
- Each indexed repository produces two T3 (ChromaDB Cloud) collections:
44
+ Each indexed repository produces two T3 collections (local ONNX or cloud Voyage AI):
45
45
 
46
- | Collection | Embedding Model (Index) | Embedding Model (Query) | Contents |
46
+ | Collection | Cloud Index Model | Cloud Query Model | Contents |
47
47
  |---|---|---|---|
48
48
  | `code__<name>-<hash8>` | `voyage-code-3` | `voyage-4` | Code files |
49
- | `docs__<name>-<hash8>` | `voyage-context-3` (CCE) | `voyage-4` | Prose + PDF files |
49
+ | `docs__<name>-<hash8>` | `voyage-context-3` (CCE) | `voyage-context-3` | Prose + PDF files |
50
50
 
51
51
  `<name>` is the repository basename; `<hash8>` is the first 8 hex characters of the
52
52
  SHA-256 digest of the main repository path. Long basenames are truncated to stay within
@@ -107,10 +107,7 @@ line-based splitting: 150-line chunks with 15% overlap.
107
107
 
108
108
  ### Minified Code Handling
109
109
 
110
- The AST chunker detects minified files (average line length > 500 characters) and falls
111
- back to byte-based splitting instead of producing single oversized chunks. This prevents
112
- minified JavaScript, CSS, and similar files from consuming disproportionate storage and
113
- degrading search quality.
110
+ Individual lines exceeding the byte limit (12 KB) are pre-split at natural code delimiters (`;`, `,`, `}`) before chunking. AST-produced chunks that individually exceed the byte limit are post-processed by the same line-level splitting. This prevents minified JavaScript, CSS, and similar files from producing single oversized chunks that consume disproportionate storage and degrade search quality.
114
111
 
115
112
  ### Context Prefix Injection (Embed-Only)
116
113
 
@@ -229,7 +226,7 @@ version is bumped. This enables targeted re-indexing:
229
226
  checks, so only changed files are re-embedded. This is the recommended flag after upgrading
230
227
  Nexus to a version with pipeline changes.
231
228
 
232
- `nx doctor` reports the pipeline version status of each collection:
229
+ In cloud mode, `nx doctor` reports the pipeline version status of each collection. In local mode, pipeline version is not checked — run `nx index repo --force-stale` after an upgrade to refresh any outdated collections.
233
230
 
234
231
  ```
235
232
  ✓ pipeline (code__nexus-571b8edd): v4
@@ -268,5 +265,4 @@ nx search "query" --corpus code --hybrid --no-rerank # hybrid without cross-cor
268
265
  `--corpus` resolves as a prefix: `code` matches all `code__*` collections, `docs` matches
269
266
  all `docs__*` collections. A fully-qualified name (containing `__`) matches exactly.
270
267
 
271
- All collections are queried with `voyage-4` at query time regardless of the index-time
272
- model.
268
+ `code__*` collections are queried with `voyage-4`. CCE collections (`docs__*`, `rdr__*`, `knowledge__*`) are queried with `voyage-context-3` — the same model used at index time. Mixing models across CCE vector spaces produces near-random similarity scores.
@@ -8,7 +8,7 @@ Nexus organizes data across three tiers with increasing durability. Data flows u
8
8
  |------|---------|---------|------------|-----|
9
9
  | T1 -- scratch | ChromaDB HTTP server (per-session) | Localhost only | Session only | Working notes, hypotheses |
10
10
  | T2 -- memory | SQLite + FTS5 (WAL) | None | Survives restarts | Per-project notes, session context |
11
- | T3 -- knowledge | ChromaDB cloud + Voyage AI | Required | Permanent | Semantic search, indexed code/docs |
11
+ | T3 -- knowledge | Local ChromaDB (default) or ChromaDB Cloud + Voyage AI | Local: none / Cloud: required | Permanent | Semantic search, indexed code/docs |
12
12
 
13
13
  ## T1 -- Session Scratch
14
14
 
@@ -44,12 +44,12 @@ T3 has two backends: **local** (zero-config) and **cloud** (higher quality).
44
44
 
45
45
  Backed by `chromadb.PersistentClient` with local ONNX embeddings. No API keys or network required. Data stored at `~/.local/share/nexus/chroma`.
46
46
 
47
- | | Tier 0 (bundled) | Tier 1 (`pip install conexus[local]`) |
47
+ | | Tier 0 (bundled) | Tier 1 (`uv tool install conexus --with "conexus[local]" --force`) |
48
48
  |---|---|---|
49
49
  | Model | all-MiniLM-L6-v2 | bge-base-en-v1.5 |
50
50
  | Dimensions | 384 | 768 |
51
51
  | Quality | Basic semantic matching | Better code & prose retrieval |
52
- | Install | Included | `pip install conexus[local]` |
52
+ | Install | Included | `uv tool install conexus --with "conexus[local]" --force` |
53
53
 
54
54
  All collection types use the same local model (no per-prefix splitting). Reranking is unavailable in local mode.
55
55
 
@@ -66,10 +66,12 @@ Collections are namespaced by corpus type using `__` (double underscore) as sepa
66
66
  | Pattern | Contents | Cloud index model | Cloud query model |
67
67
  |---------|----------|-------------------|-------------------|
68
68
  | `code__<repo>-<hash>` | Indexed source code | voyage-code-3 | voyage-4 |
69
- | `docs__<repo>-<hash>` | Indexed prose files | voyage-context-3 (CCE) | voyage-4 |
70
- | `rdr__<repo>-<hash>` | Indexed RDR documents | voyage-context-3 (CCE) | voyage-4 |
71
- | `docs__<corpus>` | Indexed PDFs and markdown | voyage-context-3 (CCE) | voyage-4 |
72
- | `knowledge__<topic>` | Stored agent outputs and notes | voyage-context-3 | voyage-4 |
69
+ | `docs__<repo>-<hash>` | Indexed prose files | voyage-context-3 (CCE) | voyage-context-3 |
70
+ | `rdr__<repo>-<hash>` | Indexed RDR documents | voyage-context-3 (CCE) | voyage-context-3 |
71
+ | `docs__<corpus>` | Indexed PDFs and markdown | voyage-context-3 (CCE) | voyage-context-3 |
72
+ | `knowledge__<topic>` | Stored agent outputs and notes | voyage-context-3 (CCE) | voyage-context-3 |
73
+
74
+ CCE collections must be queried with `voyage-context-3` to stay in the same vector space — `voyage-4` is not compatible. Only `code__*` collections use `voyage-4` for queries.
73
75
 
74
76
  In local mode, all collections use the active local model for both index and query.
75
77
 
@@ -120,7 +122,7 @@ T3 (knowledge)
120
122
  ### Promotion methods
121
123
 
122
124
  - **T1 -> T2**: `nx scratch promote ID --project NAME --title NAME`, or auto-flush of flagged items at session end.
123
- - **T2 -> T3**: `nx memory promote TITLE --collection NAME`.
125
+ - **T2 -> T3**: `nx memory promote ID --collection NAME` (by numeric row ID from `nx memory list`).
124
126
 
125
127
  ### TTL translation on promote
126
128