codegraph-brain 0.22.0__tar.gz → 0.23.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 (368) hide show
  1. codegraph_brain-0.23.0/.release-please-manifest.json +3 -0
  2. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/CHANGELOG.md +7 -0
  3. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/PKG-INFO +1 -1
  4. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/pyproject.toml +1 -1
  5. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/server.json +2 -2
  6. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/api/mcp_server.py +245 -40
  7. codegraph_brain-0.23.0/tests/unit/test_mcp_tool_schemas.py +47 -0
  8. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/uv.lock +1 -1
  9. codegraph_brain-0.22.0/.release-please-manifest.json +0 -3
  10. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/.claude-plugin/marketplace.json +0 -0
  11. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/.gitattributes +0 -0
  12. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/.github/test-count-baseline +0 -0
  13. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/.github/workflows/autodoc.yml +0 -0
  14. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/.github/workflows/ci.yml +0 -0
  15. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/.github/workflows/guardian.yml +0 -0
  16. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/.github/workflows/pr-title.yml +0 -0
  17. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/.github/workflows/release-please.yml +0 -0
  18. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/.gitignore +0 -0
  19. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/.pre-commit-config.yaml +0 -0
  20. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/.python-version +0 -0
  21. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/CLAUDE.md +0 -0
  22. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/CONTRIBUTING.md +0 -0
  23. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/LICENSE +0 -0
  24. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/Makefile +0 -0
  25. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/PRIVACY.md +0 -0
  26. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/README.md +0 -0
  27. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/CURATION.md +0 -0
  28. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/calibration.jsonl +0 -0
  29. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/experiments/246-cross-vendor/README.md +0 -0
  30. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/experiments/246-cross-vendor/free-nemotron-quota-cutoff.jsonl +0 -0
  31. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/experiments/401-evidence/README.md +0 -0
  32. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/experiments/401-evidence/pr-399-control-rows.jsonl +0 -0
  33. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/experiments/401-evidence/pr-399-recording.json +0 -0
  34. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/experiments/401-evidence/pr-399-treatment-rows.jsonl +0 -0
  35. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/experiments/407-no-checker-appeal/README.md +0 -0
  36. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-directive-rows.jsonl +0 -0
  37. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-prohibition-rows.jsonl +0 -0
  38. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/pr-122.yaml +0 -0
  39. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/pr-140.yaml +0 -0
  40. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/pr-141.yaml +0 -0
  41. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/pr-142.yaml +0 -0
  42. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/pr-143.yaml +0 -0
  43. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/pr-144.yaml +0 -0
  44. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/pr-278.yaml +0 -0
  45. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/pr-313.yaml +0 -0
  46. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/guardian/results.jsonl +0 -0
  47. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian/README.md +0 -0
  48. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian/cal_dot_com.json +0 -0
  49. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian/discourse.json +0 -0
  50. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian/grafana.json +0 -0
  51. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian/keycloak.json +0 -0
  52. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian/sentry.json +0 -0
  53. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian-judged.jsonl +0 -0
  54. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian-p3-judged-run1.jsonl +0 -0
  55. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian-p3-judged-run1.jsonl.corrupted-backup +0 -0
  56. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian-p3-run1.jsonl +0 -0
  57. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian-p3-run2.jsonl +0 -0
  58. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian-p3-run3.jsonl +0 -0
  59. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian-plan.json +0 -0
  60. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian-repeat-judged.jsonl +0 -0
  61. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian-repeat-reviews.jsonl +0 -0
  62. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/benchmarks/martian-reviews.jsonl +0 -0
  63. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/data/.gitkeep +0 -0
  64. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/AUDIT.md +0 -0
  65. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/CASE_STUDY.md +0 -0
  66. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/GUARDIAN_LOCAL_BENCH.md +0 -0
  67. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/GUARDIAN_REMOTE_OLLAMA.md +0 -0
  68. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/architecture/HOW_IT_WORKS.md +0 -0
  69. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/architecture/ONTOLOGY.md +0 -0
  70. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/architecture/PATTERNS_AND_TRIADS.md +0 -0
  71. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/architecture/SELF_PORTRAIT.md +0 -0
  72. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/architecture/diagrams/pipeline_flow.mermaid +0 -0
  73. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/architecture/health_badge.json +0 -0
  74. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/assets/.gitignore +0 -0
  75. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/assets/cgis-app-avatar.png +0 -0
  76. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/assets/cgis-app-avatar.svg +0 -0
  77. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/assets/generate_avatar.py +0 -0
  78. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/examples/.gitkeep +0 -0
  79. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/how-to/AGENT_ONBOARDING.md +0 -0
  80. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/how-to/CLI_USAGE.md +0 -0
  81. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/how-to/MCP_REFERENCE.md +0 -0
  82. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/lab-notes/2026-06-11-chunked-review-negative-result.md +0 -0
  83. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/ontology/.gitkeep +0 -0
  84. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/ontology/core.yaml +0 -0
  85. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/ontology/domains.yaml +0 -0
  86. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/ontology/patterns.yaml +0 -0
  87. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/ontology/tolerances.lock +0 -0
  88. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/plans/2026-09-09-graph-freshness.md +0 -0
  89. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-06-09-domain-pattern-fingerprint-design.md +0 -0
  90. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-06-09-pattern-alphabet-motif-basis-design.md +0 -0
  91. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-06-10-guardian-sprint-design.md +0 -0
  92. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-06-11-fastapi-di-edges-design.md +0 -0
  93. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-06-11-guardian-chunked-review-design.md +0 -0
  94. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-06-11-guardian-chunker-design.md +0 -0
  95. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-06-11-mcp-drift-validate-fqn-design.md +0 -0
  96. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-06-11-resolver-split-design.md +0 -0
  97. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-06-11-symbol-import-edges-design.md +0 -0
  98. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-06-12-drift-empty-domains-design.md +0 -0
  99. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-06-12-gate-semantics-design.md +0 -0
  100. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-06-12-init-ontology-design.md +0 -0
  101. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-06-12-release-please-ci-design.md +0 -0
  102. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-06-13-suggest-packages-design.md +0 -0
  103. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-06-13-tangle-anti-pattern-design.md +0 -0
  104. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-07-29-guardian-skeptic-scoring-design.md +0 -0
  105. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-07-30-cgis-fractal-design.md +0 -0
  106. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-07-30-cgis-fractal-plan.md +0 -0
  107. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-07-30-chunk-source-filter-design.md +0 -0
  108. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-07-30-chunk-source-filter-plan.md +0 -0
  109. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-07-30-genai-client-close-design.md +0 -0
  110. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-07-30-genai-client-close-plan.md +0 -0
  111. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-07-30-guardian-precision-bench-design.md +0 -0
  112. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-07-30-guardian-precision-bench-plan.md +0 -0
  113. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-07-30-guardian-timeout-retry-design.md +0 -0
  114. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-07-30-guardian-timeout-retry-plan.md +0 -0
  115. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-07-31-finder-bug-class-taxonomy.md +0 -0
  116. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-08-01-aura-autoevolution-poc.md +0 -0
  117. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-08-11-guardian-code-review-bench.md +0 -0
  118. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-08-14-review-fingerprint-design.md +0 -0
  119. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-09-05-annotation-graph-design.md +0 -0
  120. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/2026-09-09-graph-freshness-design.md +0 -0
  121. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/BLUEPRINT.md +0 -0
  122. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/PRD.md +0 -0
  123. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/TDD.md +0 -0
  124. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-09-fingerprint-drift.md +0 -0
  125. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-10-guardian-context-skeptic-inline.md +0 -0
  126. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-10-guardian-structured-findings-bench.md +0 -0
  127. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-10-motif-basis-part-b.md +0 -0
  128. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-10-unified-pattern-alphabet.md +0 -0
  129. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-11-fastapi-di-edges.md +0 -0
  130. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-11-guardian-chunked-review.md +0 -0
  131. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-11-guardian-chunker.md +0 -0
  132. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-11-mcp-drift-validate-fqn.md +0 -0
  133. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-11-resolver-split.md +0 -0
  134. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-12-drift-empty-domains.md +0 -0
  135. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-12-gate-semantics.md +0 -0
  136. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-12-init-ontology.md +0 -0
  137. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-12-release-please-ci.md +0 -0
  138. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-12-symbol-import-edges.md +0 -0
  139. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-06-13-suggest-packages.md +0 -0
  140. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-07-29-guardian-skeptic-scoring.md +0 -0
  141. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-08-14-review-fingerprint.md +0 -0
  142. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-09-05-annotation-graph-pr1.md +0 -0
  143. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/docs/specs/plans/2026-09-05-annotation-graph-pr2.md +0 -0
  144. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/glama.json +0 -0
  145. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/main.py +0 -0
  146. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/plugin/.claude-plugin/plugin.json +0 -0
  147. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/plugin/.mcp.json +0 -0
  148. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/plugin/README.md +0 -0
  149. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/plugin/skills/cgis/SKILL.md +0 -0
  150. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/plugin/skills/ingest/SKILL.md +0 -0
  151. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/release-please-config.json +0 -0
  152. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/backfill_calibration_fingerprint.py +0 -0
  153. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/backfill_review_fingerprint.py +0 -0
  154. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/check_pytest_raises.py +0 -0
  155. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/check_test_count.py +0 -0
  156. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/colab_bench.sh +0 -0
  157. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/gen_ideal_graph.py +0 -0
  158. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/generate_health.py +0 -0
  159. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/generate_mcp_ref.py +0 -0
  160. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/generate_schema_docs.py +0 -0
  161. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/guardian_bench.py +0 -0
  162. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/guardian_calibrate.py +0 -0
  163. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/guardian_martian.py +0 -0
  164. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/guardian_replay_skeptic.py +0 -0
  165. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/guardian_review.py +0 -0
  166. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/inject_architecture_graph.py +0 -0
  167. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/ollama_visitor.sh +0 -0
  168. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/probe_closure_gap.py +0 -0
  169. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/probe_tier_ladder.py +0 -0
  170. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/recordings_from_corpus.py +0 -0
  171. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/scripts/skeptic_arms.py +0 -0
  172. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/__init__.py +0 -0
  173. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/__main__.py +0 -0
  174. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/api/.gitkeep +0 -0
  175. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/api/__init__.py +0 -0
  176. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/cli.py +0 -0
  177. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/core/.gitkeep +0 -0
  178. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/core/coverage.py +0 -0
  179. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/core/freshness.py +0 -0
  180. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/core/generated.py +0 -0
  181. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/core/js_globals.py +0 -0
  182. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/core/models.py +0 -0
  183. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/core/paths.py +0 -0
  184. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/extractors/.gitkeep +0 -0
  185. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/extractors/_python_annotations.py +0 -0
  186. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/extractors/_python_ast.py +0 -0
  187. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/extractors/_python_classes.py +0 -0
  188. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/extractors/_python_functions.py +0 -0
  189. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/extractors/_python_imports.py +0 -0
  190. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/extractors/_python_types.py +0 -0
  191. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/extractors/_typescript_bindings.py +0 -0
  192. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/extractors/base.py +0 -0
  193. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/extractors/python_extractor.py +0 -0
  194. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/extractors/registry.py +0 -0
  195. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/extractors/typescript_extractor.py +0 -0
  196. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/__init__.py +0 -0
  197. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/axes.py +0 -0
  198. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/bench.py +0 -0
  199. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/calibrate.py +0 -0
  200. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/chunked.py +0 -0
  201. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/chunker.py +0 -0
  202. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/collector.py +0 -0
  203. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/core.py +0 -0
  204. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/diff_index.py +0 -0
  205. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/evidence.py +0 -0
  206. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/findings.py +0 -0
  207. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/github_poster.py +0 -0
  208. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/martian.py +0 -0
  209. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/metrics.py +0 -0
  210. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/prompts.py +0 -0
  211. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/providers/__init__.py +0 -0
  212. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/providers/base.py +0 -0
  213. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/providers/gemini.py +0 -0
  214. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/providers/mistral.py +0 -0
  215. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/providers/ollama.py +0 -0
  216. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/providers/openrouter.py +0 -0
  217. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/recording.py +0 -0
  218. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/render.py +0 -0
  219. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/review_fingerprint.py +0 -0
  220. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/runner.py +0 -0
  221. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/guardian/skeptic.py +0 -0
  222. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/pipeline.py +0 -0
  223. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/py.typed +0 -0
  224. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/analysis/__init__.py +0 -0
  225. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/analysis/analyzer.py +0 -0
  226. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/analysis/anomaly.py +0 -0
  227. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/analysis/cohesion.py +0 -0
  228. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/analysis/health.py +0 -0
  229. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/analysis/suggest_service.py +0 -0
  230. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/context/__init__.py +0 -0
  231. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/context/audit.py +0 -0
  232. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/context/context_service.py +0 -0
  233. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/context/orphans.py +0 -0
  234. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/context/prompt.py +0 -0
  235. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/context/snippet.py +0 -0
  236. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/drift/__init__.py +0 -0
  237. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/drift/_scc.py +0 -0
  238. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/drift/drift.py +0 -0
  239. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/drift/drift_service.py +0 -0
  240. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/drift/fingerprint.py +0 -0
  241. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/drift/fractal.py +0 -0
  242. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/drift/ontology_init.py +0 -0
  243. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/drift/quotient.py +0 -0
  244. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/drift/triads.py +0 -0
  245. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/engine.py +0 -0
  246. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/fqn.py +0 -0
  247. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/render/__init__.py +0 -0
  248. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/render/graph_json.py +0 -0
  249. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/render/mermaid.py +0 -0
  250. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/query/render/metrics.py +0 -0
  251. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/resolver/.gitkeep +0 -0
  252. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/resolver/__init__.py +0 -0
  253. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/resolver/engine.py +0 -0
  254. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/resolver/indices.py +0 -0
  255. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/resolver/js_builtins.py +0 -0
  256. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/resolver/symbols.py +0 -0
  257. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/resolver/uplift.py +0 -0
  258. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/storage/.gitkeep +0 -0
  259. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/src/cgis/storage/sqlite_store.py +0 -0
  260. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/integration/.gitkeep +0 -0
  261. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/self_parsing/.gitkeep +0 -0
  262. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/self_parsing/__init__.py +0 -0
  263. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/self_parsing/conftest.py +0 -0
  264. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/self_parsing/test_annotation_calibration.py +0 -0
  265. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/self_parsing/test_architecture.py +0 -0
  266. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/self_parsing/test_drift.py +0 -0
  267. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/self_parsing/test_fractal.py +0 -0
  268. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/self_parsing/test_init_ontology_roundtrip.py +0 -0
  269. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/self_parsing/test_receiver_resolution.py +0 -0
  270. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/self_parsing/test_self_parse.py +0 -0
  271. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/self_parsing/test_self_parse_ts.py +0 -0
  272. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/self_parsing/test_suggest.py +0 -0
  273. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/.gitkeep +0 -0
  274. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/conftest.py +0 -0
  275. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/guardian_stubs.py +0 -0
  276. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/review_path_inventory.txt +0 -0
  277. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test___main__.py +0 -0
  278. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_analyzer.py +0 -0
  279. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_annotation_edges.py +0 -0
  280. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_audit.py +0 -0
  281. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_backfill_calibration_fingerprint.py +0 -0
  282. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_backfill_review_fingerprint.py +0 -0
  283. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_check_pytest_raises.py +0 -0
  284. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_check_test_count.py +0 -0
  285. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_cli.py +0 -0
  286. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_cohesion.py +0 -0
  287. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_context_service.py +0 -0
  288. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_di_acceptance.py +0 -0
  289. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_drift.py +0 -0
  290. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_drift_service.py +0 -0
  291. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_extractor_registry.py +0 -0
  292. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_fingerprint.py +0 -0
  293. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_fqn.py +0 -0
  294. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_fractal.py +0 -0
  295. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_freshness.py +0 -0
  296. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_gen_ideal_graph.py +0 -0
  297. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_generate_mcp_ref.py +0 -0
  298. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_generated.py +0 -0
  299. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_graph_json.py +0 -0
  300. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_axes.py +0 -0
  301. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_bench.py +0 -0
  302. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_bench_script.py +0 -0
  303. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_calibrate.py +0 -0
  304. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_calibrate_script.py +0 -0
  305. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_chunked.py +0 -0
  306. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_chunker.py +0 -0
  307. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_collector.py +0 -0
  308. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_core.py +0 -0
  309. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_diff_index.py +0 -0
  310. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_evidence.py +0 -0
  311. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_findings.py +0 -0
  312. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_martian.py +0 -0
  313. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_martian_script.py +0 -0
  314. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_martian_union.py +0 -0
  315. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_metrics.py +0 -0
  316. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_mistral_sampling.py +0 -0
  317. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_ollama_sampling.py +0 -0
  318. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_ollama_truncation.py +0 -0
  319. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_openrouter.py +0 -0
  320. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_poster.py +0 -0
  321. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_providers.py +0 -0
  322. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_providers_name.py +0 -0
  323. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_recording.py +0 -0
  324. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_render.py +0 -0
  325. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_replay_skeptic.py +0 -0
  326. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_review_script.py +0 -0
  327. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_runner.py +0 -0
  328. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_salvage.py +0 -0
  329. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_guardian_skeptic.py +0 -0
  330. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_health_scorer.py +0 -0
  331. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_import_acceptance.py +0 -0
  332. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_inject_architecture_graph.py +0 -0
  333. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_mcp_server.py +0 -0
  334. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_mermaid.py +0 -0
  335. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_metrics.py +0 -0
  336. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_models.py +0 -0
  337. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_name_load_positions.py +0 -0
  338. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_ontology_compliance.py +0 -0
  339. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_ontology_init.py +0 -0
  340. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_orphans.py +0 -0
  341. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_paths.py +0 -0
  342. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_patterns_yaml.py +0 -0
  343. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_pipeline.py +0 -0
  344. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_pipeline_incremental_symbols.py +0 -0
  345. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_prompt.py +0 -0
  346. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_python_annotations.py +0 -0
  347. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_python_extractor.py +0 -0
  348. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_query_coverage.py +0 -0
  349. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_quotient.py +0 -0
  350. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_recordings_from_corpus.py +0 -0
  351. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_resolver.py +0 -0
  352. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_resolver_indices.py +0 -0
  353. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_resolver_js_builtins.py +0 -0
  354. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_resolver_language_scope.py +0 -0
  355. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_resolver_symbols.py +0 -0
  356. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_review_fingerprint_closure.py +0 -0
  357. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_review_fingerprint_contract.py +0 -0
  358. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_review_fingerprint_digest.py +0 -0
  359. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_review_fingerprint_record.py +0 -0
  360. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_self_types.py +0 -0
  361. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_skeptic_arms.py +0 -0
  362. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_snippet.py +0 -0
  363. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_sqlite_store.py +0 -0
  364. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_suggest_service.py +0 -0
  365. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_temperature_source.py +0 -0
  366. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_triads.py +0 -0
  367. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_typescript_extractor.py +0 -0
  368. {codegraph_brain-0.22.0 → codegraph_brain-0.23.0}/tests/unit/test_uplift.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.23.0"
3
+ }
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.23.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.22.0...codegraph-brain-v0.23.0) (2026-09-17)
4
+
5
+
6
+ ### Features
7
+
8
+ * **mcp:** describe every tool parameter and announce the server version ([#466](https://github.com/zaebee/codegraph-brain/issues/466)) ([1863a11](https://github.com/zaebee/codegraph-brain/commit/1863a111a752d01303de482b88cee46322184b16))
9
+
3
10
  ## [0.22.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.21.0...codegraph-brain-v0.22.0) (2026-09-17)
4
11
 
5
12
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: codegraph-brain
3
- Version: 0.22.0
3
+ Version: 0.23.0
4
4
  Summary: Semantic code graph for AI agents — deterministic FQN resolution, impact analysis and architectural drift gates, exposed over MCP.
5
5
  Project-URL: Homepage, https://github.com/zaebee/codegraph-brain
6
6
  Project-URL: Repository, https://github.com/zaebee/codegraph-brain
@@ -7,7 +7,7 @@ packages = ["src/cgis"]
7
7
 
8
8
  [project]
9
9
  name = "codegraph-brain"
10
- version = "0.22.0"
10
+ version = "0.23.0"
11
11
  description = "Semantic code graph for AI agents — deterministic FQN resolution, impact analysis and architectural drift gates, exposed over MCP."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.12"
@@ -8,13 +8,13 @@
8
8
  "source": "github",
9
9
  "id": "1260843154"
10
10
  },
11
- "version": "0.22.0",
11
+ "version": "0.23.0",
12
12
  "packages": [
13
13
  {
14
14
  "registryType": "pypi",
15
15
  "registryBaseUrl": "https://pypi.org",
16
16
  "identifier": "codegraph-brain",
17
- "version": "0.22.0",
17
+ "version": "0.23.0",
18
18
  "runtimeHint": "uvx",
19
19
  "transport": {
20
20
  "type": "stdio"
@@ -8,11 +8,13 @@ import dataclasses
8
8
  import json
9
9
  import sys
10
10
  from pathlib import Path
11
- from typing import Any
11
+ from typing import Annotated, Any
12
12
 
13
13
  import structlog
14
14
  from mcp.server.mcpserver import MCPServer
15
+ from pydantic import Field
15
16
 
17
+ from cgis import __version__
16
18
  from cgis.core.coverage import TraversalCoverage
17
19
  from cgis.core.freshness import Freshness, FreshnessState
18
20
  from cgis.core.models import Edge, Node, NodeType
@@ -37,7 +39,7 @@ print("CGIS MCP Server starting…", file=sys.stderr)
37
39
 
38
40
  logger = structlog.getLogger(__name__)
39
41
 
40
- mcp: MCPServer = MCPServer("cgis-code-graph")
42
+ mcp: MCPServer = MCPServer("cgis-code-graph", version=__version__)
41
43
 
42
44
  _EXTRACTORS = {
43
45
  ".py": PythonExtractor(),
@@ -46,6 +48,31 @@ _EXTRACTORS = {
46
48
  }
47
49
  _DEFAULT_DB = "graph.db"
48
50
 
51
+ # Agents choose arguments from the JSON schema, and the SDK does not copy
52
+ # docstring prose into it — each parameter's meaning has to be declared here.
53
+ DbPath = Annotated[
54
+ str,
55
+ Field(
56
+ description="SQLite graph built by cgis_ingest. A relative path resolves against the "
57
+ "MCP server's working directory, not the agent's — prefer an absolute path."
58
+ ),
59
+ ]
60
+ Fqn = Annotated[
61
+ str,
62
+ Field(
63
+ description="Fully qualified name, e.g. pkg.module.Class.method. A unique dot-boundary "
64
+ "suffix also resolves; an ambiguous one returns candidates. Use cgis_find_symbol "
65
+ "to look a name up."
66
+ ),
67
+ ]
68
+ OutputFormat = Annotated[
69
+ str,
70
+ Field(
71
+ description='"mermaid" for a diagram, or "json" for a payload with real FQNs '
72
+ "(case-insensitive). Any other value returns an error."
73
+ ),
74
+ ]
75
+
49
76
 
50
77
  def _resolution_error(fqn: str, candidates: list[str], truncated: bool = False) -> str:
51
78
  """Render a not-found / ambiguous FQN error for tool output."""
@@ -246,7 +273,27 @@ def _with_freshness(db_path: str, payload: dict[str, Any]) -> dict[str, Any]:
246
273
 
247
274
 
248
275
  @mcp.tool()
249
- def cgis_ingest(project_path: str, db_path: str = _DEFAULT_DB, full_rebuild: bool = False) -> str:
276
+ def cgis_ingest(
277
+ project_path: Annotated[
278
+ str,
279
+ Field(
280
+ description="Root directory of the project to scan. A relative path resolves "
281
+ "against the MCP server's working directory."
282
+ ),
283
+ ],
284
+ db_path: Annotated[
285
+ str,
286
+ Field(
287
+ description="Where to write the graph: must end in .db, .sqlite or .sqlite3, in a "
288
+ "directory that already exists, and must not be an existing non-SQLite file. "
289
+ "A relative path resolves against the server's working directory."
290
+ ),
291
+ ] = _DEFAULT_DB,
292
+ full_rebuild: Annotated[
293
+ bool,
294
+ Field(description="Re-scan every file from scratch instead of the incremental default."),
295
+ ] = False,
296
+ ) -> str:
250
297
  """Scan a local directory, extract all symbols, resolve links, and build the graph DB.
251
298
 
252
299
  Use this to initialise or refresh the code knowledge graph for a project.
@@ -311,7 +358,17 @@ def cgis_ingest(project_path: str, db_path: str = _DEFAULT_DB, full_rebuild: boo
311
358
 
312
359
  @mcp.tool()
313
360
  def cgis_trace_flow(
314
- fqn: str, db_path: str = _DEFAULT_DB, depth: int = 3, output_format: str = "mermaid"
361
+ fqn: Fqn,
362
+ db_path: DbPath = _DEFAULT_DB,
363
+ depth: Annotated[
364
+ int,
365
+ Field(
366
+ description="Maximum edge hops downstream. Every edge type counts as a hop — "
367
+ "CALLS, but also IMPORTS, CONTAINS and REFERENCES — so from a module the first "
368
+ "hops are mostly imports and structure."
369
+ ),
370
+ ] = 3,
371
+ output_format: OutputFormat = "mermaid",
315
372
  ) -> str:
316
373
  """Trace the execution call-graph starting from a specific FQN downwards.
317
374
 
@@ -354,7 +411,17 @@ def cgis_trace_flow(
354
411
 
355
412
  @mcp.tool()
356
413
  def cgis_analyze_impact(
357
- fqn: str, db_path: str = _DEFAULT_DB, depth: int = 3, output_format: str = "mermaid"
414
+ fqn: Fqn,
415
+ db_path: DbPath = _DEFAULT_DB,
416
+ depth: Annotated[
417
+ int,
418
+ Field(
419
+ description="Maximum edge hops upstream. Every edge type counts as a hop — "
420
+ "CALLS, but also IMPORTS, CONTAINS and REFERENCES — so modules importing the "
421
+ "target and the file containing it appear alongside its callers."
422
+ ),
423
+ ] = 3,
424
+ output_format: OutputFormat = "mermaid",
358
425
  ) -> str:
359
426
  """Analyse transitive upstream callers of a specific FQN.
360
427
 
@@ -397,7 +464,12 @@ def cgis_analyze_impact(
397
464
 
398
465
  @mcp.tool()
399
466
  def cgis_get_structure(
400
- fqn: str, db_path: str = _DEFAULT_DB, depth: int = 2, output_format: str = "mermaid"
467
+ fqn: Fqn,
468
+ db_path: DbPath = _DEFAULT_DB,
469
+ depth: Annotated[
470
+ int, Field(description="Maximum containment levels to descend (module → class → method).")
471
+ ] = 2,
472
+ output_format: OutputFormat = "mermaid",
401
473
  ) -> str:
402
474
  """Show the structural layout (CONTAINS/DECLARES) of a module or class.
403
475
 
@@ -427,11 +499,35 @@ def cgis_get_structure(
427
499
 
428
500
  @mcp.tool()
429
501
  def cgis_drift(
430
- db_path: str = _DEFAULT_DB,
431
- patterns_path: str = "docs/ontology/patterns.yaml",
432
- max_drift: float = 0.50,
433
- profile: str | None = None,
434
- max_residual: float = 0.45,
502
+ db_path: DbPath = _DEFAULT_DB,
503
+ patterns_path: Annotated[
504
+ str,
505
+ Field(
506
+ description="patterns.yaml (.yaml or .yml) declaring each domain's expected "
507
+ "pattern and tolerance, relative to the server's working directory. "
508
+ "cgis_init_ontology proposes one."
509
+ ),
510
+ ] = "docs/ontology/patterns.yaml",
511
+ max_drift: Annotated[
512
+ float,
513
+ Field(
514
+ description="Drift tolerance for domains that declare no drift_tolerance of their own."
515
+ ),
516
+ ] = 0.50,
517
+ profile: Annotated[
518
+ str | None,
519
+ Field(
520
+ description="Score only domains with this profile, plus profile-less ones — e.g. one "
521
+ "language when patterns.yaml mixes several."
522
+ ),
523
+ ] = None,
524
+ max_residual: Annotated[
525
+ float,
526
+ Field(
527
+ description="Distance to the nearest template beyond which a domain's fit band is "
528
+ '"none" (no template fits).'
529
+ ),
530
+ ] = 0.45,
435
531
  ) -> str:
436
532
  """Report per-domain architectural drift against declared ideal patterns.
437
533
 
@@ -490,10 +586,24 @@ def cgis_drift(
490
586
 
491
587
  @mcp.tool()
492
588
  def cgis_suggest_packages(
493
- db_path: str = _DEFAULT_DB,
494
- prefix: str | None = None,
495
- with_calls: bool = False,
496
- min_q: float = 0.35,
589
+ db_path: DbPath = _DEFAULT_DB,
590
+ prefix: Annotated[
591
+ str | None,
592
+ Field(
593
+ description="FQN prefix of the package to analyse, e.g. cgis.query, matched on whole "
594
+ "dot-segments. Needed in practice: without it the verdict is no_signal."
595
+ ),
596
+ ] = None,
597
+ with_calls: Annotated[
598
+ bool, Field(description="Use the combined import + call graph instead of imports only.")
599
+ ] = False,
600
+ min_q: Annotated[
601
+ float,
602
+ Field(
603
+ description="Modularity threshold: at or above it, a package whose layout "
604
+ "disagrees with its communities is flagged split (or consolidate, if over-split)."
605
+ ),
606
+ ] = 0.35,
497
607
  ) -> str:
498
608
  """Suggest sub-package boundaries for a package from its dependency communities.
499
609
 
@@ -516,7 +626,12 @@ def cgis_suggest_packages(
516
626
 
517
627
 
518
628
  @mcp.tool()
519
- def cgis_validate(db_path: str = _DEFAULT_DB, threshold: float = 0.30) -> str:
629
+ def cgis_validate(
630
+ db_path: DbPath = _DEFAULT_DB,
631
+ threshold: Annotated[
632
+ float, Field(description="Highest unresolved-edge ratio (0-1) still reported as healthy.")
633
+ ] = 0.30,
634
+ ) -> str:
520
635
  """Report graph integrity as JSON: edge resolution stats + health verdict.
521
636
 
522
637
  Check this before trusting ``cgis_analyze_impact`` output — a high
@@ -547,11 +662,30 @@ def cgis_validate(db_path: str = _DEFAULT_DB, threshold: float = 0.30) -> str:
547
662
 
548
663
  @mcp.tool()
549
664
  def cgis_find_symbol(
550
- query: str,
551
- db_path: str = _DEFAULT_DB,
552
- kind: str | None = None,
553
- fqn_prefix: str | None = None,
554
- limit: int = 20,
665
+ query: Annotated[
666
+ str,
667
+ Field(
668
+ description="Leaf symbol name to search for, without dots (e.g. get_flow_result) — "
669
+ "not an FQN. Case-insensitive substring match, ranked exact > prefix > substring."
670
+ ),
671
+ ],
672
+ db_path: DbPath = _DEFAULT_DB,
673
+ kind: Annotated[
674
+ str | None,
675
+ Field(
676
+ description="Only return this node type, e.g. FUNCTION, METHOD or CLASS (any case). "
677
+ "An unknown type matches nothing rather than raising an error."
678
+ ),
679
+ ] = None,
680
+ fqn_prefix: Annotated[
681
+ str | None,
682
+ Field(
683
+ description="Only return symbols at or under this FQN prefix, matched on whole "
684
+ "dot-segments: app.svc does not match app.svc_alt, and a partial segment "
685
+ "matches nothing."
686
+ ),
687
+ ] = None,
688
+ limit: Annotated[int, Field(description="Maximum number of candidates to return.")] = 20,
555
689
  ) -> str:
556
690
  """Resolve a partial symbol name to candidate FQNs (substring match, ranked).
557
691
 
@@ -594,10 +728,22 @@ def cgis_find_symbol(
594
728
 
595
729
  @mcp.tool()
596
730
  def cgis_init_ontology(
597
- db_path: str = _DEFAULT_DB,
598
- margin: float = 0.03,
599
- min_nodes: int = 10,
600
- depth: int | None = None,
731
+ db_path: DbPath = _DEFAULT_DB,
732
+ margin: Annotated[
733
+ float,
734
+ Field(description="Headroom added to each measured score to form the proposed tolerance."),
735
+ ] = 0.03,
736
+ min_nodes: Annotated[
737
+ int,
738
+ Field(description="Domains with fewer nodes stay hygiene-only instead of getting a label."),
739
+ ] = 10,
740
+ depth: Annotated[
741
+ int | None,
742
+ Field(
743
+ description="Fixed FQN segment depth for domain discovery (positive); omit to pick it "
744
+ "automatically."
745
+ ),
746
+ ] = None,
601
747
  ) -> str:
602
748
  """Propose a starter patterns.yaml from the measured graph (read-only).
603
749
 
@@ -623,7 +769,21 @@ def cgis_init_ontology(
623
769
 
624
770
  @mcp.tool()
625
771
  def cgis_context(
626
- fqn: str, db_path: str = _DEFAULT_DB, depth: int = 1, source_root: str = ""
772
+ fqn: Fqn,
773
+ db_path: DbPath = _DEFAULT_DB,
774
+ depth: Annotated[
775
+ int,
776
+ Field(description="Call hops around the focal node; 1 means direct callers and callees."),
777
+ ] = 1,
778
+ source_root: Annotated[
779
+ str,
780
+ Field(
781
+ description="Directory the graph's stored file paths are relative to — normally the "
782
+ "project_path given to cgis_ingest; prefer an absolute path. Empty means the "
783
+ "server's working directory, so source shows as unavailable when the server runs "
784
+ "elsewhere."
785
+ ),
786
+ ] = "",
627
787
  ) -> str:
628
788
  """Compile an agent-facing GraphRAG context package for a focal FQN (#19).
629
789
 
@@ -659,10 +819,22 @@ def cgis_context(
659
819
 
660
820
  @mcp.tool()
661
821
  def cgis_metrics(
662
- db_path: str = _DEFAULT_DB,
663
- limit: int = 10,
664
- exclude: list[str] | None = None,
665
- scope: list[str] | None = None,
822
+ db_path: DbPath = _DEFAULT_DB,
823
+ limit: Annotated[int, Field(description="Top-N rows returned per section.")] = 10,
824
+ exclude: Annotated[
825
+ list[str] | None,
826
+ Field(
827
+ description='Drop nodes whose FQN contains any of these dot-segments, e.g. ["tests"]; '
828
+ "they are removed from PageRank propagation too."
829
+ ),
830
+ ] = None,
831
+ scope: Annotated[
832
+ list[str] | None,
833
+ Field(
834
+ description="Keep only nodes under any of these dot-prefixes, e.g. "
835
+ '["domains.billing"]; rank still propagates over the whole graph.'
836
+ ),
837
+ ] = None,
666
838
  ) -> str:
667
839
  """Whole-graph architectural metrics — coupling bottlenecks + God classes (#16).
668
840
 
@@ -706,10 +878,21 @@ def cgis_metrics(
706
878
 
707
879
  @mcp.tool()
708
880
  def cgis_find_orphans(
709
- db_path: str = _DEFAULT_DB,
710
- prefix: str | None = None,
711
- include_tests: bool = False,
712
- include_generated: bool = False,
881
+ db_path: DbPath = _DEFAULT_DB,
882
+ prefix: Annotated[
883
+ str | None,
884
+ Field(description="Only consider classes under this FQN prefix, cut on a dot boundary."),
885
+ ] = None,
886
+ include_tests: Annotated[
887
+ bool,
888
+ Field(
889
+ description="Count test code as a user, so the report means "
890
+ '"unreachable from anywhere".'
891
+ ),
892
+ ] = False,
893
+ include_generated: Annotated[
894
+ bool, Field(description="Include machine-generated classes, which are hidden by default.")
895
+ ] = False,
713
896
  ) -> str:
714
897
  """Classes nothing in production builds, extends or names — dead-code candidates (#415).
715
898
 
@@ -764,11 +947,33 @@ def cgis_find_orphans(
764
947
 
765
948
  @mcp.tool()
766
949
  def cgis_audit_reachability(
767
- target: str,
768
- db_path: str = _DEFAULT_DB,
769
- from_type: str | None = None,
770
- from_prefix: str | None = None,
771
- depth: int = 5,
950
+ target: Annotated[
951
+ str,
952
+ Field(
953
+ description="FQN of the checkpoint every source must reach, e.g. an ownership check. "
954
+ "A unique dot-boundary suffix also resolves."
955
+ ),
956
+ ],
957
+ db_path: DbPath = _DEFAULT_DB,
958
+ from_type: Annotated[
959
+ str | None,
960
+ Field(
961
+ description="NodeType of the sources to audit, e.g. ROUTE_HANDLER, API_ENDPOINT or "
962
+ "FUNCTION (any case). Give this, from_prefix, or both."
963
+ ),
964
+ ] = None,
965
+ from_prefix: Annotated[
966
+ str | None,
967
+ Field(
968
+ description="Only audit sources at or under this FQN prefix, matched on whole "
969
+ "dot-segments — a partial segment selects nothing and returns an empty audit, "
970
+ "not a clean one. Combined with from_type when both are given."
971
+ ),
972
+ ] = None,
973
+ depth: Annotated[
974
+ int,
975
+ Field(description="Maximum reachability depth; a longer path is reported as a gap."),
976
+ ] = 5,
772
977
  ) -> str:
773
978
  """Reachability/authorization audit — which sources never reach a checkpoint (#172).
774
979
 
@@ -817,7 +1022,7 @@ def cgis_audit_reachability(
817
1022
 
818
1023
 
819
1024
  @mcp.tool()
820
- def cgis_fractal(db_path: str = _DEFAULT_DB) -> str:
1025
+ def cgis_fractal(db_path: DbPath = _DEFAULT_DB) -> str:
821
1026
  """Report the motif census across the repository's structural tiers.
822
1027
 
823
1028
  Coarsens the graph along its own structure — symbol, class, module, then
@@ -0,0 +1,47 @@
1
+ """The MCP tool schemas an agent actually receives.
2
+
3
+ An agent picks arguments from the JSON schema, not from the docstring: the SDK
4
+ copies a docstring into the tool description but leaves every parameter bare.
5
+ Directories score this too — Glama rated all 53 parameters undescribed, and the
6
+ server announced an empty version to every client that connected.
7
+ """
8
+
9
+ import asyncio
10
+
11
+ import pytest
12
+
13
+ from cgis import __version__
14
+ from cgis.api.mcp_server import mcp
15
+
16
+
17
+ def _tool_params() -> list[tuple[str, str, dict[str, object]]]:
18
+ tools = asyncio.run(mcp.list_tools())
19
+ return [
20
+ (tool.name, name, prop)
21
+ for tool in tools
22
+ for name, prop in tool.input_schema.get("properties", {}).items()
23
+ ]
24
+
25
+
26
+ _PARAMS = _tool_params()
27
+
28
+
29
+ def test_every_tool_exposes_parameters() -> None:
30
+ """Guards the parametrized test below from passing over an empty list."""
31
+ assert len(_PARAMS) >= 50
32
+
33
+
34
+ @pytest.mark.parametrize(
35
+ ("tool", "param", "schema"), _PARAMS, ids=[f"{t}.{p}" for t, p, _ in _PARAMS]
36
+ )
37
+ def test_every_parameter_is_described(tool: str, param: str, schema: dict[str, object]) -> None:
38
+ """Each argument carries a description in the schema the client sees."""
39
+ description = schema.get("description")
40
+ assert isinstance(description, str), f"{tool}.{param} has no description"
41
+ assert len(description) >= 15, f"{tool}.{param}: {description!r} says too little"
42
+
43
+
44
+ def test_server_announces_the_package_version() -> None:
45
+ """`initialize` reports the installed version, not an empty string."""
46
+ assert mcp.version == __version__
47
+ assert mcp.version
@@ -261,7 +261,7 @@ wheels = [
261
261
 
262
262
  [[package]]
263
263
  name = "codegraph-brain"
264
- version = "0.22.0"
264
+ version = "0.23.0"
265
265
  source = { editable = "." }
266
266
  dependencies = [
267
267
  { name = "httpx" },
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.22.0"
3
- }