codegraph-brain 0.14.0__tar.gz → 0.14.1__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 (314) hide show
  1. codegraph_brain-0.14.1/.release-please-manifest.json +3 -0
  2. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/CHANGELOG.md +7 -0
  3. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/PKG-INFO +1 -1
  4. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/pyproject.toml +1 -1
  5. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_backfill_calibration_fingerprint.py +55 -24
  6. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/uv.lock +1 -1
  7. codegraph_brain-0.14.0/.release-please-manifest.json +0 -3
  8. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/.claude-plugin/marketplace.json +0 -0
  9. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/.gitattributes +0 -0
  10. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/.github/workflows/autodoc.yml +0 -0
  11. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/.github/workflows/ci.yml +0 -0
  12. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/.github/workflows/guardian.yml +0 -0
  13. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/.github/workflows/pr-title.yml +0 -0
  14. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/.github/workflows/release-please.yml +0 -0
  15. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/.gitignore +0 -0
  16. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/.pre-commit-config.yaml +0 -0
  17. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/.python-version +0 -0
  18. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/CLAUDE.md +0 -0
  19. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/CONTRIBUTING.md +0 -0
  20. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/LICENSE +0 -0
  21. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/Makefile +0 -0
  22. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/PRIVACY.md +0 -0
  23. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/README.md +0 -0
  24. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/guardian/CURATION.md +0 -0
  25. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/guardian/calibration.jsonl +0 -0
  26. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/guardian/pr-122.yaml +0 -0
  27. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/guardian/pr-140.yaml +0 -0
  28. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/guardian/pr-141.yaml +0 -0
  29. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/guardian/pr-142.yaml +0 -0
  30. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/guardian/pr-143.yaml +0 -0
  31. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/guardian/pr-144.yaml +0 -0
  32. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/guardian/pr-278.yaml +0 -0
  33. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/guardian/pr-313.yaml +0 -0
  34. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/guardian/results.jsonl +0 -0
  35. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian/README.md +0 -0
  36. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian/cal_dot_com.json +0 -0
  37. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian/discourse.json +0 -0
  38. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian/grafana.json +0 -0
  39. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian/keycloak.json +0 -0
  40. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian/sentry.json +0 -0
  41. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian-judged.jsonl +0 -0
  42. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian-p3-judged-run1.jsonl +0 -0
  43. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian-p3-judged-run1.jsonl.corrupted-backup +0 -0
  44. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian-p3-run1.jsonl +0 -0
  45. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian-p3-run2.jsonl +0 -0
  46. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian-p3-run3.jsonl +0 -0
  47. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian-plan.json +0 -0
  48. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian-repeat-judged.jsonl +0 -0
  49. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian-repeat-reviews.jsonl +0 -0
  50. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/benchmarks/martian-reviews.jsonl +0 -0
  51. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/data/.gitkeep +0 -0
  52. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/AUDIT.md +0 -0
  53. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/CASE_STUDY.md +0 -0
  54. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/GUARDIAN_LOCAL_BENCH.md +0 -0
  55. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/GUARDIAN_REMOTE_OLLAMA.md +0 -0
  56. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/architecture/HOW_IT_WORKS.md +0 -0
  57. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/architecture/ONTOLOGY.md +0 -0
  58. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/architecture/PATTERNS_AND_TRIADS.md +0 -0
  59. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/architecture/SELF_PORTRAIT.md +0 -0
  60. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/architecture/diagrams/pipeline_flow.mermaid +0 -0
  61. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/architecture/health_badge.json +0 -0
  62. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/assets/.gitignore +0 -0
  63. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/assets/cgis-app-avatar.png +0 -0
  64. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/assets/cgis-app-avatar.svg +0 -0
  65. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/assets/generate_avatar.py +0 -0
  66. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/examples/.gitkeep +0 -0
  67. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/how-to/AGENT_ONBOARDING.md +0 -0
  68. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/how-to/CLI_USAGE.md +0 -0
  69. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/how-to/MCP_REFERENCE.md +0 -0
  70. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/lab-notes/2026-06-11-chunked-review-negative-result.md +0 -0
  71. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/ontology/.gitkeep +0 -0
  72. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/ontology/core.yaml +0 -0
  73. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/ontology/domains.yaml +0 -0
  74. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/ontology/patterns.yaml +0 -0
  75. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/ontology/tolerances.lock +0 -0
  76. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-06-09-domain-pattern-fingerprint-design.md +0 -0
  77. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-06-09-pattern-alphabet-motif-basis-design.md +0 -0
  78. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-06-10-guardian-sprint-design.md +0 -0
  79. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-06-11-fastapi-di-edges-design.md +0 -0
  80. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-06-11-guardian-chunked-review-design.md +0 -0
  81. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-06-11-guardian-chunker-design.md +0 -0
  82. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-06-11-mcp-drift-validate-fqn-design.md +0 -0
  83. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-06-11-resolver-split-design.md +0 -0
  84. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-06-11-symbol-import-edges-design.md +0 -0
  85. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-06-12-drift-empty-domains-design.md +0 -0
  86. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-06-12-gate-semantics-design.md +0 -0
  87. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-06-12-init-ontology-design.md +0 -0
  88. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-06-12-release-please-ci-design.md +0 -0
  89. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-06-13-suggest-packages-design.md +0 -0
  90. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-06-13-tangle-anti-pattern-design.md +0 -0
  91. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-07-29-guardian-skeptic-scoring-design.md +0 -0
  92. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-07-30-cgis-fractal-design.md +0 -0
  93. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-07-30-cgis-fractal-plan.md +0 -0
  94. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-07-30-chunk-source-filter-design.md +0 -0
  95. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-07-30-chunk-source-filter-plan.md +0 -0
  96. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-07-30-genai-client-close-design.md +0 -0
  97. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-07-30-genai-client-close-plan.md +0 -0
  98. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-07-30-guardian-precision-bench-design.md +0 -0
  99. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-07-30-guardian-precision-bench-plan.md +0 -0
  100. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-07-30-guardian-timeout-retry-design.md +0 -0
  101. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-07-30-guardian-timeout-retry-plan.md +0 -0
  102. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-07-31-finder-bug-class-taxonomy.md +0 -0
  103. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-08-01-aura-autoevolution-poc.md +0 -0
  104. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-08-11-guardian-code-review-bench.md +0 -0
  105. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/2026-08-14-review-fingerprint-design.md +0 -0
  106. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/BLUEPRINT.md +0 -0
  107. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/PRD.md +0 -0
  108. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/TDD.md +0 -0
  109. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-09-fingerprint-drift.md +0 -0
  110. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-10-guardian-context-skeptic-inline.md +0 -0
  111. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-10-guardian-structured-findings-bench.md +0 -0
  112. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-10-motif-basis-part-b.md +0 -0
  113. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-10-unified-pattern-alphabet.md +0 -0
  114. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-11-fastapi-di-edges.md +0 -0
  115. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-11-guardian-chunked-review.md +0 -0
  116. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-11-guardian-chunker.md +0 -0
  117. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-11-mcp-drift-validate-fqn.md +0 -0
  118. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-11-resolver-split.md +0 -0
  119. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-12-drift-empty-domains.md +0 -0
  120. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-12-gate-semantics.md +0 -0
  121. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-12-init-ontology.md +0 -0
  122. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-12-release-please-ci.md +0 -0
  123. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-12-symbol-import-edges.md +0 -0
  124. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-06-13-suggest-packages.md +0 -0
  125. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-07-29-guardian-skeptic-scoring.md +0 -0
  126. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/docs/specs/plans/2026-08-14-review-fingerprint.md +0 -0
  127. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/main.py +0 -0
  128. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/plugin/.claude-plugin/plugin.json +0 -0
  129. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/plugin/.mcp.json +0 -0
  130. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/plugin/README.md +0 -0
  131. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/plugin/skills/cgis/SKILL.md +0 -0
  132. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/plugin/skills/ingest/SKILL.md +0 -0
  133. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/release-please-config.json +0 -0
  134. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/backfill_calibration_fingerprint.py +0 -0
  135. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/backfill_review_fingerprint.py +0 -0
  136. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/check_pytest_raises.py +0 -0
  137. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/colab_bench.sh +0 -0
  138. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/gen_ideal_graph.py +0 -0
  139. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/generate_health.py +0 -0
  140. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/generate_mcp_ref.py +0 -0
  141. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/generate_schema_docs.py +0 -0
  142. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/guardian_bench.py +0 -0
  143. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/guardian_calibrate.py +0 -0
  144. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/guardian_martian.py +0 -0
  145. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/guardian_review.py +0 -0
  146. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/inject_readme_graph.py +0 -0
  147. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/ollama_visitor.sh +0 -0
  148. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/probe_closure_gap.py +0 -0
  149. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/scripts/probe_tier_ladder.py +0 -0
  150. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/__init__.py +0 -0
  151. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/__main__.py +0 -0
  152. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/api/.gitkeep +0 -0
  153. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/api/__init__.py +0 -0
  154. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/api/mcp_server.py +0 -0
  155. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/cli.py +0 -0
  156. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/core/.gitkeep +0 -0
  157. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/core/models.py +0 -0
  158. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/extractors/.gitkeep +0 -0
  159. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/extractors/_python_ast.py +0 -0
  160. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/extractors/_python_classes.py +0 -0
  161. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/extractors/_python_functions.py +0 -0
  162. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/extractors/_python_imports.py +0 -0
  163. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/extractors/_python_types.py +0 -0
  164. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/extractors/base.py +0 -0
  165. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/extractors/python_extractor.py +0 -0
  166. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/extractors/registry.py +0 -0
  167. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/extractors/typescript_extractor.py +0 -0
  168. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/__init__.py +0 -0
  169. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/axes.py +0 -0
  170. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/bench.py +0 -0
  171. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/calibrate.py +0 -0
  172. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/chunked.py +0 -0
  173. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/chunker.py +0 -0
  174. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/collector.py +0 -0
  175. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/core.py +0 -0
  176. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/diff_index.py +0 -0
  177. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/findings.py +0 -0
  178. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/github_poster.py +0 -0
  179. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/martian.py +0 -0
  180. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/metrics.py +0 -0
  181. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/prompts.py +0 -0
  182. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/providers/__init__.py +0 -0
  183. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/providers/base.py +0 -0
  184. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/providers/gemini.py +0 -0
  185. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/providers/mistral.py +0 -0
  186. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/providers/ollama.py +0 -0
  187. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/recording.py +0 -0
  188. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/render.py +0 -0
  189. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/review_fingerprint.py +0 -0
  190. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/runner.py +0 -0
  191. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/guardian/skeptic.py +0 -0
  192. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/pipeline.py +0 -0
  193. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/py.typed +0 -0
  194. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/analysis/__init__.py +0 -0
  195. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/analysis/analyzer.py +0 -0
  196. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/analysis/anomaly.py +0 -0
  197. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/analysis/cohesion.py +0 -0
  198. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/analysis/health.py +0 -0
  199. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/analysis/suggest_service.py +0 -0
  200. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/context/__init__.py +0 -0
  201. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/context/audit.py +0 -0
  202. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/context/context_service.py +0 -0
  203. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/context/prompt.py +0 -0
  204. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/context/snippet.py +0 -0
  205. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/drift/__init__.py +0 -0
  206. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/drift/_scc.py +0 -0
  207. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/drift/drift.py +0 -0
  208. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/drift/drift_service.py +0 -0
  209. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/drift/fingerprint.py +0 -0
  210. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/drift/fractal.py +0 -0
  211. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/drift/ontology_init.py +0 -0
  212. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/drift/quotient.py +0 -0
  213. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/drift/triads.py +0 -0
  214. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/engine.py +0 -0
  215. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/fqn.py +0 -0
  216. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/render/__init__.py +0 -0
  217. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/render/graph_json.py +0 -0
  218. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/render/mermaid.py +0 -0
  219. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/query/render/metrics.py +0 -0
  220. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/resolver/.gitkeep +0 -0
  221. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/resolver/__init__.py +0 -0
  222. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/resolver/engine.py +0 -0
  223. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/resolver/indices.py +0 -0
  224. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/resolver/symbols.py +0 -0
  225. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/resolver/uplift.py +0 -0
  226. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/storage/.gitkeep +0 -0
  227. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/src/cgis/storage/sqlite_store.py +0 -0
  228. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/integration/.gitkeep +0 -0
  229. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/self_parsing/.gitkeep +0 -0
  230. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/self_parsing/__init__.py +0 -0
  231. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/self_parsing/conftest.py +0 -0
  232. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/self_parsing/test_architecture.py +0 -0
  233. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/self_parsing/test_drift.py +0 -0
  234. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/self_parsing/test_fractal.py +0 -0
  235. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/self_parsing/test_init_ontology_roundtrip.py +0 -0
  236. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/self_parsing/test_self_parse.py +0 -0
  237. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/self_parsing/test_self_parse_ts.py +0 -0
  238. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/self_parsing/test_suggest.py +0 -0
  239. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/.gitkeep +0 -0
  240. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/conftest.py +0 -0
  241. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/guardian_stubs.py +0 -0
  242. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/review_path_inventory.txt +0 -0
  243. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test___main__.py +0 -0
  244. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_analyzer.py +0 -0
  245. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_audit.py +0 -0
  246. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_backfill_review_fingerprint.py +0 -0
  247. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_check_pytest_raises.py +0 -0
  248. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_cli.py +0 -0
  249. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_cohesion.py +0 -0
  250. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_context_service.py +0 -0
  251. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_di_acceptance.py +0 -0
  252. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_drift.py +0 -0
  253. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_drift_service.py +0 -0
  254. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_extractor_registry.py +0 -0
  255. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_fingerprint.py +0 -0
  256. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_fqn.py +0 -0
  257. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_fractal.py +0 -0
  258. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_gen_ideal_graph.py +0 -0
  259. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_generate_mcp_ref.py +0 -0
  260. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_graph_json.py +0 -0
  261. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_axes.py +0 -0
  262. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_bench.py +0 -0
  263. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_bench_script.py +0 -0
  264. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_calibrate.py +0 -0
  265. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_calibrate_script.py +0 -0
  266. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_chunked.py +0 -0
  267. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_chunker.py +0 -0
  268. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_collector.py +0 -0
  269. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_core.py +0 -0
  270. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_diff_index.py +0 -0
  271. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_findings.py +0 -0
  272. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_martian.py +0 -0
  273. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_martian_script.py +0 -0
  274. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_martian_union.py +0 -0
  275. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_metrics.py +0 -0
  276. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_mistral_sampling.py +0 -0
  277. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_ollama_sampling.py +0 -0
  278. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_ollama_truncation.py +0 -0
  279. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_poster.py +0 -0
  280. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_providers.py +0 -0
  281. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_providers_name.py +0 -0
  282. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_recording.py +0 -0
  283. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_render.py +0 -0
  284. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_review_script.py +0 -0
  285. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_runner.py +0 -0
  286. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_salvage.py +0 -0
  287. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_guardian_skeptic.py +0 -0
  288. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_health_scorer.py +0 -0
  289. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_import_acceptance.py +0 -0
  290. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_mcp_server.py +0 -0
  291. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_mermaid.py +0 -0
  292. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_metrics.py +0 -0
  293. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_models.py +0 -0
  294. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_ontology_compliance.py +0 -0
  295. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_ontology_init.py +0 -0
  296. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_patterns_yaml.py +0 -0
  297. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_pipeline.py +0 -0
  298. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_prompt.py +0 -0
  299. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_python_extractor.py +0 -0
  300. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_quotient.py +0 -0
  301. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_resolver.py +0 -0
  302. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_resolver_indices.py +0 -0
  303. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_resolver_symbols.py +0 -0
  304. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_review_fingerprint_closure.py +0 -0
  305. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_review_fingerprint_contract.py +0 -0
  306. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_review_fingerprint_digest.py +0 -0
  307. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_review_fingerprint_record.py +0 -0
  308. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_snippet.py +0 -0
  309. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_sqlite_store.py +0 -0
  310. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_suggest_service.py +0 -0
  311. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_temperature_source.py +0 -0
  312. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_triads.py +0 -0
  313. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_typescript_extractor.py +0 -0
  314. {codegraph_brain-0.14.0 → codegraph_brain-0.14.1}/tests/unit/test_uplift.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.14.1"
3
+ }
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.14.1](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.14.0...codegraph-brain-v0.14.1) (2026-08-16)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **bench:** cutting a release turned the new reachability tests red ([#397](https://github.com/zaebee/codegraph-brain/issues/397)) ([efbca37](https://github.com/zaebee/codegraph-brain/commit/efbca37c13e452fdf7266619b36d86b0e11bb795))
9
+
3
10
  ## [0.14.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.13.0...codegraph-brain-v0.14.0) (2026-08-16)
4
11
 
5
12
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: codegraph-brain
3
- Version: 0.14.0
3
+ Version: 0.14.1
4
4
  Summary: Semantic code graph for AI agents — deterministic FQN resolution, impact analysis and architectural drift gates, exposed over MCP.
5
5
  Project-URL: Homepage, https://github.com/zaebee/codegraph-brain
6
6
  Project-URL: Repository, https://github.com/zaebee/codegraph-brain
@@ -7,7 +7,7 @@ packages = ["src/cgis"]
7
7
 
8
8
  [project]
9
9
  name = "codegraph-brain"
10
- version = "0.14.0"
10
+ version = "0.14.1"
11
11
  description = "Semantic code graph for AI agents — deterministic FQN resolution, impact analysis and architectural drift gates, exposed over MCP."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.12"
@@ -632,16 +632,24 @@ def _trunk() -> tuple[str, str]:
632
632
  def _protection_for(sha: str, durable: list[str]) -> str | None:
633
633
  """What keeps `sha` alive, or None when only a deletable branch does.
634
634
 
635
- A tag pins the commit and everything behind it, so a sha that is an
636
- ancestor of *any* tag release tags included is safe. Failing that, being
637
- an ancestor of a durable branch is equally safe.
635
+ Both arms mean "safe"; the order decides only which reason is reported, and
636
+ the trunk is checked first on purpose. `git tag --contains` matches any tag
637
+ whose commit has `sha` as an **ancestor**, so the moment a release tag lands
638
+ on the trunk tip it contains the entire trunk history. Ask about tags first
639
+ and every trunk commit answers "tag codegraph-brain-vX.Y.Z" — true, but it
640
+ attributes a commit's safety to a release that merely happened to come after
641
+ it, and it leaves the trunk arm unreachable for any real trunk commit.
642
+
643
+ That is not hypothetical: the first version asked tags first, and cutting
644
+ 0.14.0 turned two tests red within the minute, because after a release there
645
+ is no untagged commit on the trunk at all.
638
646
  """
639
- tags = [line for line in _git("tag", "--contains", sha).stdout.splitlines() if line]
640
- if tags:
641
- return f"tag {tags[0]}"
642
647
  for ref in durable:
643
648
  if _git("merge-base", "--is-ancestor", sha, ref).returncode == 0:
644
649
  return f"ancestor of {ref}"
650
+ tags = [line for line in _git("tag", "--contains", sha).stdout.splitlines() if line]
651
+ if tags:
652
+ return f"tag {tags[0]}"
645
653
  return None
646
654
 
647
655
 
@@ -716,30 +724,53 @@ class TestProtectionIsDecidedByBothHalves:
716
724
  assert protection is not None
717
725
  assert protection.startswith("tag ")
718
726
 
719
- def test_a_durable_branch_protects_an_untagged_commit(self) -> None:
720
- """The tip of the trunk carries no tag until the next release, and is safe.
727
+ def test_the_trunk_protects_its_own_tip(self) -> None:
728
+ """A commit on the trunk is reported as protected by the trunk.
721
729
 
722
730
  `origin/main`, not `HEAD`. HEAD is whatever branch the run happens to be
723
731
  on — a feature branch in CI and during development — and a feature
724
- branch tip is *not* an ancestor of the trunk, so keying on it would make
725
- this test fail for the one reason it is not about.
726
-
727
- The tag assertion comes first and is load-bearing: if this commit
728
- happened to sit under a tag, `_protection_for` would return via the tag
729
- branch and the durable-branch half would never run, leaving the test
730
- green while proving nothing about it.
732
+ branch tip is *not* an ancestor of the trunk, so keying on it would fail
733
+ for the one reason this test is not about.
734
+
735
+ No "and it carries no tag" precondition any more, and its removal is the
736
+ fix rather than a relaxation. After a release the trunk tip *is* tagged,
737
+ and `git tag --contains` matches ancestors, so every trunk commit is
738
+ under the newest release tag. The precondition was unsatisfiable for the
739
+ whole life of a release; ordering the trunk first makes the question
740
+ answerable instead of making the test tolerate the answer.
731
741
  """
732
742
  ref, trunk = _trunk()
733
- assert _git("tag", "--contains", trunk).stdout.strip() == ""
734
743
  assert _protection_for(trunk, [ref]) == f"ancestor of {ref}"
735
744
 
736
- def test_without_a_durable_ref_that_same_commit_looks_unprotected(self) -> None:
737
- """Why the test asserts a durable ref exists before trusting the result.
745
+ def test_a_tag_still_answers_for_a_commit_off_the_trunk(self) -> None:
746
+ """With the trunk offered and irrelevant, the tag arm is what replies.
747
+
748
+ The calibration shas are on no branch at all, so passing a durable ref
749
+ here proves the reordering did not make the tag arm unreachable — the
750
+ mirror of the defect the reordering fixes.
751
+ """
752
+ ref, _ = _trunk()
753
+ protection = _protection_for("09679bde340e9c7ed7e560a42cfcb8f4f9d033b4", [ref])
754
+ assert protection is not None
755
+ assert protection.startswith("tag ")
738
756
 
739
- Drop the branch half and a perfectly safe commit is reported as an
740
- offender. The failure is in the loud direction, but it would read as a
741
- corpus defect rather than as a checkout missing its default branch, and
742
- the two have very different remedies.
757
+ def test_trunk_refuses_rather_than_guessing_when_the_checkout_has_no_trunk(
758
+ self, monkeypatch: pytest.MonkeyPatch
759
+ ) -> None:
760
+ """A checkout that cannot answer must say so, not report a clean corpus.
761
+
762
+ Driven by monkeypatching the ref lookup rather than by finding a real
763
+ commit in the right state. The previous version asserted that a trunk
764
+ commit with the branch half removed looks unprotected — true only while
765
+ no release tag covers it, and `git tag --contains` matches ancestors, so
766
+ a release makes every trunk commit tag-covered and the premise
767
+ evaporates. A test whose setup the release cycle can delete is a test
768
+ that reports on the calendar.
743
769
  """
744
- _, trunk = _trunk()
745
- assert _protection_for(trunk, []) is None
770
+ # Patched on this module object, not by dotted path: the tests package is
771
+ # not importable as `tests.unit....` here, and a string target that does
772
+ # not resolve raises ModuleNotFoundError from monkeypatch itself — which
773
+ # looks like a failing test rather than a mistargeted patch.
774
+ monkeypatch.setattr(sys.modules[__name__], "_durable_refs_present", list)
775
+ with pytest.raises(AssertionError, match="Fetch the default branch"):
776
+ _trunk()
@@ -261,7 +261,7 @@ wheels = [
261
261
 
262
262
  [[package]]
263
263
  name = "codegraph-brain"
264
- version = "0.14.0"
264
+ version = "0.14.1"
265
265
  source = { editable = "." }
266
266
  dependencies = [
267
267
  { name = "httpx" },
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.14.0"
3
- }