codegraph-brain 0.30.0__tar.gz → 0.31.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.31.0/.github/test-count-baseline +1 -0
- codegraph_brain-0.31.0/.release-please-manifest.json +3 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/CHANGELOG.md +25 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/CLAUDE.md +2 -1
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/PKG-INFO +1 -1
- codegraph_brain-0.31.0/benchmarks/agent_ab/analysis/exp1_gates.py +88 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/analysis/exp2_gates.py +54 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/analysis/exp2_pairs.json +71 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/analysis/exp2_post_review.py +34 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/analysis/exp3_gates.py +76 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/results-exp1-full.jsonl +60 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/results-exp1.jsonl +18 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/results-exp2-full.jsonl +51 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/results-exp2-pilot.jsonl +5 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/results-exp3-forced.jsonl +111 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/results-exp3b-forced.jsonl +6 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/results-exp3c-arm-a.jsonl +3 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/results-exp3c-arm-b.jsonl +3 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-desc-record-usage.yaml +98 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-desc-relative.yaml +118 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-desc-specifier-fqn.yaml +128 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-dir-build-ladder.yaml +43 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-dir-effective-prefix.yaml +59 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-dir-extractors.yaml +59 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-dir-loc.yaml +49 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-dir-reject-metrics-path.yaml +35 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-dir-resolve-fqn.yaml +53 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-dir-visible-findings.yaml +40 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-ind-as-terms.yaml +51 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-ind-finder-pass.yaml +37 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-ind-fit-config.yaml +52 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-ind-fit-templates.yaml +52 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-ind-get-edge-stats.yaml +48 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-ind-get-incoming-edges.yaml +47 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/cgis-exp2-ind-sanitize-finder-result.yaml +47 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-big-dir-calculate-pagination.yaml +58 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-big-dir-vehicle-by-id-query.yaml +68 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-big-ind-calculate-average-rating.yaml +71 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-big-ind-calculate-total-price.yaml +69 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-big-ind-credit-document.yaml +54 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-big-ind-extra-options-filter.yaml +57 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-big-ind-live-dispute-clause.yaml +54 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-big-ind-lock-wallet.yaml +57 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-big-ind-opensearch-mget.yaml +68 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-big-ind-reservation-conflict-query.yaml +132 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-big-ind-s3-presigned-url.yaml +56 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-big-ind-signup-bonus-reference.yaml +59 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-big-ind-thread-for.yaml +177 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-small-dir-get-client-ip.yaml +46 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-small-dir-owner-name.yaml +49 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-small-dir-raise-vehicle-not-found.yaml +57 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-small-dir-select-random-payment-method.yaml +46 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-small-ind-counterparty-cards.yaml +45 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-small-ind-notify-top-up-failed.yaml +43 -0
- codegraph_brain-0.31.0/benchmarks/agent_ab/tasks/owner-exp1-small-ind-search-by-owner.yaml +36 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/architecture/HOW_IT_WORKS.md +19 -18
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/architecture/diagrams/pipeline_flow.mermaid +9 -9
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/how-to/MCP_REFERENCE.md +2 -2
- codegraph_brain-0.31.0/docs/lab-notes/2026-10-15-exp1-radius-indirection.md +252 -0
- codegraph_brain-0.31.0/docs/lab-notes/2026-10-15-exp2-indirection-cgis.md +278 -0
- codegraph_brain-0.31.0/docs/lab-notes/2026-10-15-exp3-does-cgis-help.md +124 -0
- codegraph_brain-0.31.0/docs/lab-notes/2026-10-15-exp3b-any-fix-rerun.md +80 -0
- codegraph_brain-0.31.0/docs/lab-notes/2026-10-15-exp3c-coverage-sites.md +116 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/ontology/patterns.yaml +24 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/ontology/tolerances.lock +3 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-10-14-language-packs-design.md +27 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/pyproject.toml +10 -2
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/agent_ab.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/backfill_calibration_fingerprint.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/backfill_review_fingerprint.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/generate_health.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/generate_mcp_ref.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/graph_identity.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/guardian_bench.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/guardian_calibrate.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/guardian_martian.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/guardian_replay_skeptic.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/guardian_review.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/inject_architecture_graph.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/probe_closure_gap.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/probe_tier_ladder.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/recordings_from_corpus.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/skeptic_arms.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/server.json +2 -2
- codegraph_brain-0.31.0/src/cgis/__init__.py +59 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/api/mcp_server.py +29 -7
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/api/server_instructions.py +4 -1
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/bench/agent_task.py +26 -1
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/cli.py +2 -1
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/core/coverage.py +45 -2
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/core/resolution.py +9 -2
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/__init__.py +6 -1
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/go/_syntax.py +25 -0
- codegraph_brain-0.31.0/src/cgis/languages/go/dispatch.py +138 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/go/extractor.py +11 -4
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/go/resolution.py +2 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/python/_functions.py +6 -6
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/python/_types.py +22 -1
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/pipeline/__init__.py +2 -1
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/analysis/health.py +0 -11
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/drift/scoring.py +12 -7
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/engine.py +97 -11
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/resolver/engine.py +4 -2
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/resolver/symbols.py +29 -2
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/storage/sqlite_store.py +15 -7
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity_go/snapshot.json +41 -2
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/self_parsing/test_drift.py +19 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_agent_ab_task.py +94 -0
- codegraph_brain-0.31.0/tests/unit/test_any_typed_receiver.py +150 -0
- codegraph_brain-0.31.0/tests/unit/test_coverage_screen_and_sites.py +202 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_dispatch_edges.py +144 -2
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_drift.py +53 -0
- codegraph_brain-0.31.0/tests/unit/test_go_dispatch.py +350 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_graph_json.py +3 -1
- codegraph_brain-0.31.0/tests/unit/test_logs_to_stderr.py +161 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/uv.lock +1 -1
- codegraph_brain-0.30.0/.github/test-count-baseline +0 -1
- codegraph_brain-0.30.0/.release-please-manifest.json +0 -3
- codegraph_brain-0.30.0/src/cgis/__init__.py +0 -10
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/.claude-plugin/marketplace.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/.gitattributes +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/.github/workflows/autodoc.yml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/.github/workflows/ci.yml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/.github/workflows/guardian.yml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/.github/workflows/mcp-registry.yml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/.github/workflows/pr-title.yml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/.github/workflows/release-please.yml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/.github/workflows/ui.yml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/.gitignore +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/.pre-commit-config.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/.python-version +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/CONTRIBUTING.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/LICENSE +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/Makefile +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/PRIVACY.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/README.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/agent_ab/.gitignore +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/agent_ab/README.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/agent_ab/RESULTS.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/agent_ab/results.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/agent_ab/tasks/cgis-control-sqlite-pragmas.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/agent_ab/tasks/cgis-flow-ingest-to-sqlite.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/agent_ab/tasks/cgis-impact-drift-same-name.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/agent_ab/tasks/cgis-impact-language-for.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/agent_ab/tasks/cgis-impact-transitive-tsconfig.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/agent_ab/tasks/cgis-orientation-call-resolution.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/agent_ab/tasks/owner-impact-credit-wallet.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/agent_ab/tasks/owner-impact-occupied-window-same-name.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/CURATION.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/calibration.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/experiments/246-cross-vendor/README.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/experiments/246-cross-vendor/free-nemotron-quota-cutoff.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/experiments/401-evidence/README.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/experiments/401-evidence/pr-399-control-rows.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/experiments/401-evidence/pr-399-recording.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/experiments/401-evidence/pr-399-treatment-rows.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/experiments/407-no-checker-appeal/README.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-directive-rows.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-prohibition-rows.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/pr-122.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/pr-140.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/pr-141.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/pr-142.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/pr-143.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/pr-144.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/pr-278.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/pr-313.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/guardian/results.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian/README.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian/cal_dot_com.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian/discourse.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian/grafana.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian/keycloak.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian/sentry.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian-judged.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian-p3-judged-run1.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian-p3-judged-run1.jsonl.corrupted-backup +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian-p3-run1.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian-p3-run2.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian-p3-run3.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian-plan.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian-repeat-judged.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian-repeat-reviews.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/benchmarks/martian-reviews.jsonl +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/data/.gitkeep +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/AUDIT.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/CASE_STUDY.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/GUARDIAN_LOCAL_BENCH.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/GUARDIAN_REMOTE_OLLAMA.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/architecture/ONTOLOGY.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/architecture/PATTERNS_AND_TRIADS.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/architecture/SELF_PORTRAIT.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/architecture/health_badge.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/assets/.gitignore +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/assets/cgis-app-avatar.png +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/assets/cgis-app-avatar.svg +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/assets/generate_avatar.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/examples/.gitkeep +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/how-to/AGENT_ONBOARDING.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/how-to/CLI_USAGE.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/lab-notes/2026-06-11-chunked-review-negative-result.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/ontology/.gitkeep +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/ontology/core.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/ontology/domains.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/plans/2026-09-09-graph-freshness.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/plans/2026-10-14-language-packs-step1.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/plans/2026-10-14-language-packs-step2.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/plans/2026-10-14-language-packs-step3.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/plans/2026-10-14-language-packs-step4.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/plans/2026-10-14-language-packs-step5.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/plans/2026-10-14-language-packs-step6.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/plans/2026-10-14-language-packs-step7.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/plans/2026-10-14-language-packs.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-06-09-domain-pattern-fingerprint-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-06-09-pattern-alphabet-motif-basis-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-06-10-guardian-sprint-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-06-11-fastapi-di-edges-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-06-11-guardian-chunked-review-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-06-11-guardian-chunker-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-06-11-mcp-drift-validate-fqn-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-06-11-resolver-split-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-06-11-symbol-import-edges-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-06-12-drift-empty-domains-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-06-12-gate-semantics-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-06-12-init-ontology-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-06-12-release-please-ci-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-06-13-suggest-packages-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-06-13-tangle-anti-pattern-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-07-29-guardian-skeptic-scoring-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-07-30-cgis-fractal-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-07-30-cgis-fractal-plan.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-07-30-chunk-source-filter-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-07-30-chunk-source-filter-plan.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-07-30-genai-client-close-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-07-30-genai-client-close-plan.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-07-30-guardian-precision-bench-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-07-30-guardian-precision-bench-plan.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-07-30-guardian-timeout-retry-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-07-30-guardian-timeout-retry-plan.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-07-31-finder-bug-class-taxonomy.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-08-01-aura-autoevolution-poc.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-08-11-guardian-code-review-bench.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-08-14-review-fingerprint-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-09-05-annotation-graph-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/2026-09-09-graph-freshness-design.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/BLUEPRINT.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/PRD.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/TDD.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-09-fingerprint-drift.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-10-guardian-context-skeptic-inline.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-10-guardian-structured-findings-bench.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-10-motif-basis-part-b.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-10-unified-pattern-alphabet.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-11-fastapi-di-edges.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-11-guardian-chunked-review.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-11-guardian-chunker.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-11-mcp-drift-validate-fqn.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-11-resolver-split.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-12-drift-empty-domains.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-12-gate-semantics.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-12-init-ontology.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-12-release-please-ci.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-12-symbol-import-edges.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-06-13-suggest-packages.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-07-29-guardian-skeptic-scoring.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-08-14-review-fingerprint.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-09-05-annotation-graph-pr1.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/docs/specs/plans/2026-09-05-annotation-graph-pr2.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/glama.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/main.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/plugin/.claude-plugin/plugin.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/plugin/.mcp.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/plugin/README.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/plugin/skills/cgis/SKILL.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/plugin/skills/ingest/SKILL.md +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/release-please-config.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/check_pytest_raises.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/check_test_count.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/colab_bench.sh +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/gen_ideal_graph.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/generate_schema_docs.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/mcp_registry_gate.sh +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/scripts/ollama_visitor.sh +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/__main__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/api/.gitkeep +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/api/__init__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/api/auto_refresh.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/api/tool_allowlist.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/bench/__init__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/bench/guard.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/bench/transcript.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/core/.gitkeep +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/core/extractor.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/core/freshness.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/core/generated.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/core/index.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/core/js_globals.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/core/models.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/core/paths.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/core/project.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/__init__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/axes.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/bench.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/calibrate.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/chunked.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/chunker.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/collector.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/core.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/diff_index.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/evidence.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/findings.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/github_poster.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/martian.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/metrics.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/prompts.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/providers/__init__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/providers/base.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/providers/gemini.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/providers/mistral.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/providers/ollama.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/providers/openrouter.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/recording.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/render.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/review_fingerprint.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/runner.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/guardian/skeptic.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/import_names.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/go/__init__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/go/index.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/go/naming.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/go/project.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/python/__init__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/python/_annotations.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/python/_classes.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/python/_imports.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/python/_routes.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/python/_syntax.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/python/dependencies.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/python/extractor.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/python/index.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/python/project.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/python/resolution.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/typescript/__init__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/typescript/_bindings.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/typescript/builtins.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/typescript/extractor.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/typescript/index.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/typescript/naming.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/typescript/npm.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/typescript/project.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/typescript/resolution.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/typescript/tsconfig.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/languages/typescript/workspaces.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/pipeline/uplift.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/py.typed +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/analysis/__init__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/analysis/analyzer.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/analysis/anomaly.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/analysis/cohesion.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/analysis/overview.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/analysis/suggest_service.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/context/__init__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/context/audit.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/context/context_service.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/context/orphans.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/context/prompt.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/context/snippet.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/drift/__init__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/drift/_scc.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/drift/catalog.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/drift/drift.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/drift/drift_service.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/drift/fingerprint.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/drift/fractal.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/drift/ontology_init.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/drift/quotient.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/drift/triads.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/fqn.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/render/__init__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/render/graph_json.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/render/mermaid.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/render/metrics.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/query/render/text.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/resolver/.gitkeep +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/resolver/__init__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/resolver/indices.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/src/cgis/storage/.gitkeep +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/py/lib/legacy/tool.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/py/pyproject.toml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/py/src/alembic/env.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/py/src/shop/__init__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/py/src/shop/cli.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/py/src/shop/deps.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/py/src/shop/repo.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/py/src/shop/service.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/py/tests/test_service.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/ts/apps/web/package.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/ts/apps/web/src/main.ts +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/ts/apps/web/src/types.d.ts +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/ts/apps/web/src/util.ts +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/ts/package.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/ts/packages/lib/index.ts +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/ts/packages/lib/package.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/ts/pnpm-workspace.yaml +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/corpus/ts/tsconfig.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity/snapshot.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity_go/corpus/go.mod +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity_go/corpus/internal/native/native.go +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity_go/corpus/internal/server/server.go +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity_go/corpus/internal/server/server_test.go +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity_go/corpus/internal/server/types.go +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity_go/corpus/internal/server/validate.go +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity_go/corpus/internal/store/store.go +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity_go/corpus/main.go +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/fixtures/graph_identity_go/corpus/money/money.go +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/integration/.gitkeep +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/self_parsing/.gitkeep +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/self_parsing/__init__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/self_parsing/conftest.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/self_parsing/forbidden_edges_allowlist.json +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/self_parsing/test_annotation_calibration.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/self_parsing/test_architecture.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/self_parsing/test_domains_ontology.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/self_parsing/test_fractal.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/self_parsing/test_init_ontology_roundtrip.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/self_parsing/test_overview.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/self_parsing/test_receiver_resolution.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/self_parsing/test_self_parse.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/self_parsing/test_self_parse_ts.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/self_parsing/test_suggest.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/.gitkeep +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/agent_ab_stubs.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/conftest.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/guardian_stubs.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/review_path_inventory.txt +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test___main__.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_agent_ab_guard.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_agent_ab_script.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_agent_ab_transcript.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_analyzer.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_annotated_alias_receiver.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_annotation_edges.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_audit.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_auto_refresh.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_backfill_calibration_fingerprint.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_backfill_review_fingerprint.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_check_pytest_raises.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_check_test_count.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_class_cohesion.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_cli.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_cohesion.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_configs_above_root.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_context_service.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_coverage_claims.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_di_acceptance.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_drift_service.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_extraction_fingerprint.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_features_source.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_find_symbol_path_prefix.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_fingerprint.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_fqn.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_fractal.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_freshness.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_gen_ideal_graph.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_generate_mcp_ref.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_generated.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_go_extractor.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_go_graph_identity.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_go_incremental.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_go_naming.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_go_project.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_go_resolution.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_go_surfaces.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_graph_identity.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_graph_identity_dump.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_axes.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_bench.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_bench_script.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_calibrate.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_calibrate_script.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_chunked.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_chunker.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_collector.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_core.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_diff_index.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_evidence.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_findings.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_martian.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_martian_script.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_martian_union.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_metrics.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_mistral_sampling.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_ollama_sampling.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_ollama_truncation.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_openrouter.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_poster.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_providers.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_providers_name.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_recording.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_render.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_replay_skeptic.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_review_script.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_runner.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_salvage.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_guardian_skeptic.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_health_scorer.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_impact_agent_sized.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_import_acceptance.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_inject_architecture_graph.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_languages.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_mcp_server.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_mcp_server_instructions.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_mcp_tool_schemas.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_mermaid.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_metrics.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_metrics_file_coupling.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_metrics_resolution.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_models.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_name_load_positions.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_npm_dependencies.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_ontology_compliance.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_ontology_init.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_orphans.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_overview.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_overview_tools.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_package_view.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_paths.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_patterns_yaml.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_pipeline.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_pipeline_incremental_symbols.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_pipeline_ts_workspaces.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_project_facts.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_prompt.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_python_annotations.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_python_dependencies.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_python_extractor.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_python_index.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_python_routes.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_query_coverage.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_quotient.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_recordings_from_corpus.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_resolution_rules.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_resolver.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_resolver_import_layout.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_resolver_indices.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_resolver_js_builtins.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_resolver_language_scope.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_resolver_phantom_internal.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_resolver_symbols.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_resolver_ts_declarations.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_resolver_ts_workspaces.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_review_fingerprint_closure.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_review_fingerprint_contract.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_review_fingerprint_digest.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_review_fingerprint_record.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_self_types.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_skeptic_arms.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_snippet.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_sqlite_store.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_suggest_service.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_temperature_source.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_text_format.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_triads.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_tsconfig_paths.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_type_checking_imports.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_typescript_extractor.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_typescript_index.py +0 -0
- {codegraph_brain-0.30.0 → codegraph_brain-0.31.0}/tests/unit/test_uplift.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3417
|
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.31.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.30.0...codegraph-brain-v0.31.0) (2026-10-16)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **bench:** score Go method spellings ([#653](https://github.com/zaebee/codegraph-brain/issues/653)) ([3eccec7](https://github.com/zaebee/codegraph-brain/commit/3eccec74a01af9c128431714d47270badf739e7c))
|
|
9
|
+
* **go:** interface satisfaction compares arity, not just names ([#651](https://github.com/zaebee/codegraph-brain/issues/651)) ([05a8dd2](https://github.com/zaebee/codegraph-brain/commit/05a8dd2b5d7486733d74d9c139519c873a43d523))
|
|
10
|
+
* **go:** interface satisfaction dispatches; embedding no longer does ([#647](https://github.com/zaebee/codegraph-brain/issues/647)) ([ff785f7](https://github.com/zaebee/codegraph-brain/commit/ff785f7e40a91e159266d1c7cb38ed912a1ed676))
|
|
11
|
+
* **query:** a DISPATCHES hop costs no traversal depth ([#649](https://github.com/zaebee/codegraph-brain/issues/649)) ([b5c9ed9](https://github.com/zaebee/codegraph-brain/commit/b5c9ed91bec8b7c857e17f974f5d351c0c745094))
|
|
12
|
+
* **query:** coverage note screens test callers and says where each gap is ([#644](https://github.com/zaebee/codegraph-brain/issues/644)) ([814a679](https://github.com/zaebee/codegraph-brain/commit/814a67904f980048f9d699f14408b6f4a3732c4f))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **logging:** the CLI and the MCP server log to stderr ([#619](https://github.com/zaebee/codegraph-brain/issues/619)) ([#622](https://github.com/zaebee/codegraph-brain/issues/622)) ([3fc1db2](https://github.com/zaebee/codegraph-brain/commit/3fc1db20d5c8a1cdb5793d357550c7854f499161))
|
|
18
|
+
* **resolver:** an Any-typed receiver declares no type ([#638](https://github.com/zaebee/codegraph-brain/issues/638)) ([4cb43b6](https://github.com/zaebee/codegraph-brain/commit/4cb43b676e43a82b3a9edf3a6175e34623b68bba))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Documentation
|
|
22
|
+
|
|
23
|
+
* **lab-notes:** exp1 — change radius and indirection vs agent cost (pre-registered) ([#633](https://github.com/zaebee/codegraph-brain/issues/633)) ([b6c002c](https://github.com/zaebee/codegraph-brain/commit/b6c002c9522a863b2412c06ca5130f622887ee40))
|
|
24
|
+
* **lab-notes:** exp2 — indirection at fixed radius and answer size, on cgis (pre-registered) ([#634](https://github.com/zaebee/codegraph-brain/issues/634)) ([c74c90d](https://github.com/zaebee/codegraph-brain/commit/c74c90d6dd4e13d5fcd52339ed7b699bce6fa535))
|
|
25
|
+
* **lab-notes:** exp3 — does cgis help an agent (pre-registered, kill criterion) ([#635](https://github.com/zaebee/codegraph-brain/issues/635)) ([507ada5](https://github.com/zaebee/codegraph-brain/commit/507ada5561147b7ec94fab9e8a3a21eb673755eb))
|
|
26
|
+
* **lab-notes:** exp3b — rerun after the [#636](https://github.com/zaebee/codegraph-brain/issues/636) fix (pre-registered) ([#640](https://github.com/zaebee/codegraph-brain/issues/640)) ([c5cb290](https://github.com/zaebee/codegraph-brain/commit/c5cb290eb993cbf7fcee78c092d7f6bb61aa22b0))
|
|
27
|
+
|
|
3
28
|
## [0.30.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.29.0...codegraph-brain-v0.30.0) (2026-10-15)
|
|
4
29
|
|
|
5
30
|
|
|
@@ -80,7 +80,8 @@ IngestionPipeline (pipeline/__init__.py)
|
|
|
80
80
|
(`name`, `extensions`, `code_fence`, `is_test`, `scope_of`, `extractor`, `project_reader`,
|
|
81
81
|
`index_facts`, `classify`, `resolution`). `resolution()` returns `ResolutionRules`
|
|
82
82
|
(`cgis.core.resolution`): type normalizers, steps at a position (`after:import_map`), a
|
|
83
|
-
fallback with its confidence, `reconcile_import
|
|
83
|
+
fallback with its confidence, `reconcile_import`, and optionally `dispatch` (which methods a call through
|
|
84
|
+
another type's may run; default: class hierarchy) — all reading the index as `ResolutionView`.
|
|
84
85
|
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
86
|
runs the whole chain; a source with no pack gets the generic tail in `SymbolIndex.classify_fqn`.
|
|
86
87
|
3. Add one `Manifest` to `MANIFESTS` in `src/cgis/languages/__init__.py`, with a `load` function that
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: codegraph-brain
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.31.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,88 @@
|
|
|
1
|
+
"""Exp1 gates, exactly as pre-registered (docs/lab-notes/2026-10-15-exp1-radius-indirection.md)."""
|
|
2
|
+
import json
|
|
3
|
+
import statistics as st
|
|
4
|
+
import sys
|
|
5
|
+
from collections import defaultdict
|
|
6
|
+
|
|
7
|
+
results, drift_path = sys.argv[1], sys.argv[2]
|
|
8
|
+
rows = [json.loads(l) for l in open(results)]
|
|
9
|
+
drift = json.load(open(drift_path))
|
|
10
|
+
by = defaultdict(list)
|
|
11
|
+
for r in rows:
|
|
12
|
+
by[r["task"]].append(r)
|
|
13
|
+
|
|
14
|
+
billing_note = f"runs {len(rows)}, failed {sum(1 for r in rows if r.get('is_error') or r.get('subtype') != 'success')}, total ${sum(r.get('cost_usd') or 0 for r in rows):.2f}"
|
|
15
|
+
print(billing_note)
|
|
16
|
+
|
|
17
|
+
tasks = {}
|
|
18
|
+
for t, rs in by.items():
|
|
19
|
+
cell = t.split("owner-exp1-")[1].split("-")[:2]
|
|
20
|
+
tasks[t] = {
|
|
21
|
+
"row": cell[0], "ind": cell[1] == "ind",
|
|
22
|
+
"cost": st.median(r["cost_usd"] for r in rs),
|
|
23
|
+
"recall": st.median(r["recall"] for r in rs),
|
|
24
|
+
"precision": st.median(r["precision"] for r in rs),
|
|
25
|
+
"calls": st.median(r["total_tool_calls"] for r in rs),
|
|
26
|
+
"n": len(rs), **drift[t],
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
print(f"\n{'task':52} {'cost':>6} {'recall':>6} {'prec':>5} {'calls':>5} {'files':>5} {'drift':>5}")
|
|
30
|
+
for t, v in sorted(tasks.items(), key=lambda kv: (kv[1]["row"], kv[1]["ind"], kv[1]["cost"])):
|
|
31
|
+
print(f"{t:52} {v['cost']:6.3f} {v['recall']:6.2f} {v['precision']:5.2f} {v['calls']:5.1f} {v['files']:5} {v['drift']:5.3f}")
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def med(sel, key="cost"):
|
|
35
|
+
xs = [v[key] for v in tasks.values() if sel(v)]
|
|
36
|
+
return (st.median(xs), len(xs)) if xs else (float("nan"), 0)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
print("\ncell medians (cost, recall):")
|
|
40
|
+
for row in ("big", "small"):
|
|
41
|
+
for ind in (False, True):
|
|
42
|
+
c, n = med(lambda v: v["row"] == row and v["ind"] == ind)
|
|
43
|
+
r, _ = med(lambda v: v["row"] == row and v["ind"] == ind, "recall")
|
|
44
|
+
print(f" {row:5} {'indirect' if ind else 'direct '} n={n:2} cost {c:.3f} recall {r:.2f}")
|
|
45
|
+
|
|
46
|
+
big, nb = med(lambda v: v["row"] == "big")
|
|
47
|
+
small, ns = med(lambda v: v["row"] == "small")
|
|
48
|
+
print(f"\nG1 radius: big {big:.3f} (n={nb}) / small {small:.3f} (n={ns}) = x{big / small:.2f} -> {'PASS' if big >= 1.5 * small else 'FAIL'} (>= x1.5)")
|
|
49
|
+
|
|
50
|
+
print("G2 indirection (descriptive; big x direct n=2):")
|
|
51
|
+
for row in ("big", "small"):
|
|
52
|
+
d, nd = med(lambda v: v["row"] == row and not v["ind"])
|
|
53
|
+
i, ni = med(lambda v: v["row"] == row and v["ind"])
|
|
54
|
+
rd, _ = med(lambda v: v["row"] == row and not v["ind"], "recall")
|
|
55
|
+
ri, _ = med(lambda v: v["row"] == row and v["ind"], "recall")
|
|
56
|
+
print(f" {row}: indirect/direct cost x{i / d:.2f} (n {ni}/{nd}), recall drop {rd - ri:+.2f}")
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def ranks(xs):
|
|
60
|
+
order = sorted(range(len(xs)), key=lambda i: xs[i])
|
|
61
|
+
r = [0.0] * len(xs)
|
|
62
|
+
i = 0
|
|
63
|
+
while i < len(order):
|
|
64
|
+
j = i
|
|
65
|
+
while j + 1 < len(order) and xs[order[j + 1]] == xs[order[i]]:
|
|
66
|
+
j += 1
|
|
67
|
+
for k in range(i, j + 1):
|
|
68
|
+
r[order[k]] = (i + j) / 2 + 1
|
|
69
|
+
i = j + 1
|
|
70
|
+
return r
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def pearson(a, b):
|
|
74
|
+
ma, mb = st.mean(a), st.mean(b)
|
|
75
|
+
num = sum((x - ma) * (y - mb) for x, y in zip(a, b))
|
|
76
|
+
den = (sum((x - ma) ** 2 for x in a) * sum((y - mb) ** 2 for y in b)) ** 0.5
|
|
77
|
+
return num / den
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
vs = list(tasks.values())
|
|
81
|
+
c, d, f = ranks([v["cost"] for v in vs]), ranks([v["drift"] for v in vs]), ranks([v["files"] for v in vs])
|
|
82
|
+
rcd, rcf, rdf = pearson(c, d), pearson(c, f), pearson(d, f)
|
|
83
|
+
partial = (rcd - rcf * rdf) / ((1 - rcf**2) * (1 - rdf**2)) ** 0.5
|
|
84
|
+
verdict = "PASS (drift adds nothing)" if abs(partial) < 0.2 else ("FAIL: drift matters, H1 refuted" if abs(partial) >= 0.3 else "INCONCLUSIVE")
|
|
85
|
+
print(f"\nG3 Spearman: cost~files {rcf:+.2f}, cost~drift {rcd:+.2f}, drift~files {rdf:+.2f}; partial cost~drift|files {partial:+.2f} -> {verdict}")
|
|
86
|
+
allr = [r["recall"] for r in rows]
|
|
87
|
+
print(f"G4 ceiling: recall 1.00 in {sum(x >= 0.999 for x in allr)}/{len(allr)} runs; min {min(allr):.2f}; "
|
|
88
|
+
f"{'every cell at 1.00 -> cost-only' if all(v['recall'] >= 0.999 for v in vs) else 'not every task at 1.00'}")
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"""Exp2 gates as pre-registered (paired). Usage: gates2.py results.jsonl pairs.json"""
|
|
2
|
+
import json, math, random, statistics as st, sys
|
|
3
|
+
from collections import defaultdict
|
|
4
|
+
|
|
5
|
+
rows = [json.loads(l) for l in open(sys.argv[1])]
|
|
6
|
+
pairs = json.load(open(sys.argv[2]))["pairs"]
|
|
7
|
+
by = defaultdict(list)
|
|
8
|
+
for r in rows:
|
|
9
|
+
by[r["task"]].append(r)
|
|
10
|
+
print(f"runs {len(rows)}, errors {sum(1 for r in rows if r.get('is_error') or r.get('subtype') != 'success')}, "
|
|
11
|
+
f"contaminated {sum(r['contaminated'] for r in rows)}, total ${sum(r['cost_usd'] or 0 for r in rows):.2f}")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def tid(fqn, cell):
|
|
15
|
+
return f"cgis-exp2-{cell}-" + fqn.rsplit(".", 1)[-1].strip("_").replace("_", "-")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def med(t, k):
|
|
19
|
+
return st.median(r[k] for r in by[t])
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
P = []
|
|
23
|
+
for n, (d, fd, sd, i, fi, si) in enumerate(pairs, 1):
|
|
24
|
+
td, ti = tid(d, "dir"), tid(i, "ind")
|
|
25
|
+
P.append({"n": n, "d": td, "i": ti, "ratio": med(ti, "cost_usd") / med(td, "cost_usd"),
|
|
26
|
+
"drec": med(td, "recall") - med(ti, "recall"),
|
|
27
|
+
"cd": med(td, "cost_usd"), "ci": med(ti, "cost_usd"), "rd": med(td, "recall"), "ri": med(ti, "recall")})
|
|
28
|
+
print(f"\n{'#':>2} {'direct':38} {'cost':>6} {'rec':>5} | {'indirect':38} {'cost':>6} {'rec':>5} | ratio Δrec")
|
|
29
|
+
for p in P:
|
|
30
|
+
print(f"{p['n']:>2} {p['d'][10:]:38} {p['cd']:6.3f} {p['rd']:5.2f} | {p['i'][10:]:38} {p['ci']:6.3f} {p['ri']:5.2f} | {p['ratio']:5.2f} {p['drec']:+.2f}")
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def gate(ps, label):
|
|
34
|
+
ratios = [p["ratio"] for p in ps]
|
|
35
|
+
mr = st.median(ratios)
|
|
36
|
+
wins = sum(r > 1 for r in ratios)
|
|
37
|
+
need = math.ceil(0.75 * len(ps))
|
|
38
|
+
v = "PASS" if mr >= 1.3 and wins >= need else ("REFUTED (≤1.1)" if mr <= 1.1 else "INCONCLUSIVE")
|
|
39
|
+
rnd = random.Random(0)
|
|
40
|
+
boots = sorted(st.median(rnd.choice(ratios) for _ in ratios) for _ in range(10000))
|
|
41
|
+
lo, hi = boots[250], boots[9749]
|
|
42
|
+
md = st.median(p["drec"] for p in ps)
|
|
43
|
+
print(f"\n[{label}] n={len(ps)} G1 cost: median ratio {mr:.2f} (95% CI {lo:.2f}–{hi:.2f}), indirect dearer in {wins}/{len(ps)} (need {need}) -> {v}")
|
|
44
|
+
print(f"[{label}] G2 recall: median Δ(direct−indirect) {md:+.2f} -> {'PASS' if md >= 0.10 else 'not met'}")
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
gate(P, "all pairs")
|
|
48
|
+
gate([p for p in P if p["n"] != 3], "without pair 3")
|
|
49
|
+
allr = [r["recall"] for r in rows if "-desc-" not in r["task"]]
|
|
50
|
+
print(f"\nG4 ceiling: per run {sum(x >= 0.999 for x in allr)}/{len(allr)} paired runs at 1.00 (min {min(allr):.2f}); "
|
|
51
|
+
f"per pair-task median: {sum(1 for p in P for x in (p['rd'], p['ri']) if x >= 0.999)}/{2 * len(P)} at 1.00")
|
|
52
|
+
print("\nDescriptive (unpaired, dynamic hops):")
|
|
53
|
+
for t in sorted(t for t in by if "-desc-" in t):
|
|
54
|
+
print(f" {t[10:]:36} cost {med(t, 'cost_usd'):.3f} recall {med(t, 'recall'):.2f} precision {med(t, 'precision'):.2f}")
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pairs": [
|
|
3
|
+
[
|
|
4
|
+
"cgis.guardian.metrics.reject_metrics_path",
|
|
5
|
+
3,
|
|
6
|
+
5,
|
|
7
|
+
"cgis.guardian.core.GuardianReviewer._finder_pass",
|
|
8
|
+
3,
|
|
9
|
+
5
|
|
10
|
+
],
|
|
11
|
+
[
|
|
12
|
+
"cgis.languages.extractors",
|
|
13
|
+
4,
|
|
14
|
+
4,
|
|
15
|
+
"cgis.storage.sqlite_store.SQLiteStore.get_edge_stats",
|
|
16
|
+
5,
|
|
17
|
+
6
|
|
18
|
+
],
|
|
19
|
+
[
|
|
20
|
+
"cgis.query.drift.fractal.build_ladder",
|
|
21
|
+
4,
|
|
22
|
+
6,
|
|
23
|
+
"cgis.guardian.core._sanitize_finder_result",
|
|
24
|
+
4,
|
|
25
|
+
10
|
|
26
|
+
],
|
|
27
|
+
[
|
|
28
|
+
"cgis.query.fqn.resolve_fqn",
|
|
29
|
+
4,
|
|
30
|
+
13,
|
|
31
|
+
"cgis.query.render.metrics._as_terms",
|
|
32
|
+
4,
|
|
33
|
+
12
|
|
34
|
+
],
|
|
35
|
+
[
|
|
36
|
+
"cgis.guardian.skeptic.visible_findings",
|
|
37
|
+
5,
|
|
38
|
+
6,
|
|
39
|
+
"cgis.storage.sqlite_store.SQLiteStore.get_incoming_edges",
|
|
40
|
+
5,
|
|
41
|
+
8
|
|
42
|
+
],
|
|
43
|
+
[
|
|
44
|
+
"cgis.query.context.prompt._loc",
|
|
45
|
+
5,
|
|
46
|
+
10,
|
|
47
|
+
"cgis.query.drift.drift.DriftScorer.fit_templates",
|
|
48
|
+
6,
|
|
49
|
+
10
|
|
50
|
+
],
|
|
51
|
+
[
|
|
52
|
+
"cgis.query.fqn.effective_prefix",
|
|
53
|
+
7,
|
|
54
|
+
15,
|
|
55
|
+
"cgis.query.drift.drift._fit_config",
|
|
56
|
+
6,
|
|
57
|
+
12
|
|
58
|
+
]
|
|
59
|
+
],
|
|
60
|
+
"unpaired": [
|
|
61
|
+
"cgis.guardian.render.render_finding",
|
|
62
|
+
"cgis.languages.go.naming._relative",
|
|
63
|
+
"cgis.languages.python._syntax.resolve_relative_module",
|
|
64
|
+
"cgis.languages.python._types.TypeResolver._first_top_level_arg",
|
|
65
|
+
"cgis.query.render.metrics._segment_exclusion",
|
|
66
|
+
"cgis.languages.python._annotations._collect",
|
|
67
|
+
"cgis.core.js_globals.specifier_fqn",
|
|
68
|
+
"cgis.guardian.providers.base.BaseProvider._record_usage",
|
|
69
|
+
"cgis.pipeline.refresh_dispatch"
|
|
70
|
+
]
|
|
71
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""Exp2 post-review recompute (#634 review C1): pair 2 dropped, extractors rescored on corrected gold.
|
|
2
|
+
|
|
3
|
+
Run from the repository root: uv run python benchmarks/agent_ab/analysis/exp2_post_review.py
|
|
4
|
+
"""
|
|
5
|
+
import json, random, statistics as st
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from cgis.bench.agent_task import load_tasks, score_answer
|
|
8
|
+
from cgis.bench.transcript import parse_transcript
|
|
9
|
+
|
|
10
|
+
tasks = {t.id: t for t in load_tasks(Path("benchmarks/agent_ab/tasks"))}
|
|
11
|
+
rows = [json.loads(l) for l in open("benchmarks/agent_ab/results-exp2-full.jsonl")]
|
|
12
|
+
for r in rows:
|
|
13
|
+
if r["task"].endswith("dir-extractors"):
|
|
14
|
+
tr = Path(r["transcript"])
|
|
15
|
+
if not tr.is_file(): # transcripts are git-ignored; a clean clone has only the stored scores
|
|
16
|
+
print(f"extractors run {r['run']}: transcript absent, stored precision {r['precision']:.2f}")
|
|
17
|
+
continue
|
|
18
|
+
s = score_answer(tasks[r["task"]], parse_transcript(tr.read_text().splitlines()).answer)
|
|
19
|
+
print(f"extractors run {r['run']}: recall {s.recall:.2f} precision {s.precision:.2f} (stored {r['precision']:.2f})")
|
|
20
|
+
cost = {}
|
|
21
|
+
for r in rows:
|
|
22
|
+
cost.setdefault(r["task"], []).append(r["cost_usd"])
|
|
23
|
+
pairs = [("reject-metrics-path", "finder-pass"), ("build-ladder", "sanitize-finder-result"), ("resolve-fqn", "as-terms"),
|
|
24
|
+
("visible-findings", "get-incoming-edges"), ("loc", "fit-templates"), ("effective-prefix", "fit-config")]
|
|
25
|
+
rat = [st.median(cost["cgis-exp2-ind-" + i]) / st.median(cost["cgis-exp2-dir-" + d]) for d, i in pairs]
|
|
26
|
+
rnd = random.Random(0)
|
|
27
|
+
b = sorted(st.median(rnd.choice(rat) for _ in rat) for _ in range(10000))
|
|
28
|
+
m = st.median(rat)
|
|
29
|
+
v = "PASS" if m >= 1.3 and sum(x > 1 for x in rat) >= 5 else ("REFUTED" if m <= 1.1 else "INCONCLUSIVE")
|
|
30
|
+
print(f"6 pairs: ratios {[round(x, 2) for x in rat]}, median {m:.3f}, 95% CI {b[250]:.2f}-{b[9749]:.2f}, dearer {sum(x > 1 for x in rat)}/6 -> {v}")
|
|
31
|
+
gm = 1.0
|
|
32
|
+
for x in rat:
|
|
33
|
+
gm *= x
|
|
34
|
+
print(f"geometric mean {gm ** (1 / len(rat)):.3f}")
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"""Exp3 gates as pre-registered. Usage: exp3_gates.py forced.jsonl (control is the stored exp1/exp2 full runs)."""
|
|
2
|
+
import json, random, statistics as st, sys
|
|
3
|
+
from collections import defaultdict
|
|
4
|
+
|
|
5
|
+
FORCED = sys.argv[1]
|
|
6
|
+
CONTROL = ["benchmarks/agent_ab/results-exp1-full.jsonl", "benchmarks/agent_ab/results-exp2-full.jsonl"]
|
|
7
|
+
# Declared post-hoc gold corrections to stored control recall (lab notes exp1 C1, exp2 C1).
|
|
8
|
+
RECALL_FIX = {("owner-exp1-big-ind-thread-for", 0): 1.0, ("owner-exp1-big-ind-thread-for", 1): 1.0,
|
|
9
|
+
("owner-exp1-big-ind-thread-for", 2): 0.949}
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def load(paths, arm):
|
|
13
|
+
by = defaultdict(list)
|
|
14
|
+
for p in paths:
|
|
15
|
+
for line in open(p):
|
|
16
|
+
r = json.loads(line)
|
|
17
|
+
if r["arm"] != arm:
|
|
18
|
+
continue
|
|
19
|
+
r["recall"] = RECALL_FIX.get((r["task"], r["run"]), r["recall"]) if arm == "control" else r["recall"]
|
|
20
|
+
by[r["task"]].append(r)
|
|
21
|
+
return by
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
ctl, frc = load(CONTROL, "control"), load([FORCED], "cgis-forced")
|
|
25
|
+
rows = [r for rs in frc.values() for r in rs]
|
|
26
|
+
print(f"forced runs {len(rows)}, errors {sum(1 for r in rows if r.get('is_error') or r.get('subtype') != 'success')}, "
|
|
27
|
+
f"contaminated {sum(r['contaminated'] for r in rows)}, cost ${sum(r['cost_usd'] or 0 for r in rows):.2f}, "
|
|
28
|
+
f"sessions with 0 cgis calls {sum(1 for r in rows if not r.get('cgis_calls'))}")
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def med(rs, k):
|
|
32
|
+
return st.median(r[k] for r in rs)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def is_primary(t):
|
|
36
|
+
return t.startswith("owner-exp1-big-ind-") or t.startswith("cgis-exp2-desc-")
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
T = {}
|
|
40
|
+
for t in sorted(set(ctl) & set(frc)):
|
|
41
|
+
T[t] = {"ratio": med(frc[t], "cost_usd") / med(ctl[t], "cost_usd"),
|
|
42
|
+
"drec": med(frc[t], "recall") - med(ctl[t], "recall"),
|
|
43
|
+
"pc": med(ctl[t], "precision"), "pf": med(frc[t], "precision"),
|
|
44
|
+
"cc": med(ctl[t], "cost_usd"), "cf": med(frc[t], "cost_usd"),
|
|
45
|
+
"calls": med(frc[t], "cgis_calls"), "turns_c": med(ctl[t], "turns"), "turns_f": med(frc[t], "turns")}
|
|
46
|
+
missing = sorted(set(ctl) ^ set(frc))
|
|
47
|
+
if missing:
|
|
48
|
+
print("tasks not in both arms:", missing)
|
|
49
|
+
print(f"\n{'task':52} {'ctl$':>6} {'cgis$':>6} {'ratio':>5} {'Δrec':>6} {'P ctl':>5} {'P cgis':>6} {'calls':>5}")
|
|
50
|
+
for t, v in T.items():
|
|
51
|
+
print(f"{'*' if is_primary(t) else ' '}{t:51} {v['cc']:6.3f} {v['cf']:6.3f} {v['ratio']:5.2f} {v['drec']:+6.2f} {v['pc']:5.2f} {v['pf']:6.2f} {v['calls']:5.1f}")
|
|
52
|
+
|
|
53
|
+
prim = [v for t, v in T.items() if is_primary(t)]
|
|
54
|
+
r = [v["ratio"] for v in prim]
|
|
55
|
+
mr, md = st.median(r), st.median(v["drec"] for v in prim)
|
|
56
|
+
rnd = random.Random(0)
|
|
57
|
+
b = sorted(st.median(rnd.choice(r) for _ in r) for _ in range(10000))
|
|
58
|
+
helps = mr <= 0.80 and md >= -0.02
|
|
59
|
+
print(f"\nPRIMARY (n={len(prim)}): median cost ratio {mr:.3f} (95% CI {b[250]:.2f}-{b[9749]:.2f}), "
|
|
60
|
+
f"median Δrecall {md:+.3f} -> {'HELPS (keep positioning)' if helps else 'DOES NOT HELP (kill agent-context positioning)'}")
|
|
61
|
+
print(f"PRIMARY precision: control {st.median(v['pc'] for v in prim):.2f}, cgis-forced {st.median(v['pf'] for v in prim):.2f}")
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def cell(t):
|
|
65
|
+
p = t.split("-")
|
|
66
|
+
return "-".join(p[:4]) if t.startswith("owner-exp1") else "-".join(p[:3])
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
groups = defaultdict(list)
|
|
70
|
+
for t, v in T.items():
|
|
71
|
+
groups[cell(t)].append(v)
|
|
72
|
+
print("\nSECONDARY by cell:")
|
|
73
|
+
for g, vs in sorted(groups.items()):
|
|
74
|
+
print(f" {g:24} n={len(vs):2} median ratio {st.median(v['ratio'] for v in vs):.2f} Δrecall {st.median(v['drec'] for v in vs):+.2f}")
|
|
75
|
+
allr = [v["ratio"] for v in T.values()]
|
|
76
|
+
print(f" ALL n={len(allr)} median ratio {st.median(allr):.2f}")
|