codegraph-brain 0.29.0__tar.gz → 0.30.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.30.0/.github/test-count-baseline +1 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/.github/workflows/ci.yml +18 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/.gitignore +2 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/.pre-commit-config.yaml +1 -0
- codegraph_brain-0.30.0/.release-please-manifest.json +3 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/CHANGELOG.md +22 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/CLAUDE.md +33 -12
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/PKG-INFO +3 -2
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/README.md +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/AUDIT.md +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/architecture/HOW_IT_WORKS.md +40 -37
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/architecture/ONTOLOGY.md +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/architecture/diagrams/pipeline_flow.mermaid +22 -20
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/how-to/MCP_REFERENCE.md +4 -3
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/ontology/domains.yaml +6 -7
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/ontology/patterns.yaml +50 -26
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/ontology/tolerances.lock +4 -4
- codegraph_brain-0.30.0/docs/plans/2026-10-14-language-packs-step1.md +1037 -0
- codegraph_brain-0.30.0/docs/plans/2026-10-14-language-packs-step2.md +773 -0
- codegraph_brain-0.30.0/docs/plans/2026-10-14-language-packs-step3.md +732 -0
- codegraph_brain-0.30.0/docs/plans/2026-10-14-language-packs-step4.md +681 -0
- codegraph_brain-0.30.0/docs/plans/2026-10-14-language-packs-step5.md +187 -0
- codegraph_brain-0.30.0/docs/plans/2026-10-14-language-packs-step6.md +270 -0
- codegraph_brain-0.30.0/docs/plans/2026-10-14-language-packs-step7.md +485 -0
- codegraph_brain-0.30.0/docs/plans/2026-10-14-language-packs.md +888 -0
- codegraph_brain-0.30.0/docs/specs/2026-10-14-language-packs-design.md +537 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/plugin/README.md +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/plugin/skills/cgis/SKILL.md +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/plugin/skills/ingest/SKILL.md +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/pyproject.toml +7 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/generate_health.py +2 -3
- codegraph_brain-0.30.0/scripts/graph_identity.py +187 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/guardian_martian.py +4 -4
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/server.json +3 -3
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/api/auto_refresh.py +2 -2
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/api/mcp_server.py +8 -12
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/api/server_instructions.py +16 -3
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/cli.py +7 -12
- codegraph_brain-0.30.0/src/cgis/core/extractor.py +110 -0
- codegraph_brain-0.30.0/src/cgis/core/index.py +44 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/core/js_globals.py +57 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/core/models.py +21 -0
- codegraph_brain-0.30.0/src/cgis/core/project.py +38 -0
- codegraph_brain-0.30.0/src/cgis/core/resolution.py +78 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/collector.py +6 -6
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/martian.py +1 -1
- codegraph_brain-0.30.0/src/cgis/import_names.py +170 -0
- codegraph_brain-0.30.0/src/cgis/languages/__init__.py +241 -0
- codegraph_brain-0.30.0/src/cgis/languages/go/__init__.py +70 -0
- codegraph_brain-0.30.0/src/cgis/languages/go/_syntax.py +215 -0
- codegraph_brain-0.30.0/src/cgis/languages/go/extractor.py +452 -0
- codegraph_brain-0.30.0/src/cgis/languages/go/index.py +141 -0
- codegraph_brain-0.30.0/src/cgis/languages/go/naming.py +49 -0
- codegraph_brain-0.30.0/src/cgis/languages/go/project.py +139 -0
- codegraph_brain-0.30.0/src/cgis/languages/go/resolution.py +115 -0
- codegraph_brain-0.30.0/src/cgis/languages/python/__init__.py +72 -0
- codegraph_brain-0.29.0/src/cgis/extractors/_python_annotations.py → codegraph_brain-0.30.0/src/cgis/languages/python/_annotations.py +2 -2
- codegraph_brain-0.29.0/src/cgis/extractors/_python_classes.py → codegraph_brain-0.30.0/src/cgis/languages/python/_classes.py +1 -1
- codegraph_brain-0.29.0/src/cgis/extractors/_python_functions.py → codegraph_brain-0.30.0/src/cgis/languages/python/_functions.py +3 -3
- codegraph_brain-0.29.0/src/cgis/extractors/_python_imports.py → codegraph_brain-0.30.0/src/cgis/languages/python/_imports.py +1 -1
- codegraph_brain-0.30.0/src/cgis/languages/python/_routes.py +138 -0
- codegraph_brain-0.29.0/src/cgis/extractors/_python_types.py → codegraph_brain-0.30.0/src/cgis/languages/python/_types.py +1 -1
- codegraph_brain-0.29.0/src/cgis/extractors/python_extractor.py → codegraph_brain-0.30.0/src/cgis/languages/python/extractor.py +15 -12
- codegraph_brain-0.30.0/src/cgis/languages/python/index.py +288 -0
- codegraph_brain-0.30.0/src/cgis/languages/python/project.py +42 -0
- codegraph_brain-0.30.0/src/cgis/languages/python/resolution.py +32 -0
- codegraph_brain-0.30.0/src/cgis/languages/typescript/__init__.py +72 -0
- codegraph_brain-0.30.0/src/cgis/languages/typescript/builtins.py +29 -0
- codegraph_brain-0.29.0/src/cgis/extractors/typescript_extractor.py → codegraph_brain-0.30.0/src/cgis/languages/typescript/extractor.py +3 -37
- codegraph_brain-0.30.0/src/cgis/languages/typescript/index.py +163 -0
- codegraph_brain-0.30.0/src/cgis/languages/typescript/naming.py +37 -0
- codegraph_brain-0.30.0/src/cgis/languages/typescript/project.py +109 -0
- codegraph_brain-0.30.0/src/cgis/languages/typescript/resolution.py +160 -0
- codegraph_brain-0.29.0/src/cgis/tsconfig_paths.py → codegraph_brain-0.30.0/src/cgis/languages/typescript/tsconfig.py +12 -5
- {codegraph_brain-0.29.0/src/cgis → codegraph_brain-0.30.0/src/cgis/languages/typescript}/workspaces.py +15 -8
- codegraph_brain-0.29.0/src/cgis/pipeline.py → codegraph_brain-0.30.0/src/cgis/pipeline/__init__.py +106 -18
- {codegraph_brain-0.29.0/src/cgis/resolver → codegraph_brain-0.30.0/src/cgis/pipeline}/uplift.py +2 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/context/audit.py +16 -4
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/render/mermaid.py +11 -6
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/resolver/engine.py +27 -6
- codegraph_brain-0.30.0/src/cgis/resolver/indices.py +474 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/resolver/symbols.py +66 -58
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/storage/sqlite_store.py +67 -1
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/py/lib/legacy/tool.py +5 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/py/pyproject.toml +3 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/py/src/alembic/env.py +2 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/py/src/shop/__init__.py +1 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/py/src/shop/cli.py +5 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/py/src/shop/deps.py +12 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/py/src/shop/repo.py +11 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/py/src/shop/service.py +16 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/py/tests/test_service.py +5 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/ts/apps/web/package.json +1 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/ts/apps/web/src/main.ts +16 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/ts/apps/web/src/types.d.ts +3 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/ts/apps/web/src/util.ts +3 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/ts/package.json +1 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/ts/packages/lib/index.ts +3 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/ts/packages/lib/package.json +1 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/ts/pnpm-workspace.yaml +3 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/corpus/ts/tsconfig.json +1 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity/snapshot.json +3074 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity_go/corpus/go.mod +7 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity_go/corpus/internal/native/native.go +8 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity_go/corpus/internal/server/server.go +19 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity_go/corpus/internal/server/server_test.go +9 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity_go/corpus/internal/server/types.go +19 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity_go/corpus/internal/server/validate.go +5 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity_go/corpus/internal/store/store.go +26 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity_go/corpus/main.go +17 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity_go/corpus/money/money.go +8 -0
- codegraph_brain-0.30.0/tests/fixtures/graph_identity_go/snapshot.json +1361 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/self_parsing/conftest.py +2 -2
- codegraph_brain-0.30.0/tests/self_parsing/forbidden_edges_allowlist.json +16 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/self_parsing/test_annotation_calibration.py +18 -3
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/self_parsing/test_architecture.py +146 -7
- codegraph_brain-0.30.0/tests/self_parsing/test_domains_ontology.py +43 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/self_parsing/test_drift.py +52 -26
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/self_parsing/test_init_ontology_roundtrip.py +3 -3
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/self_parsing/test_receiver_resolution.py +2 -2
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/self_parsing/test_self_parse.py +4 -4
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/self_parsing/test_self_parse_ts.py +2 -2
- codegraph_brain-0.30.0/tests/unit/review_path_inventory.txt +69 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_agent_ab_task.py +10 -2
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_annotation_edges.py +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_audit.py +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_class_cohesion.py +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_cli.py +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_configs_above_root.py +2 -2
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_context_service.py +1 -1
- codegraph_brain-0.30.0/tests/unit/test_coverage_claims.py +60 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_di_acceptance.py +1 -1
- codegraph_brain-0.30.0/tests/unit/test_extraction_fingerprint.py +212 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_fingerprint.py +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_freshness.py +1 -1
- codegraph_brain-0.30.0/tests/unit/test_go_extractor.py +461 -0
- codegraph_brain-0.30.0/tests/unit/test_go_graph_identity.py +145 -0
- codegraph_brain-0.30.0/tests/unit/test_go_incremental.py +95 -0
- codegraph_brain-0.30.0/tests/unit/test_go_naming.py +44 -0
- codegraph_brain-0.30.0/tests/unit/test_go_project.py +103 -0
- codegraph_brain-0.30.0/tests/unit/test_go_resolution.py +457 -0
- codegraph_brain-0.30.0/tests/unit/test_go_surfaces.py +91 -0
- codegraph_brain-0.30.0/tests/unit/test_graph_identity.py +93 -0
- codegraph_brain-0.30.0/tests/unit/test_graph_identity_dump.py +141 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_collector.py +2 -2
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_martian.py +3 -3
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_martian_script.py +2 -2
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_import_acceptance.py +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_inject_architecture_graph.py +2 -2
- codegraph_brain-0.30.0/tests/unit/test_languages.py +397 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_mermaid.py +22 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_metrics_resolution.py +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_name_load_positions.py +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_npm_dependencies.py +2 -2
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_patterns_yaml.py +34 -9
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_pipeline.py +21 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_pipeline_incremental_symbols.py +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_pipeline_ts_workspaces.py +1 -1
- codegraph_brain-0.30.0/tests/unit/test_project_facts.py +236 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_python_annotations.py +2 -2
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_python_dependencies.py +2 -2
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_python_extractor.py +2 -2
- codegraph_brain-0.30.0/tests/unit/test_python_index.py +100 -0
- codegraph_brain-0.30.0/tests/unit/test_python_routes.py +230 -0
- codegraph_brain-0.30.0/tests/unit/test_resolution_rules.py +124 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_resolver.py +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_resolver_indices.py +40 -4
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_resolver_js_builtins.py +2 -2
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_resolver_language_scope.py +4 -4
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_resolver_phantom_internal.py +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_resolver_symbols.py +39 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_resolver_ts_declarations.py +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_review_fingerprint_closure.py +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_self_types.py +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_tsconfig_paths.py +2 -2
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_type_checking_imports.py +1 -1
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_typescript_extractor.py +2 -1
- codegraph_brain-0.30.0/tests/unit/test_typescript_index.py +82 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_uplift.py +2 -2
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/uv.lock +22 -4
- codegraph_brain-0.29.0/.github/test-count-baseline +0 -1
- codegraph_brain-0.29.0/.release-please-manifest.json +0 -3
- codegraph_brain-0.29.0/src/cgis/extractors/base.py +0 -58
- codegraph_brain-0.29.0/src/cgis/extractors/registry.py +0 -93
- codegraph_brain-0.29.0/src/cgis/import_names.py +0 -162
- codegraph_brain-0.29.0/src/cgis/resolver/indices.py +0 -840
- codegraph_brain-0.29.0/src/cgis/resolver/js_builtins.py +0 -97
- codegraph_brain-0.29.0/tests/unit/.gitkeep +0 -0
- codegraph_brain-0.29.0/tests/unit/review_path_inventory.txt +0 -43
- codegraph_brain-0.29.0/tests/unit/test_extractor_registry.py +0 -184
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/.claude-plugin/marketplace.json +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/.gitattributes +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/.github/workflows/autodoc.yml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/.github/workflows/guardian.yml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/.github/workflows/mcp-registry.yml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/.github/workflows/pr-title.yml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/.github/workflows/release-please.yml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/.github/workflows/ui.yml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/.python-version +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/CONTRIBUTING.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/LICENSE +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/Makefile +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/PRIVACY.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/agent_ab/.gitignore +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/agent_ab/README.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/agent_ab/RESULTS.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/agent_ab/results.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/agent_ab/tasks/cgis-control-sqlite-pragmas.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/agent_ab/tasks/cgis-flow-ingest-to-sqlite.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/agent_ab/tasks/cgis-impact-drift-same-name.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/agent_ab/tasks/cgis-impact-language-for.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/agent_ab/tasks/cgis-impact-transitive-tsconfig.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/agent_ab/tasks/cgis-orientation-call-resolution.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/agent_ab/tasks/owner-impact-credit-wallet.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/agent_ab/tasks/owner-impact-occupied-window-same-name.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/CURATION.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/calibration.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/experiments/246-cross-vendor/README.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/experiments/246-cross-vendor/free-nemotron-quota-cutoff.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/experiments/401-evidence/README.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/experiments/401-evidence/pr-399-control-rows.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/experiments/401-evidence/pr-399-recording.json +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/experiments/401-evidence/pr-399-treatment-rows.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/experiments/407-no-checker-appeal/README.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-directive-rows.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-prohibition-rows.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/pr-122.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/pr-140.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/pr-141.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/pr-142.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/pr-143.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/pr-144.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/pr-278.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/pr-313.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/guardian/results.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian/README.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian/cal_dot_com.json +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian/discourse.json +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian/grafana.json +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian/keycloak.json +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian/sentry.json +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian-judged.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian-p3-judged-run1.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian-p3-judged-run1.jsonl.corrupted-backup +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian-p3-run1.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian-p3-run2.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian-p3-run3.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian-plan.json +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian-repeat-judged.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian-repeat-reviews.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/benchmarks/martian-reviews.jsonl +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/data/.gitkeep +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/CASE_STUDY.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/GUARDIAN_LOCAL_BENCH.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/GUARDIAN_REMOTE_OLLAMA.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/architecture/PATTERNS_AND_TRIADS.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/architecture/SELF_PORTRAIT.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/architecture/health_badge.json +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/assets/.gitignore +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/assets/cgis-app-avatar.png +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/assets/cgis-app-avatar.svg +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/assets/generate_avatar.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/examples/.gitkeep +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/how-to/AGENT_ONBOARDING.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/how-to/CLI_USAGE.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/lab-notes/2026-06-11-chunked-review-negative-result.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/ontology/.gitkeep +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/ontology/core.yaml +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/plans/2026-09-09-graph-freshness.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-06-09-domain-pattern-fingerprint-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-06-09-pattern-alphabet-motif-basis-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-06-10-guardian-sprint-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-06-11-fastapi-di-edges-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-06-11-guardian-chunked-review-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-06-11-guardian-chunker-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-06-11-mcp-drift-validate-fqn-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-06-11-resolver-split-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-06-11-symbol-import-edges-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-06-12-drift-empty-domains-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-06-12-gate-semantics-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-06-12-init-ontology-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-06-12-release-please-ci-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-06-13-suggest-packages-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-06-13-tangle-anti-pattern-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-07-29-guardian-skeptic-scoring-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-07-30-cgis-fractal-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-07-30-cgis-fractal-plan.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-07-30-chunk-source-filter-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-07-30-chunk-source-filter-plan.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-07-30-genai-client-close-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-07-30-genai-client-close-plan.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-07-30-guardian-precision-bench-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-07-30-guardian-precision-bench-plan.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-07-30-guardian-timeout-retry-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-07-30-guardian-timeout-retry-plan.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-07-31-finder-bug-class-taxonomy.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-08-01-aura-autoevolution-poc.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-08-11-guardian-code-review-bench.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-08-14-review-fingerprint-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-09-05-annotation-graph-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/2026-09-09-graph-freshness-design.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/BLUEPRINT.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/PRD.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/TDD.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-09-fingerprint-drift.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-10-guardian-context-skeptic-inline.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-10-guardian-structured-findings-bench.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-10-motif-basis-part-b.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-10-unified-pattern-alphabet.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-11-fastapi-di-edges.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-11-guardian-chunked-review.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-11-guardian-chunker.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-11-mcp-drift-validate-fqn.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-11-resolver-split.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-12-drift-empty-domains.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-12-gate-semantics.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-12-init-ontology.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-12-release-please-ci.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-12-symbol-import-edges.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-06-13-suggest-packages.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-07-29-guardian-skeptic-scoring.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-08-14-review-fingerprint.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-09-05-annotation-graph-pr1.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/specs/plans/2026-09-05-annotation-graph-pr2.md +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/glama.json +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/main.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/plugin/.claude-plugin/plugin.json +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/plugin/.mcp.json +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/release-please-config.json +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/agent_ab.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/backfill_calibration_fingerprint.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/backfill_review_fingerprint.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/check_pytest_raises.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/check_test_count.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/colab_bench.sh +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/gen_ideal_graph.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/generate_mcp_ref.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/generate_schema_docs.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/guardian_bench.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/guardian_calibrate.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/guardian_replay_skeptic.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/guardian_review.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/inject_architecture_graph.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/mcp_registry_gate.sh +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/ollama_visitor.sh +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/probe_closure_gap.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/probe_tier_ladder.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/recordings_from_corpus.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/scripts/skeptic_arms.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/__init__.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/__main__.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/api/.gitkeep +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/api/__init__.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/api/tool_allowlist.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/bench/__init__.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/bench/agent_task.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/bench/guard.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/bench/transcript.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/core/.gitkeep +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/core/coverage.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/core/freshness.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/core/generated.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/core/paths.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/__init__.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/axes.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/bench.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/calibrate.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/chunked.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/chunker.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/core.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/diff_index.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/evidence.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/findings.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/github_poster.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/metrics.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/prompts.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/providers/__init__.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/providers/base.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/providers/gemini.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/providers/mistral.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/providers/ollama.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/providers/openrouter.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/recording.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/render.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/review_fingerprint.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/runner.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/guardian/skeptic.py +0 -0
- /codegraph_brain-0.29.0/src/cgis/extractors/_python_ast.py → /codegraph_brain-0.30.0/src/cgis/languages/python/_syntax.py +0 -0
- /codegraph_brain-0.29.0/src/cgis/python_dependencies.py → /codegraph_brain-0.30.0/src/cgis/languages/python/dependencies.py +0 -0
- /codegraph_brain-0.29.0/src/cgis/extractors/_typescript_bindings.py → /codegraph_brain-0.30.0/src/cgis/languages/typescript/_bindings.py +0 -0
- /codegraph_brain-0.29.0/src/cgis/npm_dependencies.py → /codegraph_brain-0.30.0/src/cgis/languages/typescript/npm.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/py.typed +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/analysis/__init__.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/analysis/analyzer.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/analysis/anomaly.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/analysis/cohesion.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/analysis/health.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/analysis/overview.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/analysis/suggest_service.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/context/__init__.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/context/context_service.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/context/orphans.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/context/prompt.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/context/snippet.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/drift/__init__.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/drift/_scc.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/drift/catalog.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/drift/drift.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/drift/drift_service.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/drift/fingerprint.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/drift/fractal.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/drift/ontology_init.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/drift/quotient.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/drift/scoring.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/drift/triads.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/engine.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/fqn.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/render/__init__.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/render/graph_json.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/render/metrics.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/query/render/text.py +0 -0
- {codegraph_brain-0.29.0/src/cgis/extractors → codegraph_brain-0.30.0/src/cgis/resolver}/.gitkeep +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/src/cgis/resolver/__init__.py +0 -0
- {codegraph_brain-0.29.0/src/cgis/resolver → codegraph_brain-0.30.0/src/cgis/storage}/.gitkeep +0 -0
- {codegraph_brain-0.29.0/src/cgis/storage → codegraph_brain-0.30.0/tests/integration}/.gitkeep +0 -0
- {codegraph_brain-0.29.0/tests/integration → codegraph_brain-0.30.0/tests/self_parsing}/.gitkeep +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/self_parsing/__init__.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/self_parsing/test_fractal.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/self_parsing/test_overview.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/self_parsing/test_suggest.py +0 -0
- {codegraph_brain-0.29.0/tests/self_parsing → codegraph_brain-0.30.0/tests/unit}/.gitkeep +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/agent_ab_stubs.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/conftest.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/guardian_stubs.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test___main__.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_agent_ab_guard.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_agent_ab_script.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_agent_ab_transcript.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_analyzer.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_annotated_alias_receiver.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_auto_refresh.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_backfill_calibration_fingerprint.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_backfill_review_fingerprint.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_check_pytest_raises.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_check_test_count.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_cohesion.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_dispatch_edges.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_drift.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_drift_service.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_features_source.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_find_symbol_path_prefix.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_fqn.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_fractal.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_gen_ideal_graph.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_generate_mcp_ref.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_generated.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_graph_json.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_axes.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_bench.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_bench_script.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_calibrate.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_calibrate_script.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_chunked.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_chunker.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_core.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_diff_index.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_evidence.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_findings.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_martian_union.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_metrics.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_mistral_sampling.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_ollama_sampling.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_ollama_truncation.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_openrouter.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_poster.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_providers.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_providers_name.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_recording.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_render.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_replay_skeptic.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_review_script.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_runner.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_salvage.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_guardian_skeptic.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_health_scorer.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_impact_agent_sized.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_mcp_server.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_mcp_server_instructions.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_mcp_tool_schemas.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_metrics.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_metrics_file_coupling.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_models.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_ontology_compliance.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_ontology_init.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_orphans.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_overview.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_overview_tools.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_package_view.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_paths.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_prompt.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_query_coverage.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_quotient.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_recordings_from_corpus.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_resolver_import_layout.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_resolver_ts_workspaces.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_review_fingerprint_contract.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_review_fingerprint_digest.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_review_fingerprint_record.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_skeptic_arms.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_snippet.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_sqlite_store.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_suggest_service.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_temperature_source.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_text_format.py +0 -0
- {codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/tests/unit/test_triads.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3252
|
|
@@ -162,6 +162,20 @@ jobs:
|
|
|
162
162
|
# this exemption hides it — that is the cost, and it is the reason the
|
|
163
163
|
# rule stays on for src/.
|
|
164
164
|
#
|
|
165
|
+
# pythonsecurity:S8706 (connection-string injection) is the same
|
|
166
|
+
# finding at sqlite3.connect: graph_identity.py opens a database named
|
|
167
|
+
# on its own command line. `dump()` requires an existing .db/.sqlite/
|
|
168
|
+
# .sqlite3 regular file before connecting, and passes no `uri=True`, so
|
|
169
|
+
# the argument is a file name and never a connection string. Exempted
|
|
170
|
+
# for scripts/ on the S2083 reasoning above — the engine does not model
|
|
171
|
+
# the check — and kept on for src/.
|
|
172
|
+
#
|
|
173
|
+
# tests/fixtures/ is excluded from test analysis
|
|
174
|
+
# (`sonar.test.exclusions`; it sits under `sonar.tests`, so
|
|
175
|
+
# `sonar.exclusions` would not reach it): it holds input corpora, not
|
|
176
|
+
# code. Its package.json files exist to be parsed by cgis, and a lock
|
|
177
|
+
# file next to them (text:S8564) would be a fixture nothing reads.
|
|
178
|
+
#
|
|
165
179
|
# `sonar.newCode.referenceBranch` overrides the server-side new-code
|
|
166
180
|
# definition for this analysis. The instance default is
|
|
167
181
|
# `previous_version` (confirmed: sonar.leak.period=previous_version,
|
|
@@ -218,13 +232,16 @@ jobs:
|
|
|
218
232
|
-Dsonar.newCode.referenceBranch=main
|
|
219
233
|
-Dsonar.sources=src,scripts,.github
|
|
220
234
|
-Dsonar.tests=tests
|
|
235
|
+
-Dsonar.test.exclusions=tests/fixtures/**
|
|
221
236
|
-Dsonar.python.version=3.12
|
|
222
237
|
-Dsonar.python.coverage.reportPaths=coverage.xml
|
|
223
|
-
-Dsonar.issue.ignore.multicriteria=e1,e2,e3,e4
|
|
238
|
+
-Dsonar.issue.ignore.multicriteria=e1,e2,e3,e4,e5
|
|
224
239
|
-Dsonar.issue.ignore.multicriteria.e1.ruleKey=pythonsecurity:S8707
|
|
225
240
|
-Dsonar.issue.ignore.multicriteria.e1.resourceKey=scripts/**/*.py
|
|
226
241
|
-Dsonar.issue.ignore.multicriteria.e4.ruleKey=pythonsecurity:S2083
|
|
227
242
|
-Dsonar.issue.ignore.multicriteria.e4.resourceKey=scripts/**/*.py
|
|
243
|
+
-Dsonar.issue.ignore.multicriteria.e5.ruleKey=pythonsecurity:S8706
|
|
244
|
+
-Dsonar.issue.ignore.multicriteria.e5.resourceKey=scripts/**/*.py
|
|
228
245
|
-Dsonar.issue.ignore.multicriteria.e2.ruleKey=githubactions:S8541
|
|
229
246
|
-Dsonar.issue.ignore.multicriteria.e2.resourceKey=.github/workflows/*.yml
|
|
230
247
|
-Dsonar.issue.ignore.multicriteria.e3.ruleKey=githubactions:S8544
|
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.30.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.29.0...codegraph-brain-v0.30.0) (2026-10-15)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **languages:** Go field and call-result types resolve receiver calls ([#608](https://github.com/zaebee/codegraph-brain/issues/608)) ([#614](https://github.com/zaebee/codegraph-brain/issues/614)) ([96ec5f3](https://github.com/zaebee/codegraph-brain/commit/96ec5f380d52ba1560c63b8b84af673627bc88d0))
|
|
9
|
+
* **languages:** step 7b — the Go pilot ([#607](https://github.com/zaebee/codegraph-brain/issues/607)) ([4a62703](https://github.com/zaebee/codegraph-brain/commit/4a62703f41a4dfb74d1f96bee132b3f78f84c895))
|
|
10
|
+
* **pipeline:** a graph built by other extraction code is rebuilt in full ([#617](https://github.com/zaebee/codegraph-brain/issues/617)) ([dc33153](https://github.com/zaebee/codegraph-brain/commit/dc331531556cc2dc49c8adfacbec079584953eb8))
|
|
11
|
+
* **python:** FastAPI handlers play the ROUTE_HANDLER role ([#566](https://github.com/zaebee/codegraph-brain/issues/566)) ([#616](https://github.com/zaebee/codegraph-brain/issues/616)) ([9098ccd](https://github.com/zaebee/codegraph-brain/commit/9098ccd87ef08fbb3139243fda426b62e8d1b32b))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* **docs:** coverage claims name Go — the MCP instructions are built from the registry ([#615](https://github.com/zaebee/codegraph-brain/issues/615)) ([8ea6362](https://github.com/zaebee/codegraph-brain/commit/8ea636239122b24c4a42b2a65517ebb12dad1b03))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Documentation
|
|
20
|
+
|
|
21
|
+
* auto-sync architecture graph and MCP reference ([#598](https://github.com/zaebee/codegraph-brain/issues/598)) ([3feb1ac](https://github.com/zaebee/codegraph-brain/commit/3feb1ac40b1896acb0e57109c9bd1f2bf941d7bc))
|
|
22
|
+
* auto-sync architecture graph and MCP reference ([#620](https://github.com/zaebee/codegraph-brain/issues/620)) ([3f36e15](https://github.com/zaebee/codegraph-brain/commit/3f36e15c30dca7280b57bebd70a8793764cd872e))
|
|
23
|
+
* **spec:** language packs and a two-plane topology ([#593](https://github.com/zaebee/codegraph-brain/issues/593)) ([d9e7d85](https://github.com/zaebee/codegraph-brain/commit/d9e7d852b17d4cab4a2a4a0f2519f11f8de9236e))
|
|
24
|
+
|
|
3
25
|
## [0.29.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.28.0...codegraph-brain-v0.29.0) (2026-10-14)
|
|
4
26
|
|
|
5
27
|
|
|
@@ -45,21 +45,24 @@ make coverage-html # same, writes htmlcov/
|
|
|
45
45
|
The pipeline runs in three phases: **Extract → Resolve → Store**.
|
|
46
46
|
|
|
47
47
|
```
|
|
48
|
-
IngestionPipeline (pipeline.py)
|
|
49
|
-
├──
|
|
50
|
-
│
|
|
48
|
+
IngestionPipeline (pipeline/__init__.py)
|
|
49
|
+
├── cgis.languages (registry) ← lazy: a pack is imported when its first file is met
|
|
50
|
+
│ ├── languages/python/ ← PythonExtractor + PACK
|
|
51
|
+
│ ├── languages/typescript/ ← TypeScriptExtractor (.ts/.tsx) + PACK
|
|
52
|
+
│ └── languages/go/ ← GoExtractor (.go) + go.mod reader + PACK (pilot)
|
|
51
53
|
├── ResolverEngine (resolver/engine.py) ← raw_call: targets → resolved FQN edges
|
|
52
|
-
|
|
54
|
+
├── SQLiteStore (storage/sqlite_store.py) ← persists graph; WAL mode
|
|
55
|
+
└── post-write passes (pipeline/) ← refresh_dispatch, SemanticUpliftEngine (pipeline/uplift.py)
|
|
53
56
|
└── QueryEngine (query/engine.py) ← BFS traversals (impact / flow)
|
|
54
57
|
```
|
|
55
58
|
|
|
56
|
-
**Node FQN format**: `module.ClassName.method_name` — fully dot-separated, derived from the file path (e.g., `src/cgis/pipeline.py` → `src.cgis.pipeline.IngestionPipeline.run`). Use `
|
|
59
|
+
**Node FQN format**: `module.ClassName.method_name` — fully dot-separated, derived from the file path (e.g., `src/cgis/pipeline.py` → `src.cgis.pipeline.IngestionPipeline.run`). Use `cgis.languages.scope_of(path, source_root)` to convert paths (it picks the file's own pack; the Python rule lives in `languages/python/extractor.py`). `__init__.py` strips the `/__init__` suffix.
|
|
57
60
|
|
|
58
61
|
**Raw call convention**: Extractors emit edges with `target = "raw_call:<name>"`. The `ResolverEngine` then resolves these to actual FQNs or leaves them unresolved (keeps the `raw_call:` prefix in output).
|
|
59
62
|
|
|
60
63
|
**`ResolverEngine` resolution order** for a call to `name`:
|
|
61
64
|
1. `self.method` → look up `method` on the enclosing class via `_class_methods` index
|
|
62
|
-
2. Unqualified call → `_global_symbols` by name; if ambiguous, prefer same-
|
|
65
|
+
2. Unqualified call → `_global_symbols` by name; if ambiguous, prefer the same-scope candidate via `file_global_symbols` (a file's scope is its path, or the `metadata["scope"]` its FILE node declares — a Go package)
|
|
63
66
|
|
|
64
67
|
## Core Models (`src/cgis/core/models.py`)
|
|
65
68
|
|
|
@@ -68,12 +71,30 @@ IngestionPipeline (pipeline.py)
|
|
|
68
71
|
- `NodeType` — structural (`FILE`, `MODULE`, `CLASS`, `FUNCTION`, `METHOD`…), runtime (`API_ENDPOINT`, `DB_TABLE`…), semantic (`DOMAIN_CONCEPT`).
|
|
69
72
|
- `EdgeType` — structural (`CONTAINS`, `DECLARES`, `IMPORTS`), behavioral (`CALLS`, `REFERENCES`), semantic (`HANDLES`, `PERSISTS`, `AUTHORIZES`).
|
|
70
73
|
|
|
71
|
-
## Adding a
|
|
72
|
-
|
|
73
|
-
1.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
## Adding a Language Pack
|
|
75
|
+
|
|
76
|
+
1. Create `src/cgis/languages/<name>/` with an extractor subclassing `cgis.core.extractor.BaseExtractor`
|
|
77
|
+
(`parse(code, file_path) -> tuple[list[Node], list[Edge]]`; emit `CALLS` edges with
|
|
78
|
+
`target="raw_call:<name>"`, set `Node.language = "<name>"`).
|
|
79
|
+
2. In its `__init__.py`, define `PACK`, subclassing `cgis.core.extractor.LanguagePack` (mark methods `@override`)
|
|
80
|
+
(`name`, `extensions`, `code_fence`, `is_test`, `scope_of`, `extractor`, `project_reader`,
|
|
81
|
+
`index_facts`, `classify`, `resolution`). `resolution()` returns `ResolutionRules`
|
|
82
|
+
(`cgis.core.resolution`): type normalizers, steps at a position (`after:import_map`), a
|
|
83
|
+
fallback with its confidence, `reconcile_import` — all reading the index as `ResolutionView`.
|
|
84
|
+
Metadata other files resolve against goes in the manifest's `cross_file_metadata`. `classify` answers for references from the pack's own files and
|
|
85
|
+
runs the whole chain; a source with no pack gets the generic tail in `SymbolIndex.classify_fqn`.
|
|
86
|
+
3. Add one `Manifest` to `MANIFESTS` in `src/cgis/languages/__init__.py`, with a `load` function that
|
|
87
|
+
imports the pack statically inside it (lazy, yet visible to the review-fingerprint walk). Nothing
|
|
88
|
+
else names the pack: CLI, MCP server, guardian and scripts all go through the registry, and the
|
|
89
|
+
`surface-packs` forbidden-edge gate fails if a surface imports a pack directly.
|
|
90
|
+
4. A pack never imports another pack or `cgis.storage` (`cross-pack`, `pack-isolation` gates).
|
|
91
|
+
5. A pack's `__init__` imports no grammar: import the extractor inside `extractor()`. Config reading
|
|
92
|
+
goes in a `ProjectReader` (`cgis.core.project`) whose facts are data keyed by `ingest_state`
|
|
93
|
+
key — the collector (`cgis.import_names`), not the pack, writes them. A key other than the four
|
|
94
|
+
built-ins (`_FACT_SHAPES`) travels as `ImportNames.extra`: recorded, compared, and merged into the
|
|
95
|
+
`state` the pack's `index_facts` reads. Its value must read back equal from JSON (no tuples).
|
|
96
|
+
6. A FILE node's id comes from `file_node_id`, its definitions' namespace from `scope_of`; they differ
|
|
97
|
+
only where several files share a scope (Go), which the FILE node declares as `metadata["scope"]`.
|
|
77
98
|
|
|
78
99
|
## Type Discipline
|
|
79
100
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: codegraph-brain
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.30.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
|
|
@@ -29,6 +29,7 @@ Requires-Dist: pydantic>=2.13.4
|
|
|
29
29
|
Requires-Dist: pyyaml>=6.0.2
|
|
30
30
|
Requires-Dist: rich>=15.0.0
|
|
31
31
|
Requires-Dist: structlog>=25.5.0
|
|
32
|
+
Requires-Dist: tree-sitter-go>=0.25.0
|
|
32
33
|
Requires-Dist: tree-sitter-python>=0.25.0
|
|
33
34
|
Requires-Dist: tree-sitter-typescript>=0.23.2
|
|
34
35
|
Requires-Dist: tree-sitter>=0.25.2
|
|
@@ -60,7 +61,7 @@ Description-Content-Type: text/markdown
|
|
|
60
61
|
|
|
61
62
|
CGIS parses a repository with tree-sitter into a graph of fully qualified symbols and the calls, imports and containment between them, stores it in SQLite, and serves it to AI agents over MCP. An agent that would otherwise grep and read whole files asks the graph instead.
|
|
62
63
|
|
|
63
|
-
- **Languages:** Python · TypeScript / TSX
|
|
64
|
+
- **Languages:** Python · TypeScript / TSX · Go (pilot)
|
|
64
65
|
- **Runs:** locally — no account, no telemetry; the graph never leaves your disk ([the one opt-in exception](https://github.com/zaebee/codegraph-brain/blob/main/PRIVACY.md))
|
|
65
66
|
|
|
66
67
|
```console
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
CGIS parses a repository with tree-sitter into a graph of fully qualified symbols and the calls, imports and containment between them, stores it in SQLite, and serves it to AI agents over MCP. An agent that would otherwise grep and read whole files asks the graph instead.
|
|
12
12
|
|
|
13
|
-
- **Languages:** Python · TypeScript / TSX
|
|
13
|
+
- **Languages:** Python · TypeScript / TSX · Go (pilot)
|
|
14
14
|
- **Runs:** locally — no account, no telemetry; the graph never leaves your disk ([the one opt-in exception](https://github.com/zaebee/codegraph-brain/blob/main/PRIVACY.md))
|
|
15
15
|
|
|
16
16
|
```console
|
|
@@ -57,7 +57,7 @@ The graph is static structure. That boundary is real, and it is better stated he
|
|
|
57
57
|
- **Not a penetration test.** Authorisation *coverage* means every handler has a static path to a guard. It does not mean the guard is correct, that the logic behind it is sound, or that the endpoint is unexploitable.
|
|
58
58
|
- **Not a runtime analysis.** Nothing is executed. Behaviour that only appears under load, concurrency or real data is out of scope.
|
|
59
59
|
- **Not a business-logic review.** The report says how your code is wired, not whether the wiring implements the right rules.
|
|
60
|
-
- **Not language-complete.** Extractors cover Python and TypeScript. Vue, Astro,
|
|
60
|
+
- **Not language-complete.** Extractors cover Python and TypeScript, with Go as a pilot outside this offer. Vue, Astro, Rust and everything else are invisible to the graph, and the report will say which parts of your codebase it could not see.
|
|
61
61
|
- **Not a substitute for judgement.** An empty impact result means *no static callers found*, not *safe to delete*. Dynamic dispatch, registries and framework decorators do not appear in any static graph. The report flags where this matters instead of asserting a safety it cannot see.
|
|
62
62
|
|
|
63
63
|
Roughly a tenth of call edges in a typical Python codebase cannot be resolved statically at all — they are calls on objects typed at runtime. That number is in the report too, because it tells you how much of the analysis to trust.
|
|
@@ -188,35 +188,37 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
|
|
|
188
188
|
models_Node["Node (models.py:89)"]:::classNode
|
|
189
189
|
end
|
|
190
190
|
subgraph sg_import_names["import_names.py"]
|
|
191
|
-
import_names_ImportNameCollector["ImportNameCollector (import_names.py:
|
|
192
|
-
import_names_ImportNameCollector_collect["collect (import_names.py:
|
|
193
|
-
import_names_ImportNameCollector_note["note (import_names.py:
|
|
191
|
+
import_names_ImportNameCollector["ImportNameCollector (import_names.py:147)"]:::classNode
|
|
192
|
+
import_names_ImportNameCollector_collect["collect (import_names.py:168)"]:::methodNode
|
|
193
|
+
import_names_ImportNameCollector_note["note (import_names.py:163)"]:::methodNode
|
|
194
194
|
end
|
|
195
|
-
subgraph
|
|
196
|
-
pipeline_IngestionPipeline_cross_file_inputs_changed["_cross_file_inputs_changed (
|
|
197
|
-
pipeline_IngestionPipeline_get_extractor["_get_extractor (
|
|
198
|
-
pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (
|
|
199
|
-
pipeline_IngestionPipeline_persist_incremental["_persist_incremental (
|
|
200
|
-
pipeline_IngestionPipeline_process_file["_process_file (
|
|
201
|
-
pipeline_IngestionPipeline_run["run (
|
|
202
|
-
pipeline_IngestionPipeline_workspace_root["workspace_root (
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
subgraph sg_engine["engine.py"]
|
|
207
|
-
engine_ResolverEngine["ResolverEngine (engine.py:49)"]:::classNode
|
|
208
|
-
engine_ResolverEngine_resolve["resolve (engine.py:87)"]:::methodNode
|
|
195
|
+
subgraph sg_init["__init__.py"]
|
|
196
|
+
pipeline_IngestionPipeline_cross_file_inputs_changed["_cross_file_inputs_changed (__init__.py:394)"]:::methodNode
|
|
197
|
+
pipeline_IngestionPipeline_get_extractor["_get_extractor (__init__.py:532)"]:::methodNode
|
|
198
|
+
pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (__init__.py:455)"]:::methodNode
|
|
199
|
+
pipeline_IngestionPipeline_persist_incremental["_persist_incremental (__init__.py:479)"]:::methodNode
|
|
200
|
+
pipeline_IngestionPipeline_process_file["_process_file (__init__.py:354)"]:::methodNode
|
|
201
|
+
pipeline_IngestionPipeline_run["run (__init__.py:209)"]:::methodNode
|
|
202
|
+
pipeline_IngestionPipeline_workspace_root["workspace_root (__init__.py:192)"]:::methodNode
|
|
203
|
+
pipeline_needs_rebuild["_needs_rebuild (__init__.py:138)"]:::funcNode
|
|
204
|
+
pipeline_observe["_observe (__init__.py:72)"]:::funcNode
|
|
205
|
+
pipeline_refresh_dispatch["refresh_dispatch (__init__.py:36)"]:::funcNode
|
|
209
206
|
end
|
|
210
207
|
subgraph sg_uplift["uplift.py"]
|
|
211
|
-
uplift_SemanticUpliftEngine["SemanticUpliftEngine (uplift.py:
|
|
212
|
-
uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:
|
|
208
|
+
uplift_SemanticUpliftEngine["SemanticUpliftEngine (uplift.py:67)"]:::classNode
|
|
209
|
+
uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:92)"]:::methodNode
|
|
210
|
+
end
|
|
211
|
+
subgraph sg_engine["engine.py"]
|
|
212
|
+
engine_ResolverEngine["ResolverEngine (engine.py:63)"]:::classNode
|
|
213
|
+
engine_ResolverEngine_resolve["resolve (engine.py:109)"]:::methodNode
|
|
213
214
|
end
|
|
214
215
|
subgraph sg_sqlite_store["sqlite_store.py"]
|
|
215
|
-
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:
|
|
216
|
+
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:81)"]:::classNode
|
|
216
217
|
end
|
|
217
218
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Node
|
|
218
219
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Edge
|
|
219
220
|
pipeline_IngestionPipeline_run -->|REFERENCES| sqlite_store_SQLiteStore
|
|
221
|
+
pipeline_IngestionPipeline_run -->|CALLS| pipeline_needs_rebuild
|
|
220
222
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_workspace_root
|
|
221
223
|
pipeline_IngestionPipeline_run -->|CALLS| import_names_ImportNameCollector
|
|
222
224
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_observe
|
|
@@ -239,21 +241,22 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
|
|
|
239
241
|
|--------|------|------|
|
|
240
242
|
| `Node` | CLASS | [`models.py:89`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/core/models.py#L89) |
|
|
241
243
|
| `Edge` | CLASS | [`models.py:146`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/core/models.py#L146) |
|
|
242
|
-
| `ImportNameCollector` | CLASS | [`import_names.py:
|
|
243
|
-
| `note` | METHOD | [`import_names.py:
|
|
244
|
-
| `collect` | METHOD | [`import_names.py:
|
|
245
|
-
| `refresh_dispatch` | FUNCTION | [`
|
|
246
|
-
| `_observe` | FUNCTION | [`
|
|
247
|
-
| `
|
|
248
|
-
| `
|
|
249
|
-
| `
|
|
250
|
-
| `
|
|
251
|
-
| `
|
|
252
|
-
| `
|
|
253
|
-
| `
|
|
254
|
-
| `
|
|
255
|
-
| `
|
|
256
|
-
| `
|
|
257
|
-
| `
|
|
258
|
-
| `
|
|
244
|
+
| `ImportNameCollector` | CLASS | [`import_names.py:147`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/import_names.py#L147) |
|
|
245
|
+
| `note` | METHOD | [`import_names.py:163`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/import_names.py#L163) |
|
|
246
|
+
| `collect` | METHOD | [`import_names.py:168`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/import_names.py#L168) |
|
|
247
|
+
| `refresh_dispatch` | FUNCTION | [`__init__.py:36`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline/__init__.py#L36) |
|
|
248
|
+
| `_observe` | FUNCTION | [`__init__.py:72`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline/__init__.py#L72) |
|
|
249
|
+
| `_needs_rebuild` | FUNCTION | [`__init__.py:138`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline/__init__.py#L138) |
|
|
250
|
+
| `workspace_root` | METHOD | [`__init__.py:192`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline/__init__.py#L192) |
|
|
251
|
+
| `run` | METHOD | [`__init__.py:209`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline/__init__.py#L209) |
|
|
252
|
+
| `_process_file` | METHOD | [`__init__.py:354`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline/__init__.py#L354) |
|
|
253
|
+
| `_cross_file_inputs_changed` | METHOD | [`__init__.py:394`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline/__init__.py#L394) |
|
|
254
|
+
| `_is_noop_incremental` | METHOD | [`__init__.py:455`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline/__init__.py#L455) |
|
|
255
|
+
| `_persist_incremental` | METHOD | [`__init__.py:479`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline/__init__.py#L479) |
|
|
256
|
+
| `_get_extractor` | METHOD | [`__init__.py:532`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline/__init__.py#L532) |
|
|
257
|
+
| `SemanticUpliftEngine` | CLASS | [`uplift.py:67`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline/uplift.py#L67) |
|
|
258
|
+
| `execute_uplift` | METHOD | [`uplift.py:92`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/pipeline/uplift.py#L92) |
|
|
259
|
+
| `ResolverEngine` | CLASS | [`engine.py:63`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L63) |
|
|
260
|
+
| `resolve` | METHOD | [`engine.py:109`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/resolver/engine.py#L109) |
|
|
261
|
+
| `SQLiteStore` | CLASS | [`sqlite_store.py:81`](https://github.com/zaebee/codegraph-brain/blob/main/src/cgis/storage/sqlite_store.py#L81) |
|
|
259
262
|
<!-- END_CGIS_GRAPH -->
|
|
@@ -129,4 +129,4 @@ domains:
|
|
|
129
129
|
- "*storage.*"
|
|
130
130
|
```
|
|
131
131
|
|
|
132
|
-
**Ontology compliance rule:** Any PR that adds a new `NodeType`, `EdgeType`, or modifies `domains.yaml` must update this document and the `_ONTOLOGY_CLASS` mapping in `src/cgis/
|
|
132
|
+
**Ontology compliance rule:** Any PR that adds a new `NodeType`, `EdgeType`, or modifies `domains.yaml` must update this document and the `_ONTOLOGY_CLASS` mapping in `src/cgis/pipeline/uplift.py`.
|
{codegraph_brain-0.29.0 → codegraph_brain-0.30.0}/docs/architecture/diagrams/pipeline_flow.mermaid
RENAMED
|
@@ -12,35 +12,37 @@ classDef externalNode fill:#fff3e0,stroke:#e65100,stroke-width:1px,stroke-dashar
|
|
|
12
12
|
models_Node["Node (models.py:89)"]:::classNode
|
|
13
13
|
end
|
|
14
14
|
subgraph sg_import_names["import_names.py"]
|
|
15
|
-
import_names_ImportNameCollector["ImportNameCollector (import_names.py:
|
|
16
|
-
import_names_ImportNameCollector_collect["collect (import_names.py:
|
|
17
|
-
import_names_ImportNameCollector_note["note (import_names.py:
|
|
15
|
+
import_names_ImportNameCollector["ImportNameCollector (import_names.py:147)"]:::classNode
|
|
16
|
+
import_names_ImportNameCollector_collect["collect (import_names.py:168)"]:::methodNode
|
|
17
|
+
import_names_ImportNameCollector_note["note (import_names.py:163)"]:::methodNode
|
|
18
18
|
end
|
|
19
|
-
subgraph
|
|
20
|
-
pipeline_IngestionPipeline_cross_file_inputs_changed["_cross_file_inputs_changed (
|
|
21
|
-
pipeline_IngestionPipeline_get_extractor["_get_extractor (
|
|
22
|
-
pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (
|
|
23
|
-
pipeline_IngestionPipeline_persist_incremental["_persist_incremental (
|
|
24
|
-
pipeline_IngestionPipeline_process_file["_process_file (
|
|
25
|
-
pipeline_IngestionPipeline_run["run (
|
|
26
|
-
pipeline_IngestionPipeline_workspace_root["workspace_root (
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
subgraph sg_engine["engine.py"]
|
|
31
|
-
engine_ResolverEngine["ResolverEngine (engine.py:49)"]:::classNode
|
|
32
|
-
engine_ResolverEngine_resolve["resolve (engine.py:87)"]:::methodNode
|
|
19
|
+
subgraph sg_init["__init__.py"]
|
|
20
|
+
pipeline_IngestionPipeline_cross_file_inputs_changed["_cross_file_inputs_changed (__init__.py:394)"]:::methodNode
|
|
21
|
+
pipeline_IngestionPipeline_get_extractor["_get_extractor (__init__.py:532)"]:::methodNode
|
|
22
|
+
pipeline_IngestionPipeline_is_noop_incremental["_is_noop_incremental (__init__.py:455)"]:::methodNode
|
|
23
|
+
pipeline_IngestionPipeline_persist_incremental["_persist_incremental (__init__.py:479)"]:::methodNode
|
|
24
|
+
pipeline_IngestionPipeline_process_file["_process_file (__init__.py:354)"]:::methodNode
|
|
25
|
+
pipeline_IngestionPipeline_run["run (__init__.py:209)"]:::methodNode
|
|
26
|
+
pipeline_IngestionPipeline_workspace_root["workspace_root (__init__.py:192)"]:::methodNode
|
|
27
|
+
pipeline_needs_rebuild["_needs_rebuild (__init__.py:138)"]:::funcNode
|
|
28
|
+
pipeline_observe["_observe (__init__.py:72)"]:::funcNode
|
|
29
|
+
pipeline_refresh_dispatch["refresh_dispatch (__init__.py:36)"]:::funcNode
|
|
33
30
|
end
|
|
34
31
|
subgraph sg_uplift["uplift.py"]
|
|
35
|
-
uplift_SemanticUpliftEngine["SemanticUpliftEngine (uplift.py:
|
|
36
|
-
uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:
|
|
32
|
+
uplift_SemanticUpliftEngine["SemanticUpliftEngine (uplift.py:67)"]:::classNode
|
|
33
|
+
uplift_SemanticUpliftEngine_execute_uplift["execute_uplift (uplift.py:92)"]:::methodNode
|
|
34
|
+
end
|
|
35
|
+
subgraph sg_engine["engine.py"]
|
|
36
|
+
engine_ResolverEngine["ResolverEngine (engine.py:63)"]:::classNode
|
|
37
|
+
engine_ResolverEngine_resolve["resolve (engine.py:109)"]:::methodNode
|
|
37
38
|
end
|
|
38
39
|
subgraph sg_sqlite_store["sqlite_store.py"]
|
|
39
|
-
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:
|
|
40
|
+
sqlite_store_SQLiteStore["SQLiteStore (sqlite_store.py:81)"]:::classNode
|
|
40
41
|
end
|
|
41
42
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Node
|
|
42
43
|
pipeline_IngestionPipeline_run -->|REFERENCES| models_Edge
|
|
43
44
|
pipeline_IngestionPipeline_run -->|REFERENCES| sqlite_store_SQLiteStore
|
|
45
|
+
pipeline_IngestionPipeline_run -->|CALLS| pipeline_needs_rebuild
|
|
44
46
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_IngestionPipeline_workspace_root
|
|
45
47
|
pipeline_IngestionPipeline_run -->|CALLS| import_names_ImportNameCollector
|
|
46
48
|
pipeline_IngestionPipeline_run -->|CALLS| pipeline_observe
|
|
@@ -55,8 +55,9 @@ Reachability/authorization audit — which sources never reach a checkpoint.
|
|
|
55
55
|
NOT transitively reach an ownership check. Reachability follows behavioral edges
|
|
56
56
|
(CALLS *and* FastAPI ``Depends()`` DEPENDS_ON), so a guard wired via DI counts.
|
|
57
57
|
|
|
58
|
-
Select sources with ``from_type`` (
|
|
59
|
-
|
|
58
|
+
Select sources with ``from_type`` (the ``ROUTE_HANDLER`` role — FastAPI handlers on
|
|
59
|
+
a router built in the same module — or a NodeType like ``FUNCTION``) and/or
|
|
60
|
+
``from_prefix`` (FQN prefix) — at least
|
|
60
61
|
one is required. Returns JSON ``{target, covered, gaps}`` where each gap carries
|
|
61
62
|
``fqn``/``file``/``line``. Generalizes to validators, event tracking, or
|
|
62
63
|
service-layer-boundary rules by pointing ``target`` at the required node.
|
|
@@ -68,7 +69,7 @@ Reachability/authorization audit — which sources never reach a checkpoint.
|
|
|
68
69
|
| :--- | :--- | :---: | :--- |
|
|
69
70
|
| `target` | `string` | ✓ | FQN of the checkpoint every source must reach, e.g. an ownership check. A unique dot-boundary suffix also resolves. |
|
|
70
71
|
| `db_path` | `string` | | SQLite graph built by cgis_ingest. A relative path resolves against the MCP server's working directory, not the agent's — prefer an absolute path. |
|
|
71
|
-
| `from_type` | `any` | | NodeType of the sources to audit
|
|
72
|
+
| `from_type` | `any` | | NodeType or role of the sources to audit (any case): ROUTE_HANDLER selects FastAPI handlers on a router built in the same module; a structural type such as FUNCTION selects by type. Give this, from_prefix, or both. |
|
|
72
73
|
| `from_prefix` | `any` | | Only audit sources at or under this FQN prefix, matched on whole dot-segments. A selection matching no source is an error naming the whole-segment prefixes it may have meant. Combined with from_type when both are given. |
|
|
73
74
|
| `depth` | `integer` | | Maximum reachability depth; a longer path is reported as a gap. |
|
|
74
75
|
|
|
@@ -6,10 +6,10 @@ domains:
|
|
|
6
6
|
description: "Source code parsing and AST extraction"
|
|
7
7
|
heuristics:
|
|
8
8
|
file_path_patterns:
|
|
9
|
-
- "*
|
|
9
|
+
- "*languages/*"
|
|
10
10
|
fqn_patterns:
|
|
11
11
|
- "*.Extractor*"
|
|
12
|
-
- "*
|
|
12
|
+
- "*languages.*"
|
|
13
13
|
|
|
14
14
|
StorageLayer:
|
|
15
15
|
description: "Database storage, schemas, and persistence"
|
|
@@ -21,7 +21,7 @@ domains:
|
|
|
21
21
|
- "*storage.*"
|
|
22
22
|
|
|
23
23
|
SemanticEngine:
|
|
24
|
-
description: "Symbol resolution
|
|
24
|
+
description: "Symbol resolution and linkage"
|
|
25
25
|
heuristics:
|
|
26
26
|
file_path_patterns:
|
|
27
27
|
- "*resolver/*"
|
|
@@ -29,8 +29,6 @@ domains:
|
|
|
29
29
|
- "*.Resolver*"
|
|
30
30
|
- "*.ResolverEngine*"
|
|
31
31
|
- "*resolver.*"
|
|
32
|
-
- "*.uplift*"
|
|
33
|
-
- "*.SemanticUplift*"
|
|
34
32
|
|
|
35
33
|
QueryLayer:
|
|
36
34
|
description: "Graph traversal and query operations"
|
|
@@ -53,12 +51,13 @@ domains:
|
|
|
53
51
|
- "*.EdgeType*"
|
|
54
52
|
|
|
55
53
|
Pipeline:
|
|
56
|
-
description: "Ingestion pipeline orchestration"
|
|
54
|
+
description: "Ingestion pipeline orchestration and its post-write passes (semantic uplift, dispatch)"
|
|
57
55
|
heuristics:
|
|
58
56
|
file_path_patterns:
|
|
59
|
-
- "*pipeline
|
|
57
|
+
- "*pipeline/*"
|
|
60
58
|
fqn_patterns:
|
|
61
59
|
- "*.IngestionPipeline*"
|
|
60
|
+
- "*pipeline"
|
|
62
61
|
- "*pipeline.*"
|
|
63
62
|
|
|
64
63
|
APILayer:
|
|
@@ -114,22 +114,47 @@ patterns:
|
|
|
114
114
|
# measurement (see plan: docs/specs/plans/2026-06-10-motif-basis-part-b.md).
|
|
115
115
|
project_domains:
|
|
116
116
|
# Python graph (ingest root: src/ → FQNs carry the cgis. prefix)
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
# Language packs (spec: Drift gates, Domains) — one domain per pack, one shared
|
|
118
|
+
# bar (ruling G2), so a new pack is measured against it from its first commit;
|
|
119
|
+
# tests/unit/test_patterns_yaml.py fails for a pack without one.
|
|
120
|
+
# Was the single "extraction" domain over cgis.extractors / cgis.languages
|
|
121
|
+
# (#116, #183, steps 1-5). Measured at step 6 (main ca32430): python layered_dag
|
|
122
|
+
# 0.393 (best fit funnel 0.328), typescript layered_dag 0.184. Shared
|
|
123
|
+
# tolerance = loosest + headroom.
|
|
124
|
+
- name: "languages.python"
|
|
125
|
+
fqn_prefix: "cgis.languages.python"
|
|
119
126
|
expected_pattern: layered_dag
|
|
120
127
|
profile: python
|
|
121
|
-
|
|
122
|
-
# layered package (orchestrator python_extractor → handlers → _python_ast core),
|
|
123
|
-
# so the domain is no longer pure_utility. Best-fit is now layered_dag (same
|
|
124
|
-
# pattern as cgis.query).
|
|
125
|
-
# Re-baselined in #183 (≈0.32 → 0.37): the resolver stopped fabricating phantom
|
|
126
|
-
# `module.list.append`-style internal FQNs for builtin-method calls (e.g. `edges.append`
|
|
127
|
-
# where `edges: list[Edge]`). Those fake intra-domain CALLS edges had been artificially
|
|
128
|
-
# deflating this domain's drift; 0.37 is the honest census of the real structure (no real
|
|
129
|
-
# edges lost — verified by edge-diff). Correctness-driven re-baseline, not ratchet loosening.
|
|
130
|
-
drift_tolerance: 0.40
|
|
128
|
+
drift_tolerance: 0.42
|
|
131
129
|
hygiene_baseline:
|
|
132
|
-
unresolved_ratio: 0.37 # measured 0.
|
|
130
|
+
unresolved_ratio: 0.37 # measured 0.356 at step 6 (the old extraction baseline)
|
|
131
|
+
|
|
132
|
+
- name: "languages.typescript"
|
|
133
|
+
fqn_prefix: "cgis.languages.typescript"
|
|
134
|
+
expected_pattern: layered_dag
|
|
135
|
+
profile: python
|
|
136
|
+
drift_tolerance: 0.42
|
|
137
|
+
hygiene_baseline:
|
|
138
|
+
unresolved_ratio: 0.31 # measured 0.295 at step 6
|
|
139
|
+
|
|
140
|
+
- name: "languages.go"
|
|
141
|
+
fqn_prefix: "cgis.languages.go"
|
|
142
|
+
expected_pattern: layered_dag
|
|
143
|
+
profile: python
|
|
144
|
+
drift_tolerance: 0.42
|
|
145
|
+
hygiene_baseline:
|
|
146
|
+
unresolved_ratio: 0.26 # measured 0.242 at step 7b (drift 0.285)
|
|
147
|
+
|
|
148
|
+
# The pack contract and the model (spec: Core). layered_dag, not the spec's
|
|
149
|
+
# pure_utility — measured 0.215 vs 0.554 at step 6: since steps 1-4 the contract
|
|
150
|
+
# is layered (extractor/index/resolution/project -> models) (ruling G1).
|
|
151
|
+
- name: "core"
|
|
152
|
+
fqn_prefix: "cgis.core"
|
|
153
|
+
expected_pattern: layered_dag
|
|
154
|
+
profile: python
|
|
155
|
+
drift_tolerance: 0.25
|
|
156
|
+
hygiene_baseline:
|
|
157
|
+
unresolved_ratio: 0.21 # measured 0.191 at step 6
|
|
133
158
|
|
|
134
159
|
- name: "resolution"
|
|
135
160
|
fqn_prefix: "cgis.resolver"
|
|
@@ -137,7 +162,12 @@ project_domains:
|
|
|
137
162
|
profile: python
|
|
138
163
|
drift_tolerance: 0.40 # v2 measured ≈0.25 post-#115 split (tv_imp 0.00 — real 021C chain engine→symbols→indices; residual is tv_calls)
|
|
139
164
|
hygiene_baseline:
|
|
140
|
-
|
|
165
|
+
# Re-baselined 0.45 -> 0.46 in language-packs step 5 (user decision): moving
|
|
166
|
+
# resolver/uplift.py into cgis/pipeline/ took 70 calls, 28 of them unresolved
|
|
167
|
+
# (0.40), out of a domain at 0.44 — 136/309 became 108/239 = 0.452 with no
|
|
168
|
+
# unresolved edge added and the moved code unchanged. A denominator effect,
|
|
169
|
+
# not a resolution regression; 0.46 keeps the ratchet's usual small headroom.
|
|
170
|
+
unresolved_ratio: 0.46 # measured 0.4519 after step 5 (was 0.4451 at #149)
|
|
141
171
|
|
|
142
172
|
- name: "pipeline"
|
|
143
173
|
fqn_prefix: "cgis.pipeline"
|
|
@@ -252,15 +282,9 @@ project_domains:
|
|
|
252
282
|
hygiene_baseline:
|
|
253
283
|
unresolved_ratio: 0.79 # measured 0.7857 when the gate came alive (#149)
|
|
254
284
|
|
|
255
|
-
# ── Project-level quotient
|
|
256
|
-
#
|
|
257
|
-
#
|
|
258
|
-
#
|
|
259
|
-
#
|
|
260
|
-
|
|
261
|
-
- name: "cgis-project"
|
|
262
|
-
fqn_prefix: "quotient"
|
|
263
|
-
expected_pattern: pipeline_stage
|
|
264
|
-
profile: python
|
|
265
|
-
drift_tolerance: 0.15
|
|
266
|
-
enforce: false
|
|
285
|
+
# ── Project-level quotient ───────────────────────────────────────────────────
|
|
286
|
+
# Retired in language-packs step 6 (#146). cgis's topology is enforced by the
|
|
287
|
+
# forbidden-edge gate (tests/self_parsing/test_architecture.py, exact shrinking
|
|
288
|
+
# allowlists); the build/read plane quotients are printed observe-only by
|
|
289
|
+
# tests/self_parsing/test_drift.py. The `project_level` section remains a
|
|
290
|
+
# supported feature for other repositories.
|
|
@@ -11,7 +11,10 @@
|
|
|
11
11
|
# update the lock and justify it in the PR description.
|
|
12
12
|
|
|
13
13
|
project_domains:
|
|
14
|
-
|
|
14
|
+
languages.python: 0.42
|
|
15
|
+
languages.typescript: 0.42
|
|
16
|
+
languages.go: 0.42
|
|
17
|
+
core: 0.25
|
|
15
18
|
resolution: 0.40
|
|
16
19
|
pipeline: 0.25
|
|
17
20
|
storage: 0.20
|
|
@@ -25,6 +28,3 @@ project_domains:
|
|
|
25
28
|
store: 0.15
|
|
26
29
|
providers: 0.17
|
|
27
30
|
utils: 0.20
|
|
28
|
-
|
|
29
|
-
project_level:
|
|
30
|
-
cgis-project: 0.15
|