codegraph-brain 0.27.0__tar.gz → 0.28.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.28.0/.github/test-count-baseline +1 -0
- codegraph_brain-0.28.0/.release-please-manifest.json +3 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/CHANGELOG.md +8 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/PKG-INFO +1 -1
- codegraph_brain-0.28.0/benchmarks/agent_ab/.gitignore +3 -0
- codegraph_brain-0.28.0/benchmarks/agent_ab/README.md +92 -0
- codegraph_brain-0.28.0/benchmarks/agent_ab/tasks/cgis-control-sqlite-pragmas.yaml +23 -0
- codegraph_brain-0.28.0/benchmarks/agent_ab/tasks/cgis-flow-ingest-to-sqlite.yaml +50 -0
- codegraph_brain-0.28.0/benchmarks/agent_ab/tasks/cgis-impact-drift-same-name.yaml +56 -0
- codegraph_brain-0.28.0/benchmarks/agent_ab/tasks/cgis-impact-language-for.yaml +27 -0
- codegraph_brain-0.28.0/benchmarks/agent_ab/tasks/cgis-impact-transitive-tsconfig.yaml +45 -0
- codegraph_brain-0.28.0/benchmarks/agent_ab/tasks/cgis-orientation-call-resolution.yaml +36 -0
- codegraph_brain-0.28.0/benchmarks/agent_ab/tasks/owner-impact-credit-wallet.yaml +55 -0
- codegraph_brain-0.28.0/benchmarks/agent_ab/tasks/owner-impact-occupied-window-same-name.yaml +30 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/pyproject.toml +1 -1
- codegraph_brain-0.28.0/scripts/agent_ab.py +449 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/server.json +2 -2
- codegraph_brain-0.28.0/src/cgis/bench/__init__.py +1 -0
- codegraph_brain-0.28.0/src/cgis/bench/agent_task.py +268 -0
- codegraph_brain-0.28.0/src/cgis/bench/guard.py +97 -0
- codegraph_brain-0.28.0/src/cgis/bench/transcript.py +297 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/self_parsing/test_receiver_resolution.py +6 -1
- codegraph_brain-0.28.0/tests/unit/agent_ab_stubs.py +110 -0
- codegraph_brain-0.28.0/tests/unit/test_agent_ab_guard.py +130 -0
- codegraph_brain-0.28.0/tests/unit/test_agent_ab_script.py +314 -0
- codegraph_brain-0.28.0/tests/unit/test_agent_ab_task.py +238 -0
- codegraph_brain-0.28.0/tests/unit/test_agent_ab_transcript.py +140 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.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 → codegraph_brain-0.28.0}/.claude-plugin/marketplace.json +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/.gitattributes +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/.github/workflows/autodoc.yml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/.github/workflows/ci.yml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/.github/workflows/guardian.yml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/.github/workflows/mcp-registry.yml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/.github/workflows/pr-title.yml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/.github/workflows/release-please.yml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/.github/workflows/ui.yml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/.gitignore +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/.pre-commit-config.yaml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/.python-version +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/CLAUDE.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/CONTRIBUTING.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/LICENSE +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/Makefile +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/PRIVACY.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/README.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/CURATION.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/calibration.jsonl +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/experiments/246-cross-vendor/README.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/experiments/246-cross-vendor/free-nemotron-quota-cutoff.jsonl +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/experiments/401-evidence/README.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/experiments/401-evidence/pr-399-control-rows.jsonl +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/experiments/401-evidence/pr-399-recording.json +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/experiments/401-evidence/pr-399-treatment-rows.jsonl +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/experiments/407-no-checker-appeal/README.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-directive-rows.jsonl +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/experiments/407-no-checker-appeal/pr-399-control-prohibition-rows.jsonl +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/pr-122.yaml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/pr-140.yaml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/pr-141.yaml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/pr-142.yaml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/pr-143.yaml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/pr-144.yaml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/pr-278.yaml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/pr-313.yaml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/guardian/results.jsonl +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian/README.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian/cal_dot_com.json +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian/discourse.json +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian/grafana.json +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian/keycloak.json +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian/sentry.json +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian-judged.jsonl +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian-p3-judged-run1.jsonl +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian-p3-judged-run1.jsonl.corrupted-backup +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian-p3-run1.jsonl +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian-p3-run2.jsonl +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian-p3-run3.jsonl +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian-plan.json +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian-repeat-judged.jsonl +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian-repeat-reviews.jsonl +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/benchmarks/martian-reviews.jsonl +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/data/.gitkeep +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/AUDIT.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/CASE_STUDY.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/GUARDIAN_LOCAL_BENCH.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/GUARDIAN_REMOTE_OLLAMA.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/architecture/HOW_IT_WORKS.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/architecture/ONTOLOGY.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/architecture/PATTERNS_AND_TRIADS.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/architecture/SELF_PORTRAIT.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/architecture/diagrams/pipeline_flow.mermaid +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/architecture/health_badge.json +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/assets/.gitignore +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/assets/cgis-app-avatar.png +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/assets/cgis-app-avatar.svg +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/assets/generate_avatar.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/examples/.gitkeep +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/how-to/AGENT_ONBOARDING.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/how-to/CLI_USAGE.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/how-to/MCP_REFERENCE.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/lab-notes/2026-06-11-chunked-review-negative-result.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/ontology/.gitkeep +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/ontology/core.yaml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/ontology/domains.yaml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/ontology/patterns.yaml +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/ontology/tolerances.lock +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/plans/2026-09-09-graph-freshness.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-06-09-domain-pattern-fingerprint-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-06-09-pattern-alphabet-motif-basis-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-06-10-guardian-sprint-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-06-11-fastapi-di-edges-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-06-11-guardian-chunked-review-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-06-11-guardian-chunker-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-06-11-mcp-drift-validate-fqn-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-06-11-resolver-split-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-06-11-symbol-import-edges-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-06-12-drift-empty-domains-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-06-12-gate-semantics-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-06-12-init-ontology-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-06-12-release-please-ci-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-06-13-suggest-packages-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-06-13-tangle-anti-pattern-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-07-29-guardian-skeptic-scoring-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-07-30-cgis-fractal-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-07-30-cgis-fractal-plan.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-07-30-chunk-source-filter-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-07-30-chunk-source-filter-plan.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-07-30-genai-client-close-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-07-30-genai-client-close-plan.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-07-30-guardian-precision-bench-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-07-30-guardian-precision-bench-plan.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-07-30-guardian-timeout-retry-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-07-30-guardian-timeout-retry-plan.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-07-31-finder-bug-class-taxonomy.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-08-01-aura-autoevolution-poc.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-08-11-guardian-code-review-bench.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-08-14-review-fingerprint-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-09-05-annotation-graph-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/2026-09-09-graph-freshness-design.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/BLUEPRINT.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/PRD.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/TDD.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-09-fingerprint-drift.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-10-guardian-context-skeptic-inline.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-10-guardian-structured-findings-bench.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-10-motif-basis-part-b.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-10-unified-pattern-alphabet.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-11-fastapi-di-edges.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-11-guardian-chunked-review.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-11-guardian-chunker.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-11-mcp-drift-validate-fqn.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-11-resolver-split.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-12-drift-empty-domains.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-12-gate-semantics.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-12-init-ontology.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-12-release-please-ci.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-12-symbol-import-edges.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-06-13-suggest-packages.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-07-29-guardian-skeptic-scoring.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-08-14-review-fingerprint.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-09-05-annotation-graph-pr1.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/docs/specs/plans/2026-09-05-annotation-graph-pr2.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/glama.json +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/main.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/plugin/.claude-plugin/plugin.json +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/plugin/.mcp.json +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/plugin/README.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/plugin/skills/cgis/SKILL.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/plugin/skills/ingest/SKILL.md +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/release-please-config.json +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/backfill_calibration_fingerprint.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/backfill_review_fingerprint.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/check_pytest_raises.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/check_test_count.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/colab_bench.sh +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/gen_ideal_graph.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/generate_health.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/generate_mcp_ref.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/generate_schema_docs.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/guardian_bench.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/guardian_calibrate.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/guardian_martian.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/guardian_replay_skeptic.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/guardian_review.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/inject_architecture_graph.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/mcp_registry_gate.sh +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/ollama_visitor.sh +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/probe_closure_gap.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/probe_tier_ladder.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/recordings_from_corpus.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/scripts/skeptic_arms.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/__init__.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/__main__.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/api/.gitkeep +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/api/__init__.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/api/auto_refresh.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/api/mcp_server.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/cli.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/core/.gitkeep +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/core/coverage.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/core/freshness.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/core/generated.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/core/js_globals.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/core/models.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/core/paths.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/extractors/.gitkeep +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/extractors/_python_annotations.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/extractors/_python_ast.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/extractors/_python_classes.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/extractors/_python_functions.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/extractors/_python_imports.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/extractors/_python_types.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/extractors/_typescript_bindings.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/extractors/base.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/extractors/python_extractor.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/extractors/registry.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/extractors/typescript_extractor.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/__init__.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/axes.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/bench.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/calibrate.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/chunked.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/chunker.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/collector.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/core.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/diff_index.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/evidence.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/findings.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/github_poster.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/martian.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/metrics.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/prompts.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/providers/__init__.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/providers/base.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/providers/gemini.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/providers/mistral.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/providers/ollama.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/providers/openrouter.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/recording.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/render.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/review_fingerprint.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/runner.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/guardian/skeptic.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/import_names.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/pipeline.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/py.typed +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/python_dependencies.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/analysis/__init__.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/analysis/analyzer.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/analysis/anomaly.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/analysis/cohesion.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/analysis/health.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/analysis/overview.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/analysis/suggest_service.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/context/__init__.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/context/audit.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/context/context_service.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/context/orphans.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/context/prompt.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/context/snippet.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/drift/__init__.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/drift/_scc.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/drift/catalog.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/drift/drift.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/drift/drift_service.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/drift/fingerprint.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/drift/fractal.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/drift/ontology_init.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/drift/quotient.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/drift/scoring.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/drift/triads.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/engine.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/fqn.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/render/__init__.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/render/graph_json.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/render/mermaid.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/query/render/metrics.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/resolver/.gitkeep +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/resolver/__init__.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/resolver/engine.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/resolver/indices.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/resolver/js_builtins.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/resolver/symbols.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/resolver/uplift.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/storage/.gitkeep +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/storage/sqlite_store.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/tsconfig_paths.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/src/cgis/workspaces.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/integration/.gitkeep +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/self_parsing/.gitkeep +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/self_parsing/__init__.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/self_parsing/conftest.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/self_parsing/test_annotation_calibration.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/self_parsing/test_architecture.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/self_parsing/test_drift.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/self_parsing/test_fractal.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/self_parsing/test_init_ontology_roundtrip.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/self_parsing/test_overview.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/self_parsing/test_self_parse.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/self_parsing/test_self_parse_ts.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/self_parsing/test_suggest.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/.gitkeep +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/conftest.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/guardian_stubs.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/review_path_inventory.txt +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test___main__.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_analyzer.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_annotation_edges.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_audit.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_auto_refresh.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_backfill_calibration_fingerprint.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_backfill_review_fingerprint.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_check_pytest_raises.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_check_test_count.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_class_cohesion.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_cli.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_cohesion.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_context_service.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_di_acceptance.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_drift.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_drift_service.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_extractor_registry.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_features_source.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_fingerprint.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_fqn.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_fractal.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_freshness.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_gen_ideal_graph.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_generate_mcp_ref.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_generated.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_graph_json.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_axes.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_bench.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_bench_script.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_calibrate.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_calibrate_script.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_chunked.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_chunker.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_collector.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_core.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_diff_index.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_evidence.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_findings.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_martian.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_martian_script.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_martian_union.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_metrics.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_mistral_sampling.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_ollama_sampling.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_ollama_truncation.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_openrouter.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_poster.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_providers.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_providers_name.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_recording.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_render.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_replay_skeptic.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_review_script.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_runner.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_salvage.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_guardian_skeptic.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_health_scorer.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_import_acceptance.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_inject_architecture_graph.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_mcp_server.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_mcp_tool_schemas.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_mermaid.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_metrics.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_metrics_file_coupling.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_metrics_resolution.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_models.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_name_load_positions.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_ontology_compliance.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_ontology_init.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_orphans.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_overview.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_overview_tools.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_package_view.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_paths.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_patterns_yaml.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_pipeline.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_pipeline_incremental_symbols.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_pipeline_ts_workspaces.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_prompt.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_python_annotations.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_python_dependencies.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_python_extractor.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_query_coverage.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_quotient.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_recordings_from_corpus.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_resolver.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_resolver_import_layout.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_resolver_indices.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_resolver_js_builtins.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_resolver_language_scope.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_resolver_phantom_internal.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_resolver_symbols.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_resolver_ts_declarations.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_resolver_ts_workspaces.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_review_fingerprint_closure.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_review_fingerprint_contract.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_review_fingerprint_digest.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_review_fingerprint_record.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_self_types.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_skeptic_arms.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_snippet.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_sqlite_store.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_suggest_service.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_temperature_source.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_triads.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_tsconfig_paths.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_type_checking_imports.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_typescript_extractor.py +0 -0
- {codegraph_brain-0.27.0 → codegraph_brain-0.28.0}/tests/unit/test_uplift.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2943
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.28.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.27.0...codegraph-brain-v0.28.0) (2026-10-02)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **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))
|
|
9
|
+
* **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))
|
|
10
|
+
|
|
3
11
|
## [0.27.0](https://github.com/zaebee/codegraph-brain/compare/codegraph-brain-v0.26.0...codegraph-brain-v0.27.0) (2026-10-02)
|
|
4
12
|
|
|
5
13
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: codegraph-brain
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.28.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,92 @@
|
|
|
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-instructed` | as `cgis` | as `cgis` | as `cgis` | one line: query cgis first |
|
|
44
|
+
| `cgis-forced` | as `cgis` | as `cgis` | as `cgis` | as `cgis-instructed`, and the guard refuses Read/Grep/Glob/Bash until one cgis call |
|
|
45
|
+
|
|
46
|
+
`cgis-instructed` exists because the first pilot's `cgis` arm made no cgis call in
|
|
47
|
+
12 of 12 sessions: with the server connected and the skill loaded, Sonnet still
|
|
48
|
+
went straight to Grep. It stands in for #542's MCP server instructions. It barely moved the agent (2 cgis
|
|
49
|
+
calls in 18 sessions), so `cgis-forced` makes the first graph query mandatory: it
|
|
50
|
+
measures what the graph adds once used, apart from whether the agent picks it.
|
|
51
|
+
|
|
52
|
+
All arms run under `cgis.bench.guard` as a PreToolUse hook, which refuses the
|
|
53
|
+
cgis CLI, uv, sqlite3 and any read of `graph.db`/`graph.json` through Bash or
|
|
54
|
+
the file tools. Without it the control arm is not a control: codegraph's own
|
|
55
|
+
benchmark caught its control agent calling their CLI through Bash in 26 of 28
|
|
56
|
+
runs. The same predicate marks a finished run `contaminated` if a blocked call
|
|
57
|
+
ever returned output; such runs are counted in the report and left out of the
|
|
58
|
+
medians.
|
|
59
|
+
|
|
60
|
+
All arms allow `Read`, `Grep`, `Glob` and `Bash` (plus `mcp__cgis` in the
|
|
61
|
+
treatment arms, which has no server in control) and refuse edits, web access and
|
|
62
|
+
sub-agents, under `--permission-mode dontAsk`. Each session starts in a fresh
|
|
63
|
+
detached worktree at the task's pinned commit, with `--no-session-persistence`
|
|
64
|
+
and `--setting-sources project`, so user settings and earlier sessions do not
|
|
65
|
+
reach it.
|
|
66
|
+
|
|
67
|
+
## Running
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
uv run python scripts/agent_ab.py run --dry-run # commands only, spends nothing
|
|
71
|
+
uv run python scripts/agent_ab.py run --task cgis-impact-language-for --runs 2
|
|
72
|
+
uv run python scripts/agent_ab.py run --repo owner-api=../ownima-backend
|
|
73
|
+
uv run python scripts/agent_ab.py report
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`--model` defaults to `claude-sonnet-5-5`; `--max-budget-usd` (default 2.00)
|
|
77
|
+
caps each session. Every non-dry run is a paid session, so this never runs in
|
|
78
|
+
CI. Transcripts are written to `transcripts/` (git-ignored); `results.jsonl`
|
|
79
|
+
gets one line per (task, arm, run) and is meant to be committed with the write-up.
|
|
80
|
+
|
|
81
|
+
## Tasks
|
|
82
|
+
|
|
83
|
+
| id | type | repo |
|
|
84
|
+
|---|---|---|
|
|
85
|
+
| `cgis-impact-language-for` | impact | cgis |
|
|
86
|
+
| `cgis-flow-ingest-to-sqlite` | flow | cgis |
|
|
87
|
+
| `cgis-orientation-call-resolution` | orientation | cgis |
|
|
88
|
+
| `cgis-control-sqlite-pragmas` | control | cgis |
|
|
89
|
+
|
|
90
|
+
This repository's `CLAUDE.md` describes its architecture in some detail. It is
|
|
91
|
+
the same in both arms, but it lowers what a graph can add here, which is one
|
|
92
|
+
reason owner-api and httpx come next.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
id: cgis-control-sqlite-pragmas
|
|
2
|
+
repo: cgis
|
|
3
|
+
sha: 715cd9a2ecee47949651344757edb4c7d09f64d7
|
|
4
|
+
src_root: src
|
|
5
|
+
type: control
|
|
6
|
+
question: |
|
|
7
|
+
Which SQLite journal mode and busy timeout does `SQLiteStore` configure when it
|
|
8
|
+
opens a database, and in which method?
|
|
9
|
+
gold:
|
|
10
|
+
symbols:
|
|
11
|
+
- SQLiteStore.connect
|
|
12
|
+
files:
|
|
13
|
+
- src/cgis/storage/sqlite_store.py
|
|
14
|
+
facts:
|
|
15
|
+
- WAL
|
|
16
|
+
- "5000"
|
|
17
|
+
allowed_symbols:
|
|
18
|
+
- SQLiteStore
|
|
19
|
+
notes: |
|
|
20
|
+
Negative control: one file, one method, no cross-file structure. A graph should
|
|
21
|
+
not help here; this measures what cgis costs when it is not needed.
|
|
22
|
+
sqlite_store.py:83-84, inside SQLiteStore.connect (line 75), not __init__:
|
|
23
|
+
the first pilot session caught a key that said __init__.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
id: cgis-flow-ingest-to-sqlite
|
|
2
|
+
repo: cgis
|
|
3
|
+
sha: 715cd9a2ecee47949651344757edb4c7d09f64d7
|
|
4
|
+
src_root: src
|
|
5
|
+
type: flow
|
|
6
|
+
question: |
|
|
7
|
+
Trace what happens when `cgis ingest <path> --output graph.db` runs: starting
|
|
8
|
+
from the CLI command, list in order the functions and methods on the main path
|
|
9
|
+
that parse source files, resolve calls, and write nodes and edges to SQLite.
|
|
10
|
+
gold:
|
|
11
|
+
symbols:
|
|
12
|
+
- cli.ingest
|
|
13
|
+
- IngestionPipeline.run
|
|
14
|
+
- IngestionPipeline._process_file
|
|
15
|
+
- id: extractor.parse
|
|
16
|
+
any_of: [BaseExtractor.parse, PythonExtractor.parse, TypeScriptExtractor.parse]
|
|
17
|
+
- ResolverEngine.resolve
|
|
18
|
+
- IngestionPipeline._persist_incremental
|
|
19
|
+
- SQLiteStore.save_incremental_batch
|
|
20
|
+
files:
|
|
21
|
+
- src/cgis/cli.py
|
|
22
|
+
- src/cgis/pipeline.py
|
|
23
|
+
- src/cgis/resolver/engine.py
|
|
24
|
+
- src/cgis/storage/sqlite_store.py
|
|
25
|
+
allowed_symbols:
|
|
26
|
+
- IngestionPipeline.workspace_root
|
|
27
|
+
- SQLiteStore.record_ingest
|
|
28
|
+
- SQLiteStore.record_ingest_options
|
|
29
|
+
- build_extractors
|
|
30
|
+
- IngestionPipeline._get_extractor
|
|
31
|
+
- ImportNameCollector.collect
|
|
32
|
+
- SemanticUpliftEngine.execute_uplift
|
|
33
|
+
- SymbolResolver
|
|
34
|
+
- IndexBuilder.build
|
|
35
|
+
allowed_files:
|
|
36
|
+
- src/cgis/extractors/base.py
|
|
37
|
+
- src/cgis/extractors/python_extractor.py
|
|
38
|
+
- src/cgis/extractors/typescript_extractor.py
|
|
39
|
+
- src/cgis/extractors/registry.py
|
|
40
|
+
- src/cgis/resolver/symbols.py
|
|
41
|
+
- src/cgis/resolver/indices.py
|
|
42
|
+
- src/cgis/resolver/uplift.py
|
|
43
|
+
- src/cgis/import_names.py
|
|
44
|
+
notes: |
|
|
45
|
+
Read 2026-10-02: cli.ingest (cli.py:174) opens SQLiteStore and calls
|
|
46
|
+
IngestionPipeline.run(store=..., rebuild=True); run calls _process_file per file,
|
|
47
|
+
which calls the extractor's parse; then ResolverEngine.resolve (pipeline.py:213);
|
|
48
|
+
then _persist_incremental (pipeline.py:237), which calls
|
|
49
|
+
SQLiteStore.save_incremental_batch (pipeline.py:411). Order is not scored, only
|
|
50
|
+
presence.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
id: cgis-impact-drift-same-name
|
|
2
|
+
repo: cgis
|
|
3
|
+
sha: 715cd9a2ecee47949651344757edb4c7d09f64d7
|
|
4
|
+
src_root: src
|
|
5
|
+
type: impact
|
|
6
|
+
question: |
|
|
7
|
+
In this repository, which code under `src/` can end up calling
|
|
8
|
+
`PatternCatalog.load_project_domains` in `src/cgis/query/drift/catalog.py`, directly
|
|
9
|
+
or transitively? Follow the chain up to the user-facing entry points (CLI commands
|
|
10
|
+
and MCP tools, and the Guardian review runner) and name every function or method
|
|
11
|
+
on the way.
|
|
12
|
+
gold:
|
|
13
|
+
symbols:
|
|
14
|
+
- DriftScorer.load_project_domains
|
|
15
|
+
- drift_service.analyze_drift
|
|
16
|
+
- GraphContextCollector.collect_drift
|
|
17
|
+
- ContextCollector.collect_all
|
|
18
|
+
- cli.drift
|
|
19
|
+
- mcp_server.cgis_drift
|
|
20
|
+
- id: guardian
|
|
21
|
+
any_of: [run_guardian, run_review_routed, GuardianReviewer.run_review, run_axis_review]
|
|
22
|
+
files:
|
|
23
|
+
- src/cgis/query/drift/drift.py
|
|
24
|
+
- src/cgis/query/drift/drift_service.py
|
|
25
|
+
- src/cgis/guardian/collector.py
|
|
26
|
+
- src/cgis/cli.py
|
|
27
|
+
- src/cgis/api/mcp_server.py
|
|
28
|
+
allowed_symbols:
|
|
29
|
+
- PatternCatalog
|
|
30
|
+
- PatternCatalog.load_project_domains
|
|
31
|
+
- DriftScorer
|
|
32
|
+
- GraphContextCollector
|
|
33
|
+
- ContextCollector
|
|
34
|
+
- GuardianReviewer
|
|
35
|
+
- run_guardian
|
|
36
|
+
- run_review_routed
|
|
37
|
+
- run_axis_review
|
|
38
|
+
- run_chunked_review
|
|
39
|
+
- chunked._single_pass
|
|
40
|
+
allowed_files:
|
|
41
|
+
- src/cgis/query/drift/catalog.py
|
|
42
|
+
- src/cgis/guardian/core.py
|
|
43
|
+
- src/cgis/guardian/axes.py
|
|
44
|
+
- src/cgis/guardian/chunked.py
|
|
45
|
+
- src/cgis/guardian/runner.py
|
|
46
|
+
notes: |
|
|
47
|
+
The first hop shares the target's name: DriftScorer.load_project_domains
|
|
48
|
+
(drift.py:58) wraps it, so a grep for the name finds both definitions and three
|
|
49
|
+
call sites that must be told apart. Read 2026-10-02 at the pinned sha:
|
|
50
|
+
DriftScorer.load_project_domains is called in analyze_drift (drift_service.py:162)
|
|
51
|
+
and GraphContextCollector.collect_drift (guardian/collector.py:249); analyze_drift
|
|
52
|
+
in cli.drift (cli.py:1213) and mcp_server.cgis_drift (mcp_server.py:636);
|
|
53
|
+
collect_drift in ContextCollector.collect_all (collector.py:353), which
|
|
54
|
+
GuardianReviewer.run_review (core.py:128) and run_axis_review (axes.py:68) call,
|
|
55
|
+
up through run_review_routed to run_guardian (runner.py:472). Any one Guardian
|
|
56
|
+
hop counts for the guardian item.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
id: cgis-impact-language-for
|
|
2
|
+
repo: cgis
|
|
3
|
+
sha: 715cd9a2ecee47949651344757edb4c7d09f64d7
|
|
4
|
+
src_root: src
|
|
5
|
+
type: impact
|
|
6
|
+
question: |
|
|
7
|
+
In this repository, the function `language_for` in `src/cgis/extractors/registry.py`
|
|
8
|
+
is about to change its signature. List every function or method that calls it
|
|
9
|
+
directly, so each call site can be updated.
|
|
10
|
+
gold:
|
|
11
|
+
symbols:
|
|
12
|
+
- cli.structure
|
|
13
|
+
- registry.is_supported
|
|
14
|
+
- SourceCollector.collect_full_files
|
|
15
|
+
- GraphContextCollector.sections
|
|
16
|
+
- mermaid._node_slug
|
|
17
|
+
files:
|
|
18
|
+
- src/cgis/cli.py
|
|
19
|
+
- src/cgis/extractors/registry.py
|
|
20
|
+
- src/cgis/guardian/collector.py
|
|
21
|
+
- src/cgis/query/render/mermaid.py
|
|
22
|
+
allowed_symbols:
|
|
23
|
+
- registry.language_for
|
|
24
|
+
notes: |
|
|
25
|
+
Checked 2026-10-02 by grep (`language_for(` outside imports) and by reading each
|
|
26
|
+
enclosing def: cli.py:843, registry.py:88, collector.py:175 and :214,
|
|
27
|
+
mermaid.py:77. The cgis graph agrees, but the key was not taken from it.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
id: cgis-impact-transitive-tsconfig
|
|
2
|
+
repo: cgis
|
|
3
|
+
sha: 715cd9a2ecee47949651344757edb4c7d09f64d7
|
|
4
|
+
src_root: src
|
|
5
|
+
type: impact
|
|
6
|
+
question: |
|
|
7
|
+
In this repository, which code under `src/` can end up executing the function
|
|
8
|
+
`_existing_json` in `src/cgis/tsconfig_paths.py`, directly or transitively? Follow
|
|
9
|
+
the chain all the way up to the user-facing entry points (CLI commands and MCP
|
|
10
|
+
tools) and name every function or method on the way.
|
|
11
|
+
gold:
|
|
12
|
+
symbols:
|
|
13
|
+
- tsconfig_paths._locate
|
|
14
|
+
- tsconfig_paths._options
|
|
15
|
+
- TsconfigPaths.aliases
|
|
16
|
+
- ImportNameCollector.collect
|
|
17
|
+
- IngestionPipeline.run
|
|
18
|
+
- cli.ingest
|
|
19
|
+
- mcp_server.cgis_ingest
|
|
20
|
+
- id: auto_refresh
|
|
21
|
+
any_of: [auto_refresh._refresh, auto_refresh.refresh_if_stale, auto_refresh.refreshes_graph]
|
|
22
|
+
files:
|
|
23
|
+
- src/cgis/tsconfig_paths.py
|
|
24
|
+
- src/cgis/import_names.py
|
|
25
|
+
- src/cgis/pipeline.py
|
|
26
|
+
- src/cgis/cli.py
|
|
27
|
+
- src/cgis/api/mcp_server.py
|
|
28
|
+
- src/cgis/api/auto_refresh.py
|
|
29
|
+
allowed_symbols:
|
|
30
|
+
- tsconfig_paths._existing_json
|
|
31
|
+
- TsconfigPaths
|
|
32
|
+
- ImportNameCollector
|
|
33
|
+
- IngestionPipeline
|
|
34
|
+
- auto_refresh
|
|
35
|
+
- api.mcp_server
|
|
36
|
+
notes: |
|
|
37
|
+
Multi-hop impact, five calls deep before the first entry point. Read 2026-10-02 at
|
|
38
|
+
the pinned sha: _existing_json is called only in _locate (tsconfig_paths.py:190,
|
|
39
|
+
:203); _locate only in _options (:153); _options in TsconfigPaths.aliases (:122)
|
|
40
|
+
and recursively in itself (:154); aliases only in ImportNameCollector.collect
|
|
41
|
+
(import_names.py:82); collect in IngestionPipeline.run (pipeline.py:193); run in
|
|
42
|
+
cli.ingest (cli.py:236, :243), mcp_server.cgis_ingest (mcp_server.py:354) and
|
|
43
|
+
auto_refresh._refresh (auto_refresh.py:82), which refresh_if_stale and the
|
|
44
|
+
refreshes_graph decorator on most MCP tools reach when CGIS_AUTO_REFRESH=1, so any
|
|
45
|
+
MCP tool name is allowed. The cgis graph agrees; the key was checked by grep.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
id: cgis-orientation-call-resolution
|
|
2
|
+
repo: cgis
|
|
3
|
+
sha: 715cd9a2ecee47949651344757edb4c7d09f64d7
|
|
4
|
+
src_root: src
|
|
5
|
+
type: orientation
|
|
6
|
+
question: |
|
|
7
|
+
Which files implement turning unresolved call targets (`raw_call:<name>` edges
|
|
8
|
+
emitted by the extractors) into fully qualified names, and what does each of
|
|
9
|
+
them contribute?
|
|
10
|
+
gold:
|
|
11
|
+
symbols:
|
|
12
|
+
- ResolverEngine
|
|
13
|
+
- SymbolResolver
|
|
14
|
+
- id: indices
|
|
15
|
+
any_of: [IndexBuilder, SymbolIndex]
|
|
16
|
+
files:
|
|
17
|
+
- src/cgis/resolver/engine.py
|
|
18
|
+
- src/cgis/resolver/symbols.py
|
|
19
|
+
- src/cgis/resolver/indices.py
|
|
20
|
+
allowed_symbols:
|
|
21
|
+
- ResolverEngine.resolve
|
|
22
|
+
- ResolverEngine._resolved_call_edge
|
|
23
|
+
- js_builtin_target
|
|
24
|
+
- IngestionPipeline.run
|
|
25
|
+
- Edge
|
|
26
|
+
allowed_files:
|
|
27
|
+
- src/cgis/resolver/js_builtins.py
|
|
28
|
+
- src/cgis/core/models.py
|
|
29
|
+
- src/cgis/pipeline.py
|
|
30
|
+
- src/cgis/extractors/python_extractor.py
|
|
31
|
+
- src/cgis/extractors/typescript_extractor.py
|
|
32
|
+
- src/cgis/extractors/base.py
|
|
33
|
+
notes: |
|
|
34
|
+
Read 2026-10-02: engine.py drives resolution, symbols.py holds the strategies
|
|
35
|
+
over a SymbolIndex, indices.py builds the indices (module docstrings say so).
|
|
36
|
+
js_builtins.py and models.py are correct but optional.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
id: owner-impact-credit-wallet
|
|
2
|
+
repo: owner-api
|
|
3
|
+
sha: 8de22452b5d91242dd742a666ef2cd7b1eb7c1ff
|
|
4
|
+
src_root: ownima-backend/app
|
|
5
|
+
type: impact
|
|
6
|
+
question: |
|
|
7
|
+
In this repository, the module-level function `credit_wallet` in
|
|
8
|
+
`ownima-backend/app/domains/finance/service.py` is about to change. Which code under
|
|
9
|
+
`ownima-backend/app/` (not tests, not scripts) can end up calling it, directly or
|
|
10
|
+
transitively? Follow every chain up to its entry point (an HTTP route, a worker task,
|
|
11
|
+
or a function nothing else calls) and name every function or method on the way.
|
|
12
|
+
gold:
|
|
13
|
+
symbols:
|
|
14
|
+
- FinanceService.credit_wallet
|
|
15
|
+
- FinanceService.top_up
|
|
16
|
+
- TopUpService._credit
|
|
17
|
+
- TopUpService.fulfill
|
|
18
|
+
- TopUpService.get_status
|
|
19
|
+
- TopUpService.handle_webhook_event
|
|
20
|
+
- finance.routes.get_top_up
|
|
21
|
+
- finance.routes.stripe_webhook
|
|
22
|
+
- VehicleBonusCreditor._pay
|
|
23
|
+
- VehicleBonusCreditor.credit
|
|
24
|
+
- VehicleBonusWorker.credit
|
|
25
|
+
- vehicle_bonus.reconcile_vehicle_bonus
|
|
26
|
+
- VehicleBonusWorker.reconcile
|
|
27
|
+
files:
|
|
28
|
+
- ownima-backend/app/domains/finance/service.py
|
|
29
|
+
- ownima-backend/app/domains/finance/top_up_service.py
|
|
30
|
+
- ownima-backend/app/domains/finance/routes.py
|
|
31
|
+
- ownima-backend/app/domains/finance/vehicle_bonus_credit.py
|
|
32
|
+
- ownima-backend/app/worker/vehicle_bonus.py
|
|
33
|
+
allowed_symbols:
|
|
34
|
+
- finance.service.credit_wallet
|
|
35
|
+
- FinanceService
|
|
36
|
+
- TopUpService
|
|
37
|
+
- VehicleBonusCreditor
|
|
38
|
+
- VehicleBonusWorker
|
|
39
|
+
- worker.base
|
|
40
|
+
allowed_files:
|
|
41
|
+
- ownima-backend/app/worker/base.py
|
|
42
|
+
notes: |
|
|
43
|
+
Same-name trap plus DI: the module function is wrapped by the method
|
|
44
|
+
FinanceService.credit_wallet (service.py:332-344), and the top-up path reaches the
|
|
45
|
+
method through an injected `self._finance` (top_up_service.py:316). Read 2026-10-02
|
|
46
|
+
at the pinned sha with an AST call index, not with cgis: credit_wallet is called in
|
|
47
|
+
FinanceService.credit_wallet (service.py:344) and VehicleBonusCreditor._pay
|
|
48
|
+
(vehicle_bonus_credit.py:202); the method in FinanceService.top_up (:367, no callers
|
|
49
|
+
of its own) and TopUpService._credit (top_up_service.py:316); _credit in fulfill
|
|
50
|
+
(:266); fulfill in get_status (:294) and handle_webhook_event (:305); those in the
|
|
51
|
+
routes get_top_up (routes.py:232) and stripe_webhook (:344). _pay in
|
|
52
|
+
VehicleBonusCreditor.credit (:142); that in VehicleBonusWorker.credit
|
|
53
|
+
(worker/vehicle_bonus.py:151) and reconcile_vehicle_bonus (:106); the latter in
|
|
54
|
+
VehicleBonusWorker.reconcile (:177). Both worker methods are registered as tasks in
|
|
55
|
+
worker/base.py:198-199. The cgis graph at this sha misses both routes.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
id: owner-impact-occupied-window-same-name
|
|
2
|
+
repo: owner-api
|
|
3
|
+
sha: 8de22452b5d91242dd742a666ef2cd7b1eb7c1ff
|
|
4
|
+
src_root: ownima-backend/app
|
|
5
|
+
type: impact
|
|
6
|
+
question: |
|
|
7
|
+
In this repository, the function `occupied_window` in
|
|
8
|
+
`ownima-backend/app/services/reservation_conflict_service.py` is about to change its
|
|
9
|
+
signature. List every function or method under `ownima-backend/app/` (not tests,
|
|
10
|
+
not scripts) that calls it directly, so each call site can be updated.
|
|
11
|
+
gold:
|
|
12
|
+
symbols:
|
|
13
|
+
- ReservationConflictService._check_conflicts_internal
|
|
14
|
+
- ReservationConflictService._find_conflicting_groups
|
|
15
|
+
- ReservationConflictService._clusters
|
|
16
|
+
- ReservationConflictService.get_pending_conflicts_for_reservation
|
|
17
|
+
files:
|
|
18
|
+
- ownima-backend/app/services/reservation_conflict_service.py
|
|
19
|
+
allowed_symbols:
|
|
20
|
+
- reservation_conflict_service.occupied_window
|
|
21
|
+
- ReservationConflictService
|
|
22
|
+
notes: |
|
|
23
|
+
Same-name trap: domains/pricing/handover.py:230 defines another module-level
|
|
24
|
+
`occupied_window`, and HandoverSchedule.window_for (handover.py:195),
|
|
25
|
+
ReservationCreation.compute_actual_datetime_range (creation.py:716) and Rule.build
|
|
26
|
+
(validators.py:164) call that one (creation.py:21-28 and validators.py:18-25 import it
|
|
27
|
+
from app.domains.pricing.handover). Naming them costs precision. Read 2026-10-02 at
|
|
28
|
+
the pinned sha with an AST call index: the services function (line 836) is called at
|
|
29
|
+
reservation_conflict_service.py:241, :552, :661, :678, :736 and :753, inside the four
|
|
30
|
+
methods above.
|
|
@@ -7,7 +7,7 @@ packages = ["src/cgis"]
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "codegraph-brain"
|
|
10
|
-
version = "0.
|
|
10
|
+
version = "0.28.0"
|
|
11
11
|
description = "Semantic code graph for AI agents — deterministic FQN resolution, impact analysis and architectural drift gates, exposed over MCP."
|
|
12
12
|
readme = "README.md"
|
|
13
13
|
requires-python = ">=3.12"
|