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