codegraph-brain 0.16.0__tar.gz → 0.18.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 (355) hide show
  1. codegraph_brain-0.18.0/.github/test-count-baseline +1 -0
  2. codegraph_brain-0.18.0/.release-please-manifest.json +3 -0
  3. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/CHANGELOG.md +39 -0
  4. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/CLAUDE.md +3 -2
  5. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/Makefile +15 -1
  6. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/PKG-INFO +18 -5
  7. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/README.md +17 -4
  8. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/architecture/HOW_IT_WORKS.md +2 -1
  9. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/architecture/diagrams/pipeline_flow.mermaid +12 -2
  10. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/how-to/MCP_REFERENCE.md +35 -0
  11. codegraph_brain-0.18.0/docs/specs/2026-09-05-annotation-graph-design.md +622 -0
  12. codegraph_brain-0.18.0/docs/specs/plans/2026-09-05-annotation-graph-pr1.md +1042 -0
  13. codegraph_brain-0.18.0/docs/specs/plans/2026-09-05-annotation-graph-pr2.md +687 -0
  14. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/pyproject.toml +1 -1
  15. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/api/mcp_server.py +44 -0
  16. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/cli.py +95 -0
  17. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/core/models.py +22 -1
  18. codegraph_brain-0.18.0/src/cgis/core/paths.py +39 -0
  19. codegraph_brain-0.18.0/src/cgis/extractors/_python_annotations.py +139 -0
  20. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/extractors/_python_ast.py +173 -0
  21. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/extractors/_python_classes.py +23 -2
  22. codegraph_brain-0.18.0/src/cgis/extractors/_python_functions.py +562 -0
  23. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/extractors/_python_imports.py +15 -2
  24. codegraph_brain-0.18.0/src/cgis/extractors/python_extractor.py +656 -0
  25. codegraph_brain-0.18.0/src/cgis/query/context/orphans.py +123 -0
  26. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/render/mermaid.py +14 -1
  27. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/resolver/engine.py +34 -6
  28. codegraph_brain-0.18.0/src/cgis/resolver/indices.py +448 -0
  29. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/resolver/symbols.py +94 -7
  30. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/storage/sqlite_store.py +58 -4
  31. codegraph_brain-0.18.0/tests/self_parsing/test_annotation_calibration.py +162 -0
  32. codegraph_brain-0.18.0/tests/self_parsing/test_receiver_resolution.py +242 -0
  33. codegraph_brain-0.18.0/tests/unit/test_annotation_edges.py +197 -0
  34. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_cli.py +99 -0
  35. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_mermaid.py +54 -0
  36. codegraph_brain-0.18.0/tests/unit/test_name_load_positions.py +128 -0
  37. codegraph_brain-0.18.0/tests/unit/test_orphans.py +234 -0
  38. codegraph_brain-0.18.0/tests/unit/test_paths.py +58 -0
  39. codegraph_brain-0.18.0/tests/unit/test_python_annotations.py +250 -0
  40. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_resolver.py +769 -5
  41. codegraph_brain-0.18.0/tests/unit/test_resolver_indices.py +353 -0
  42. codegraph_brain-0.18.0/tests/unit/test_self_types.py +177 -0
  43. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/uv.lock +1 -1
  44. codegraph_brain-0.16.0/.github/test-count-baseline +0 -1
  45. codegraph_brain-0.16.0/.release-please-manifest.json +0 -3
  46. codegraph_brain-0.16.0/src/cgis/extractors/_python_functions.py +0 -312
  47. codegraph_brain-0.16.0/src/cgis/extractors/python_extractor.py +0 -332
  48. codegraph_brain-0.16.0/src/cgis/resolver/indices.py +0 -203
  49. codegraph_brain-0.16.0/tests/unit/test_resolver_indices.py +0 -190
  50. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/.claude-plugin/marketplace.json +0 -0
  51. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/.gitattributes +0 -0
  52. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/.github/workflows/autodoc.yml +0 -0
  53. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/.github/workflows/ci.yml +0 -0
  54. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/.github/workflows/guardian.yml +0 -0
  55. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/.github/workflows/pr-title.yml +0 -0
  56. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/.github/workflows/release-please.yml +0 -0
  57. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/.gitignore +0 -0
  58. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/.pre-commit-config.yaml +0 -0
  59. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/.python-version +0 -0
  60. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/CONTRIBUTING.md +0 -0
  61. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/LICENSE +0 -0
  62. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/PRIVACY.md +0 -0
  63. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/CURATION.md +0 -0
  64. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/calibration.jsonl +0 -0
  65. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/experiments/246-cross-vendor/README.md +0 -0
  66. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/experiments/246-cross-vendor/free-nemotron-quota-cutoff.jsonl +0 -0
  67. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/experiments/401-evidence/README.md +0 -0
  68. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/experiments/401-evidence/pr-399-control-rows.jsonl +0 -0
  69. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/experiments/401-evidence/pr-399-recording.json +0 -0
  70. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/experiments/401-evidence/pr-399-treatment-rows.jsonl +0 -0
  71. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/experiments/407-no-checker-appeal/README.md +0 -0
  72. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-directive-rows.jsonl +0 -0
  73. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-prohibition-rows.jsonl +0 -0
  74. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/pr-122.yaml +0 -0
  75. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/pr-140.yaml +0 -0
  76. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/pr-141.yaml +0 -0
  77. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/pr-142.yaml +0 -0
  78. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/pr-143.yaml +0 -0
  79. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/pr-144.yaml +0 -0
  80. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/pr-278.yaml +0 -0
  81. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/pr-313.yaml +0 -0
  82. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/guardian/results.jsonl +0 -0
  83. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian/README.md +0 -0
  84. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian/cal_dot_com.json +0 -0
  85. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian/discourse.json +0 -0
  86. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian/grafana.json +0 -0
  87. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian/keycloak.json +0 -0
  88. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian/sentry.json +0 -0
  89. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian-judged.jsonl +0 -0
  90. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian-p3-judged-run1.jsonl +0 -0
  91. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian-p3-judged-run1.jsonl.corrupted-backup +0 -0
  92. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian-p3-run1.jsonl +0 -0
  93. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian-p3-run2.jsonl +0 -0
  94. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian-p3-run3.jsonl +0 -0
  95. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian-plan.json +0 -0
  96. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian-repeat-judged.jsonl +0 -0
  97. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian-repeat-reviews.jsonl +0 -0
  98. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/benchmarks/martian-reviews.jsonl +0 -0
  99. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/data/.gitkeep +0 -0
  100. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/AUDIT.md +0 -0
  101. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/CASE_STUDY.md +0 -0
  102. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/GUARDIAN_LOCAL_BENCH.md +0 -0
  103. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/GUARDIAN_REMOTE_OLLAMA.md +0 -0
  104. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/architecture/ONTOLOGY.md +0 -0
  105. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/architecture/PATTERNS_AND_TRIADS.md +0 -0
  106. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/architecture/SELF_PORTRAIT.md +0 -0
  107. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/architecture/health_badge.json +0 -0
  108. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/assets/.gitignore +0 -0
  109. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/assets/cgis-app-avatar.png +0 -0
  110. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/assets/cgis-app-avatar.svg +0 -0
  111. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/assets/generate_avatar.py +0 -0
  112. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/examples/.gitkeep +0 -0
  113. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/how-to/AGENT_ONBOARDING.md +0 -0
  114. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/how-to/CLI_USAGE.md +0 -0
  115. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/lab-notes/2026-06-11-chunked-review-negative-result.md +0 -0
  116. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/ontology/.gitkeep +0 -0
  117. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/ontology/core.yaml +0 -0
  118. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/ontology/domains.yaml +0 -0
  119. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/ontology/patterns.yaml +0 -0
  120. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/ontology/tolerances.lock +0 -0
  121. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-06-09-domain-pattern-fingerprint-design.md +0 -0
  122. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-06-09-pattern-alphabet-motif-basis-design.md +0 -0
  123. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-06-10-guardian-sprint-design.md +0 -0
  124. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-06-11-fastapi-di-edges-design.md +0 -0
  125. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-06-11-guardian-chunked-review-design.md +0 -0
  126. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-06-11-guardian-chunker-design.md +0 -0
  127. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-06-11-mcp-drift-validate-fqn-design.md +0 -0
  128. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-06-11-resolver-split-design.md +0 -0
  129. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-06-11-symbol-import-edges-design.md +0 -0
  130. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-06-12-drift-empty-domains-design.md +0 -0
  131. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-06-12-gate-semantics-design.md +0 -0
  132. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-06-12-init-ontology-design.md +0 -0
  133. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-06-12-release-please-ci-design.md +0 -0
  134. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-06-13-suggest-packages-design.md +0 -0
  135. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-06-13-tangle-anti-pattern-design.md +0 -0
  136. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-07-29-guardian-skeptic-scoring-design.md +0 -0
  137. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-07-30-cgis-fractal-design.md +0 -0
  138. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-07-30-cgis-fractal-plan.md +0 -0
  139. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-07-30-chunk-source-filter-design.md +0 -0
  140. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-07-30-chunk-source-filter-plan.md +0 -0
  141. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-07-30-genai-client-close-design.md +0 -0
  142. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-07-30-genai-client-close-plan.md +0 -0
  143. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-07-30-guardian-precision-bench-design.md +0 -0
  144. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-07-30-guardian-precision-bench-plan.md +0 -0
  145. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-07-30-guardian-timeout-retry-design.md +0 -0
  146. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-07-30-guardian-timeout-retry-plan.md +0 -0
  147. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-07-31-finder-bug-class-taxonomy.md +0 -0
  148. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-08-01-aura-autoevolution-poc.md +0 -0
  149. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-08-11-guardian-code-review-bench.md +0 -0
  150. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/2026-08-14-review-fingerprint-design.md +0 -0
  151. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/BLUEPRINT.md +0 -0
  152. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/PRD.md +0 -0
  153. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/TDD.md +0 -0
  154. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-09-fingerprint-drift.md +0 -0
  155. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-10-guardian-context-skeptic-inline.md +0 -0
  156. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-10-guardian-structured-findings-bench.md +0 -0
  157. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-10-motif-basis-part-b.md +0 -0
  158. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-10-unified-pattern-alphabet.md +0 -0
  159. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-11-fastapi-di-edges.md +0 -0
  160. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-11-guardian-chunked-review.md +0 -0
  161. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-11-guardian-chunker.md +0 -0
  162. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-11-mcp-drift-validate-fqn.md +0 -0
  163. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-11-resolver-split.md +0 -0
  164. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-12-drift-empty-domains.md +0 -0
  165. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-12-gate-semantics.md +0 -0
  166. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-12-init-ontology.md +0 -0
  167. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-12-release-please-ci.md +0 -0
  168. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-12-symbol-import-edges.md +0 -0
  169. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-06-13-suggest-packages.md +0 -0
  170. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-07-29-guardian-skeptic-scoring.md +0 -0
  171. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/docs/specs/plans/2026-08-14-review-fingerprint.md +0 -0
  172. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/main.py +0 -0
  173. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/plugin/.claude-plugin/plugin.json +0 -0
  174. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/plugin/.mcp.json +0 -0
  175. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/plugin/README.md +0 -0
  176. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/plugin/skills/cgis/SKILL.md +0 -0
  177. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/plugin/skills/ingest/SKILL.md +0 -0
  178. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/release-please-config.json +0 -0
  179. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/backfill_calibration_fingerprint.py +0 -0
  180. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/backfill_review_fingerprint.py +0 -0
  181. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/check_pytest_raises.py +0 -0
  182. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/check_test_count.py +0 -0
  183. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/colab_bench.sh +0 -0
  184. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/gen_ideal_graph.py +0 -0
  185. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/generate_health.py +0 -0
  186. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/generate_mcp_ref.py +0 -0
  187. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/generate_schema_docs.py +0 -0
  188. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/guardian_bench.py +0 -0
  189. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/guardian_calibrate.py +0 -0
  190. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/guardian_martian.py +0 -0
  191. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/guardian_replay_skeptic.py +0 -0
  192. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/guardian_review.py +0 -0
  193. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/inject_readme_graph.py +0 -0
  194. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/ollama_visitor.sh +0 -0
  195. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/probe_closure_gap.py +0 -0
  196. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/probe_tier_ladder.py +0 -0
  197. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/recordings_from_corpus.py +0 -0
  198. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/scripts/skeptic_arms.py +0 -0
  199. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/__init__.py +0 -0
  200. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/__main__.py +0 -0
  201. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/api/.gitkeep +0 -0
  202. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/api/__init__.py +0 -0
  203. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/core/.gitkeep +0 -0
  204. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/extractors/.gitkeep +0 -0
  205. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/extractors/_python_types.py +0 -0
  206. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/extractors/base.py +0 -0
  207. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/extractors/registry.py +0 -0
  208. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/extractors/typescript_extractor.py +0 -0
  209. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/__init__.py +0 -0
  210. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/axes.py +0 -0
  211. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/bench.py +0 -0
  212. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/calibrate.py +0 -0
  213. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/chunked.py +0 -0
  214. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/chunker.py +0 -0
  215. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/collector.py +0 -0
  216. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/core.py +0 -0
  217. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/diff_index.py +0 -0
  218. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/evidence.py +0 -0
  219. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/findings.py +0 -0
  220. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/github_poster.py +0 -0
  221. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/martian.py +0 -0
  222. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/metrics.py +0 -0
  223. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/prompts.py +0 -0
  224. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/providers/__init__.py +0 -0
  225. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/providers/base.py +0 -0
  226. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/providers/gemini.py +0 -0
  227. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/providers/mistral.py +0 -0
  228. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/providers/ollama.py +0 -0
  229. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/providers/openrouter.py +0 -0
  230. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/recording.py +0 -0
  231. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/render.py +0 -0
  232. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/review_fingerprint.py +0 -0
  233. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/runner.py +0 -0
  234. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/guardian/skeptic.py +0 -0
  235. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/pipeline.py +0 -0
  236. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/py.typed +0 -0
  237. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/analysis/__init__.py +0 -0
  238. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/analysis/analyzer.py +0 -0
  239. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/analysis/anomaly.py +0 -0
  240. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/analysis/cohesion.py +0 -0
  241. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/analysis/health.py +0 -0
  242. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/analysis/suggest_service.py +0 -0
  243. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/context/__init__.py +0 -0
  244. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/context/audit.py +0 -0
  245. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/context/context_service.py +0 -0
  246. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/context/prompt.py +0 -0
  247. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/context/snippet.py +0 -0
  248. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/drift/__init__.py +0 -0
  249. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/drift/_scc.py +0 -0
  250. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/drift/drift.py +0 -0
  251. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/drift/drift_service.py +0 -0
  252. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/drift/fingerprint.py +0 -0
  253. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/drift/fractal.py +0 -0
  254. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/drift/ontology_init.py +0 -0
  255. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/drift/quotient.py +0 -0
  256. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/drift/triads.py +0 -0
  257. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/engine.py +0 -0
  258. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/fqn.py +0 -0
  259. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/render/__init__.py +0 -0
  260. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/render/graph_json.py +0 -0
  261. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/query/render/metrics.py +0 -0
  262. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/resolver/.gitkeep +0 -0
  263. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/resolver/__init__.py +0 -0
  264. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/resolver/uplift.py +0 -0
  265. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/src/cgis/storage/.gitkeep +0 -0
  266. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/integration/.gitkeep +0 -0
  267. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/self_parsing/.gitkeep +0 -0
  268. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/self_parsing/__init__.py +0 -0
  269. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/self_parsing/conftest.py +0 -0
  270. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/self_parsing/test_architecture.py +0 -0
  271. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/self_parsing/test_drift.py +0 -0
  272. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/self_parsing/test_fractal.py +0 -0
  273. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/self_parsing/test_init_ontology_roundtrip.py +0 -0
  274. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/self_parsing/test_self_parse.py +0 -0
  275. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/self_parsing/test_self_parse_ts.py +0 -0
  276. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/self_parsing/test_suggest.py +0 -0
  277. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/.gitkeep +0 -0
  278. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/conftest.py +0 -0
  279. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/guardian_stubs.py +0 -0
  280. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/review_path_inventory.txt +0 -0
  281. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test___main__.py +0 -0
  282. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_analyzer.py +0 -0
  283. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_audit.py +0 -0
  284. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_backfill_calibration_fingerprint.py +0 -0
  285. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_backfill_review_fingerprint.py +0 -0
  286. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_check_pytest_raises.py +0 -0
  287. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_check_test_count.py +0 -0
  288. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_cohesion.py +0 -0
  289. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_context_service.py +0 -0
  290. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_di_acceptance.py +0 -0
  291. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_drift.py +0 -0
  292. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_drift_service.py +0 -0
  293. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_extractor_registry.py +0 -0
  294. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_fingerprint.py +0 -0
  295. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_fqn.py +0 -0
  296. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_fractal.py +0 -0
  297. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_gen_ideal_graph.py +0 -0
  298. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_generate_mcp_ref.py +0 -0
  299. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_graph_json.py +0 -0
  300. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_axes.py +0 -0
  301. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_bench.py +0 -0
  302. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_bench_script.py +0 -0
  303. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_calibrate.py +0 -0
  304. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_calibrate_script.py +0 -0
  305. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_chunked.py +0 -0
  306. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_chunker.py +0 -0
  307. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_collector.py +0 -0
  308. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_core.py +0 -0
  309. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_diff_index.py +0 -0
  310. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_evidence.py +0 -0
  311. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_findings.py +0 -0
  312. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_martian.py +0 -0
  313. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_martian_script.py +0 -0
  314. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_martian_union.py +0 -0
  315. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_metrics.py +0 -0
  316. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_mistral_sampling.py +0 -0
  317. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_ollama_sampling.py +0 -0
  318. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_ollama_truncation.py +0 -0
  319. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_openrouter.py +0 -0
  320. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_poster.py +0 -0
  321. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_providers.py +0 -0
  322. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_providers_name.py +0 -0
  323. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_recording.py +0 -0
  324. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_render.py +0 -0
  325. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_replay_skeptic.py +0 -0
  326. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_review_script.py +0 -0
  327. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_runner.py +0 -0
  328. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_salvage.py +0 -0
  329. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_guardian_skeptic.py +0 -0
  330. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_health_scorer.py +0 -0
  331. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_import_acceptance.py +0 -0
  332. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_mcp_server.py +0 -0
  333. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_metrics.py +0 -0
  334. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_models.py +0 -0
  335. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_ontology_compliance.py +0 -0
  336. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_ontology_init.py +0 -0
  337. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_patterns_yaml.py +0 -0
  338. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_pipeline.py +0 -0
  339. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_prompt.py +0 -0
  340. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_python_extractor.py +0 -0
  341. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_quotient.py +0 -0
  342. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_recordings_from_corpus.py +0 -0
  343. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_resolver_symbols.py +0 -0
  344. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_review_fingerprint_closure.py +0 -0
  345. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_review_fingerprint_contract.py +0 -0
  346. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_review_fingerprint_digest.py +0 -0
  347. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_review_fingerprint_record.py +0 -0
  348. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_skeptic_arms.py +0 -0
  349. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_snippet.py +0 -0
  350. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_sqlite_store.py +0 -0
  351. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_suggest_service.py +0 -0
  352. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_temperature_source.py +0 -0
  353. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_triads.py +0 -0
  354. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_typescript_extractor.py +0 -0
  355. {codegraph_brain-0.16.0 → codegraph_brain-0.18.0}/tests/unit/test_uplift.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.18.0"
3
+ }
@@ -1,5 +1,44 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.18.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.17.0...codegraph-brain-v0.18.0) (2026-09-06)
4
+
5
+
6
+ ### Features
7
+
8
+ * **extractors:** a class named as a value is a reference (D10, [#415](https://github.com/zaebee/codegraph-brain/issues/415)) ([#430](https://github.com/zaebee/codegraph-brain/issues/430)) ([aea4076](https://github.com/zaebee/codegraph-brain/commit/aea4076b45d0761f50bb989936e89c8054402372))
9
+ * **extractors:** a decorator's arguments are edges, and a decorated class keeps its own ([#429](https://github.com/zaebee/codegraph-brain/issues/429)) ([#434](https://github.com/zaebee/codegraph-brain/issues/434)) ([fd0c63f](https://github.com/zaebee/codegraph-brain/commit/fd0c63f1f887a0b65a433d01571654ae79419ef3))
10
+ * **query:** orphan classes — what production no longer builds ([#415](https://github.com/zaebee/codegraph-brain/issues/415)) ([#431](https://github.com/zaebee/codegraph-brain/issues/431)) ([3b4db3c](https://github.com/zaebee/codegraph-brain/commit/3b4db3cb231d43ae388b080d64d19b3244739017))
11
+ * **resolver:** resolve self.<attr>.<method> through the declared receiver ([#414](https://github.com/zaebee/codegraph-brain/issues/414)) ([#423](https://github.com/zaebee/codegraph-brain/issues/423)) ([a1c94a2](https://github.com/zaebee/codegraph-brain/commit/a1c94a2e4629da955deef761467730a7d711c3fe))
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * **extractors:** attribute a module-level or class-body call to its owner ([#416](https://github.com/zaebee/codegraph-brain/issues/416)) ([#428](https://github.com/zaebee/codegraph-brain/issues/428)) ([c9f39b8](https://github.com/zaebee/codegraph-brain/commit/c9f39b81bf3a644441b7b5a3215df2d6b39b9489))
17
+ * **resolver:** an import prefix that reaches a node is first-party, not external ([#424](https://github.com/zaebee/codegraph-brain/issues/424)) ([#426](https://github.com/zaebee/codegraph-brain/issues/426)) ([50f8b7c](https://github.com/zaebee/codegraph-brain/commit/50f8b7c03d716c25f9341a879c76a8707f3853fb))
18
+ * **resolver:** resolve a name through the package that re-exports it ([#417](https://github.com/zaebee/codegraph-brain/issues/417)) ([#427](https://github.com/zaebee/codegraph-brain/issues/427)) ([ef76f95](https://github.com/zaebee/codegraph-brain/commit/ef76f9546b4477d4736406eabe417e6e49e68e23))
19
+
20
+
21
+ ### Documentation
22
+
23
+ * auto-sync architecture graph and MCP reference ([#433](https://github.com/zaebee/codegraph-brain/issues/433)) ([40af3ee](https://github.com/zaebee/codegraph-brain/commit/40af3ee6839b53a953124e25f1f39b5379bff890))
24
+
25
+ ## [0.17.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.16.0...codegraph-brain-v0.17.0) (2026-09-05)
26
+
27
+
28
+ ### Features
29
+
30
+ * **extractors:** record what annotations say — self_types and REFERENCES edges ([#414](https://github.com/zaebee/codegraph-brain/issues/414), [#415](https://github.com/zaebee/codegraph-brain/issues/415)) ([#418](https://github.com/zaebee/codegraph-brain/issues/418)) ([eeaa60b](https://github.com/zaebee/codegraph-brain/commit/eeaa60b831956bb85fff88c987789ea179c2dc71))
31
+
32
+
33
+ ### Bug Fixes
34
+
35
+ * **render:** draw one arrow per distinct triple in a mermaid diagram ([#421](https://github.com/zaebee/codegraph-brain/issues/421)) ([19a6067](https://github.com/zaebee/codegraph-brain/commit/19a6067f7c98d84f9d0a3e02e132f85ba0791817))
36
+
37
+
38
+ ### Documentation
39
+
40
+ * auto-sync architecture graph after the annotation-edge work ([#420](https://github.com/zaebee/codegraph-brain/issues/420)) ([061843d](https://github.com/zaebee/codegraph-brain/commit/061843dd0ba997d2fd7549acaa72e7290b10f9cf))
41
+
3
42
  ## [0.16.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.15.0...codegraph-brain-v0.16.0) (2026-08-17)
4
43
 
5
44
 
@@ -35,8 +35,9 @@ make format && make lint && make type-check && make pytest && make doc-coverage
35
35
  # Single test
36
36
  uv run pytest tests/unit/test_python_extractor.py::test_extract_simple_function -v
37
37
 
38
- # Tests with coverage
39
- uv run pytest --cov=cgis --cov-report=html
38
+ # Line coverage (same scope as CI — see the Makefile comment on why scripts/ counts)
39
+ make coverage # runs: uv run pytest --cov=cgis --cov=scripts --cov-report=term-missing
40
+ make coverage-html # same, writes htmlcov/
40
41
  ```
41
42
 
42
43
  ## Architecture
@@ -1,4 +1,4 @@
1
- .PHONY: format lint type-check pytest doc-coverage check \
1
+ .PHONY: format lint type-check pytest doc-coverage coverage coverage-html check \
2
2
  ui-dev ui-build ui-test ui-lint ui-format ui-preview ui-analyze ui-check \
3
3
  all-checks
4
4
 
@@ -19,6 +19,20 @@ pytest:
19
19
  doc-coverage:
20
20
  uv run interrogate src
21
21
 
22
+ # Line coverage. `--cov=scripts` is not optional and not cosmetic: sonar.sources
23
+ # is `src,scripts`, so SonarCloud counts every executable line under scripts/ as
24
+ # a line to cover whether or not the report mentions it. Omitting the directory
25
+ # does not exclude it — it reports all of it as uncovered, which once put
26
+ # new-code coverage at 37.8% on a PR whose script was covered at 99% locally.
27
+ # Keep this scope identical to the Pytest step in .github/workflows/ci.yml, or
28
+ # the number you read here is not the number the gate reads.
29
+ coverage:
30
+ uv run pytest --cov=cgis --cov=scripts --cov-report=term-missing
31
+
32
+ # Same scope, browsable. Writes htmlcov/ (git-ignored); open htmlcov/index.html.
33
+ coverage-html:
34
+ uv run pytest --cov=cgis --cov=scripts --cov-report=html
35
+
22
36
  # Full Python verification (run before every commit/PR)
23
37
  check: format lint type-check pytest doc-coverage
24
38
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: codegraph-brain
3
- Version: 0.16.0
3
+ Version: 0.18.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
@@ -197,6 +197,10 @@ classDef defaultNode fill:#fafafa,stroke:#9e9e9e,stroke-width:1.5px,color:#21212
197
197
  classDef stdlibNode fill:#eceff1,stroke:#607d8b,stroke-width:1px,color:#455a64;
198
198
  classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dasharray: 3 3,color:#bf360c;
199
199
 
200
+ subgraph sg_models["models.py"]
201
+ models_Edge["Edge (models.py:138)"]:::classNode
202
+ models_Node["Node (models.py:85)"]:::classNode
203
+ end
200
204
  subgraph sg_pipeline["pipeline.py"]
201
205
  pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:245)"]:::methodNode
202
206
  pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:185)"]:::methodNode
@@ -205,13 +209,19 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
205
209
  pipeline_IngestionPipeline_run["run (pipeline.py:51)"]:::methodNode
206
210
  end
207
211
  subgraph sg_engine["engine.py"]
208
- engine_ResolverEngine["ResolverEngine (engine.py:18)"]:::classNode
209
- engine_ResolverEngine_resolve["resolve (engine.py:35)"]:::methodNode
212
+ engine_ResolverEngine["ResolverEngine (engine.py:19)"]:::classNode
213
+ engine_ResolverEngine_resolve["resolve (engine.py:36)"]:::methodNode
210
214
  end
211
215
  subgraph sg_uplift["uplift.py"]
212
216
  uplift_SemanticUpliftEngine["SemanticUpliftEngine (uplift.py:66)"]:::classNode
213
217
  uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:91)"]:::methodNode
214
218
  end
219
+ subgraph sg_sqlite_store["sqlite_store.py"]
220
+ sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:30)"]:::classNode
221
+ end
222
+ pipeline_IngestionPipeline_run -->|REFERENCES| models_Node
223
+ pipeline_IngestionPipeline_run -->|REFERENCES| models_Edge
224
+ pipeline_IngestionPipeline_run -->|REFERENCES| sqlite_store_SQLiteStore
215
225
  pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_get_extractor
216
226
  pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_process_file
217
227
  pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_is_noop_incremental
@@ -224,15 +234,18 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
224
234
 
225
235
  | Symbol | Type | File |
226
236
  |--------|------|------|
237
+ | `Node` | CLASS | [`models.py:85`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/core/models.py#L85) |
238
+ | `Edge` | CLASS | [`models.py:138`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/core/models.py#L138) |
227
239
  | `run` | METHOD | [`pipeline.py:51`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L51) |
228
240
  | `_process_file` | METHOD | [`pipeline.py:155`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L155) |
229
241
  | `_is_noop_incremental` | METHOD | [`pipeline.py:185`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L185) |
230
242
  | `_persist_incremental` | METHOD | [`pipeline.py:204`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L204) |
231
243
  | `_get_extractor` | METHOD | [`pipeline.py:245`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L245) |
232
- | `ResolverEngine` | CLASS | [`engine.py:18`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L18) |
233
- | `resolve` | METHOD | [`engine.py:35`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L35) |
244
+ | `ResolverEngine` | CLASS | [`engine.py:19`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L19) |
245
+ | `resolve` | METHOD | [`engine.py:36`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L36) |
234
246
  | `SemanticUpliftEngine` | CLASS | [`uplift.py:66`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L66) |
235
247
  | `execute_uplift` | METHOD | [`uplift.py:91`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L91) |
248
+ | `SQLiteStore` | CLASS | [`sqlite_store.py:30`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/storage/sqlite_store.py#L30) |
236
249
  <!-- END_CGIS_GRAPH -->
237
250
 
238
251
  ---
@@ -147,6 +147,10 @@ classDef defaultNode fill:#fafafa,stroke:#9e9e9e,stroke-width:1.5px,color:#21212
147
147
  classDef stdlibNode fill:#eceff1,stroke:#607d8b,stroke-width:1px,color:#455a64;
148
148
  classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dasharray: 3 3,color:#bf360c;
149
149
 
150
+ subgraph sg_models["models.py"]
151
+ models_Edge["Edge (models.py:138)"]:::classNode
152
+ models_Node["Node (models.py:85)"]:::classNode
153
+ end
150
154
  subgraph sg_pipeline["pipeline.py"]
151
155
  pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:245)"]:::methodNode
152
156
  pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:185)"]:::methodNode
@@ -155,13 +159,19 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
155
159
  pipeline_IngestionPipeline_run["run (pipeline.py:51)"]:::methodNode
156
160
  end
157
161
  subgraph sg_engine["engine.py"]
158
- engine_ResolverEngine["ResolverEngine (engine.py:18)"]:::classNode
159
- engine_ResolverEngine_resolve["resolve (engine.py:35)"]:::methodNode
162
+ engine_ResolverEngine["ResolverEngine (engine.py:19)"]:::classNode
163
+ engine_ResolverEngine_resolve["resolve (engine.py:36)"]:::methodNode
160
164
  end
161
165
  subgraph sg_uplift["uplift.py"]
162
166
  uplift_SemanticUpliftEngine["SemanticUpliftEngine (uplift.py:66)"]:::classNode
163
167
  uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:91)"]:::methodNode
164
168
  end
169
+ subgraph sg_sqlite_store["sqlite_store.py"]
170
+ sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:30)"]:::classNode
171
+ end
172
+ pipeline_IngestionPipeline_run -->|REFERENCES| models_Node
173
+ pipeline_IngestionPipeline_run -->|REFERENCES| models_Edge
174
+ pipeline_IngestionPipeline_run -->|REFERENCES| sqlite_store_SQLiteStore
165
175
  pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_get_extractor
166
176
  pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_process_file
167
177
  pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_is_noop_incremental
@@ -174,15 +184,18 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
174
184
 
175
185
  | Symbol | Type | File |
176
186
  |--------|------|------|
187
+ | `Node` | CLASS | [`models.py:85`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/core/models.py#L85) |
188
+ | `Edge` | CLASS | [`models.py:138`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/core/models.py#L138) |
177
189
  | `run` | METHOD | [`pipeline.py:51`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L51) |
178
190
  | `_process_file` | METHOD | [`pipeline.py:155`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L155) |
179
191
  | `_is_noop_incremental` | METHOD | [`pipeline.py:185`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L185) |
180
192
  | `_persist_incremental` | METHOD | [`pipeline.py:204`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L204) |
181
193
  | `_get_extractor` | METHOD | [`pipeline.py:245`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L245) |
182
- | `ResolverEngine` | CLASS | [`engine.py:18`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L18) |
183
- | `resolve` | METHOD | [`engine.py:35`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L35) |
194
+ | `ResolverEngine` | CLASS | [`engine.py:19`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L19) |
195
+ | `resolve` | METHOD | [`engine.py:36`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L36) |
184
196
  | `SemanticUpliftEngine` | CLASS | [`uplift.py:66`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L66) |
185
197
  | `execute_uplift` | METHOD | [`uplift.py:91`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L91) |
198
+ | `SQLiteStore` | CLASS | [`sqlite_store.py:30`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/storage/sqlite_store.py#L30) |
186
199
  <!-- END_CGIS_GRAPH -->
187
200
 
188
201
  ---
@@ -85,7 +85,8 @@ CREATE TABLE IF NOT EXISTS nodes (
85
85
  domains TEXT,
86
86
  confidence_score REAL NOT NULL,
87
87
  metadata TEXT,
88
- namespace TEXT NOT NULL DEFAULT 'INTERNAL'
88
+ namespace TEXT NOT NULL DEFAULT 'INTERNAL',
89
+ is_test INTEGER NOT NULL DEFAULT 0
89
90
  );
90
91
 
91
92
  CREATE TABLE IF NOT EXISTS edges (
@@ -7,6 +7,10 @@ classDef defaultNode fill:#fafafa,stroke:#9e9e9e,stroke-width:1.5px,color:#21212
7
7
  classDef stdlibNode fill:#eceff1,stroke:#607d8b,stroke-width:1px,color:#455a64;
8
8
  classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dasharray: 3 3,color:#bf360c;
9
9
 
10
+ subgraph sg_models["models.py"]
11
+ models_Edge["Edge (models.py:138)"]:::classNode
12
+ models_Node["Node (models.py:85)"]:::classNode
13
+ end
10
14
  subgraph sg_pipeline["pipeline.py"]
11
15
  pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:245)"]:::methodNode
12
16
  pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:185)"]:::methodNode
@@ -15,13 +19,19 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
15
19
  pipeline_IngestionPipeline_run["run (pipeline.py:51)"]:::methodNode
16
20
  end
17
21
  subgraph sg_engine["engine.py"]
18
- engine_ResolverEngine["ResolverEngine (engine.py:18)"]:::classNode
19
- engine_ResolverEngine_resolve["resolve (engine.py:35)"]:::methodNode
22
+ engine_ResolverEngine["ResolverEngine (engine.py:19)"]:::classNode
23
+ engine_ResolverEngine_resolve["resolve (engine.py:36)"]:::methodNode
20
24
  end
21
25
  subgraph sg_uplift["uplift.py"]
22
26
  uplift_SemanticUpliftEngine["SemanticUpliftEngine (uplift.py:66)"]:::classNode
23
27
  uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:91)"]:::methodNode
24
28
  end
29
+ subgraph sg_sqlite_store["sqlite_store.py"]
30
+ sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:30)"]:::classNode
31
+ end
32
+ pipeline_IngestionPipeline_run -->|REFERENCES| models_Node
33
+ pipeline_IngestionPipeline_run -->|REFERENCES| models_Edge
34
+ pipeline_IngestionPipeline_run -->|REFERENCES| sqlite_store_SQLiteStore
25
35
  pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_get_extractor
26
36
  pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_process_file
27
37
  pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_is_noop_incremental
@@ -106,6 +106,41 @@ Report per-domain architectural drift against declared ideal patterns.
106
106
 
107
107
  ---
108
108
 
109
+ ## `cgis_find_orphans`
110
+
111
+ Classes nothing in production builds, extends or names — dead-code candidates (#415).
112
+
113
+ Finds classes that no test, type checker or linter flags, because each is
114
+ still imported somewhere: a package re-export keeps a class importable long
115
+ after its last real caller is gone. On one mid-sized backend this reported
116
+ 43 of 1 789 classes, and the hand-written equivalent's findings were all
117
+ real and all deleted.
118
+
119
+ Two filters decide the answer. **Tests are not users** — a class built only
120
+ by its own test is exactly the shape being hunted. **A re-export is not a
121
+ use** — ``IMPORTS_SYMBOL`` does not count, or nothing is ever reported. What
122
+ counts is construction (``CALLS``), inheritance (``EXTENDS``) and being named
123
+ (``REFERENCES`` — an annotation, or a class handed to a framework); the last
124
+ keeps abstract ports and Protocols off the list.
125
+
126
+ ``prefix`` narrows to one package on a dot boundary. ``include_tests`` counts
127
+ test code as a user, turning the report into "unreachable from anywhere".
128
+
129
+ Returns JSON ``{orphans, considered, test_sources}``; each orphan carries
130
+ ``fqn``/``file``/``line``. **A listing is a candidate for deletion, not a
131
+ proof** — a class named only inside a decorator (#429) or arriving through a
132
+ star import is invisible here, so the sweep errs towards reporting a live
133
+ class rather than hiding a dead one. ``test_sources: 0`` in a repository that
134
+ has tests means the graph predates the ``is_test`` column: re-ingest.
135
+
136
+ | Argument | Type | Required | Description |
137
+ | :--- | :--- | :---: | :--- |
138
+ | `db_path` | `string` | | |
139
+ | `prefix` | `any` | | |
140
+ | `include_tests` | `boolean` | | |
141
+
142
+ ---
143
+
109
144
  ## `cgis_find_symbol`
110
145
 
111
146
  Resolve a partial symbol name to candidate FQNs (substring match, ranked).