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