conexus 2.4.2__tar.gz → 2.6.0__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 (365) hide show
  1. {conexus-2.4.2 → conexus-2.6.0}/.claude-plugin/marketplace.json +1 -1
  2. {conexus-2.4.2 → conexus-2.6.0}/CHANGELOG.md +30 -0
  3. {conexus-2.4.2 → conexus-2.6.0}/PKG-INFO +1 -1
  4. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/README.md +2 -0
  5. conexus-2.6.0/docs/rdr/rdr-040-developer-agent-circuit-breaker.md +309 -0
  6. conexus-2.6.0/docs/rdr/rdr-041-t1-scratch-inter-agent-context.md +342 -0
  7. {conexus-2.4.2 → conexus-2.6.0}/nx/CHANGELOG.md +18 -0
  8. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/_shared/CONTEXT_PROTOCOL.md +23 -0
  9. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/code-review-expert.md +8 -1
  10. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/debugger.md +8 -0
  11. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/developer.md +45 -2
  12. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/development/SKILL.md +59 -0
  13. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/orchestration/SKILL.md +3 -0
  14. {conexus-2.4.2 → conexus-2.6.0}/pyproject.toml +1 -1
  15. {conexus-2.4.2 → conexus-2.6.0}/uv.lock +1 -1
  16. {conexus-2.4.2 → conexus-2.6.0}/.beads/.gitignore +0 -0
  17. {conexus-2.4.2 → conexus-2.6.0}/.beads/README.md +0 -0
  18. {conexus-2.4.2 → conexus-2.6.0}/.beads/config.yaml +0 -0
  19. {conexus-2.4.2 → conexus-2.6.0}/.beads/hooks/post-checkout +0 -0
  20. {conexus-2.4.2 → conexus-2.6.0}/.beads/hooks/post-merge +0 -0
  21. {conexus-2.4.2 → conexus-2.6.0}/.beads/hooks/pre-commit +0 -0
  22. {conexus-2.4.2 → conexus-2.6.0}/.beads/hooks/pre-push +0 -0
  23. {conexus-2.4.2 → conexus-2.6.0}/.beads/hooks/prepare-commit-msg +0 -0
  24. {conexus-2.4.2 → conexus-2.6.0}/.beads/interactions.jsonl +0 -0
  25. {conexus-2.4.2 → conexus-2.6.0}/.beads/issues.jsonl +0 -0
  26. {conexus-2.4.2 → conexus-2.6.0}/.beads/metadata.json +0 -0
  27. {conexus-2.4.2 → conexus-2.6.0}/.claude/skills/release.md +0 -0
  28. {conexus-2.4.2 → conexus-2.6.0}/.devcontainer/Dockerfile +0 -0
  29. {conexus-2.4.2 → conexus-2.6.0}/.devcontainer/devcontainer.json +0 -0
  30. {conexus-2.4.2 → conexus-2.6.0}/.dockerignore +0 -0
  31. {conexus-2.4.2 → conexus-2.6.0}/.env.example +0 -0
  32. {conexus-2.4.2 → conexus-2.6.0}/.gitattributes +0 -0
  33. {conexus-2.4.2 → conexus-2.6.0}/.github/workflows/ci.yml +0 -0
  34. {conexus-2.4.2 → conexus-2.6.0}/.github/workflows/release.yml +0 -0
  35. {conexus-2.4.2 → conexus-2.6.0}/.gitignore +0 -0
  36. {conexus-2.4.2 → conexus-2.6.0}/.markdownlint.json +0 -0
  37. {conexus-2.4.2 → conexus-2.6.0}/AGENTS.md +0 -0
  38. {conexus-2.4.2 → conexus-2.6.0}/CLAUDE.md +0 -0
  39. {conexus-2.4.2 → conexus-2.6.0}/Formula/nx.rb +0 -0
  40. {conexus-2.4.2 → conexus-2.6.0}/LICENSE +0 -0
  41. {conexus-2.4.2 → conexus-2.6.0}/README.md +0 -0
  42. {conexus-2.4.2 → conexus-2.6.0}/docs/README.md +0 -0
  43. {conexus-2.4.2 → conexus-2.6.0}/docs/architecture.md +0 -0
  44. {conexus-2.4.2 → conexus-2.6.0}/docs/cli-reference.md +0 -0
  45. {conexus-2.4.2 → conexus-2.6.0}/docs/configuration.md +0 -0
  46. {conexus-2.4.2 → conexus-2.6.0}/docs/contributing.md +0 -0
  47. {conexus-2.4.2 → conexus-2.6.0}/docs/getting-started.md +0 -0
  48. {conexus-2.4.2 → conexus-2.6.0}/docs/historical/README.md +0 -0
  49. {conexus-2.4.2 → conexus-2.6.0}/docs/historical/architecture.md +0 -0
  50. {conexus-2.4.2 → conexus-2.6.0}/docs/historical/plans/2026-02-23-rdr-workflow-skills-design.md +0 -0
  51. {conexus-2.4.2 → conexus-2.6.0}/docs/historical/plans/2026-02-23-rdr-workflow-skills-impl-plan.md +0 -0
  52. {conexus-2.4.2 → conexus-2.6.0}/docs/historical/plans/2026-02-24-nx-plugin-v0.4.0.md +0 -0
  53. {conexus-2.4.2 → conexus-2.6.0}/docs/historical/plans/2026-02-24-smart-repo-indexing-design.md +0 -0
  54. {conexus-2.4.2 → conexus-2.6.0}/docs/historical/plans/2026-02-24-smart-repo-indexing-impl-plan.md +0 -0
  55. {conexus-2.4.2 → conexus-2.6.0}/docs/historical/spec.md +0 -0
  56. {conexus-2.4.2 → conexus-2.6.0}/docs/memory-and-tasks.md +0 -0
  57. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-02-28-rdr-004-four-store-cloud-design.md +0 -0
  58. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-02-28-rdr-004-four-store-cloud-impl-plan.md +0 -0
  59. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-01-dry-run-pdf-design.md +0 -0
  60. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-01-dry-run-pdf-impl-plan.md +0 -0
  61. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-01-pdfplumber-tier-design.md +0 -0
  62. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-01-rc10-1.0.0-readiness-design.md +0 -0
  63. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-01-rc10-critique-findings.md +0 -0
  64. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-02-classifier-skip-design.md +0 -0
  65. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-03-chunk-byte-cap-design.md +0 -0
  66. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-03-chunk-byte-cap-impl-plan.md +0 -0
  67. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-03-force-reindex-impl-plan.md +0 -0
  68. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-03-rdr017-phase2-cli-monitor-design.md +0 -0
  69. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-03-rdr017-phase2-cli-monitor-impl-plan.md +0 -0
  70. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-03-rdr018-git-hooks-impl-plan.md +0 -0
  71. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-04-doc-ux-polish-design.md +0 -0
  72. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-04-rdr-doc-polish-design.md +0 -0
  73. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-07-rdr-023-agent-tool-permissions-design.md +0 -0
  74. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-07-rdr-023-agent-tool-permissions-impl-plan.md +0 -0
  75. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-08-rdr-025-language-agnostic-agents-impl-plan.md +0 -0
  76. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-09-rdr-027-search-ux-impl-plan.md +0 -0
  77. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-09-rdr-028-language-registry-impl-plan.md +0 -0
  78. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-09-rdr-029-pipeline-versioning-impl-plan.md +0 -0
  79. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-09-rdr-030-reliability-hardening-impl-plan.md +0 -0
  80. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-11-rdr-034-mcp-server-impl-plan.md +0 -0
  81. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-21-rdr039-phase2-hooks-impl-plan.md +0 -0
  82. {conexus-2.4.2 → conexus-2.6.0}/docs/plans/2026-03-23-rdr-040-impl-plan.md +0 -0
  83. {conexus-2.4.2 → conexus-2.6.0}/docs/postmortem/2026-03-23-pdf-index-collection-mismatch.md +0 -0
  84. {conexus-2.4.2 → conexus-2.6.0}/docs/postmortem/2026-03-24-pdf-index-fix-not-applied.md +0 -0
  85. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/post-mortem/001-rdr-process-validation.md +0 -0
  86. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/post-mortem/002-t2-status-synchronization.md +0 -0
  87. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/post-mortem/010-t1-http-server.md +0 -0
  88. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/post-mortem/011-pdf-ingest-test-coverage.md +0 -0
  89. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/post-mortem/012-pdfplumber-extraction-tier.md +0 -0
  90. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/post-mortem/014-knowledge-base-retrieval-quality.md +0 -0
  91. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/post-mortem/015-indexing-pipeline-rethink.md +0 -0
  92. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/post-mortem/016-ast-chunk-line-range-bug.md +0 -0
  93. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/post-mortem/017-indexing-progress-reporting.md +0 -0
  94. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/post-mortem/018-replace-serve-with-git-hooks.md +0 -0
  95. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/post-mortem/023-agent-tool-permissions-audit.md +0 -0
  96. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/post-mortem/024-rdr-process-guardrails.md +0 -0
  97. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/post-mortem/028-language-registry-unification.md +0 -0
  98. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/post-mortem/029-pipeline-versioning.md +0 -0
  99. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/post-mortem/cce-query-model-mismatch.md +0 -0
  100. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-001-rdr-process-validation.md +0 -0
  101. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-002-t2-status-synchronization.md +0 -0
  102. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-004-four-store-architecture.md +0 -0
  103. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-005-chromadb-cloud-quota-enforcement.md +0 -0
  104. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-006-chunk-size-configuration.md +0 -0
  105. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-007-claude-adoption-session-context-and-search-guidance.md +0 -0
  106. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-008-nx-workflow-integration.md +0 -0
  107. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-009-remove-agentic-and-answer-flags.md +0 -0
  108. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-010-t1-scratch-persistent-bounded-store.md +0 -0
  109. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-011-pdf-ingest-test-coverage.md +0 -0
  110. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-012-pdfplumber-extraction-tier.md +0 -0
  111. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-013-remove-nx-pm-layer.md +0 -0
  112. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-014-knowledge-base-retrieval-quality.md +0 -0
  113. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-015-indexing-pipeline-rethink.md +0 -0
  114. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-016-ast-chunk-line-range-bug.md +0 -0
  115. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-017-indexing-progress-reporting.md +0 -0
  116. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-018-replace-serve-with-git-hooks.md +0 -0
  117. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-019-chromadb-transient-retry.md +0 -0
  118. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-020-voyage-chromadb-read-timeout.md +0 -0
  119. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-021-docling-pdf-extraction.md +0 -0
  120. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-022-memory-delete-command.md +0 -0
  121. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-023-agent-tool-permissions-audit.md +0 -0
  122. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-024-rdr-process-guardrails.md +0 -0
  123. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-025-language-agnostic-agents.md +0 -0
  124. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-026-hybrid-search-fusion.md +0 -0
  125. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-027-search-results-ux.md +0 -0
  126. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-028-code-search-recall.md +0 -0
  127. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-029-pipeline-versioning.md +0 -0
  128. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-030-reliability-hardening.md +0 -0
  129. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-031-collection-portability.md +0 -0
  130. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-032-indexer-decomposition.md +0 -0
  131. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-033-pdf-agent-nx-index-alignment.md +0 -0
  132. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-034-mcp-server-agent-storage.md +0 -0
  133. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-035-plugin-agent-mcp-tool-access.md +0 -0
  134. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-036-post-accept-planning-workflow.md +0 -0
  135. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-037-t3-database-consolidation.md +0 -0
  136. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-038-local-t3-backend.md +0 -0
  137. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-039-claude-code-framework-alignment.md +0 -0
  138. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr/rdr-040-cce-postmortem-gaps-mcp-enhancement.md +0 -0
  139. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr-nexus-integration.md +0 -0
  140. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr-overview.md +0 -0
  141. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr-templates.md +0 -0
  142. {conexus-2.4.2 → conexus-2.6.0}/docs/rdr-workflow.md +0 -0
  143. {conexus-2.4.2 → conexus-2.6.0}/docs/repo-indexing.md +0 -0
  144. {conexus-2.4.2 → conexus-2.6.0}/docs/storage-tiers.md +0 -0
  145. {conexus-2.4.2 → conexus-2.6.0}/nx/.mcp.json +0 -0
  146. {conexus-2.4.2 → conexus-2.6.0}/nx/README.md +0 -0
  147. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/_shared/ERROR_HANDLING.md +0 -0
  148. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/_shared/MAINTENANCE.md +0 -0
  149. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/_shared/README.md +0 -0
  150. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/_shared/RELAY_TEMPLATE.md +0 -0
  151. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/architect-planner.md +0 -0
  152. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/codebase-deep-analyzer.md +0 -0
  153. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/deep-analyst.md +0 -0
  154. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/deep-research-synthesizer.md +0 -0
  155. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/knowledge-tidier.md +0 -0
  156. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/orchestrator.md +0 -0
  157. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/pdf-chromadb-processor.md +0 -0
  158. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/plan-auditor.md +0 -0
  159. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/plan-enricher.md +0 -0
  160. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/strategic-planner.md +0 -0
  161. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/substantive-critic.md +0 -0
  162. {conexus-2.4.2 → conexus-2.6.0}/nx/agents/test-validator.md +0 -0
  163. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/analyze-code.md +0 -0
  164. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/architecture.md +0 -0
  165. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/create-plan.md +0 -0
  166. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/debug.md +0 -0
  167. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/deep-analysis.md +0 -0
  168. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/enrich-plan.md +0 -0
  169. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/implement.md +0 -0
  170. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/knowledge-tidy.md +0 -0
  171. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/nx-preflight.md +0 -0
  172. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/pdf-process.md +0 -0
  173. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/plan-audit.md +0 -0
  174. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/rdr-accept.md +0 -0
  175. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/rdr-close.md +0 -0
  176. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/rdr-create.md +0 -0
  177. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/rdr-gate.md +0 -0
  178. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/rdr-list.md +0 -0
  179. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/rdr-research.md +0 -0
  180. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/rdr-show.md +0 -0
  181. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/research.md +0 -0
  182. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/review-code.md +0 -0
  183. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/substantive-critique.md +0 -0
  184. {conexus-2.4.2 → conexus-2.6.0}/nx/commands/test-validate.md +0 -0
  185. {conexus-2.4.2 → conexus-2.6.0}/nx/hooks/hooks.json +0 -0
  186. {conexus-2.4.2 → conexus-2.6.0}/nx/hooks/scripts/post_compact_hook.sh +0 -0
  187. {conexus-2.4.2 → conexus-2.6.0}/nx/hooks/scripts/rdr_hook.py +0 -0
  188. {conexus-2.4.2 → conexus-2.6.0}/nx/hooks/scripts/session_start_hook.py +0 -0
  189. {conexus-2.4.2 → conexus-2.6.0}/nx/hooks/scripts/stop_failure_hook.py +0 -0
  190. {conexus-2.4.2 → conexus-2.6.0}/nx/hooks/scripts/subagent-start.sh +0 -0
  191. {conexus-2.4.2 → conexus-2.6.0}/nx/hooks/scripts/t2_prefix_scan.py +0 -0
  192. {conexus-2.4.2 → conexus-2.6.0}/nx/registry.yaml +0 -0
  193. {conexus-2.4.2 → conexus-2.6.0}/nx/resources/rdr/README-TEMPLATE.md +0 -0
  194. {conexus-2.4.2 → conexus-2.6.0}/nx/resources/rdr/TEMPLATE.md +0 -0
  195. {conexus-2.4.2 → conexus-2.6.0}/nx/resources/rdr/post-mortem/TEMPLATE.md +0 -0
  196. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/architecture/SKILL.md +0 -0
  197. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/brainstorming-gate/SKILL.md +0 -0
  198. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/cli-controller/SKILL.md +0 -0
  199. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/code-review/SKILL.md +0 -0
  200. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/codebase-analysis/SKILL.md +0 -0
  201. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/debugging/SKILL.md +0 -0
  202. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/deep-analysis/SKILL.md +0 -0
  203. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/enrich-plan/SKILL.md +0 -0
  204. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/knowledge-tidying/SKILL.md +0 -0
  205. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/nexus/SKILL.md +0 -0
  206. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/nexus/reference.md +0 -0
  207. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/pdf-processing/SKILL.md +0 -0
  208. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/plan-validation/SKILL.md +0 -0
  209. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/rdr-accept/SKILL.md +0 -0
  210. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/rdr-close/SKILL.md +0 -0
  211. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/rdr-create/SKILL.md +0 -0
  212. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/rdr-gate/SKILL.md +0 -0
  213. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/rdr-list/SKILL.md +0 -0
  214. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/rdr-research/SKILL.md +0 -0
  215. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/rdr-show/SKILL.md +0 -0
  216. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/research-synthesis/SKILL.md +0 -0
  217. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/serena-code-nav/SKILL.md +0 -0
  218. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/strategic-planning/SKILL.md +0 -0
  219. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/substantive-critique/SKILL.md +0 -0
  220. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/test-validation/SKILL.md +0 -0
  221. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/using-nx-skills/SKILL.md +0 -0
  222. {conexus-2.4.2 → conexus-2.6.0}/nx/skills/writing-nx-skills/SKILL.md +0 -0
  223. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/__init__.py +0 -0
  224. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/chunker.py +0 -0
  225. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/classifier.py +0 -0
  226. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/cli.py +0 -0
  227. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/code_indexer.py +0 -0
  228. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/commands/__init__.py +0 -0
  229. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/commands/_helpers.py +0 -0
  230. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/commands/_provision.py +0 -0
  231. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/commands/collection.py +0 -0
  232. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/commands/config_cmd.py +0 -0
  233. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/commands/doctor.py +0 -0
  234. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/commands/hook.py +0 -0
  235. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/commands/hooks.py +0 -0
  236. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/commands/index.py +0 -0
  237. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/commands/memory.py +0 -0
  238. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/commands/scratch.py +0 -0
  239. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/commands/search_cmd.py +0 -0
  240. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/commands/store.py +0 -0
  241. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/config.py +0 -0
  242. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/corpus.py +0 -0
  243. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/db/__init__.py +0 -0
  244. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/db/chroma_quotas.py +0 -0
  245. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/db/local_ef.py +0 -0
  246. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/db/t1.py +0 -0
  247. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/db/t2.py +0 -0
  248. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/db/t3.py +0 -0
  249. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/doc_indexer.py +0 -0
  250. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/errors.py +0 -0
  251. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/exporter.py +0 -0
  252. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/formatters.py +0 -0
  253. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/frecency.py +0 -0
  254. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/hooks.py +0 -0
  255. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/index_context.py +0 -0
  256. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/indexer.py +0 -0
  257. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/indexer_utils.py +0 -0
  258. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/languages.py +0 -0
  259. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/mcp_server.py +0 -0
  260. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/md_chunker.py +0 -0
  261. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/pdf_chunker.py +0 -0
  262. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/pdf_extractor.py +0 -0
  263. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/prose_indexer.py +0 -0
  264. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/registry.py +0 -0
  265. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/retry.py +0 -0
  266. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/ripgrep_cache.py +0 -0
  267. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/scoring.py +0 -0
  268. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/search_engine.py +0 -0
  269. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/session.py +0 -0
  270. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/ttl.py +0 -0
  271. {conexus-2.4.2 → conexus-2.6.0}/src/nexus/types.py +0 -0
  272. {conexus-2.4.2 → conexus-2.6.0}/tests/__init__.py +0 -0
  273. {conexus-2.4.2 → conexus-2.6.0}/tests/__snapshots__/test_search_snapshot.ambr +0 -0
  274. {conexus-2.4.2 → conexus-2.6.0}/tests/conftest.py +0 -0
  275. {conexus-2.4.2 → conexus-2.6.0}/tests/e2e/auth-login.sh +0 -0
  276. {conexus-2.4.2 → conexus-2.6.0}/tests/e2e/lib.sh +0 -0
  277. {conexus-2.4.2 → conexus-2.6.0}/tests/e2e/run.sh +0 -0
  278. {conexus-2.4.2 → conexus-2.6.0}/tests/e2e/sandbox.sh +0 -0
  279. {conexus-2.4.2 → conexus-2.6.0}/tests/e2e/scenarios/00_debug_load.sh +0 -0
  280. {conexus-2.4.2 → conexus-2.6.0}/tests/e2e/scenarios/01_smoke.sh +0 -0
  281. {conexus-2.4.2 → conexus-2.6.0}/tests/e2e/scenarios/02_sequential_thinking.sh +0 -0
  282. {conexus-2.4.2 → conexus-2.6.0}/tests/e2e/scenarios/03_skills.sh +0 -0
  283. {conexus-2.4.2 → conexus-2.6.0}/tests/hooks/__init__.py +0 -0
  284. {conexus-2.4.2 → conexus-2.6.0}/tests/hooks/test_post_compact_hook.py +0 -0
  285. {conexus-2.4.2 → conexus-2.6.0}/tests/hooks/test_stop_failure_hook.py +0 -0
  286. {conexus-2.4.2 → conexus-2.6.0}/tests/test_ast_languages.py +0 -0
  287. {conexus-2.4.2 → conexus-2.6.0}/tests/test_chroma_quotas.py +0 -0
  288. {conexus-2.4.2 → conexus-2.6.0}/tests/test_chroma_retry.py +0 -0
  289. {conexus-2.4.2 → conexus-2.6.0}/tests/test_chunker.py +0 -0
  290. {conexus-2.4.2 → conexus-2.6.0}/tests/test_chunker_ast_languages.py +0 -0
  291. {conexus-2.4.2 → conexus-2.6.0}/tests/test_classifier.py +0 -0
  292. {conexus-2.4.2 → conexus-2.6.0}/tests/test_collection_cmd.py +0 -0
  293. {conexus-2.4.2 → conexus-2.6.0}/tests/test_config.py +0 -0
  294. {conexus-2.4.2 → conexus-2.6.0}/tests/test_config_cmd.py +0 -0
  295. {conexus-2.4.2 → conexus-2.6.0}/tests/test_corpus.py +0 -0
  296. {conexus-2.4.2 → conexus-2.6.0}/tests/test_doc_indexer.py +0 -0
  297. {conexus-2.4.2 → conexus-2.6.0}/tests/test_doc_indexer_hash_sync.py +0 -0
  298. {conexus-2.4.2 → conexus-2.6.0}/tests/test_doc_indexer_pagination.py +0 -0
  299. {conexus-2.4.2 → conexus-2.6.0}/tests/test_doctor_cmd.py +0 -0
  300. {conexus-2.4.2 → conexus-2.6.0}/tests/test_doctor_integrity.py +0 -0
  301. {conexus-2.4.2 → conexus-2.6.0}/tests/test_e2e.py +0 -0
  302. {conexus-2.4.2 → conexus-2.6.0}/tests/test_exporter.py +0 -0
  303. {conexus-2.4.2 → conexus-2.6.0}/tests/test_formatters.py +0 -0
  304. {conexus-2.4.2 → conexus-2.6.0}/tests/test_frecency.py +0 -0
  305. {conexus-2.4.2 → conexus-2.6.0}/tests/test_git_hooks.py +0 -0
  306. {conexus-2.4.2 → conexus-2.6.0}/tests/test_hooks.py +0 -0
  307. {conexus-2.4.2 → conexus-2.6.0}/tests/test_hybrid_boost.py +0 -0
  308. {conexus-2.4.2 → conexus-2.6.0}/tests/test_index_cmd.py +0 -0
  309. {conexus-2.4.2 → conexus-2.6.0}/tests/test_index_lock.py +0 -0
  310. {conexus-2.4.2 → conexus-2.6.0}/tests/test_index_rdr_cmd.py +0 -0
  311. {conexus-2.4.2 → conexus-2.6.0}/tests/test_index_reminder.py +0 -0
  312. {conexus-2.4.2 → conexus-2.6.0}/tests/test_indexer.py +0 -0
  313. {conexus-2.4.2 → conexus-2.6.0}/tests/test_indexer_chunk_flow.py +0 -0
  314. {conexus-2.4.2 → conexus-2.6.0}/tests/test_indexer_e2e.py +0 -0
  315. {conexus-2.4.2 → conexus-2.6.0}/tests/test_indexer_modules.py +0 -0
  316. {conexus-2.4.2 → conexus-2.6.0}/tests/test_integration.py +0 -0
  317. {conexus-2.4.2 → conexus-2.6.0}/tests/test_languages.py +0 -0
  318. {conexus-2.4.2 → conexus-2.6.0}/tests/test_local_mode.py +0 -0
  319. {conexus-2.4.2 → conexus-2.6.0}/tests/test_mcp_concurrency.py +0 -0
  320. {conexus-2.4.2 → conexus-2.6.0}/tests/test_mcp_integration.py +0 -0
  321. {conexus-2.4.2 → conexus-2.6.0}/tests/test_mcp_server.py +0 -0
  322. {conexus-2.4.2 → conexus-2.6.0}/tests/test_mcp_session.py +0 -0
  323. {conexus-2.4.2 → conexus-2.6.0}/tests/test_md_chunker.py +0 -0
  324. {conexus-2.4.2 → conexus-2.6.0}/tests/test_md_chunker_semantic_integrity.py +0 -0
  325. {conexus-2.4.2 → conexus-2.6.0}/tests/test_md_preservation.py +0 -0
  326. {conexus-2.4.2 → conexus-2.6.0}/tests/test_memory.py +0 -0
  327. {conexus-2.4.2 → conexus-2.6.0}/tests/test_minified_chunking.py +0 -0
  328. {conexus-2.4.2 → conexus-2.6.0}/tests/test_p0_regressions.py +0 -0
  329. {conexus-2.4.2 → conexus-2.6.0}/tests/test_pdf_chunker.py +0 -0
  330. {conexus-2.4.2 → conexus-2.6.0}/tests/test_pdf_chunker_integration.py +0 -0
  331. {conexus-2.4.2 → conexus-2.6.0}/tests/test_pdf_e2e.py +0 -0
  332. {conexus-2.4.2 → conexus-2.6.0}/tests/test_pdf_extractor.py +0 -0
  333. {conexus-2.4.2 → conexus-2.6.0}/tests/test_pdf_extractor_integration.py +0 -0
  334. {conexus-2.4.2 → conexus-2.6.0}/tests/test_pdf_extractor_normalization.py +0 -0
  335. {conexus-2.4.2 → conexus-2.6.0}/tests/test_pdf_normalization.py +0 -0
  336. {conexus-2.4.2 → conexus-2.6.0}/tests/test_pdf_subsystem.py +0 -0
  337. {conexus-2.4.2 → conexus-2.6.0}/tests/test_pipeline_version.py +0 -0
  338. {conexus-2.4.2 → conexus-2.6.0}/tests/test_plugin.py +0 -0
  339. {conexus-2.4.2 → conexus-2.6.0}/tests/test_plugin_install.py +0 -0
  340. {conexus-2.4.2 → conexus-2.6.0}/tests/test_plugin_structure.py +0 -0
  341. {conexus-2.4.2 → conexus-2.6.0}/tests/test_ppid_chain_hypothesis.py +0 -0
  342. {conexus-2.4.2 → conexus-2.6.0}/tests/test_provision.py +0 -0
  343. {conexus-2.4.2 → conexus-2.6.0}/tests/test_registry.py +0 -0
  344. {conexus-2.4.2 → conexus-2.6.0}/tests/test_ripgrep_cache.py +0 -0
  345. {conexus-2.4.2 → conexus-2.6.0}/tests/test_schema.py +0 -0
  346. {conexus-2.4.2 → conexus-2.6.0}/tests/test_scoring.py +0 -0
  347. {conexus-2.4.2 → conexus-2.6.0}/tests/test_scratch.py +0 -0
  348. {conexus-2.4.2 → conexus-2.6.0}/tests/test_scratch_cmd.py +0 -0
  349. {conexus-2.4.2 → conexus-2.6.0}/tests/test_search_cmd.py +0 -0
  350. {conexus-2.4.2 → conexus-2.6.0}/tests/test_search_engine.py +0 -0
  351. {conexus-2.4.2 → conexus-2.6.0}/tests/test_search_modules.py +0 -0
  352. {conexus-2.4.2 → conexus-2.6.0}/tests/test_search_snapshot.py +0 -0
  353. {conexus-2.4.2 → conexus-2.6.0}/tests/test_session.py +0 -0
  354. {conexus-2.4.2 → conexus-2.6.0}/tests/test_session_propagation_hypotheses.py +0 -0
  355. {conexus-2.4.2 → conexus-2.6.0}/tests/test_silent_error_logging.py +0 -0
  356. {conexus-2.4.2 → conexus-2.6.0}/tests/test_store_cmd.py +0 -0
  357. {conexus-2.4.2 → conexus-2.6.0}/tests/test_t1.py +0 -0
  358. {conexus-2.4.2 → conexus-2.6.0}/tests/test_t2.py +0 -0
  359. {conexus-2.4.2 → conexus-2.6.0}/tests/test_t2_prefix_scan.py +0 -0
  360. {conexus-2.4.2 → conexus-2.6.0}/tests/test_t3.py +0 -0
  361. {conexus-2.4.2 → conexus-2.6.0}/tests/test_t3_quota_enforcement.py +0 -0
  362. {conexus-2.4.2 → conexus-2.6.0}/tests/test_ttl.py +0 -0
  363. {conexus-2.4.2 → conexus-2.6.0}/tests/test_tuning_config.py +0 -0
  364. {conexus-2.4.2 → conexus-2.6.0}/tests/test_types_and_errors.py +0 -0
  365. {conexus-2.4.2 → conexus-2.6.0}/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.4.2"
12
+ "version": "2.6.0"
13
13
  }
14
14
  ]
15
15
  }
@@ -6,6 +6,36 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.6.0] - 2026-03-26
10
+
11
+ ### Added
12
+ - **T1 scratch inter-agent context sharing** (RDR-041) — standardized scratch
13
+ tag vocabulary (`impl`, `checkpoint`, `failed-approach`, `hypothesis`,
14
+ `discovery`, `decision`), sibling context SHOULD for relay-reliant agents
15
+ with relay-over-scratch precedence rule, developer writes failed approaches
16
+ to scratch, code reviewer checks scratch for developer struggles before
17
+ reviewing, debugger checks scratch for predecessor findings.
18
+ - **Debugger escalation relay** includes `nx scratch` field for pre-escalation
19
+ failed-approach entries.
20
+ - **Re-dispatch developer relay template** with structured nx store/memory
21
+ artifact references from debugger output.
22
+ - **Escalation guard** — if developer circuit breaker fires twice for the same
23
+ bead, escalate to human instead of infinite developer→debugger loop.
24
+
25
+ ## [2.5.0] - 2026-03-25
26
+
27
+ ### Added
28
+ - **Developer agent circuit breaker** (RDR-040) — after 2 consecutive test
29
+ failures, the developer agent stops and outputs a structured ESCALATION
30
+ report. The parent dispatches the debugger with the failure context. Counter
31
+ tracks test runs (not root causes), resets on green or new invocation.
32
+ Supersedes the advisory "Recommend debugger" escalation trigger.
33
+ - **Debugger escalation relay template** in development skill — parent-side
34
+ dispatch instructions with field mapping from escalation report to debugger
35
+ relay.
36
+ - **Developer → debugger routing** in orchestration skill — escalation edge
37
+ in routing diagram and quick reference table.
38
+
9
39
  ## [2.4.2] - 2026-03-25
10
40
 
11
41
  ### Docs
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: conexus
3
- Version: 2.4.2
3
+ Version: 2.6.0
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
@@ -61,6 +61,8 @@ An RDR (Research-Design-Review) is a short document that records a technical dec
61
61
  | [RDR-037](rdr-037-t3-database-consolidation.md) | T3 Database Consolidation | Enhancement | Accepted | 2026-03-14 |
62
62
  | [RDR-038](rdr-038-local-t3-backend.md) | Local T3 Backend | Architecture | Accepted | 2026-03-14 |
63
63
  | [RDR-039](rdr-039-claude-code-framework-alignment.md) | Claude Code Framework Alignment (v2.1.72–v2.1.81) | Technical Debt | Accepted | 2026-03-21 |
64
+ | [RDR-040](rdr-040-developer-agent-circuit-breaker.md) | Developer Agent Circuit Breaker for Test Failure Escalation | Architecture | Closed | 2026-03-25 |
65
+ | [RDR-041](rdr-041-t1-scratch-inter-agent-context.md) | T1 Scratch Inter-Agent Context Sharing | Architecture | Closed | 2026-03-26 |
64
66
 
65
67
  ---
66
68
 
@@ -0,0 +1,309 @@
1
+ ---
2
+ title: "Developer Agent Circuit Breaker for Test Failure Escalation"
3
+ id: RDR-040
4
+ type: Architecture
5
+ status: closed
6
+ priority: high
7
+ author: Hal Hildebrand
8
+ reviewed-by: self
9
+ created: 2026-03-25
10
+ accepted_date: 2026-03-25
11
+ closed_date: 2026-03-25
12
+ close_reason: implemented
13
+ related_issues: []
14
+ ---
15
+
16
+ # RDR-040: Developer Agent Circuit Breaker for Test Failure Escalation
17
+
18
+ > Revise during planning; lock at implementation.
19
+ > If wrong, abandon code and iterate RDR.
20
+
21
+ ## Problem Statement
22
+
23
+ The `nx:developer` agent thrashes on test failures instead of escalating to the debugger. The existing "Automatic Escalation Triggers" section in the developer agent prompt says to *recommend* debugger after 2 failures, but this is advisory — the agent outputs a "Next Step" recommendation at the *end* of its run, by which point it has already wasted 10+ minutes going in circles.
24
+
25
+ Observed: developer agent spent 400+ lines of output (10+ minutes) re-reading source code and hypothesizing without running diagnostics. After manual intervention, the debugger agent solved the same issue in 3 minutes with a 2-line fix.
26
+
27
+ ## Context
28
+
29
+ ### Background
30
+
31
+ Incident: 2026-03-25, ART project, RDR-029 Wave 5. Developer agent implementing Chunk Representation POC (ART-63hr). 3 of 6 tests failing — `MaskingField.update()` called sequentially didn't form chunks because ShuntingDynamics decayed first node's activation before second pattern was presented.
32
+
33
+ The developer agent:
34
+ - Read MaskingField source code repeatedly
35
+ - Hypothesized about activation wash-out
36
+ - Re-read the same methods looking for the "real" cause
37
+ - Self-admitted "I'm going in circles"
38
+ - Never wrote a diagnostic test
39
+
40
+ The debugger agent:
41
+ 1. Confirmed the hypothesis (sequential `update()` vs batch `processTemporalPattern()`)
42
+ 2. Checked the passing Wave 3 POC test that used the batch API
43
+ 3. Changed both production code and test to use `processTemporalPattern()`
44
+ 4. All 6 tests green in ~3 minutes
45
+
46
+ Full incident memo: T2 `nexus_active/investigation-developer-agent-thrashing-debugger-underuse`
47
+
48
+ ### Technical Environment
49
+
50
+ - Developer agent: `nx/agents/developer.md` (sonnet model)
51
+ - Debugger agent: `nx/agents/debugger.md` (opus model)
52
+ - Development skill: `nx/skills/development/SKILL.md`
53
+ - Orchestration skill: `nx/skills/orchestration/SKILL.md`
54
+ - Known constraint: subagents cannot spawn other subagents
55
+
56
+ ## Research Findings
57
+
58
+ ### Investigation
59
+
60
+ Reviewed developer agent prompt (`developer.md`):
61
+
62
+ - Lines 187-195: "Automatic Escalation Triggers" — advisory only. Says "Recommend **debugger** (via Next Step output) if test failures after 2 fix attempts." This fires at completion time, not at failure time.
63
+ - Lines 103-116: "Recommended Next Step (MANDATORY output)" — mechanism is output-only; the agent continues working until it finishes, then suggests what to do next.
64
+ - Lines 169-175: "Problem-Solving Approach" — says to use sequential thinking but has no hard stop.
65
+
66
+ Reviewed development skill (`development/SKILL.md`):
67
+ - No instructions for the parent to detect failure escalation from the developer agent.
68
+ - No convention for structured failure output.
69
+
70
+ Reviewed orchestration skill (`orchestration/SKILL.md`):
71
+ - Pipeline shows `developer → code-review-expert → test-validator` but no `developer → debugger` escalation path.
72
+
73
+ ### Key Discoveries
74
+
75
+ - **Verified** — Developer agent's escalation is output-only, fires at end of turn. By then, the damage (wasted context, wasted time) is done.
76
+ - **Verified** — Debugger agent solves these problems efficiently when given clear context (failing test, error, hypothesis). The gap is invocation timing, not capability.
77
+ - **Verified** — Subagents cannot spawn other subagents. The developer cannot launch a debugger; it can only signal the parent.
78
+ - **Documented** — The `using-nx-skills` routing table already says "Test fails → /nx:debug IMMEDIATELY" but this is advisory to the human, not enforced in agent prompts.
79
+
80
+ ### Critical Assumptions
81
+
82
+ - [x] Developer agent will obey a hard stop instruction in its system prompt — **Status**: Verified — **Method**: Documented (Claude agents follow system prompt constraints when stated as mandatory/non-negotiable)
83
+ - [x] Parent conversation can parse a structured failure block from agent output and dispatch debugger — **Status**: Verified — **Method**: Documented (standard relay pattern already works this way)
84
+
85
+ ## Proposed Solution
86
+
87
+ ### Approach
88
+
89
+ Add a hard circuit breaker to the developer agent prompt that fires *during* execution, not at completion. After 2 consecutive test run failures (any run where one or more tests fail), the agent must stop and output a structured failure report. The parent conversation (or skill) then dispatches the debugger. The counter tracks test runs, not root causes — no ambiguity about "same issue" classification.
90
+
91
+ ### Technical Design
92
+
93
+ #### 1. Developer agent (`developer.md`) — Circuit Breaker section
94
+
95
+ Add a new `## Circuit Breaker` section that overrides the advisory escalation:
96
+
97
+ ```markdown
98
+ ## Circuit Breaker (MANDATORY — overrides all other behavior including Completion Protocol)
99
+
100
+ **Track consecutive test failures.** Every time you run the test command and
101
+ one or more tests fail, increment your failure counter. A partial pass (some
102
+ tests pass, some fail) counts as a failure.
103
+
104
+ **Counter resets to 0 when:**
105
+ - Any test run ends with ALL tests green
106
+ - You are dispatched as a new agent invocation (fresh start)
107
+
108
+ Do not try to classify "same issue" vs "different issue." Count test runs,
109
+ not root causes.
110
+
111
+ **After 2 consecutive failures (counter reaches 2):**
112
+
113
+ 1. **STOP immediately.** Do not read more source code. Do not try another fix.
114
+ 2. **Output ONLY the escalation report below.** Do NOT output the normal
115
+ `## Next Step: code-review-expert` block — the circuit breaker supersedes
116
+ the Completion Protocol.
117
+ 3. **End your turn.**
118
+
119
+ <!-- ESCALATION -->
120
+ ## ESCALATION: Debugger Required
121
+
122
+ **Failing test(s)**: [test name(s)]
123
+ **Error**: [exact error message or assertion failure]
124
+ **What I tried**:
125
+ 1. [first attempt and result]
126
+ 2. [second attempt and result]
127
+ **Hypothesis**: [your best guess at the root cause]
128
+ **Diagnostic suggestion**: [what a debugger should investigate first, or "none" if truly lost]
129
+
130
+ **This is not optional.** The debugger agent solves these problems in minutes.
131
+ Continuing past 2 failures wastes time — observed in production (ART RDR-029
132
+ Wave 5: developer thrashed 10+ min, debugger solved in 3 min).
133
+ ```
134
+
135
+ Replace the current advisory "Recommend **debugger**" in the Automatic Escalation Triggers section with a cross-reference to the Circuit Breaker. Also add an exception clause to the Completion Protocol: "Exception: If the Circuit Breaker fires, do not output `## Next Step: code-review-expert` — the escalation block is your sole terminal output."
136
+
137
+ #### 2. Development skill (`development/SKILL.md`) — Parent-side dispatch
138
+
139
+ Add a `## Debugger Escalation` section after Agent Invocation:
140
+
141
+ ```markdown
142
+ ## Debugger Escalation
143
+
144
+ If the developer agent returns with an `## ESCALATION: Debugger Required` block
145
+ (detected by the `<!-- ESCALATION -->` sentinel or the H2 header):
146
+
147
+ 1. **Do not re-dispatch the developer.** The circuit breaker fired for a reason.
148
+ 2. **Dispatch the debugger immediately** using this relay template:
149
+
150
+ ## Relay: debugger
151
+
152
+ **Task**: Diagnose test failure that developer could not resolve: [Failing test(s)]
153
+ **Bead**: [same bead as developer]
154
+
155
+ ### Input Artifacts
156
+ - Error: [Error field from escalation report]
157
+ - Hypothesis: [Hypothesis field from escalation report]
158
+ - What was tried: [What I tried field — both attempts]
159
+ - Diagnostic suggestion: [Diagnostic suggestion field]
160
+ - Files: [files from original developer relay]
161
+
162
+ ### Deliverable
163
+ Root cause analysis and fix with all tests passing
164
+
165
+ ### Quality Criteria
166
+ - [ ] Root cause identified with evidence
167
+ - [ ] Fix implemented
168
+ - [ ] All failing tests now pass
169
+
170
+ 3. After debugger resolves the issue, re-dispatch developer to continue
171
+ the remaining plan steps.
172
+ ```
173
+
174
+ #### 3. Orchestration skill — Add escalation edge
175
+
176
+ Add `developer → debugger` escalation path to the routing diagram (labeled `[on escalation]` — this is conditional, not equal-weight) and add a row to the quick reference table: `| Implement code (escalation) | debugger | developer circuit breaker → debugger → developer resumes |`
177
+
178
+ ### Decision Rationale
179
+
180
+ The circuit breaker is in the agent prompt because that's where the behavior needs to change. The agent itself must stop; the parent cannot force-stop a running subagent. The structured failure report gives the debugger agent maximum context with minimum overhead.
181
+
182
+ A PostToolUse hook was considered and rejected — it would require regex-matching test output across multiple languages and build systems, is fragile, and doesn't solve the core problem (the agent is still running when the hook fires).
183
+
184
+ ## Alternatives Considered
185
+
186
+ ### Alternative 1: PostToolUse hook for test failure detection
187
+
188
+ **Description**: Hook watches Bash tool output for test failure patterns, warns the parent.
189
+
190
+ **Pros**: Works without changing agent prompts.
191
+
192
+ **Cons**: Fragile (regex across languages), doesn't stop the agent, adds complexity.
193
+
194
+ **Reason for rejection**: The agent-level circuit breaker is simpler and more reliable.
195
+
196
+ ### Alternative 2: Developer agent spawns debugger subagent
197
+
198
+ **Description**: Developer agent directly launches debugger as a child agent.
199
+
200
+ **Pros**: No parent involvement needed.
201
+
202
+ **Cons**: Subagents cannot spawn other subagents — this is a known platform limitation.
203
+
204
+ **Reason for rejection**: Not currently possible.
205
+
206
+ ### Briefly Rejected
207
+
208
+ - **Reduce developer agent to 1 failure attempt**: Too aggressive — legitimate first-attempt failures (typos, import order) would trigger unnecessary escalation.
209
+
210
+ ## Trade-offs
211
+
212
+ ### Consequences
213
+
214
+ - Positive: Developer agent stops wasting time on failures it can't solve
215
+ - Positive: Debugger agent gets invoked early with structured context
216
+ - Positive: Observed improvement in ART incident — 10+ min thrashing → 3 min resolution (N=1; Phase 2 validation should track additional incidents)
217
+ - Negative: Adds complexity to the agent prompt and skill
218
+ - Negative: 2-failure threshold may occasionally escalate prematurely for simple issues
219
+
220
+ ### Risks and Mitigations
221
+
222
+ - **Risk**: Developer agent ignores the circuit breaker instruction
223
+ **Mitigation**: Use strong language (MANDATORY, overrides all other behavior). If this proves insufficient, escalate to a PreToolUse hook.
224
+ - **Risk**: Structured failure report is malformed, debugger can't use it
225
+ **Mitigation**: The template is simple (5 fields). Even partial output gives the debugger more than nothing.
226
+
227
+ ### Failure Modes
228
+
229
+ - **Agent doesn't count failures correctly**: Worst case, it continues past 2 failures — same as current behavior. No regression.
230
+ - **Parent doesn't detect the escalation block**: The `## ESCALATION:` header is distinctive. If missed, the developer's output still contains the diagnostic, which the human can use to manually invoke debugger.
231
+
232
+ ## Implementation Plan
233
+
234
+ ### Prerequisites
235
+
236
+ - [ ] All Critical Assumptions verified (done — both verified)
237
+
238
+ ### Phase 1: Prompt Changes
239
+
240
+ #### Step 1: Add Circuit Breaker to developer.md
241
+
242
+ Add `## Circuit Breaker` section. Update Automatic Escalation Triggers to cross-reference it.
243
+
244
+ #### Step 2: Add Debugger Escalation to development/SKILL.md
245
+
246
+ Add parent-side dispatch instructions with relay template.
247
+
248
+ #### Step 3: Update orchestration/SKILL.md
249
+
250
+ Add `developer → debugger` escalation edge to routing diagram and table.
251
+
252
+ ### Phase 2: Validation
253
+
254
+ #### Step 1: Manual test
255
+
256
+ Dispatch developer agent on a task with a known test failure (e.g., the ART MaskingField scenario). Verify it stops after 2 failures and outputs the structured report. Verify parent can dispatch debugger with the report.
257
+
258
+ ## Test Plan
259
+
260
+ - **Scenario**: Developer agent hits 2 consecutive test failures — **Verify**: Agent stops, outputs `## ESCALATION: Debugger Required` with all 5 fields populated
261
+ - **Scenario**: Developer agent hits 1 failure then succeeds — **Verify**: No escalation, work continues normally
262
+ - **Scenario**: Parent receives escalation block — **Verify**: Debugger dispatched with failure context, resolves issue
263
+ - **Scenario**: Developer agent hits 1 failure, then all tests go green, then a different test fails — **Verify**: Counter reset by the green run; new failure starts counter at 1, not 2
264
+ - **Scenario**: Partial pass (3 of 5 tests pass, 2 fail) — **Verify**: Counts as a failure, counter increments
265
+
266
+ ## References
267
+
268
+ - T2 incident memo: `nexus_active/investigation-developer-agent-thrashing-debugger-underuse`
269
+ - Developer agent: `nx/agents/developer.md`
270
+ - Development skill: `nx/skills/development/SKILL.md`
271
+ - Orchestration skill: `nx/skills/orchestration/SKILL.md`
272
+ - Known limitation: subagents cannot spawn other subagents (CLAUDE.md)
273
+
274
+ ## Revision History
275
+
276
+ ### Gate Review (2026-03-25)
277
+
278
+ ### Critical — Resolved
279
+
280
+ **C1. Counter-reset semantics undefined — RESOLVED.** "Same issue" vs
281
+ "different issue" was ambiguous. Fixed: counter tracks consecutive test runs
282
+ (not root causes). Resets to 0 on any fully green run or new agent invocation.
283
+ Partial passes (some tests fail) count as failures. No "same issue"
284
+ classification needed.
285
+
286
+ **C2. `## ESCALATION:` header conflicts with mandatory Completion Protocol —
287
+ RESOLVED.** The Circuit Breaker said "end your turn" but the Completion
288
+ Protocol mandated `## Next Step: code-review-expert`. Fixed: Circuit Breaker
289
+ explicitly supersedes Completion Protocol. Added `<!-- ESCALATION -->` HTML
290
+ sentinel for reliable detection. Added exception clause to Completion Protocol
291
+ in implementation plan.
292
+
293
+ ### Significant — Resolved
294
+
295
+ **S1. No debugger relay template — RESOLVED.** The skill addition said
296
+ "dispatch debugger" but didn't show how to map escalation fields to the relay.
297
+ Fixed: full relay template added with explicit field mapping (Failing tests →
298
+ Task, Error/Hypothesis/Attempts → Input Artifacts).
299
+
300
+ **S2. Partial pass definition missing — RESOLVED.** "Consecutive test
301
+ failures" didn't define partial passes. Fixed: "A partial pass (some tests
302
+ pass, some fail) counts as a failure." Added test plan scenario for this case.
303
+
304
+ ### Observations — Applied
305
+
306
+ - O1: Orchestration diagram edge labeled `[on escalation]` (not equal-weight)
307
+ - O2: "Diagnostic suggestion" field marked as accepting "none" if agent is lost
308
+ - O3: "3 minute resolution" reworded as N=1 observation with note to track more
309
+ - O4: Critical assumptions acknowledged as "Documented" pre-verification; Phase 2 manual test is the real verification