codegraph-brain 0.17.0__tar.gz → 0.19.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.19.0/.github/test-count-baseline +1 -0
- codegraph_brain-0.19.0/.release-please-manifest.json +3 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/CHANGELOG.md +43 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/CLAUDE.md +3 -2
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/Makefile +15 -1
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/PKG-INFO +17 -17
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/README.md +16 -16
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/architecture/HOW_IT_WORKS.md +8 -1
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/architecture/diagrams/pipeline_flow.mermaid +8 -8
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/how-to/MCP_REFERENCE.md +58 -0
- codegraph_brain-0.19.0/docs/plans/2026-09-09-graph-freshness.md +845 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-06-13-suggest-packages-design.md +7 -2
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-09-05-annotation-graph-design.md +264 -24
- codegraph_brain-0.19.0/docs/specs/2026-09-09-graph-freshness-design.md +249 -0
- codegraph_brain-0.19.0/docs/specs/plans/2026-09-05-annotation-graph-pr2.md +687 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/pyproject.toml +1 -1
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/api/mcp_server.py +190 -14
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/cli.py +210 -2
- codegraph_brain-0.19.0/src/cgis/core/freshness.py +38 -0
- codegraph_brain-0.19.0/src/cgis/core/generated.py +79 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/core/models.py +26 -1
- codegraph_brain-0.19.0/src/cgis/core/paths.py +54 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/extractors/_python_ast.py +119 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/extractors/_python_classes.py +23 -2
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/extractors/_python_functions.py +202 -16
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/extractors/_python_imports.py +15 -2
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/extractors/python_extractor.py +311 -15
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/pipeline.py +8 -1
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/analysis/suggest_service.py +45 -7
- codegraph_brain-0.19.0/src/cgis/query/context/orphans.py +163 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/render/metrics.py +110 -27
- codegraph_brain-0.19.0/src/cgis/resolver/indices.py +461 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/resolver/symbols.py +94 -7
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/storage/sqlite_store.py +340 -8
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/self_parsing/test_annotation_calibration.py +77 -8
- codegraph_brain-0.19.0/tests/self_parsing/test_receiver_resolution.py +242 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_cli.py +471 -0
- codegraph_brain-0.19.0/tests/unit/test_freshness.py +340 -0
- codegraph_brain-0.19.0/tests/unit/test_generated.py +174 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_mcp_server.py +118 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_metrics.py +253 -0
- codegraph_brain-0.19.0/tests/unit/test_name_load_positions.py +128 -0
- codegraph_brain-0.19.0/tests/unit/test_orphans.py +327 -0
- codegraph_brain-0.19.0/tests/unit/test_paths.py +58 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_pipeline.py +23 -0
- codegraph_brain-0.19.0/tests/unit/test_resolver.py +2387 -0
- codegraph_brain-0.19.0/tests/unit/test_resolver_indices.py +353 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_sqlite_store.py +171 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_suggest_service.py +103 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/uv.lock +20 -10
- codegraph_brain-0.17.0/.github/test-count-baseline +0 -1
- codegraph_brain-0.17.0/.release-please-manifest.json +0 -3
- codegraph_brain-0.17.0/src/cgis/resolver/indices.py +0 -203
- codegraph_brain-0.17.0/tests/unit/test_resolver.py +0 -1266
- codegraph_brain-0.17.0/tests/unit/test_resolver_indices.py +0 -190
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/.claude-plugin/marketplace.json +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/.gitattributes +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/.github/workflows/autodoc.yml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/.github/workflows/ci.yml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/.github/workflows/guardian.yml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/.github/workflows/pr-title.yml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/.github/workflows/release-please.yml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/.gitignore +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/.pre-commit-config.yaml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/.python-version +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/CONTRIBUTING.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/LICENSE +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/PRIVACY.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/CURATION.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/calibration.jsonl +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/experiments/246-cross-vendor/README.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/experiments/246-cross-vendor/free-nemotron-quota-cutoff.jsonl +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/experiments/401-evidence/README.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/experiments/401-evidence/pr-399-control-rows.jsonl +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/experiments/401-evidence/pr-399-recording.json +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/experiments/401-evidence/pr-399-treatment-rows.jsonl +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/experiments/407-no-checker-appeal/README.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-directive-rows.jsonl +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-prohibition-rows.jsonl +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/pr-122.yaml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/pr-140.yaml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/pr-141.yaml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/pr-142.yaml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/pr-143.yaml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/pr-144.yaml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/pr-278.yaml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/pr-313.yaml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/guardian/results.jsonl +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian/README.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian/cal_dot_com.json +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian/discourse.json +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian/grafana.json +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian/keycloak.json +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian/sentry.json +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian-judged.jsonl +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian-p3-judged-run1.jsonl +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian-p3-judged-run1.jsonl.corrupted-backup +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian-p3-run1.jsonl +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian-p3-run2.jsonl +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian-p3-run3.jsonl +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian-plan.json +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian-repeat-judged.jsonl +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian-repeat-reviews.jsonl +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/benchmarks/martian-reviews.jsonl +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/data/.gitkeep +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/AUDIT.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/CASE_STUDY.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/GUARDIAN_LOCAL_BENCH.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/GUARDIAN_REMOTE_OLLAMA.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/architecture/ONTOLOGY.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/architecture/PATTERNS_AND_TRIADS.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/architecture/SELF_PORTRAIT.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/architecture/health_badge.json +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/assets/.gitignore +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/assets/cgis-app-avatar.png +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/assets/cgis-app-avatar.svg +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/assets/generate_avatar.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/examples/.gitkeep +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/how-to/AGENT_ONBOARDING.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/how-to/CLI_USAGE.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/lab-notes/2026-06-11-chunked-review-negative-result.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/ontology/.gitkeep +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/ontology/core.yaml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/ontology/domains.yaml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/ontology/patterns.yaml +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/ontology/tolerances.lock +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-06-09-domain-pattern-fingerprint-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-06-09-pattern-alphabet-motif-basis-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-06-10-guardian-sprint-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-06-11-fastapi-di-edges-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-06-11-guardian-chunked-review-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-06-11-guardian-chunker-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-06-11-mcp-drift-validate-fqn-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-06-11-resolver-split-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-06-11-symbol-import-edges-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-06-12-drift-empty-domains-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-06-12-gate-semantics-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-06-12-init-ontology-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-06-12-release-please-ci-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-06-13-tangle-anti-pattern-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-07-29-guardian-skeptic-scoring-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-07-30-cgis-fractal-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-07-30-cgis-fractal-plan.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-07-30-chunk-source-filter-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-07-30-chunk-source-filter-plan.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-07-30-genai-client-close-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-07-30-genai-client-close-plan.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-07-30-guardian-precision-bench-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-07-30-guardian-precision-bench-plan.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-07-30-guardian-timeout-retry-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-07-30-guardian-timeout-retry-plan.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-07-31-finder-bug-class-taxonomy.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-08-01-aura-autoevolution-poc.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-08-11-guardian-code-review-bench.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/2026-08-14-review-fingerprint-design.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/BLUEPRINT.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/PRD.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/TDD.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-09-fingerprint-drift.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-10-guardian-context-skeptic-inline.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-10-guardian-structured-findings-bench.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-10-motif-basis-part-b.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-10-unified-pattern-alphabet.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-11-fastapi-di-edges.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-11-guardian-chunked-review.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-11-guardian-chunker.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-11-mcp-drift-validate-fqn.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-11-resolver-split.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-12-drift-empty-domains.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-12-gate-semantics.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-12-init-ontology.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-12-release-please-ci.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-12-symbol-import-edges.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-06-13-suggest-packages.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-07-29-guardian-skeptic-scoring.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-08-14-review-fingerprint.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/specs/plans/2026-09-05-annotation-graph-pr1.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/main.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/plugin/.claude-plugin/plugin.json +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/plugin/.mcp.json +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/plugin/README.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/plugin/skills/cgis/SKILL.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/plugin/skills/ingest/SKILL.md +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/release-please-config.json +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/backfill_calibration_fingerprint.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/backfill_review_fingerprint.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/check_pytest_raises.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/check_test_count.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/colab_bench.sh +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/gen_ideal_graph.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/generate_health.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/generate_mcp_ref.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/generate_schema_docs.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/guardian_bench.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/guardian_calibrate.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/guardian_martian.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/guardian_replay_skeptic.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/guardian_review.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/inject_readme_graph.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/ollama_visitor.sh +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/probe_closure_gap.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/probe_tier_ladder.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/recordings_from_corpus.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/scripts/skeptic_arms.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/__init__.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/__main__.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/api/.gitkeep +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/api/__init__.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/core/.gitkeep +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/extractors/.gitkeep +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/extractors/_python_annotations.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/extractors/_python_types.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/extractors/base.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/extractors/registry.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/extractors/typescript_extractor.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/__init__.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/axes.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/bench.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/calibrate.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/chunked.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/chunker.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/collector.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/core.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/diff_index.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/evidence.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/findings.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/github_poster.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/martian.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/metrics.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/prompts.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/providers/__init__.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/providers/base.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/providers/gemini.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/providers/mistral.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/providers/ollama.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/providers/openrouter.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/recording.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/render.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/review_fingerprint.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/runner.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/guardian/skeptic.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/py.typed +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/analysis/__init__.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/analysis/analyzer.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/analysis/anomaly.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/analysis/cohesion.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/analysis/health.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/context/__init__.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/context/audit.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/context/context_service.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/context/prompt.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/context/snippet.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/drift/__init__.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/drift/_scc.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/drift/drift.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/drift/drift_service.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/drift/fingerprint.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/drift/fractal.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/drift/ontology_init.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/drift/quotient.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/drift/triads.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/engine.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/fqn.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/render/__init__.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/render/graph_json.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/query/render/mermaid.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/resolver/.gitkeep +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/resolver/__init__.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/resolver/engine.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/resolver/uplift.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/src/cgis/storage/.gitkeep +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/integration/.gitkeep +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/self_parsing/.gitkeep +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/self_parsing/__init__.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/self_parsing/conftest.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/self_parsing/test_architecture.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/self_parsing/test_drift.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/self_parsing/test_fractal.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/self_parsing/test_init_ontology_roundtrip.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/self_parsing/test_self_parse.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/self_parsing/test_self_parse_ts.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/self_parsing/test_suggest.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/.gitkeep +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/conftest.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/guardian_stubs.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/review_path_inventory.txt +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test___main__.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_analyzer.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_annotation_edges.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_audit.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_backfill_calibration_fingerprint.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_backfill_review_fingerprint.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_check_pytest_raises.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_check_test_count.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_cohesion.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_context_service.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_di_acceptance.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_drift.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_drift_service.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_extractor_registry.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_fingerprint.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_fqn.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_fractal.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_gen_ideal_graph.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_generate_mcp_ref.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_graph_json.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_axes.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_bench.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_bench_script.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_calibrate.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_calibrate_script.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_chunked.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_chunker.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_collector.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_core.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_diff_index.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_evidence.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_findings.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_martian.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_martian_script.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_martian_union.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_metrics.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_mistral_sampling.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_ollama_sampling.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_ollama_truncation.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_openrouter.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_poster.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_providers.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_providers_name.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_recording.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_render.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_replay_skeptic.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_review_script.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_runner.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_salvage.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_guardian_skeptic.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_health_scorer.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_import_acceptance.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_mermaid.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_models.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_ontology_compliance.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_ontology_init.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_patterns_yaml.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_prompt.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_python_annotations.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_python_extractor.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_quotient.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_recordings_from_corpus.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_resolver_symbols.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_review_fingerprint_closure.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_review_fingerprint_contract.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_review_fingerprint_digest.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_review_fingerprint_record.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_self_types.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_skeptic_arms.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_snippet.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_temperature_source.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_triads.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_typescript_extractor.py +0 -0
- {codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/tests/unit/test_uplift.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2264
|
|
@@ -1,5 +1,48 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.19.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.18.0...codegraph-brain-v0.19.0) (2026-09-09)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **freshness:** every query says when the graph is out of date ([#175](https://github.com/zaebee/codegraph-brain/issues/175) part 2) ([#443](https://github.com/zaebee/codegraph-brain/issues/443)) ([0d6d197](https://github.com/zaebee/codegraph-brain/commit/0d6d197133c1315698b10a223aaf8efb47784578))
|
|
9
|
+
* **metrics:** --scope <prefix> to focus rankings on one subtree ([#239](https://github.com/zaebee/codegraph-brain/issues/239)) ([#439](https://github.com/zaebee/codegraph-brain/issues/439)) ([59605d3](https://github.com/zaebee/codegraph-brain/commit/59605d361f95aeea18b8272183f20938c0ca10b8))
|
|
10
|
+
* **orphans:** generated classes are noise, not findings — hide them by default ([#432](https://github.com/zaebee/codegraph-brain/issues/432)) ([#441](https://github.com/zaebee/codegraph-brain/issues/441)) ([52e0de1](https://github.com/zaebee/codegraph-brain/commit/52e0de1e666612f72d5a58eaad9509252db098e2))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* **extractor:** `with X() as y` records y's type ([#444](https://github.com/zaebee/codegraph-brain/issues/444)) ([#445](https://github.com/zaebee/codegraph-brain/issues/445)) ([529b2e2](https://github.com/zaebee/codegraph-brain/commit/529b2e2239ab62a14211d95291afb1d7a6666cfc))
|
|
16
|
+
* **resolver:** only a head-discarding strip is forbidden a foreign head ([#435](https://github.com/zaebee/codegraph-brain/issues/435)) ([#437](https://github.com/zaebee/codegraph-brain/issues/437)) ([3e5309a](https://github.com/zaebee/codegraph-brain/commit/3e5309ac6e65cfdc5174dc70c6ae9d4b5036d92a))
|
|
17
|
+
* **suggest-packages:** name a member by its path under the package ([#446](https://github.com/zaebee/codegraph-brain/issues/446)) ([#447](https://github.com/zaebee/codegraph-brain/issues/447)) ([08af353](https://github.com/zaebee/codegraph-brain/commit/08af353f88b0026f799eb2cb2f9ed5f0c9733d22))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Documentation
|
|
21
|
+
|
|
22
|
+
* auto-sync architecture graph and MCP reference ([#442](https://github.com/zaebee/codegraph-brain/issues/442)) ([47a6aab](https://github.com/zaebee/codegraph-brain/commit/47a6aab38225f8e8936abd9d9e72b9449f10afe2))
|
|
23
|
+
|
|
24
|
+
## [0.18.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.17.0...codegraph-brain-v0.18.0) (2026-09-06)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Features
|
|
28
|
+
|
|
29
|
+
* **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))
|
|
30
|
+
* **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))
|
|
31
|
+
* **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))
|
|
32
|
+
* **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))
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
### Bug Fixes
|
|
36
|
+
|
|
37
|
+
* **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))
|
|
38
|
+
* **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))
|
|
39
|
+
* **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))
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
### Documentation
|
|
43
|
+
|
|
44
|
+
* 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))
|
|
45
|
+
|
|
3
46
|
## [0.17.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.16.0...codegraph-brain-v0.17.0) (2026-09-05)
|
|
4
47
|
|
|
5
48
|
|
|
@@ -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.19.0
|
|
4
4
|
Summary: Semantic code graph for AI agents — deterministic FQN resolution, impact analysis and architectural drift gates, exposed over MCP.
|
|
5
5
|
Project-URL: Homepage, https://github.com/zaebee/codegraph-brain
|
|
6
6
|
Project-URL: Repository, https://github.com/zaebee/codegraph-brain
|
|
@@ -198,15 +198,15 @@ classDef stdlibNode fill:#eceff1,stroke:#607d8b,stroke-width:1px,color:#455a64;
|
|
|
198
198
|
classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dasharray: 3 3,color:#bf360c;
|
|
199
199
|
|
|
200
200
|
subgraph sg_models["models.py"]
|
|
201
|
-
models_Edge["Edge (models.py:
|
|
202
|
-
models_Node["Node (models.py:
|
|
201
|
+
models_Edge["Edge (models.py:142)"]:::classNode
|
|
202
|
+
models_Node["Node (models.py:85)"]:::classNode
|
|
203
203
|
end
|
|
204
204
|
subgraph sg_pipeline["pipeline.py"]
|
|
205
|
-
pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:
|
|
206
|
-
pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:
|
|
207
|
-
pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:
|
|
208
|
-
pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:
|
|
209
|
-
pipeline_IngestionPipeline_run["run (pipeline.py:
|
|
205
|
+
pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:252)"]:::methodNode
|
|
206
|
+
pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:192)"]:::methodNode
|
|
207
|
+
pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:211)"]:::methodNode
|
|
208
|
+
pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:157)"]:::methodNode
|
|
209
|
+
pipeline_IngestionPipeline_run["run (pipeline.py:53)"]:::methodNode
|
|
210
210
|
end
|
|
211
211
|
subgraph sg_engine["engine.py"]
|
|
212
212
|
engine_ResolverEngine["ResolverEngine (engine.py:19)"]:::classNode
|
|
@@ -217,7 +217,7 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
|
|
|
217
217
|
uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:91)"]:::methodNode
|
|
218
218
|
end
|
|
219
219
|
subgraph sg_sqlite_store["sqlite_store.py"]
|
|
220
|
-
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:
|
|
220
|
+
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:40)"]:::classNode
|
|
221
221
|
end
|
|
222
222
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Node
|
|
223
223
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Edge
|
|
@@ -234,18 +234,18 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
|
|
|
234
234
|
|
|
235
235
|
| Symbol | Type | File |
|
|
236
236
|
|--------|------|------|
|
|
237
|
-
| `Node` | CLASS | [`models.py:
|
|
238
|
-
| `Edge` | CLASS | [`models.py:
|
|
239
|
-
| `run` | METHOD | [`pipeline.py:
|
|
240
|
-
| `_process_file` | METHOD | [`pipeline.py:
|
|
241
|
-
| `_is_noop_incremental` | METHOD | [`pipeline.py:
|
|
242
|
-
| `_persist_incremental` | METHOD | [`pipeline.py:
|
|
243
|
-
| `_get_extractor` | METHOD | [`pipeline.py:
|
|
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:142`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/core/models.py#L142) |
|
|
239
|
+
| `run` | METHOD | [`pipeline.py:53`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L53) |
|
|
240
|
+
| `_process_file` | METHOD | [`pipeline.py:157`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L157) |
|
|
241
|
+
| `_is_noop_incremental` | METHOD | [`pipeline.py:192`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L192) |
|
|
242
|
+
| `_persist_incremental` | METHOD | [`pipeline.py:211`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L211) |
|
|
243
|
+
| `_get_extractor` | METHOD | [`pipeline.py:252`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L252) |
|
|
244
244
|
| `ResolverEngine` | CLASS | [`engine.py:19`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L19) |
|
|
245
245
|
| `resolve` | METHOD | [`engine.py:36`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L36) |
|
|
246
246
|
| `SemanticUpliftEngine` | CLASS | [`uplift.py:66`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L66) |
|
|
247
247
|
| `execute_uplift` | METHOD | [`uplift.py:91`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L91) |
|
|
248
|
-
| `SQLiteStore` | CLASS | [`sqlite_store.py:
|
|
248
|
+
| `SQLiteStore` | CLASS | [`sqlite_store.py:40`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/storage/sqlite_store.py#L40) |
|
|
249
249
|
<!-- END_CGIS_GRAPH -->
|
|
250
250
|
|
|
251
251
|
---
|
|
@@ -148,15 +148,15 @@ classDef stdlibNode fill:#eceff1,stroke:#607d8b,stroke-width:1px,color:#455a64;
|
|
|
148
148
|
classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dasharray: 3 3,color:#bf360c;
|
|
149
149
|
|
|
150
150
|
subgraph sg_models["models.py"]
|
|
151
|
-
models_Edge["Edge (models.py:
|
|
152
|
-
models_Node["Node (models.py:
|
|
151
|
+
models_Edge["Edge (models.py:142)"]:::classNode
|
|
152
|
+
models_Node["Node (models.py:85)"]:::classNode
|
|
153
153
|
end
|
|
154
154
|
subgraph sg_pipeline["pipeline.py"]
|
|
155
|
-
pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:
|
|
156
|
-
pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:
|
|
157
|
-
pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:
|
|
158
|
-
pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:
|
|
159
|
-
pipeline_IngestionPipeline_run["run (pipeline.py:
|
|
155
|
+
pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:252)"]:::methodNode
|
|
156
|
+
pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:192)"]:::methodNode
|
|
157
|
+
pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:211)"]:::methodNode
|
|
158
|
+
pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:157)"]:::methodNode
|
|
159
|
+
pipeline_IngestionPipeline_run["run (pipeline.py:53)"]:::methodNode
|
|
160
160
|
end
|
|
161
161
|
subgraph sg_engine["engine.py"]
|
|
162
162
|
engine_ResolverEngine["ResolverEngine (engine.py:19)"]:::classNode
|
|
@@ -167,7 +167,7 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
|
|
|
167
167
|
uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:91)"]:::methodNode
|
|
168
168
|
end
|
|
169
169
|
subgraph sg_sqlite_store["sqlite_store.py"]
|
|
170
|
-
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:
|
|
170
|
+
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:40)"]:::classNode
|
|
171
171
|
end
|
|
172
172
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Node
|
|
173
173
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Edge
|
|
@@ -184,18 +184,18 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
|
|
|
184
184
|
|
|
185
185
|
| Symbol | Type | File |
|
|
186
186
|
|--------|------|------|
|
|
187
|
-
| `Node` | CLASS | [`models.py:
|
|
188
|
-
| `Edge` | CLASS | [`models.py:
|
|
189
|
-
| `run` | METHOD | [`pipeline.py:
|
|
190
|
-
| `_process_file` | METHOD | [`pipeline.py:
|
|
191
|
-
| `_is_noop_incremental` | METHOD | [`pipeline.py:
|
|
192
|
-
| `_persist_incremental` | METHOD | [`pipeline.py:
|
|
193
|
-
| `_get_extractor` | METHOD | [`pipeline.py:
|
|
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:142`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/core/models.py#L142) |
|
|
189
|
+
| `run` | METHOD | [`pipeline.py:53`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L53) |
|
|
190
|
+
| `_process_file` | METHOD | [`pipeline.py:157`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L157) |
|
|
191
|
+
| `_is_noop_incremental` | METHOD | [`pipeline.py:192`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L192) |
|
|
192
|
+
| `_persist_incremental` | METHOD | [`pipeline.py:211`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L211) |
|
|
193
|
+
| `_get_extractor` | METHOD | [`pipeline.py:252`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline.py#L252) |
|
|
194
194
|
| `ResolverEngine` | CLASS | [`engine.py:19`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L19) |
|
|
195
195
|
| `resolve` | METHOD | [`engine.py:36`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L36) |
|
|
196
196
|
| `SemanticUpliftEngine` | CLASS | [`uplift.py:66`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L66) |
|
|
197
197
|
| `execute_uplift` | METHOD | [`uplift.py:91`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/uplift.py#L91) |
|
|
198
|
-
| `SQLiteStore` | CLASS | [`sqlite_store.py:
|
|
198
|
+
| `SQLiteStore` | CLASS | [`sqlite_store.py:40`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/storage/sqlite_store.py#L40) |
|
|
199
199
|
<!-- END_CGIS_GRAPH -->
|
|
200
200
|
|
|
201
201
|
---
|
|
@@ -85,7 +85,9 @@ 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,
|
|
90
|
+
is_generated INTEGER NOT NULL DEFAULT 0
|
|
89
91
|
);
|
|
90
92
|
|
|
91
93
|
CREATE TABLE IF NOT EXISTS edges (
|
|
@@ -105,6 +107,11 @@ CREATE TABLE IF NOT EXISTS nodes (
|
|
|
105
107
|
hash TEXT NOT NULL
|
|
106
108
|
);
|
|
107
109
|
|
|
110
|
+
CREATE TABLE IF NOT EXISTS ingest_state (
|
|
111
|
+
key TEXT PRIMARY KEY,
|
|
112
|
+
value TEXT NOT NULL
|
|
113
|
+
);
|
|
114
|
+
|
|
108
115
|
CREATE INDEX IF NOT EXISTS idx_nodes_type ON nodes(type);
|
|
109
116
|
CREATE INDEX IF NOT EXISTS idx_edges_source ON edges(source);
|
|
110
117
|
CREATE INDEX IF NOT EXISTS idx_edges_target ON edges(target);
|
{codegraph_brain-0.17.0 → codegraph_brain-0.19.0}/docs/architecture/diagrams/pipeline_flow.mermaid
RENAMED
|
@@ -8,15 +8,15 @@ classDef stdlibNode fill:#eceff1,stroke:#607d8b,stroke-width:1px,color:#455a64;
|
|
|
8
8
|
classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dasharray: 3 3,color:#bf360c;
|
|
9
9
|
|
|
10
10
|
subgraph sg_models["models.py"]
|
|
11
|
-
models_Edge["Edge (models.py:
|
|
12
|
-
models_Node["Node (models.py:
|
|
11
|
+
models_Edge["Edge (models.py:142)"]:::classNode
|
|
12
|
+
models_Node["Node (models.py:85)"]:::classNode
|
|
13
13
|
end
|
|
14
14
|
subgraph sg_pipeline["pipeline.py"]
|
|
15
|
-
pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:
|
|
16
|
-
pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:
|
|
17
|
-
pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:
|
|
18
|
-
pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:
|
|
19
|
-
pipeline_IngestionPipeline_run["run (pipeline.py:
|
|
15
|
+
pipeline_IngestionPipeline_get_extractor["_get_extractor (pipeline.py:252)"]:::methodNode
|
|
16
|
+
pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (pipeline.py:192)"]:::methodNode
|
|
17
|
+
pipeline_IngestionPipeline_persist_incremental["_persist_incremental (pipeline.py:211)"]:::methodNode
|
|
18
|
+
pipeline_IngestionPipeline_process_file["_process_file (pipeline.py:157)"]:::methodNode
|
|
19
|
+
pipeline_IngestionPipeline_run["run (pipeline.py:53)"]:::methodNode
|
|
20
20
|
end
|
|
21
21
|
subgraph sg_engine["engine.py"]
|
|
22
22
|
engine_ResolverEngine["ResolverEngine (engine.py:19)"]:::classNode
|
|
@@ -27,7 +27,7 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
|
|
|
27
27
|
uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:91)"]:::methodNode
|
|
28
28
|
end
|
|
29
29
|
subgraph sg_sqlite_store["sqlite_store.py"]
|
|
30
|
-
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:
|
|
30
|
+
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:40)"]:::classNode
|
|
31
31
|
end
|
|
32
32
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Node
|
|
33
33
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Edge
|
|
@@ -106,6 +106,53 @@ 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
|
+
Machine-generated classes are **hidden by default**, and ``include_generated``
|
|
130
|
+
puts them back. The query is right about them — nothing constructs a
|
|
131
|
+
betterproto stub — but nobody hand-deletes one either, so they are noise
|
|
132
|
+
rather than a finding. Measured on owner-api at b7d02fe6, five of six
|
|
133
|
+
reported orphans were generated entities and the sixth a nested pydantic
|
|
134
|
+
``Config``: the unfiltered report had no actionable row in it (#432).
|
|
135
|
+
|
|
136
|
+
Returns JSON ``{orphans, considered, test_sources, generated_excluded}``;
|
|
137
|
+
each orphan carries ``fqn``/``file``/``line``. **A listing is a candidate for
|
|
138
|
+
deletion, not a proof** — a class named only inside a decorator (#429) or
|
|
139
|
+
arriving through a star import is invisible here, so the sweep errs towards
|
|
140
|
+
reporting a live class rather than hiding a dead one. ``test_sources: 0`` in a
|
|
141
|
+
repository that has tests means the graph predates the ``is_test`` column:
|
|
142
|
+
re-ingest. ``generated_excluded`` counts every generated class left out of
|
|
143
|
+
the population under the same ``prefix``, referenced or not — so ``0`` on a
|
|
144
|
+
repository with generated code means the same for ``is_generated``, which has
|
|
145
|
+
no backfill: the marker is in the file header, not in the database.
|
|
146
|
+
|
|
147
|
+
| Argument | Type | Required | Description |
|
|
148
|
+
| :--- | :--- | :---: | :--- |
|
|
149
|
+
| `db_path` | `string` | | |
|
|
150
|
+
| `prefix` | `any` | | |
|
|
151
|
+
| `include_tests` | `boolean` | | |
|
|
152
|
+
| `include_generated` | `boolean` | | |
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
109
156
|
## `cgis_find_symbol`
|
|
110
157
|
|
|
111
158
|
Resolve a partial symbol name to candidate FQNs (substring match, ranked).
|
|
@@ -232,11 +279,22 @@ Whole-graph architectural metrics — coupling bottlenecks + God classes (#16).
|
|
|
232
279
|
(e.g. ``["tests"]`` removes both ``tests.*`` and ``domains.*.tests.*``) so
|
|
233
280
|
test/vendor scaffolding stays out of the rankings.
|
|
234
281
|
|
|
282
|
+
``scope`` is its complement: it keeps only nodes under one of the given
|
|
283
|
+
dot-prefixes, anchored and cut on a dot boundary, so
|
|
284
|
+
``["domains.reservation"]`` is that subtree and not
|
|
285
|
+
``domains.reservation_archive``. Use it for a per-domain review. The two
|
|
286
|
+
compose, and they differ where it matters for PageRank — ``exclude`` removes
|
|
287
|
+
nodes from the propagation graph, ``scope`` filters the rows and lets rank
|
|
288
|
+
propagate over the whole graph, so a scoped run reports how central the
|
|
289
|
+
subtree is *globally*. Coupling in-degree likewise keeps counting callers
|
|
290
|
+
from outside the scope, which is the ripple a domain review is after (#239).
|
|
291
|
+
|
|
235
292
|
| Argument | Type | Required | Description |
|
|
236
293
|
| :--- | :--- | :---: | :--- |
|
|
237
294
|
| `db_path` | `string` | | |
|
|
238
295
|
| `limit` | `integer` | | |
|
|
239
296
|
| `exclude` | `any` | | |
|
|
297
|
+
| `scope` | `any` | | |
|
|
240
298
|
|
|
241
299
|
---
|
|
242
300
|
|