codegraph-brain 0.18.0__tar.gz → 0.20.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 (359) hide show
  1. codegraph_brain-0.20.0/.release-please-manifest.json +3 -0
  2. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/CHANGELOG.md +33 -0
  3. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/PKG-INFO +15 -15
  4. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/README.md +14 -14
  5. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/architecture/HOW_IT_WORKS.md +7 -1
  6. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/architecture/diagrams/pipeline_flow.mermaid +7 -7
  7. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/how-to/MCP_REFERENCE.md +42 -11
  8. codegraph_brain-0.20.0/docs/plans/2026-09-09-graph-freshness.md +845 -0
  9. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-06-13-suggest-packages-design.md +7 -2
  10. codegraph_brain-0.20.0/docs/specs/2026-09-09-graph-freshness-design.md +249 -0
  11. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/pyproject.toml +1 -1
  12. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/api/mcp_server.py +196 -29
  13. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/cli.py +144 -10
  14. codegraph_brain-0.20.0/src/cgis/core/coverage.py +57 -0
  15. codegraph_brain-0.20.0/src/cgis/core/freshness.py +38 -0
  16. codegraph_brain-0.20.0/src/cgis/core/generated.py +79 -0
  17. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/core/models.py +4 -0
  18. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/core/paths.py +15 -0
  19. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/extractors/_python_functions.py +122 -11
  20. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/extractors/python_extractor.py +42 -7
  21. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/pipeline.py +8 -1
  22. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/analysis/suggest_service.py +45 -7
  23. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/context/orphans.py +51 -11
  24. codegraph_brain-0.20.0/src/cgis/query/engine.py +340 -0
  25. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/render/graph_json.py +16 -3
  26. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/render/metrics.py +110 -27
  27. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/resolver/indices.py +14 -1
  28. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/storage/sqlite_store.py +314 -10
  29. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_cli.py +409 -2
  30. codegraph_brain-0.20.0/tests/unit/test_freshness.py +340 -0
  31. codegraph_brain-0.20.0/tests/unit/test_generated.py +174 -0
  32. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_graph_json.py +28 -0
  33. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_mcp_server.py +148 -0
  34. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_metrics.py +253 -0
  35. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_orphans.py +93 -0
  36. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_pipeline.py +23 -0
  37. codegraph_brain-0.20.0/tests/unit/test_query_coverage.py +395 -0
  38. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_resolver.py +378 -0
  39. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_sqlite_store.py +171 -0
  40. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_suggest_service.py +103 -0
  41. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/uv.lock +20 -10
  42. codegraph_brain-0.18.0/.release-please-manifest.json +0 -3
  43. codegraph_brain-0.18.0/src/cgis/query/engine.py +0 -170
  44. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/.claude-plugin/marketplace.json +0 -0
  45. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/.gitattributes +0 -0
  46. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/.github/test-count-baseline +0 -0
  47. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/.github/workflows/autodoc.yml +0 -0
  48. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/.github/workflows/ci.yml +0 -0
  49. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/.github/workflows/guardian.yml +0 -0
  50. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/.github/workflows/pr-title.yml +0 -0
  51. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/.github/workflows/release-please.yml +0 -0
  52. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/.gitignore +0 -0
  53. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/.pre-commit-config.yaml +0 -0
  54. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/.python-version +0 -0
  55. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/CLAUDE.md +0 -0
  56. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/CONTRIBUTING.md +0 -0
  57. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/LICENSE +0 -0
  58. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/Makefile +0 -0
  59. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/PRIVACY.md +0 -0
  60. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/CURATION.md +0 -0
  61. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/calibration.jsonl +0 -0
  62. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/experiments/246-cross-vendor/README.md +0 -0
  63. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/experiments/246-cross-vendor/free-nemotron-quota-cutoff.jsonl +0 -0
  64. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/experiments/401-evidence/README.md +0 -0
  65. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/experiments/401-evidence/pr-399-control-rows.jsonl +0 -0
  66. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/experiments/401-evidence/pr-399-recording.json +0 -0
  67. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/experiments/401-evidence/pr-399-treatment-rows.jsonl +0 -0
  68. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/experiments/407-no-checker-appeal/README.md +0 -0
  69. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-directive-rows.jsonl +0 -0
  70. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-prohibition-rows.jsonl +0 -0
  71. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/pr-122.yaml +0 -0
  72. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/pr-140.yaml +0 -0
  73. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/pr-141.yaml +0 -0
  74. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/pr-142.yaml +0 -0
  75. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/pr-143.yaml +0 -0
  76. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/pr-144.yaml +0 -0
  77. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/pr-278.yaml +0 -0
  78. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/pr-313.yaml +0 -0
  79. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/guardian/results.jsonl +0 -0
  80. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian/README.md +0 -0
  81. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian/cal_dot_com.json +0 -0
  82. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian/discourse.json +0 -0
  83. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian/grafana.json +0 -0
  84. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian/keycloak.json +0 -0
  85. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian/sentry.json +0 -0
  86. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian-judged.jsonl +0 -0
  87. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian-p3-judged-run1.jsonl +0 -0
  88. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian-p3-judged-run1.jsonl.corrupted-backup +0 -0
  89. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian-p3-run1.jsonl +0 -0
  90. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian-p3-run2.jsonl +0 -0
  91. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian-p3-run3.jsonl +0 -0
  92. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian-plan.json +0 -0
  93. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian-repeat-judged.jsonl +0 -0
  94. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian-repeat-reviews.jsonl +0 -0
  95. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/benchmarks/martian-reviews.jsonl +0 -0
  96. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/data/.gitkeep +0 -0
  97. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/AUDIT.md +0 -0
  98. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/CASE_STUDY.md +0 -0
  99. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/GUARDIAN_LOCAL_BENCH.md +0 -0
  100. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/GUARDIAN_REMOTE_OLLAMA.md +0 -0
  101. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/architecture/ONTOLOGY.md +0 -0
  102. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/architecture/PATTERNS_AND_TRIADS.md +0 -0
  103. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/architecture/SELF_PORTRAIT.md +0 -0
  104. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/architecture/health_badge.json +0 -0
  105. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/assets/.gitignore +0 -0
  106. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/assets/cgis-app-avatar.png +0 -0
  107. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/assets/cgis-app-avatar.svg +0 -0
  108. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/assets/generate_avatar.py +0 -0
  109. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/examples/.gitkeep +0 -0
  110. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/how-to/AGENT_ONBOARDING.md +0 -0
  111. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/how-to/CLI_USAGE.md +0 -0
  112. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/lab-notes/2026-06-11-chunked-review-negative-result.md +0 -0
  113. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/ontology/.gitkeep +0 -0
  114. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/ontology/core.yaml +0 -0
  115. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/ontology/domains.yaml +0 -0
  116. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/ontology/patterns.yaml +0 -0
  117. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/ontology/tolerances.lock +0 -0
  118. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-06-09-domain-pattern-fingerprint-design.md +0 -0
  119. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-06-09-pattern-alphabet-motif-basis-design.md +0 -0
  120. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-06-10-guardian-sprint-design.md +0 -0
  121. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-06-11-fastapi-di-edges-design.md +0 -0
  122. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-06-11-guardian-chunked-review-design.md +0 -0
  123. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-06-11-guardian-chunker-design.md +0 -0
  124. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-06-11-mcp-drift-validate-fqn-design.md +0 -0
  125. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-06-11-resolver-split-design.md +0 -0
  126. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-06-11-symbol-import-edges-design.md +0 -0
  127. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-06-12-drift-empty-domains-design.md +0 -0
  128. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-06-12-gate-semantics-design.md +0 -0
  129. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-06-12-init-ontology-design.md +0 -0
  130. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-06-12-release-please-ci-design.md +0 -0
  131. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-06-13-tangle-anti-pattern-design.md +0 -0
  132. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-07-29-guardian-skeptic-scoring-design.md +0 -0
  133. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-07-30-cgis-fractal-design.md +0 -0
  134. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-07-30-cgis-fractal-plan.md +0 -0
  135. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-07-30-chunk-source-filter-design.md +0 -0
  136. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-07-30-chunk-source-filter-plan.md +0 -0
  137. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-07-30-genai-client-close-design.md +0 -0
  138. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-07-30-genai-client-close-plan.md +0 -0
  139. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-07-30-guardian-precision-bench-design.md +0 -0
  140. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-07-30-guardian-precision-bench-plan.md +0 -0
  141. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-07-30-guardian-timeout-retry-design.md +0 -0
  142. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-07-30-guardian-timeout-retry-plan.md +0 -0
  143. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-07-31-finder-bug-class-taxonomy.md +0 -0
  144. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-08-01-aura-autoevolution-poc.md +0 -0
  145. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-08-11-guardian-code-review-bench.md +0 -0
  146. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-08-14-review-fingerprint-design.md +0 -0
  147. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/2026-09-05-annotation-graph-design.md +0 -0
  148. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/BLUEPRINT.md +0 -0
  149. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/PRD.md +0 -0
  150. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/TDD.md +0 -0
  151. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-09-fingerprint-drift.md +0 -0
  152. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-10-guardian-context-skeptic-inline.md +0 -0
  153. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-10-guardian-structured-findings-bench.md +0 -0
  154. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-10-motif-basis-part-b.md +0 -0
  155. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-10-unified-pattern-alphabet.md +0 -0
  156. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-11-fastapi-di-edges.md +0 -0
  157. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-11-guardian-chunked-review.md +0 -0
  158. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-11-guardian-chunker.md +0 -0
  159. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-11-mcp-drift-validate-fqn.md +0 -0
  160. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-11-resolver-split.md +0 -0
  161. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-12-drift-empty-domains.md +0 -0
  162. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-12-gate-semantics.md +0 -0
  163. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-12-init-ontology.md +0 -0
  164. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-12-release-please-ci.md +0 -0
  165. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-12-symbol-import-edges.md +0 -0
  166. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-06-13-suggest-packages.md +0 -0
  167. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-07-29-guardian-skeptic-scoring.md +0 -0
  168. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-08-14-review-fingerprint.md +0 -0
  169. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-09-05-annotation-graph-pr1.md +0 -0
  170. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/docs/specs/plans/2026-09-05-annotation-graph-pr2.md +0 -0
  171. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/main.py +0 -0
  172. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/plugin/.claude-plugin/plugin.json +0 -0
  173. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/plugin/.mcp.json +0 -0
  174. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/plugin/README.md +0 -0
  175. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/plugin/skills/cgis/SKILL.md +0 -0
  176. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/plugin/skills/ingest/SKILL.md +0 -0
  177. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/release-please-config.json +0 -0
  178. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/backfill_calibration_fingerprint.py +0 -0
  179. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/backfill_review_fingerprint.py +0 -0
  180. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/check_pytest_raises.py +0 -0
  181. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/check_test_count.py +0 -0
  182. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/colab_bench.sh +0 -0
  183. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/gen_ideal_graph.py +0 -0
  184. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/generate_health.py +0 -0
  185. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/generate_mcp_ref.py +0 -0
  186. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/generate_schema_docs.py +0 -0
  187. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/guardian_bench.py +0 -0
  188. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/guardian_calibrate.py +0 -0
  189. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/guardian_martian.py +0 -0
  190. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/guardian_replay_skeptic.py +0 -0
  191. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/guardian_review.py +0 -0
  192. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/inject_readme_graph.py +0 -0
  193. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/ollama_visitor.sh +0 -0
  194. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/probe_closure_gap.py +0 -0
  195. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/probe_tier_ladder.py +0 -0
  196. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/recordings_from_corpus.py +0 -0
  197. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/scripts/skeptic_arms.py +0 -0
  198. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/__init__.py +0 -0
  199. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/__main__.py +0 -0
  200. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/api/.gitkeep +0 -0
  201. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/api/__init__.py +0 -0
  202. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/core/.gitkeep +0 -0
  203. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/extractors/.gitkeep +0 -0
  204. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/extractors/_python_annotations.py +0 -0
  205. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/extractors/_python_ast.py +0 -0
  206. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/extractors/_python_classes.py +0 -0
  207. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/extractors/_python_imports.py +0 -0
  208. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/extractors/_python_types.py +0 -0
  209. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/extractors/base.py +0 -0
  210. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/extractors/registry.py +0 -0
  211. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/extractors/typescript_extractor.py +0 -0
  212. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/__init__.py +0 -0
  213. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/axes.py +0 -0
  214. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/bench.py +0 -0
  215. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/calibrate.py +0 -0
  216. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/chunked.py +0 -0
  217. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/chunker.py +0 -0
  218. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/collector.py +0 -0
  219. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/core.py +0 -0
  220. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/diff_index.py +0 -0
  221. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/evidence.py +0 -0
  222. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/findings.py +0 -0
  223. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/github_poster.py +0 -0
  224. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/martian.py +0 -0
  225. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/metrics.py +0 -0
  226. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/prompts.py +0 -0
  227. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/providers/__init__.py +0 -0
  228. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/providers/base.py +0 -0
  229. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/providers/gemini.py +0 -0
  230. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/providers/mistral.py +0 -0
  231. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/providers/ollama.py +0 -0
  232. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/providers/openrouter.py +0 -0
  233. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/recording.py +0 -0
  234. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/render.py +0 -0
  235. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/review_fingerprint.py +0 -0
  236. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/runner.py +0 -0
  237. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/guardian/skeptic.py +0 -0
  238. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/py.typed +0 -0
  239. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/analysis/__init__.py +0 -0
  240. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/analysis/analyzer.py +0 -0
  241. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/analysis/anomaly.py +0 -0
  242. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/analysis/cohesion.py +0 -0
  243. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/analysis/health.py +0 -0
  244. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/context/__init__.py +0 -0
  245. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/context/audit.py +0 -0
  246. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/context/context_service.py +0 -0
  247. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/context/prompt.py +0 -0
  248. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/context/snippet.py +0 -0
  249. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/drift/__init__.py +0 -0
  250. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/drift/_scc.py +0 -0
  251. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/drift/drift.py +0 -0
  252. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/drift/drift_service.py +0 -0
  253. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/drift/fingerprint.py +0 -0
  254. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/drift/fractal.py +0 -0
  255. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/drift/ontology_init.py +0 -0
  256. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/drift/quotient.py +0 -0
  257. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/drift/triads.py +0 -0
  258. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/fqn.py +0 -0
  259. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/render/__init__.py +0 -0
  260. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/query/render/mermaid.py +0 -0
  261. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/resolver/.gitkeep +0 -0
  262. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/resolver/__init__.py +0 -0
  263. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/resolver/engine.py +0 -0
  264. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/resolver/symbols.py +0 -0
  265. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/resolver/uplift.py +0 -0
  266. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/src/cgis/storage/.gitkeep +0 -0
  267. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/integration/.gitkeep +0 -0
  268. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/self_parsing/.gitkeep +0 -0
  269. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/self_parsing/__init__.py +0 -0
  270. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/self_parsing/conftest.py +0 -0
  271. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/self_parsing/test_annotation_calibration.py +0 -0
  272. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/self_parsing/test_architecture.py +0 -0
  273. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/self_parsing/test_drift.py +0 -0
  274. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/self_parsing/test_fractal.py +0 -0
  275. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/self_parsing/test_init_ontology_roundtrip.py +0 -0
  276. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/self_parsing/test_receiver_resolution.py +0 -0
  277. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/self_parsing/test_self_parse.py +0 -0
  278. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/self_parsing/test_self_parse_ts.py +0 -0
  279. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/self_parsing/test_suggest.py +0 -0
  280. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/.gitkeep +0 -0
  281. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/conftest.py +0 -0
  282. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/guardian_stubs.py +0 -0
  283. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/review_path_inventory.txt +0 -0
  284. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test___main__.py +0 -0
  285. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_analyzer.py +0 -0
  286. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_annotation_edges.py +0 -0
  287. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_audit.py +0 -0
  288. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_backfill_calibration_fingerprint.py +0 -0
  289. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_backfill_review_fingerprint.py +0 -0
  290. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_check_pytest_raises.py +0 -0
  291. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_check_test_count.py +0 -0
  292. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_cohesion.py +0 -0
  293. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_context_service.py +0 -0
  294. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_di_acceptance.py +0 -0
  295. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_drift.py +0 -0
  296. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_drift_service.py +0 -0
  297. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_extractor_registry.py +0 -0
  298. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_fingerprint.py +0 -0
  299. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_fqn.py +0 -0
  300. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_fractal.py +0 -0
  301. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_gen_ideal_graph.py +0 -0
  302. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_generate_mcp_ref.py +0 -0
  303. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_axes.py +0 -0
  304. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_bench.py +0 -0
  305. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_bench_script.py +0 -0
  306. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_calibrate.py +0 -0
  307. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_calibrate_script.py +0 -0
  308. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_chunked.py +0 -0
  309. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_chunker.py +0 -0
  310. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_collector.py +0 -0
  311. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_core.py +0 -0
  312. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_diff_index.py +0 -0
  313. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_evidence.py +0 -0
  314. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_findings.py +0 -0
  315. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_martian.py +0 -0
  316. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_martian_script.py +0 -0
  317. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_martian_union.py +0 -0
  318. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_metrics.py +0 -0
  319. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_mistral_sampling.py +0 -0
  320. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_ollama_sampling.py +0 -0
  321. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_ollama_truncation.py +0 -0
  322. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_openrouter.py +0 -0
  323. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_poster.py +0 -0
  324. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_providers.py +0 -0
  325. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_providers_name.py +0 -0
  326. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_recording.py +0 -0
  327. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_render.py +0 -0
  328. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_replay_skeptic.py +0 -0
  329. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_review_script.py +0 -0
  330. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_runner.py +0 -0
  331. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_salvage.py +0 -0
  332. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_guardian_skeptic.py +0 -0
  333. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_health_scorer.py +0 -0
  334. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_import_acceptance.py +0 -0
  335. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_mermaid.py +0 -0
  336. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_models.py +0 -0
  337. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_name_load_positions.py +0 -0
  338. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_ontology_compliance.py +0 -0
  339. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_ontology_init.py +0 -0
  340. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_paths.py +0 -0
  341. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_patterns_yaml.py +0 -0
  342. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_prompt.py +0 -0
  343. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_python_annotations.py +0 -0
  344. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_python_extractor.py +0 -0
  345. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_quotient.py +0 -0
  346. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_recordings_from_corpus.py +0 -0
  347. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_resolver_indices.py +0 -0
  348. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_resolver_symbols.py +0 -0
  349. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_review_fingerprint_closure.py +0 -0
  350. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_review_fingerprint_contract.py +0 -0
  351. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_review_fingerprint_digest.py +0 -0
  352. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_review_fingerprint_record.py +0 -0
  353. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_self_types.py +0 -0
  354. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_skeptic_arms.py +0 -0
  355. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_snippet.py +0 -0
  356. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_temperature_source.py +0 -0
  357. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_triads.py +0 -0
  358. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_typescript_extractor.py +0 -0
  359. {codegraph_brain-0.18.0 → codegraph_brain-0.20.0}/tests/unit/test_uplift.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.20.0"
3
+ }
@@ -1,5 +1,38 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.20.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.19.0...codegraph-brain-v0.20.0) (2026-09-11)
4
+
5
+
6
+ ### Features
7
+
8
+ * **query:** a traversal says how much of its neighbourhood resolved ([#201](https://github.com/zaebee/codegraph-brain/issues/201)) ([#448](https://github.com/zaebee/codegraph-brain/issues/448)) ([0c63469](https://github.com/zaebee/codegraph-brain/commit/0c634697789f5264316c8a218e993f13a9a0f73f))
9
+
10
+
11
+ ### Documentation
12
+
13
+ * auto-sync architecture graph and MCP reference ([#449](https://github.com/zaebee/codegraph-brain/issues/449)) ([e9eccae](https://github.com/zaebee/codegraph-brain/commit/e9eccae8d43e8dc264ca87f8ea0a45752471f079))
14
+
15
+ ## [0.19.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.18.0...codegraph-brain-v0.19.0) (2026-09-09)
16
+
17
+
18
+ ### Features
19
+
20
+ * **freshness:** every query says when the graph is out of date ([#175](https://github.com/zaebee/codegraph-brain/issues/175) part 2) ([#443](https://github.com/zaebee/codegraph-brain/issues/443)) ([0d6d197](https://github.com/zaebee/codegraph-brain/commit/0d6d197133c1315698b10a223aaf8efb47784578))
21
+ * **metrics:** --scope <prefix> to focus rankings on one subtree ([#239](https://github.com/zaebee/codegraph-brain/issues/239)) ([#439](https://github.com/zaebee/codegraph-brain/issues/439)) ([59605d3](https://github.com/zaebee/codegraph-brain/commit/59605d361f95aeea18b8272183f20938c0ca10b8))
22
+ * **orphans:** generated classes are noise, not findings — hide them by default ([#432](https://github.com/zaebee/codegraph-brain/issues/432)) ([#441](https://github.com/zaebee/codegraph-brain/issues/441)) ([52e0de1](https://github.com/zaebee/codegraph-brain/commit/52e0de1e666612f72d5a58eaad9509252db098e2))
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * **extractor:** `with X() as y` records y's type ([#444](https://github.com/zaebee/codegraph-brain/issues/444)) ([#445](https://github.com/zaebee/codegraph-brain/issues/445)) ([529b2e2](https://github.com/zaebee/codegraph-brain/commit/529b2e2239ab62a14211d95291afb1d7a6666cfc))
28
+ * **resolver:** only a head-discarding strip is forbidden a foreign head ([#435](https://github.com/zaebee/codegraph-brain/issues/435)) ([#437](https://github.com/zaebee/codegraph-brain/issues/437)) ([3e5309a](https://github.com/zaebee/codegraph-brain/commit/3e5309ac6e65cfdc5174dc70c6ae9d4b5036d92a))
29
+ * **suggest-packages:** name a member by its path under the package ([#446](https://github.com/zaebee/codegraph-brain/issues/446)) ([#447](https://github.com/zaebee/codegraph-brain/issues/447)) ([08af353](https://github.com/zaebee/codegraph-brain/commit/08af353f88b0026f799eb2cb2f9ed5f0c9733d22))
30
+
31
+
32
+ ### Documentation
33
+
34
+ * auto-sync architecture graph and MCP reference ([#442](https://github.com/zaebee/codegraph-brain/issues/442)) ([47a6aab](https://github.com/zaebee/codegraph-brain/commit/47a6aab38225f8e8936abd9d9e72b9449f10afe2))
35
+
3
36
  ## [0.18.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.17.0...codegraph-brain-v0.18.0) (2026-09-06)
4
37
 
5
38
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: codegraph-brain
3
- Version: 0.18.0
3
+ Version: 0.20.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
@@ -198,15 +198,15 @@ 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
200
  subgraph sg_models["models.py"]
201
- models_Edge["Edge (models.py:138)"]:::classNode
201
+ models_Edge["Edge (models.py:142)"]:::classNode
202
202
  models_Node["Node (models.py:85)"]:::classNode
203
203
  end
204
204
  subgraph sg_pipeline["pipeline.py"]
205
- pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:245)"]:::methodNode
206
- pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:185)"]:::methodNode
207
- pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:204)"]:::methodNode
208
- pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:155)"]:::methodNode
209
- pipeline_IngestionPipeline_run["run (pipeline.py:51)"]:::methodNode
205
+ pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:252)"]:::methodNode
206
+ pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:192)"]:::methodNode
207
+ pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:211)"]:::methodNode
208
+ pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:157)"]:::methodNode
209
+ pipeline_IngestionPipeline_run["run (pipeline.py:53)"]:::methodNode
210
210
  end
211
211
  subgraph sg_engine["engine.py"]
212
212
  engine_ResolverEngine["ResolverEngine (engine.py:19)"]:::classNode
@@ -217,7 +217,7 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
217
217
  uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:91)"]:::methodNode
218
218
  end
219
219
  subgraph sg_sqlite_store["sqlite_store.py"]
220
- sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:30)"]:::classNode
220
+ sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:40)"]:::classNode
221
221
  end
222
222
  pipeline_IngestionPipeline_run -->|REFERENCES| models_Node
223
223
  pipeline_IngestionPipeline_run -->|REFERENCES| models_Edge
@@ -235,17 +235,17 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
235
235
  | Symbol | Type | File |
236
236
  |--------|------|------|
237
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) |
239
- | `run` | METHOD | [`pipeline.py:51`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L51) |
240
- | `_process_file` | METHOD | [`pipeline.py:155`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L155) |
241
- | `_is_noop_incremental` | METHOD | [`pipeline.py:185`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L185) |
242
- | `_persist_incremental` | METHOD | [`pipeline.py:204`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L204) |
243
- | `_get_extractor` | METHOD | [`pipeline.py:245`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L245) |
238
+ | `Edge` | CLASS | [`models.py:142`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/core/models.py#L142) |
239
+ | `run` | METHOD | [`pipeline.py:53`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L53) |
240
+ | `_process_file` | METHOD | [`pipeline.py:157`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L157) |
241
+ | `_is_noop_incremental` | METHOD | [`pipeline.py:192`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L192) |
242
+ | `_persist_incremental` | METHOD | [`pipeline.py:211`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L211) |
243
+ | `_get_extractor` | METHOD | [`pipeline.py:252`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L252) |
244
244
  | `ResolverEngine` | CLASS | [`engine.py:19`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L19) |
245
245
  | `resolve` | METHOD | [`engine.py:36`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L36) |
246
246
  | `SemanticUpliftEngine` | CLASS | [`uplift.py:66`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L66) |
247
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) |
248
+ | `SQLiteStore` | CLASS | [`sqlite_store.py:40`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/storage/sqlite_store.py#L40) |
249
249
  <!-- END_CGIS_GRAPH -->
250
250
 
251
251
  ---
@@ -148,15 +148,15 @@ 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
150
  subgraph sg_models["models.py"]
151
- models_Edge["Edge (models.py:138)"]:::classNode
151
+ models_Edge["Edge (models.py:142)"]:::classNode
152
152
  models_Node["Node (models.py:85)"]:::classNode
153
153
  end
154
154
  subgraph sg_pipeline["pipeline.py"]
155
- pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:245)"]:::methodNode
156
- pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:185)"]:::methodNode
157
- pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:204)"]:::methodNode
158
- pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:155)"]:::methodNode
159
- pipeline_IngestionPipeline_run["run (pipeline.py:51)"]:::methodNode
155
+ pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:252)"]:::methodNode
156
+ pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:192)"]:::methodNode
157
+ pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:211)"]:::methodNode
158
+ pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:157)"]:::methodNode
159
+ pipeline_IngestionPipeline_run["run (pipeline.py:53)"]:::methodNode
160
160
  end
161
161
  subgraph sg_engine["engine.py"]
162
162
  engine_ResolverEngine["ResolverEngine (engine.py:19)"]:::classNode
@@ -167,7 +167,7 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
167
167
  uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:91)"]:::methodNode
168
168
  end
169
169
  subgraph sg_sqlite_store["sqlite_store.py"]
170
- sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:30)"]:::classNode
170
+ sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:40)"]:::classNode
171
171
  end
172
172
  pipeline_IngestionPipeline_run -->|REFERENCES| models_Node
173
173
  pipeline_IngestionPipeline_run -->|REFERENCES| models_Edge
@@ -185,17 +185,17 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
185
185
  | Symbol | Type | File |
186
186
  |--------|------|------|
187
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) |
189
- | `run` | METHOD | [`pipeline.py:51`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L51) |
190
- | `_process_file` | METHOD | [`pipeline.py:155`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L155) |
191
- | `_is_noop_incremental` | METHOD | [`pipeline.py:185`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L185) |
192
- | `_persist_incremental` | METHOD | [`pipeline.py:204`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L204) |
193
- | `_get_extractor` | METHOD | [`pipeline.py:245`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L245) |
188
+ | `Edge` | CLASS | [`models.py:142`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/core/models.py#L142) |
189
+ | `run` | METHOD | [`pipeline.py:53`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L53) |
190
+ | `_process_file` | METHOD | [`pipeline.py:157`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L157) |
191
+ | `_is_noop_incremental` | METHOD | [`pipeline.py:192`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L192) |
192
+ | `_persist_incremental` | METHOD | [`pipeline.py:211`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L211) |
193
+ | `_get_extractor` | METHOD | [`pipeline.py:252`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L252) |
194
194
  | `ResolverEngine` | CLASS | [`engine.py:19`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L19) |
195
195
  | `resolve` | METHOD | [`engine.py:36`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L36) |
196
196
  | `SemanticUpliftEngine` | CLASS | [`uplift.py:66`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L66) |
197
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) |
198
+ | `SQLiteStore` | CLASS | [`sqlite_store.py:40`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/storage/sqlite_store.py#L40) |
199
199
  <!-- END_CGIS_GRAPH -->
200
200
 
201
201
  ---
@@ -86,7 +86,8 @@ CREATE TABLE IF NOT EXISTS nodes (
86
86
  confidence_score REAL NOT NULL,
87
87
  metadata TEXT,
88
88
  namespace TEXT NOT NULL DEFAULT 'INTERNAL',
89
- is_test INTEGER NOT NULL DEFAULT 0
89
+ is_test INTEGER NOT NULL DEFAULT 0,
90
+ is_generated INTEGER NOT NULL DEFAULT 0
90
91
  );
91
92
 
92
93
  CREATE TABLE IF NOT EXISTS edges (
@@ -106,6 +107,11 @@ CREATE TABLE IF NOT EXISTS nodes (
106
107
  hash TEXT NOT NULL
107
108
  );
108
109
 
110
+ CREATE TABLE IF NOT EXISTS ingest_state (
111
+ key TEXT PRIMARY KEY,
112
+ value TEXT NOT NULL
113
+ );
114
+
109
115
  CREATE INDEX IF NOT EXISTS idx_nodes_type ON nodes(type);
110
116
  CREATE INDEX IF NOT EXISTS idx_edges_source ON edges(source);
111
117
  CREATE INDEX IF NOT EXISTS idx_edges_target ON edges(target);
@@ -8,15 +8,15 @@ 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
10
  subgraph sg_models["models.py"]
11
- models_Edge["Edge (models.py:138)"]:::classNode
11
+ models_Edge["Edge (models.py:142)"]:::classNode
12
12
  models_Node["Node (models.py:85)"]:::classNode
13
13
  end
14
14
  subgraph sg_pipeline["pipeline.py"]
15
- pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:245)"]:::methodNode
16
- pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:185)"]:::methodNode
17
- pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:204)"]:::methodNode
18
- pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:155)"]:::methodNode
19
- pipeline_IngestionPipeline_run["run (pipeline.py:51)"]:::methodNode
15
+ pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:252)"]:::methodNode
16
+ pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:192)"]:::methodNode
17
+ pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:211)"]:::methodNode
18
+ pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:157)"]:::methodNode
19
+ pipeline_IngestionPipeline_run["run (pipeline.py:53)"]:::methodNode
20
20
  end
21
21
  subgraph sg_engine["engine.py"]
22
22
  engine_ResolverEngine["ResolverEngine (engine.py:19)"]:::classNode
@@ -27,7 +27,7 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
27
27
  uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:91)"]:::methodNode
28
28
  end
29
29
  subgraph sg_sqlite_store["sqlite_store.py"]
30
- sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:30)"]:::classNode
30
+ sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:40)"]:::classNode
31
31
  end
32
32
  pipeline_IngestionPipeline_run -->|REFERENCES| models_Node
33
33
  pipeline_IngestionPipeline_run -->|REFERENCES| models_Edge
@@ -10,9 +10,13 @@
10
10
  Analyse transitive upstream callers of a specific FQN.
11
11
 
12
12
  Answers "what breaks if I change X?". ``output_format="mermaid"`` (default)
13
- returns a diagram; ``"json"`` returns a joinable ``{root, nodes, edges}``
14
- payload with real FQNs — letting an agent compute set differences (e.g.
15
- "which route handlers never reach ``verify_ownership``?") directly.
13
+ returns a diagram; ``"json"`` returns a joinable ``{root, nodes, edges,
14
+ coverage}`` payload with real FQNs — letting an agent compute set
15
+ differences (e.g. "which route handlers never reach ``verify_ownership``?")
16
+ directly. ``coverage`` counts unresolved calls whose name matches a
17
+ traversed function, method or class: callers that may be missing, named in
18
+ ``top_unresolved``. It is an upper bound — a common name matches calls on
19
+ unrelated objects, which the names make visible.
16
20
 
17
21
  | Argument | Type | Required | Description |
18
22
  | :--- | :--- | :---: | :--- |
@@ -126,18 +130,30 @@ Classes nothing in production builds, extends or names — dead-code candidates
126
130
  ``prefix`` narrows to one package on a dot boundary. ``include_tests`` counts
127
131
  test code as a user, turning the report into "unreachable from anywhere".
128
132
 
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.
133
+ Machine-generated classes are **hidden by default**, and ``include_generated``
134
+ puts them back. The query is right about them — nothing constructs a
135
+ betterproto stub — but nobody hand-deletes one either, so they are noise
136
+ rather than a finding. Measured on owner-api at b7d02fe6, five of six
137
+ reported orphans were generated entities and the sixth a nested pydantic
138
+ ``Config``: the unfiltered report had no actionable row in it (#432).
139
+
140
+ Returns JSON ``{orphans, considered, test_sources, generated_excluded}``;
141
+ each orphan carries ``fqn``/``file``/``line``. **A listing is a candidate for
142
+ deletion, not a proof** — a class named only inside a decorator (#429) or
143
+ arriving through a star import is invisible here, so the sweep errs towards
144
+ reporting a live class rather than hiding a dead one. ``test_sources: 0`` in a
145
+ repository that has tests means the graph predates the ``is_test`` column:
146
+ re-ingest. ``generated_excluded`` counts every generated class left out of
147
+ the population under the same ``prefix``, referenced or not — so ``0`` on a
148
+ repository with generated code means the same for ``is_generated``, which has
149
+ no backfill: the marker is in the file header, not in the database.
135
150
 
136
151
  | Argument | Type | Required | Description |
137
152
  | :--- | :--- | :---: | :--- |
138
153
  | `db_path` | `string` | | |
139
154
  | `prefix` | `any` | | |
140
155
  | `include_tests` | `boolean` | | |
156
+ | `include_generated` | `boolean` | | |
141
157
 
142
158
  ---
143
159
 
@@ -267,11 +283,22 @@ Whole-graph architectural metrics — coupling bottlenecks + God classes (#16).
267
283
  (e.g. ``["tests"]`` removes both ``tests.*`` and ``domains.*.tests.*``) so
268
284
  test/vendor scaffolding stays out of the rankings.
269
285
 
286
+ ``scope`` is its complement: it keeps only nodes under one of the given
287
+ dot-prefixes, anchored and cut on a dot boundary, so
288
+ ``["domains.reservation"]`` is that subtree and not
289
+ ``domains.reservation_archive``. Use it for a per-domain review. The two
290
+ compose, and they differ where it matters for PageRank — ``exclude`` removes
291
+ nodes from the propagation graph, ``scope`` filters the rows and lets rank
292
+ propagate over the whole graph, so a scoped run reports how central the
293
+ subtree is *globally*. Coupling in-degree likewise keeps counting callers
294
+ from outside the scope, which is the ripple a domain review is after (#239).
295
+
270
296
  | Argument | Type | Required | Description |
271
297
  | :--- | :--- | :---: | :--- |
272
298
  | `db_path` | `string` | | |
273
299
  | `limit` | `integer` | | |
274
300
  | `exclude` | `any` | | |
301
+ | `scope` | `any` | | |
275
302
 
276
303
  ---
277
304
 
@@ -302,8 +329,12 @@ Suggest sub-package boundaries for a package from its dependency communities.
302
329
  Trace the execution call-graph starting from a specific FQN downwards.
303
330
 
304
331
  ``output_format="mermaid"`` (default) returns a human-readable diagram;
305
- ``"json"`` returns a joinable ``{root, nodes, edges}`` payload with real
306
- FQNs (not display hashes) for agent/CI use. Use ``cgis_ingest`` first if
332
+ ``"json"`` returns a joinable ``{root, nodes, edges, coverage}`` payload
333
+ with real FQNs (not display hashes) for agent/CI use. ``coverage`` counts
334
+ the calls the traversed functions make that resolved to nothing, and
335
+ ``top_unresolved`` names the most frequent. Read the names, not only the
336
+ ratio: in Python most are methods on untyped locals (``logger.info``,
337
+ ``items.append``), which cut nothing short. Use ``cgis_ingest`` first if
307
338
  the database does not exist yet.
308
339
 
309
340
  | Argument | Type | Required | Description |