codegraph-brain 0.27.0__tar.gz → 0.29.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 (433) hide show
  1. codegraph_brain-0.29.0/.github/test-count-baseline +1 -0
  2. codegraph_brain-0.29.0/.release-please-manifest.json +3 -0
  3. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/CHANGELOG.md +44 -0
  4. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/PKG-INFO +1 -1
  5. codegraph_brain-0.29.0/benchmarks/agent_ab/.gitignore +3 -0
  6. codegraph_brain-0.29.0/benchmarks/agent_ab/README.md +111 -0
  7. codegraph_brain-0.29.0/benchmarks/agent_ab/RESULTS.md +177 -0
  8. codegraph_brain-0.29.0/benchmarks/agent_ab/results.jsonl +65 -0
  9. codegraph_brain-0.29.0/benchmarks/agent_ab/tasks/cgis-control-sqlite-pragmas.yaml +23 -0
  10. codegraph_brain-0.29.0/benchmarks/agent_ab/tasks/cgis-flow-ingest-to-sqlite.yaml +50 -0
  11. codegraph_brain-0.29.0/benchmarks/agent_ab/tasks/cgis-impact-drift-same-name.yaml +56 -0
  12. codegraph_brain-0.29.0/benchmarks/agent_ab/tasks/cgis-impact-language-for.yaml +27 -0
  13. codegraph_brain-0.29.0/benchmarks/agent_ab/tasks/cgis-impact-transitive-tsconfig.yaml +45 -0
  14. codegraph_brain-0.29.0/benchmarks/agent_ab/tasks/cgis-orientation-call-resolution.yaml +36 -0
  15. codegraph_brain-0.29.0/benchmarks/agent_ab/tasks/owner-impact-credit-wallet.yaml +55 -0
  16. codegraph_brain-0.29.0/benchmarks/agent_ab/tasks/owner-impact-occupied-window-same-name.yaml +30 -0
  17. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/architecture/HOW_IT_WORKS.md +33 -30
  18. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/architecture/diagrams/pipeline_flow.mermaid +17 -15
  19. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/how-to/AGENT_ONBOARDING.md +19 -0
  20. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/how-to/MCP_REFERENCE.md +28 -10
  21. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/ontology/core.yaml +1 -0
  22. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/pyproject.toml +1 -1
  23. codegraph_brain-0.29.0/scripts/agent_ab.py +569 -0
  24. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/generate_mcp_ref.py +10 -1
  25. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/server.json +2 -2
  26. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/api/mcp_server.py +185 -27
  27. codegraph_brain-0.29.0/src/cgis/api/server_instructions.py +47 -0
  28. codegraph_brain-0.29.0/src/cgis/api/tool_allowlist.py +95 -0
  29. codegraph_brain-0.29.0/src/cgis/bench/__init__.py +1 -0
  30. codegraph_brain-0.29.0/src/cgis/bench/agent_task.py +268 -0
  31. codegraph_brain-0.29.0/src/cgis/bench/guard.py +119 -0
  32. codegraph_brain-0.29.0/src/cgis/bench/transcript.py +305 -0
  33. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/cli.py +4 -3
  34. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/core/js_globals.py +7 -1
  35. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/core/models.py +4 -0
  36. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/extractors/_python_functions.py +38 -0
  37. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/extractors/_typescript_bindings.py +55 -2
  38. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/extractors/python_extractor.py +1 -1
  39. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/extractors/typescript_extractor.py +12 -3
  40. codegraph_brain-0.29.0/src/cgis/import_names.py +162 -0
  41. codegraph_brain-0.29.0/src/cgis/npm_dependencies.py +73 -0
  42. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/pipeline.py +22 -0
  43. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/analysis/suggest_service.py +2 -0
  44. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/context/audit.py +2 -0
  45. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/context/orphans.py +2 -0
  46. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/engine.py +144 -18
  47. codegraph_brain-0.29.0/src/cgis/query/fqn.py +183 -0
  48. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/render/metrics.py +3 -2
  49. codegraph_brain-0.29.0/src/cgis/query/render/text.py +127 -0
  50. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/resolver/engine.py +7 -3
  51. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/resolver/indices.py +83 -6
  52. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/resolver/js_builtins.py +53 -0
  53. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/resolver/symbols.py +146 -9
  54. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/storage/sqlite_store.py +69 -1
  55. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/tsconfig_paths.py +28 -11
  56. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/workspaces.py +94 -1
  57. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/self_parsing/test_annotation_calibration.py +8 -2
  58. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/self_parsing/test_receiver_resolution.py +6 -1
  59. codegraph_brain-0.29.0/tests/unit/agent_ab_stubs.py +113 -0
  60. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/conftest.py +6 -0
  61. codegraph_brain-0.29.0/tests/unit/test_agent_ab_guard.py +152 -0
  62. codegraph_brain-0.29.0/tests/unit/test_agent_ab_script.py +467 -0
  63. codegraph_brain-0.29.0/tests/unit/test_agent_ab_task.py +238 -0
  64. codegraph_brain-0.29.0/tests/unit/test_agent_ab_transcript.py +152 -0
  65. codegraph_brain-0.29.0/tests/unit/test_annotated_alias_receiver.py +224 -0
  66. codegraph_brain-0.29.0/tests/unit/test_configs_above_root.py +261 -0
  67. codegraph_brain-0.29.0/tests/unit/test_dispatch_edges.py +223 -0
  68. codegraph_brain-0.29.0/tests/unit/test_find_symbol_path_prefix.py +141 -0
  69. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_fqn.py +66 -0
  70. codegraph_brain-0.29.0/tests/unit/test_impact_agent_sized.py +195 -0
  71. codegraph_brain-0.29.0/tests/unit/test_mcp_server_instructions.py +177 -0
  72. codegraph_brain-0.29.0/tests/unit/test_npm_dependencies.py +321 -0
  73. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_resolver_js_builtins.py +15 -5
  74. codegraph_brain-0.29.0/tests/unit/test_text_format.py +256 -0
  75. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/uv.lock +1 -1
  76. codegraph_brain-0.27.0/.github/test-count-baseline +0 -1
  77. codegraph_brain-0.27.0/.release-please-manifest.json +0 -3
  78. codegraph_brain-0.27.0/src/cgis/import_names.py +0 -84
  79. codegraph_brain-0.27.0/src/cgis/query/fqn.py +0 -82
  80. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/.claude-plugin/marketplace.json +0 -0
  81. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/.gitattributes +0 -0
  82. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/.github/workflows/autodoc.yml +0 -0
  83. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/.github/workflows/ci.yml +0 -0
  84. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/.github/workflows/guardian.yml +0 -0
  85. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/.github/workflows/mcp-registry.yml +0 -0
  86. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/.github/workflows/pr-title.yml +0 -0
  87. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/.github/workflows/release-please.yml +0 -0
  88. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/.github/workflows/ui.yml +0 -0
  89. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/.gitignore +0 -0
  90. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/.pre-commit-config.yaml +0 -0
  91. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/.python-version +0 -0
  92. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/CLAUDE.md +0 -0
  93. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/CONTRIBUTING.md +0 -0
  94. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/LICENSE +0 -0
  95. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/Makefile +0 -0
  96. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/PRIVACY.md +0 -0
  97. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/README.md +0 -0
  98. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/CURATION.md +0 -0
  99. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/calibration.jsonl +0 -0
  100. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/experiments/246-cross-vendor/README.md +0 -0
  101. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/experiments/246-cross-vendor/free-nemotron-quota-cutoff.jsonl +0 -0
  102. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/experiments/401-evidence/README.md +0 -0
  103. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/experiments/401-evidence/pr-399-control-rows.jsonl +0 -0
  104. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/experiments/401-evidence/pr-399-recording.json +0 -0
  105. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/experiments/401-evidence/pr-399-treatment-rows.jsonl +0 -0
  106. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/experiments/407-no-checker-appeal/README.md +0 -0
  107. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-directive-rows.jsonl +0 -0
  108. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-prohibition-rows.jsonl +0 -0
  109. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/pr-122.yaml +0 -0
  110. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/pr-140.yaml +0 -0
  111. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/pr-141.yaml +0 -0
  112. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/pr-142.yaml +0 -0
  113. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/pr-143.yaml +0 -0
  114. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/pr-144.yaml +0 -0
  115. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/pr-278.yaml +0 -0
  116. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/pr-313.yaml +0 -0
  117. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/guardian/results.jsonl +0 -0
  118. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian/README.md +0 -0
  119. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian/cal_dot_com.json +0 -0
  120. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian/discourse.json +0 -0
  121. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian/grafana.json +0 -0
  122. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian/keycloak.json +0 -0
  123. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian/sentry.json +0 -0
  124. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian-judged.jsonl +0 -0
  125. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian-p3-judged-run1.jsonl +0 -0
  126. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian-p3-judged-run1.jsonl.corrupted-backup +0 -0
  127. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian-p3-run1.jsonl +0 -0
  128. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian-p3-run2.jsonl +0 -0
  129. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian-p3-run3.jsonl +0 -0
  130. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian-plan.json +0 -0
  131. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian-repeat-judged.jsonl +0 -0
  132. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian-repeat-reviews.jsonl +0 -0
  133. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/benchmarks/martian-reviews.jsonl +0 -0
  134. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/data/.gitkeep +0 -0
  135. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/AUDIT.md +0 -0
  136. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/CASE_STUDY.md +0 -0
  137. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/GUARDIAN_LOCAL_BENCH.md +0 -0
  138. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/GUARDIAN_REMOTE_OLLAMA.md +0 -0
  139. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/architecture/ONTOLOGY.md +0 -0
  140. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/architecture/PATTERNS_AND_TRIADS.md +0 -0
  141. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/architecture/SELF_PORTRAIT.md +0 -0
  142. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/architecture/health_badge.json +0 -0
  143. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/assets/.gitignore +0 -0
  144. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/assets/cgis-app-avatar.png +0 -0
  145. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/assets/cgis-app-avatar.svg +0 -0
  146. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/assets/generate_avatar.py +0 -0
  147. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/examples/.gitkeep +0 -0
  148. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/how-to/CLI_USAGE.md +0 -0
  149. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/lab-notes/2026-06-11-chunked-review-negative-result.md +0 -0
  150. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/ontology/.gitkeep +0 -0
  151. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/ontology/domains.yaml +0 -0
  152. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/ontology/patterns.yaml +0 -0
  153. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/ontology/tolerances.lock +0 -0
  154. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/plans/2026-09-09-graph-freshness.md +0 -0
  155. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-06-09-domain-pattern-fingerprint-design.md +0 -0
  156. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-06-09-pattern-alphabet-motif-basis-design.md +0 -0
  157. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-06-10-guardian-sprint-design.md +0 -0
  158. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-06-11-fastapi-di-edges-design.md +0 -0
  159. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-06-11-guardian-chunked-review-design.md +0 -0
  160. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-06-11-guardian-chunker-design.md +0 -0
  161. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-06-11-mcp-drift-validate-fqn-design.md +0 -0
  162. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-06-11-resolver-split-design.md +0 -0
  163. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-06-11-symbol-import-edges-design.md +0 -0
  164. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-06-12-drift-empty-domains-design.md +0 -0
  165. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-06-12-gate-semantics-design.md +0 -0
  166. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-06-12-init-ontology-design.md +0 -0
  167. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-06-12-release-please-ci-design.md +0 -0
  168. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-06-13-suggest-packages-design.md +0 -0
  169. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-06-13-tangle-anti-pattern-design.md +0 -0
  170. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-07-29-guardian-skeptic-scoring-design.md +0 -0
  171. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-07-30-cgis-fractal-design.md +0 -0
  172. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-07-30-cgis-fractal-plan.md +0 -0
  173. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-07-30-chunk-source-filter-design.md +0 -0
  174. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-07-30-chunk-source-filter-plan.md +0 -0
  175. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-07-30-genai-client-close-design.md +0 -0
  176. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-07-30-genai-client-close-plan.md +0 -0
  177. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-07-30-guardian-precision-bench-design.md +0 -0
  178. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-07-30-guardian-precision-bench-plan.md +0 -0
  179. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-07-30-guardian-timeout-retry-design.md +0 -0
  180. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-07-30-guardian-timeout-retry-plan.md +0 -0
  181. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-07-31-finder-bug-class-taxonomy.md +0 -0
  182. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-08-01-aura-autoevolution-poc.md +0 -0
  183. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-08-11-guardian-code-review-bench.md +0 -0
  184. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-08-14-review-fingerprint-design.md +0 -0
  185. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-09-05-annotation-graph-design.md +0 -0
  186. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/2026-09-09-graph-freshness-design.md +0 -0
  187. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/BLUEPRINT.md +0 -0
  188. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/PRD.md +0 -0
  189. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/TDD.md +0 -0
  190. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-09-fingerprint-drift.md +0 -0
  191. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-10-guardian-context-skeptic-inline.md +0 -0
  192. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-10-guardian-structured-findings-bench.md +0 -0
  193. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-10-motif-basis-part-b.md +0 -0
  194. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-10-unified-pattern-alphabet.md +0 -0
  195. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-11-fastapi-di-edges.md +0 -0
  196. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-11-guardian-chunked-review.md +0 -0
  197. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-11-guardian-chunker.md +0 -0
  198. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-11-mcp-drift-validate-fqn.md +0 -0
  199. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-11-resolver-split.md +0 -0
  200. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-12-drift-empty-domains.md +0 -0
  201. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-12-gate-semantics.md +0 -0
  202. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-12-init-ontology.md +0 -0
  203. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-12-release-please-ci.md +0 -0
  204. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-12-symbol-import-edges.md +0 -0
  205. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-06-13-suggest-packages.md +0 -0
  206. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-07-29-guardian-skeptic-scoring.md +0 -0
  207. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-08-14-review-fingerprint.md +0 -0
  208. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-09-05-annotation-graph-pr1.md +0 -0
  209. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/docs/specs/plans/2026-09-05-annotation-graph-pr2.md +0 -0
  210. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/glama.json +0 -0
  211. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/main.py +0 -0
  212. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/plugin/.claude-plugin/plugin.json +0 -0
  213. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/plugin/.mcp.json +0 -0
  214. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/plugin/README.md +0 -0
  215. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/plugin/skills/cgis/SKILL.md +0 -0
  216. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/plugin/skills/ingest/SKILL.md +0 -0
  217. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/release-please-config.json +0 -0
  218. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/backfill_calibration_fingerprint.py +0 -0
  219. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/backfill_review_fingerprint.py +0 -0
  220. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/check_pytest_raises.py +0 -0
  221. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/check_test_count.py +0 -0
  222. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/colab_bench.sh +0 -0
  223. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/gen_ideal_graph.py +0 -0
  224. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/generate_health.py +0 -0
  225. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/generate_schema_docs.py +0 -0
  226. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/guardian_bench.py +0 -0
  227. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/guardian_calibrate.py +0 -0
  228. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/guardian_martian.py +0 -0
  229. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/guardian_replay_skeptic.py +0 -0
  230. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/guardian_review.py +0 -0
  231. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/inject_architecture_graph.py +0 -0
  232. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/mcp_registry_gate.sh +0 -0
  233. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/ollama_visitor.sh +0 -0
  234. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/probe_closure_gap.py +0 -0
  235. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/probe_tier_ladder.py +0 -0
  236. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/recordings_from_corpus.py +0 -0
  237. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/scripts/skeptic_arms.py +0 -0
  238. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/__init__.py +0 -0
  239. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/__main__.py +0 -0
  240. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/api/.gitkeep +0 -0
  241. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/api/__init__.py +0 -0
  242. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/api/auto_refresh.py +0 -0
  243. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/core/.gitkeep +0 -0
  244. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/core/coverage.py +0 -0
  245. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/core/freshness.py +0 -0
  246. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/core/generated.py +0 -0
  247. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/core/paths.py +0 -0
  248. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/extractors/.gitkeep +0 -0
  249. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/extractors/_python_annotations.py +0 -0
  250. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/extractors/_python_ast.py +0 -0
  251. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/extractors/_python_classes.py +0 -0
  252. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/extractors/_python_imports.py +0 -0
  253. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/extractors/_python_types.py +0 -0
  254. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/extractors/base.py +0 -0
  255. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/extractors/registry.py +0 -0
  256. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/__init__.py +0 -0
  257. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/axes.py +0 -0
  258. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/bench.py +0 -0
  259. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/calibrate.py +0 -0
  260. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/chunked.py +0 -0
  261. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/chunker.py +0 -0
  262. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/collector.py +0 -0
  263. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/core.py +0 -0
  264. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/diff_index.py +0 -0
  265. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/evidence.py +0 -0
  266. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/findings.py +0 -0
  267. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/github_poster.py +0 -0
  268. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/martian.py +0 -0
  269. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/metrics.py +0 -0
  270. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/prompts.py +0 -0
  271. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/providers/__init__.py +0 -0
  272. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/providers/base.py +0 -0
  273. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/providers/gemini.py +0 -0
  274. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/providers/mistral.py +0 -0
  275. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/providers/ollama.py +0 -0
  276. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/providers/openrouter.py +0 -0
  277. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/recording.py +0 -0
  278. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/render.py +0 -0
  279. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/review_fingerprint.py +0 -0
  280. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/runner.py +0 -0
  281. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/guardian/skeptic.py +0 -0
  282. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/py.typed +0 -0
  283. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/python_dependencies.py +0 -0
  284. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/analysis/__init__.py +0 -0
  285. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/analysis/analyzer.py +0 -0
  286. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/analysis/anomaly.py +0 -0
  287. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/analysis/cohesion.py +0 -0
  288. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/analysis/health.py +0 -0
  289. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/analysis/overview.py +0 -0
  290. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/context/__init__.py +0 -0
  291. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/context/context_service.py +0 -0
  292. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/context/prompt.py +0 -0
  293. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/context/snippet.py +0 -0
  294. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/drift/__init__.py +0 -0
  295. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/drift/_scc.py +0 -0
  296. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/drift/catalog.py +0 -0
  297. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/drift/drift.py +0 -0
  298. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/drift/drift_service.py +0 -0
  299. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/drift/fingerprint.py +0 -0
  300. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/drift/fractal.py +0 -0
  301. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/drift/ontology_init.py +0 -0
  302. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/drift/quotient.py +0 -0
  303. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/drift/scoring.py +0 -0
  304. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/drift/triads.py +0 -0
  305. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/render/__init__.py +0 -0
  306. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/render/graph_json.py +0 -0
  307. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/query/render/mermaid.py +0 -0
  308. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/resolver/.gitkeep +0 -0
  309. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/resolver/__init__.py +0 -0
  310. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/resolver/uplift.py +0 -0
  311. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/src/cgis/storage/.gitkeep +0 -0
  312. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/integration/.gitkeep +0 -0
  313. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/self_parsing/.gitkeep +0 -0
  314. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/self_parsing/__init__.py +0 -0
  315. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/self_parsing/conftest.py +0 -0
  316. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/self_parsing/test_architecture.py +0 -0
  317. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/self_parsing/test_drift.py +0 -0
  318. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/self_parsing/test_fractal.py +0 -0
  319. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/self_parsing/test_init_ontology_roundtrip.py +0 -0
  320. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/self_parsing/test_overview.py +0 -0
  321. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/self_parsing/test_self_parse.py +0 -0
  322. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/self_parsing/test_self_parse_ts.py +0 -0
  323. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/self_parsing/test_suggest.py +0 -0
  324. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/.gitkeep +0 -0
  325. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/guardian_stubs.py +0 -0
  326. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/review_path_inventory.txt +0 -0
  327. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test___main__.py +0 -0
  328. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_analyzer.py +0 -0
  329. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_annotation_edges.py +0 -0
  330. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_audit.py +0 -0
  331. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_auto_refresh.py +0 -0
  332. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_backfill_calibration_fingerprint.py +0 -0
  333. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_backfill_review_fingerprint.py +0 -0
  334. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_check_pytest_raises.py +0 -0
  335. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_check_test_count.py +0 -0
  336. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_class_cohesion.py +0 -0
  337. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_cli.py +0 -0
  338. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_cohesion.py +0 -0
  339. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_context_service.py +0 -0
  340. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_di_acceptance.py +0 -0
  341. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_drift.py +0 -0
  342. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_drift_service.py +0 -0
  343. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_extractor_registry.py +0 -0
  344. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_features_source.py +0 -0
  345. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_fingerprint.py +0 -0
  346. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_fractal.py +0 -0
  347. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_freshness.py +0 -0
  348. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_gen_ideal_graph.py +0 -0
  349. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_generate_mcp_ref.py +0 -0
  350. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_generated.py +0 -0
  351. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_graph_json.py +0 -0
  352. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_axes.py +0 -0
  353. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_bench.py +0 -0
  354. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_bench_script.py +0 -0
  355. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_calibrate.py +0 -0
  356. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_calibrate_script.py +0 -0
  357. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_chunked.py +0 -0
  358. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_chunker.py +0 -0
  359. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_collector.py +0 -0
  360. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_core.py +0 -0
  361. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_diff_index.py +0 -0
  362. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_evidence.py +0 -0
  363. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_findings.py +0 -0
  364. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_martian.py +0 -0
  365. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_martian_script.py +0 -0
  366. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_martian_union.py +0 -0
  367. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_metrics.py +0 -0
  368. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_mistral_sampling.py +0 -0
  369. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_ollama_sampling.py +0 -0
  370. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_ollama_truncation.py +0 -0
  371. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_openrouter.py +0 -0
  372. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_poster.py +0 -0
  373. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_providers.py +0 -0
  374. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_providers_name.py +0 -0
  375. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_recording.py +0 -0
  376. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_render.py +0 -0
  377. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_replay_skeptic.py +0 -0
  378. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_review_script.py +0 -0
  379. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_runner.py +0 -0
  380. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_salvage.py +0 -0
  381. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_guardian_skeptic.py +0 -0
  382. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_health_scorer.py +0 -0
  383. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_import_acceptance.py +0 -0
  384. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_inject_architecture_graph.py +0 -0
  385. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_mcp_server.py +0 -0
  386. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_mcp_tool_schemas.py +0 -0
  387. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_mermaid.py +0 -0
  388. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_metrics.py +0 -0
  389. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_metrics_file_coupling.py +0 -0
  390. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_metrics_resolution.py +0 -0
  391. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_models.py +0 -0
  392. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_name_load_positions.py +0 -0
  393. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_ontology_compliance.py +0 -0
  394. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_ontology_init.py +0 -0
  395. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_orphans.py +0 -0
  396. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_overview.py +0 -0
  397. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_overview_tools.py +0 -0
  398. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_package_view.py +0 -0
  399. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_paths.py +0 -0
  400. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_patterns_yaml.py +0 -0
  401. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_pipeline.py +0 -0
  402. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_pipeline_incremental_symbols.py +0 -0
  403. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_pipeline_ts_workspaces.py +0 -0
  404. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_prompt.py +0 -0
  405. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_python_annotations.py +0 -0
  406. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_python_dependencies.py +0 -0
  407. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_python_extractor.py +0 -0
  408. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_query_coverage.py +0 -0
  409. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_quotient.py +0 -0
  410. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_recordings_from_corpus.py +0 -0
  411. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_resolver.py +0 -0
  412. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_resolver_import_layout.py +0 -0
  413. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_resolver_indices.py +0 -0
  414. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_resolver_language_scope.py +0 -0
  415. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_resolver_phantom_internal.py +0 -0
  416. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_resolver_symbols.py +0 -0
  417. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_resolver_ts_declarations.py +0 -0
  418. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_resolver_ts_workspaces.py +0 -0
  419. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_review_fingerprint_closure.py +0 -0
  420. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_review_fingerprint_contract.py +0 -0
  421. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_review_fingerprint_digest.py +0 -0
  422. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_review_fingerprint_record.py +0 -0
  423. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_self_types.py +0 -0
  424. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_skeptic_arms.py +0 -0
  425. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_snippet.py +0 -0
  426. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_sqlite_store.py +0 -0
  427. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_suggest_service.py +0 -0
  428. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_temperature_source.py +0 -0
  429. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_triads.py +0 -0
  430. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_tsconfig_paths.py +0 -0
  431. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_type_checking_imports.py +0 -0
  432. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_typescript_extractor.py +0 -0
  433. {codegraph_brain-0.27.0 → codegraph_brain-0.29.0}/tests/unit/test_uplift.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.29.0"
3
+ }
@@ -1,5 +1,49 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.29.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.28.0...codegraph-brain-v0.29.0) (2026-10-14)
4
+
5
+
6
+ ### Features
7
+
8
+ * **bench:** cgis-narrow arm — the cgis arm with three tools listed ([#586](https://github.com/zaebee/codegraph-brain/issues/586)) ([5a5c836](https://github.com/zaebee/codegraph-brain/commit/5a5c836e2fda1f41e6420e0d1160a56a0859ef94))
9
+ * **mcp:** agent-sized cgis_analyze_impact — no test callers, files as dead ends, node budget ([#563](https://github.com/zaebee/codegraph-brain/issues/563)) ([d173d57](https://github.com/zaebee/codegraph-brain/commit/d173d5791e30983b58e7cbe7fb91cac8c7059154))
10
+ * **mcp:** output_format="text" for traversals; trace_flow gets impact's node budget and test screen ([#581](https://github.com/zaebee/codegraph-brain/issues/581)) ([a1dd2b8](https://github.com/zaebee/codegraph-brain/commit/a1dd2b871d34c22e29f25103b9ee349a004ea28a))
11
+ * **mcp:** server instructions in initialize, CGIS_MCP_TOOLS allowlist ([#565](https://github.com/zaebee/codegraph-brain/issues/565)) ([3c37874](https://github.com/zaebee/codegraph-brain/commit/3c37874f78e4a3d439be153641afe1fc19a32f03))
12
+ * **query:** resolve an FQN given with the directories above the graph ([#571](https://github.com/zaebee/codegraph-brain/issues/571)) ([ea43ba9](https://github.com/zaebee/codegraph-brain/commit/ea43ba9f5451e0ee55575570eb8a5341eb906115))
13
+ * **resolver:** DISPATCHES edges from a base-class method to each override ([#575](https://github.com/zaebee/codegraph-brain/issues/575)) ([827143e](https://github.com/zaebee/codegraph-brain/commit/827143ee2a13866602daaea84f1142106c69d49d))
14
+ * **resolver:** type a parameter annotated with an Annotated[T, Depends(...)] alias as T ([#572](https://github.com/zaebee/codegraph-brain/issues/572)) ([fc33b20](https://github.com/zaebee/codegraph-brain/commit/fc33b202b607aecda9d3b317edc1d16f2ba350c6))
15
+ * **workspaces:** read pnpm-workspace.yaml above the ingest root ([#591](https://github.com/zaebee/codegraph-brain/issues/591)) ([b0d67f8](https://github.com/zaebee/codegraph-brain/commit/b0d67f8124da3c414b852f045f6127ab2eec5c3e))
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * **bench:** agent A/B runner survives a failed session and continues run numbers ([#578](https://github.com/zaebee/codegraph-brain/issues/578)) ([bc303eb](https://github.com/zaebee/codegraph-brain/commit/bc303eb82e3ef25c01093452c2d68e8c3a53d1d9))
21
+ * **bench:** guard — no false refusal on a grep for an import, no bypass through env/newline/prefix ([#590](https://github.com/zaebee/codegraph-brain/issues/590)) ([73ee4e2](https://github.com/zaebee/codegraph-brain/commit/73ee4e260cf3a65a31630f4cc6a46b618872ce7f))
22
+ * **ingest:** read the tsconfig.json and package.json above a sub-directory ingest root ([#560](https://github.com/zaebee/codegraph-brain/issues/560)) ([9722f8c](https://github.com/zaebee/codegraph-brain/commit/9722f8c18da97cba20400cbd109fd8fea684a5e3))
23
+ * **query:** one effective_prefix rule for every FQN-prefix entry point ([#585](https://github.com/zaebee/codegraph-brain/issues/585)) ([b5f10b3](https://github.com/zaebee/codegraph-brain/commit/b5f10b360ab021ba2dcd8dd9a211b222c989e183))
24
+ * **resolver:** TypeScript imports of declared npm packages are EXTERNAL ([#557](https://github.com/zaebee/codegraph-brain/issues/557)) ([73d380a](https://github.com/zaebee/codegraph-brain/commit/73d380acb915671e9597fc01eaf509ba29e78a8b))
25
+
26
+
27
+ ### Documentation
28
+
29
+ * auto-sync architecture graph and MCP reference ([#558](https://github.com/zaebee/codegraph-brain/issues/558)) ([ee275a4](https://github.com/zaebee/codegraph-brain/commit/ee275a412b9af8b2d900e16b84335a343f68a7fa))
30
+ * auto-sync architecture graph and MCP reference ([#564](https://github.com/zaebee/codegraph-brain/issues/564)) ([50637b3](https://github.com/zaebee/codegraph-brain/commit/50637b3b8d01cb4be01cbae3710f21a1cb5f1b02))
31
+ * auto-sync architecture graph and MCP reference ([#573](https://github.com/zaebee/codegraph-brain/issues/573)) ([225499d](https://github.com/zaebee/codegraph-brain/commit/225499dd1a17163160e270b9dbeb73a7ad376b7d))
32
+ * **bench:** agent A/B after [#568](https://github.com/zaebee/codegraph-brain/issues/568) and [#550](https://github.com/zaebee/codegraph-brain/issues/550) — cgis-forced at $0.184 against control $0.298 ([#574](https://github.com/zaebee/codegraph-brain/issues/574)) ([8e0ef37](https://github.com/zaebee/codegraph-brain/commit/8e0ef37b76fffc01e32338c67325535f8cb501f4))
33
+ * **bench:** agent A/B on a task no fix was tuned on (occupied_window) ([#576](https://github.com/zaebee/codegraph-brain/issues/576)) ([a6eb679](https://github.com/zaebee/codegraph-brain/commit/a6eb679b51ae7fd3f52c73eb2da005857f2e6126))
34
+ * **bench:** agent A/B on three deep-chain cgis tasks — impact pays, trace_flow's 32k answer does not ([#579](https://github.com/zaebee/codegraph-brain/issues/579)) ([eb7e951](https://github.com/zaebee/codegraph-brain/commit/eb7e9516a8e952fdbd2266c43accfee1a16109e7))
35
+ * **bench:** agent A/B results for owner-impact-credit-wallet after [#563](https://github.com/zaebee/codegraph-brain/issues/563) and [#565](https://github.com/zaebee/codegraph-brain/issues/565) ([#570](https://github.com/zaebee/codegraph-brain/issues/570)) ([ae84feb](https://github.com/zaebee/codegraph-brain/commit/ae84febcc2621a92d00233e81e994171b6b14cd8))
36
+ * **bench:** flow A/B after [#581](https://github.com/zaebee/codegraph-brain/issues/581) — text cut the answer 4x and the cost by a third; precision unchanged ([#583](https://github.com/zaebee/codegraph-brain/issues/583)) ([e36c850](https://github.com/zaebee/codegraph-brain/commit/e36c85099a85300f46a9b6fa28d375fa68f67227))
37
+ * **bench:** unprompted agents do not call cgis — a short menu changes nothing, one instruction line 2 of 6 ([#587](https://github.com/zaebee/codegraph-brain/issues/587)) ([6534f74](https://github.com/zaebee/codegraph-brain/commit/6534f74f23fcd3d1193bda2201bbf598959cac8e))
38
+
39
+ ## [0.28.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.27.0...codegraph-brain-v0.28.0) (2026-10-02)
40
+
41
+
42
+ ### Features
43
+
44
+ * **bench:** agent A/B harness for cgis vs no cgis ([#547](https://github.com/zaebee/codegraph-brain/issues/547)) ([788d67f](https://github.com/zaebee/codegraph-brain/commit/788d67f230f1129379afb08596da5a4ef9e1c302))
45
+ * **bench:** cgis-instructed and cgis-forced arms, four multi-hop impact tasks ([#549](https://github.com/zaebee/codegraph-brain/issues/549)) ([deef289](https://github.com/zaebee/codegraph-brain/commit/deef289fe9a9a302088661acbf3c6f3d33fc50fe))
46
+
3
47
  ## [0.27.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.26.0...codegraph-brain-v0.27.0) (2026-10-02)
4
48
 
5
49
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: codegraph-brain
3
- Version: 0.27.0
3
+ Version: 0.29.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
@@ -0,0 +1,3 @@
1
+ # Raw stream-json sessions: large, and they quote repository source verbatim
2
+ # (owner-api is private). results.jsonl keeps the scored line for each.
3
+ transcripts/
@@ -0,0 +1,111 @@
1
+ # Agent A/B: the same questions with and without cgis (#543)
2
+
3
+ Does an agent answer a code question better, or cheaper, when the cgis MCP
4
+ server is connected? This directory holds the questions, their answer keys and
5
+ the results. The runner is `scripts/agent_ab.py`; parsing and scoring live in
6
+ `src/cgis/bench/` and are unit-tested on recorded transcripts, so the harness
7
+ can change without spending anything.
8
+
9
+ Design notes and cost estimates: `research/543.md` in the project files.
10
+
11
+ ## What is measured
12
+
13
+ **Primary, fixed before the first paid run:**
14
+
15
+ - `recall`: the share of the answer key the answer names (symbols, files and
16
+ literal facts, pooled). `precision`: the share of what it names that is in
17
+ the key or in its `allowed_*` lists.
18
+ - `cost_usd`: `total_cost_usd` from the session's closing event.
19
+
20
+ The hypothesis is that the `cgis` arm reaches at least the control arm's recall
21
+ for no more cost on `impact` and `flow` questions, and that `control`-type
22
+ questions show what cgis costs when it cannot help.
23
+
24
+ **Secondary:** tool calls by name, distinct files read and bytes read, turns,
25
+ wall time, token usage, and the context the session ends holding
26
+ (`residual_context`).
27
+
28
+ **For #220, not for ranking arms:** `sufficiency` (what the agent did right
29
+ after each cgis answer) and `allocation` (the share of files cgis named that
30
+ the final answer relied on). Definitions are in the docstring of
31
+ `src/cgis/bench/transcript.py`.
32
+
33
+ The answer key is written from the code and checked by hand, never taken from
34
+ the cgis graph: a key derived from the graph would agree with every edge the
35
+ resolver gets wrong. Each task's `notes` say how it was checked.
36
+
37
+ ## Arms
38
+
39
+ | arm | MCP | plugin skills | graph files | cgis / uv on PATH |
40
+ |---|---|---|---|---|
41
+ | `control` | none (`--strict-mcp-config`, empty config) | no | all deleted | no |
42
+ | `cgis` | this checkout's `cgis-mcp` | yes (the plugin minus its `.mcp.json`) | `graph.db` built before the clock starts | no |
43
+ | `cgis-narrow` | as `cgis`, listing only `analyze_impact`, `find_symbol`, `trace_flow` (`CGIS_MCP_TOOLS`) | as `cgis` | as `cgis` | no |
44
+ | `cgis-instructed` | as `cgis` | as `cgis` | as `cgis` | one line: query cgis first |
45
+ | `cgis-forced` | as `cgis` | as `cgis` | as `cgis` | as `cgis-instructed`, and the guard refuses Read/Grep/Glob/Bash until one cgis call |
46
+
47
+ `cgis-narrow` asks whether a short tool menu gets an unprompted agent to call the
48
+ graph (#542). The server instructions and the plugin skill still name all fifteen
49
+ tools, so it measures a short menu with a longer guide beside it. Each results line
50
+ records `cgis_tools`, the number of `mcp__cgis__*` tools the session was offered,
51
+ so an `env` the client ignored would show as 15. With no `--arm` a run now covers
52
+ five arms.
53
+
54
+ `cgis-instructed` exists because the first pilot's `cgis` arm made no cgis call in
55
+ 12 of 12 sessions: with the server connected and the skill loaded, Sonnet still
56
+ went straight to Grep. It stands in for #542's MCP server instructions. It barely moved the agent (2 cgis
57
+ calls in 18 sessions), so `cgis-forced` makes the first graph query mandatory: it
58
+ measures what the graph adds once used, apart from whether the agent picks it.
59
+
60
+ All arms run under `cgis.bench.guard` as a PreToolUse hook, which refuses the
61
+ cgis CLI, uv, sqlite3 and any read of `graph.db`/`graph.json` through Bash or
62
+ the file tools. Without it the control arm is not a control: codegraph's own
63
+ benchmark caught its control agent calling their CLI through Bash in 26 of 28
64
+ runs. The same predicate marks a finished run `contaminated` if a blocked call
65
+ ever returned output; such runs are counted in the report and left out of the
66
+ medians.
67
+
68
+ All arms allow `Read`, `Grep`, `Glob` and `Bash` (plus `mcp__cgis` in the
69
+ treatment arms, which has no server in control) and refuse edits, web access and
70
+ sub-agents, under `--permission-mode dontAsk`. Each session starts in a fresh
71
+ detached worktree at the task's pinned commit, with `--no-session-persistence`
72
+ and `--setting-sources project`, so user settings and earlier sessions do not
73
+ reach it.
74
+
75
+ ## Running
76
+
77
+ ```bash
78
+ uv run python scripts/agent_ab.py run --dry-run # commands only, spends nothing
79
+ uv run python scripts/agent_ab.py run --task cgis-impact-language-for --runs 2
80
+ uv run python scripts/agent_ab.py run --repo owner-api=../ownima-backend
81
+ uv run python scripts/agent_ab.py report
82
+ ```
83
+
84
+ `--model` defaults to `claude-sonnet-5-5`; `--max-budget-usd` (default 2.00)
85
+ caps each session. Every non-dry run is a paid session, so this never runs in
86
+ CI. Transcripts are written to `transcripts/<task>/<arm>-<sha7>-<run>.jsonl`, with
87
+ the first 7 characters of the cgis commit (git-ignored); `results.jsonl` gets one
88
+ line per (task, arm, cgis commit, run) and is meant to be committed with the
89
+ write-up.
90
+
91
+ Run numbers continue from the highest one already in `--results` for the same
92
+ task, arm and cgis commit, so a second invocation that finishes an interrupted
93
+ batch adds runs instead of reusing them. A session that fails is written as a
94
+ line with `failed` set to the reason, and the batch goes on: an ingest or
95
+ worktree that raises gives a line with no metrics, and a `claude -p` that exits
96
+ non-zero keeps its scored metrics and cost but is marked failed too. `run` exits
97
+ 1 at the end if any session failed; `report` counts failed sessions in their own
98
+ column and leaves them out of the medians. A dry run writes nothing.
99
+
100
+ ## Tasks
101
+
102
+ | id | type | repo |
103
+ |---|---|---|
104
+ | `cgis-impact-language-for` | impact | cgis |
105
+ | `cgis-flow-ingest-to-sqlite` | flow | cgis |
106
+ | `cgis-orientation-call-resolution` | orientation | cgis |
107
+ | `cgis-control-sqlite-pragmas` | control | cgis |
108
+
109
+ This repository's `CLAUDE.md` describes its architecture in some detail. It is
110
+ the same in both arms, but it lowers what a graph can add here, which is one
111
+ reason owner-api and httpx come next.
@@ -0,0 +1,177 @@
1
+ # Agent A/B results
2
+
3
+ One section per run, newest first. The raw lines are in `results.jsonl`; the
4
+ transcripts they point at are git-ignored and stay on the machine that ran them.
5
+
6
+ ## 2026-10-14: does one instruction line get the agent to call cgis?
7
+
8
+ cgis at 5a5c836, `cgis-instructed` — the `cgis` arm plus one appended system-prompt
9
+ line, "query cgis first, then read source only to confirm", the nearest stand-in for
10
+ a line in a project's CLAUDE.md. Same two impact tasks, 3 runs each, about $0.8.
11
+
12
+ | task | cgis calls per run | cost per run |
13
+ |---|---|---|
14
+ | `cgis-impact-drift-same-name` | 0, 0, **1** | 0.184, 0.148, **0.075** |
15
+ | `cgis-impact-transitive-tsconfig` | **1**, 0, 0 | **0.099**, 0.154, 0.153 |
16
+
17
+ - **The line moves the agent a little: 2 of 6 sessions called the graph**, against 0
18
+ of 18 without it. Both made one call, and both were the cheapest runs of the
19
+ six, at the level of `cgis-forced` (0.085 / 0.091). The other four ignored the
20
+ line and cost more than plain `cgis` (median 0.150 against 0.126–0.138).
21
+ - So an instruction is a coin toss weighted against the graph; the hook that refuses
22
+ Read/Grep/Bash until one cgis call (`cgis-forced`) is what delivers the saving
23
+ reliably. A project wanting the gain needs that hook, not a sentence.
24
+ - One run is marked `contaminated` with no cgis CLI call in it: on a task in this
25
+ repository every path contains `cgis/`, and the guard's predicate took the agent's
26
+ own `grep`/`sed` over `src/cgis/...` for one. A harness false positive, kept out of
27
+ the medians by the report as usual.
28
+
29
+ ## 2026-10-14: does a short tool menu get an unprompted agent to call cgis? (#542 item 3)
30
+
31
+ cgis at dbf3de9 (the `cgis-narrow` arm of #586), Sonnet 5.5, 3 runs per arm, 0 failed,
32
+ 0 contaminated, about $1.6. One probe session confirmed the narrowing reached the
33
+ client: the `init` event listed exactly `mcp__cgis__cgis_analyze_impact`,
34
+ `mcp__cgis__cgis_find_symbol`, `mcp__cgis__cgis_trace_flow`.
35
+
36
+ | task | arm | cgis calls | recall | precision | median $ |
37
+ |---|---|---|---|---|---|
38
+ | `cgis-impact-drift-same-name` | cgis (15 tools) | 0, 0, 0 | 1.00 | 1.00 | 0.126 |
39
+ | | cgis-narrow (3 tools) | 0, 0, 0 | 1.00 | 1.00 | 0.125 |
40
+ | `cgis-impact-transitive-tsconfig` | cgis | 0, 0, 0 | 1.00 | 1.00 | 0.138 |
41
+ | | cgis-narrow | 0, 0, 0 | 1.00 | 1.00 | 0.154 |
42
+
43
+ - **Refuted.** Three tools instead of fifteen changed nothing: no unprompted
44
+ session called the graph, here or in any of the six `cgis` sessions before it —
45
+ 0 of 18 today, across four tasks. The server instructions (#542 item 1) did not
46
+ move it either. Item 3's smaller default set has no evidence behind it.
47
+ - These are the two tasks where `cgis-forced` was about 30% cheaper than control
48
+ (#579), so the graph would have paid; the agent never looked.
49
+ - A likely reason sits in the client: Claude Code defers MCP tools, listing names
50
+ only, so a first call needs a ToolSearch to load the schema — every forced
51
+ session made one. An agent holding Grep and Bash, with a task grep finishes in
52
+ 7–13 calls, does not take that step unasked.
53
+ - Confound, as the README notes: the instructions and the plugin skill still name
54
+ all fifteen tools beside the three offered.
55
+
56
+ ## 2026-10-14: `cgis-flow-ingest-to-sqlite` after #581 (text format, trace budget)
57
+
58
+ cgis at a1dd2b8, Sonnet 5.5, 3 runs per arm, 0 failed, 0 contaminated, about $0.6.
59
+
60
+ | arm | recall | precision | median $ | trace answer |
61
+ |---|---|---|---|---|
62
+ | control | 1.00 | 0.94 | **0.101** | — |
63
+ | cgis-forced, before (#579) | 1.00 | 0.52 | 0.167 | 32,637 chars of json |
64
+ | cgis-forced, now | 1.00 | 0.58 | 0.112 | 6.3–8.9k chars of text |
65
+
66
+ - **Size: fixed.** All three sessions asked for `output_format="text"` on their
67
+ own (the server instructions now say to), and the answer shrank about 4×.
68
+ Cost fell by a third, to 11% above control.
69
+ - **Precision: not fixed.** Given every node the root reaches, the agent still
70
+ lists most of them (17–21 outside the key: `_compute_hash`,
71
+ `_is_noop_incremental`, `ResolverEngine` helpers). Control reads the code and
72
+ names the spine. The format no longer costs the agent; deciding which
73
+ branches are the main path is the part the graph does not do.
74
+ - Two sessions first called `cgis_find_symbol(query="ingest", fqn_prefix="src.cgis")`
75
+ and got nothing: #568 taught `resolve_fqn` to drop a directory above the
76
+ graph, but `find_symbol`'s `fqn_prefix` filter was not given the same rule.
77
+
78
+ ## 2026-10-14: three cgis tasks with a deep chain
79
+
80
+ cgis at bc303eb, Sonnet 5.5, 3 runs per arm, 0 failed, 0 contaminated, about $2.3.
81
+ None of these tasks was used to find the recent fixes.
82
+
83
+ | task | arm | recall | precision | median $ | median tool calls | cgis calls |
84
+ |---|---|---|---|---|---|---|
85
+ | `cgis-impact-drift-same-name` | control | 1.00 | 1.00 | 0.124 | 9 | — |
86
+ | | cgis-forced | 1.00 | 1.00 | **0.085** | 3 | 1, 1, 1 |
87
+ | `cgis-impact-transitive-tsconfig` | control | 1.00 | 1.00 | 0.126 | 7 | — |
88
+ | | cgis-forced | 1.00 | 1.00 | **0.091** | 4 | 1, 2, 1 |
89
+ | `cgis-flow-ingest-to-sqlite` | control | 1.00 | 0.86 | **0.112** | 5 | — |
90
+ | | cgis-forced | 1.00 | 0.52 | 0.167 | 4 | 2, 2, 2 |
91
+
92
+ - **Impact across several hops pays:** about 30% cheaper on both impact tasks,
93
+ with one cgis call doing what took control 7–9 greps and reads. Together with
94
+ `credit_wallet`, that makes three impact tasks out of three where the graph
95
+ wins once the question needs more than one hop.
96
+ - **Flow does not, and the cause is the answer's size.** Every forced session
97
+ called `cgis_trace_flow(cgis.cli.ingest, depth=3, json)` and got **32,637
98
+ characters**, the bloat #551 fixed for impact only: trace has no node budget
99
+ and no test filter. Given everything downstream, the agent cannot tell the
100
+ main path from side branches and names them all (precision 0.52, 20 extra
101
+ symbols such as every `ResolverEngine._resolved_*_edge`).
102
+ - `occupied_window` (above) and these together say where cgis earns its place:
103
+ multi-hop impact. A one-hop caller list and a "main path" flow question are
104
+ not where it helps today.
105
+
106
+ ## 2026-10-14: `owner-impact-occupied-window-same-name`, a task no fix was tuned on
107
+
108
+ cgis at 827143e (after #551, #568, #550, #545), Sonnet 5.5, 0 contaminated. The
109
+ three fixes before this were all found in `credit_wallet` transcripts and measured
110
+ there; this task checks whether the gain carries to a question they never saw.
111
+
112
+ | arm | runs | recall | precision | median $ | median tool calls | cgis calls per run |
113
+ |---|---|---|---|---|---|---|
114
+ | control | 3 | 1.00 | 1.00 | **0.130** | 2 | — |
115
+ | cgis | 3 | 1.00 | 1.00 | 0.145 | 4 | 0, 0, 0 |
116
+ | cgis-forced | 2 | 1.00 | 1.00 | 0.135 | 3.5 | 2, 1 |
117
+
118
+ - **It does not carry.** On "list the direct callers", with a same-named
119
+ function in another module as the trap, control answered with one grep and
120
+ one look at the imports, and was the cheapest arm. The graph names the four
121
+ callers exactly (`impact depth=1`, 2.5k characters), but there is nothing
122
+ for it to save on a one-hop question that grep plus the imports already
123
+ answer.
124
+ - The `credit_wallet` gain came from a deep transitive chain through DI. That
125
+ is where the graph pays, so the question for #542's default tool set is
126
+ which kinds of question agents ask, not whether cgis is cheaper in general.
127
+ - `cgis` made no graph call again: 0 in 6 sessions across the two tasks.
128
+ - `cgis-forced` has 2 runs, not 3. The host ran out of memory, and earlyoom
129
+ sent SIGTERM to the third session's `cgis ingest`, which aborted the runner
130
+ twice. Not a cgis failure. The runner stops at the first failed ingest
131
+ instead of recording it and going on.
132
+
133
+ ## 2026-10-14: `owner-impact-credit-wallet`, after #568 and #550
134
+
135
+ cgis at fc33b20, Sonnet 5.5, 3 runs per arm, 0 contaminated, about $1.5 in total.
136
+ `cgis` was not re-run: it made no cgis call on this task in the run below.
137
+
138
+ | arm | recall | precision | median $ | median tool calls | cgis calls per run |
139
+ |---|---|---|---|---|---|
140
+ | control | 1.00 | 1.00 | 0.298 | 7 | — |
141
+ | cgis-forced | 1.00 | 1.00 | **0.184** | 5 | 2, 5, 1 |
142
+
143
+ - `cgis-forced` went from $0.235 to $0.184 median and is now about 38% cheaper
144
+ than control. Control was unchanged ($0.30 to $0.298).
145
+ - **#568.** Two of the three sessions opened with
146
+ `app.domains.finance.service.credit_wallet` again, and this time it resolved:
147
+ the first answer was the full chain (6,746 characters), with no not-found
148
+ first. The third tried the bare `credit_wallet`, which is still ambiguous.
149
+ - **#550.** That first answer now includes both routes, `get_top_up` and
150
+ `stripe_webhook`. One session finished on a single cgis call. The greps that
151
+ remain are the agent confirming that `FinanceService.top_up` and the worker
152
+ tasks have no further callers, not looking for missing ones.
153
+
154
+ ## 2026-10-13: `owner-impact-credit-wallet`, after #563 and #565
155
+
156
+ cgis at 3c37874, Sonnet 5.5, 3 runs per arm, 0 contaminated, about $2.5 in total.
157
+
158
+ | arm | recall | precision | median $ | median tool calls | cgis calls per run |
159
+ |---|---|---|---|---|---|
160
+ | control | 1.00 | 1.00 | 0.30 | 7 | — |
161
+ | cgis | 1.00 | 1.00 | 0.30 | 6 | 0, 0, 0 |
162
+ | cgis-forced | 1.00 | 1.00 | 0.235 | 8 | 3, 11, 3 |
163
+
164
+ - **#551.** The call that returned 51,624 characters in the first pilot,
165
+ `cgis_analyze_impact(domains.finance.service.credit_wallet, depth=8, json)`,
166
+ returned 6,136 here. `cgis-forced` went from more expensive than control
167
+ ($0.207 vs $0.195) to cheaper. Control ranged from $0.198 to $0.327 across
168
+ three runs, so this shows the direction, not the size.
169
+ - **#542.** The `cgis` arm now gets server instructions in `initialize`, and its
170
+ server reported `connected` every time. It still made no cgis call: the task
171
+ is solvable by grep in about seven calls, and the agent took that route.
172
+ - **#568.** Every forced session's first call was
173
+ `app.domains.finance.service.credit_wallet`, built from the file path, which
174
+ is not found because the graph is ingested from `ownima-backend/app`. That
175
+ cost one or two calls per session before the agent found the real FQN.
176
+ - Every arm recovered the two routes the graph misses at this sha
177
+ (`get_top_up`, `stripe_webhook`) by grepping for them.