sourcecode 1.30.3__tar.gz → 1.30.5__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.
- sourcecode-1.30.5/.continue-here.md +163 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/PKG-INFO +81 -5
- {sourcecode-1.30.3 → sourcecode-1.30.5}/README.md +80 -4
- {sourcecode-1.30.3 → sourcecode-1.30.5}/pyproject.toml +1 -1
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/__init__.py +1 -1
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/cli.py +3 -1
- sourcecode-1.30.5/src/sourcecode/flow_analyzer.py +645 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/prepare_context.py +13 -3
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_signal_hierarchy.py +8 -2
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_v1_10_regressions.py +131 -1
- sourcecode-1.30.3/.continue-here.md +0 -177
- sourcecode-1.30.3/src/sourcecode/flow_analyzer.py +0 -310
- {sourcecode-1.30.3 → sourcecode-1.30.5}/.agents/skills/source-command-gsd-join-discord/SKILL.md +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/.agents/skills/source-command-gsd-review-backlog/SKILL.md +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/.agents/skills/source-command-gsd-workstreams/SKILL.md +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/.gitignore +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/.ruff.toml +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/CONTRIBUTING.md +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/LICENSE +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/SECURITY.md +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/docs/privacy.md +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/docs/schema.md +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/raw +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/run_cli.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/classifier.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/progress.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/redactor.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/scanner.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/schema.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/serializer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/src/sourcecode/workspace.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/__init__.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/conftest.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/coverage.xml +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/fastapi_app/pyproject.toml +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/fastapi_app/src/main.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/go_service/cmd/api/main.go +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/go_service/go.mod +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/jacoco.xml +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/latin1_sample.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/latin1_sample_iso.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/lcov.info +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/nextjs_app/app/page.tsx +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/nextjs_app/package.json +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/nextjs_app/pnpm-lock.yaml +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/pnpm_monorepo/apps/web/app/page.tsx +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/pnpm_monorepo/apps/web/package.json +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/pnpm_monorepo/packages/api/main.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/pnpm_monorepo/packages/api/pyproject.toml +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/pnpm_monorepo/pnpm-workspace.yaml +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/pom.xml +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/application/service/FindAusenteService.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/domain/entities/Ausente.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/infrastructure/rest/AusenteRestController.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/application/service/FindAutocoberturasService.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/domain/entities/Autocoberturas.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/infrastructure/rest/AutocoberturasRestController.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/application/service/FindCalendarioTrabajadorService.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/domain/entities/CalendarioTrabajador.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/infrastructure/rest/CalendarioTrabajadorRestController.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/application/service/FindDepartamentoService.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/domain/entities/Departamento.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/infrastructure/rest/DepartamentoRestController.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/application/service/FindEmpleadoService.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/domain/entities/Empleado.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/infrastructure/rest/EmpleadoRestController.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/DemoApplication.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/config/FilterConfig.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/domain/Health.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/mapper/HealthMapper.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/repository/HealthRepository.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/service/HealthService.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/HealthRestController.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/NominaRestController.java +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/resources/application-dev.yml +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/resources/application.yml +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/fixtures/spring_boot_minimal/src/main/resources/mapper/HealthMapper.xml +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_architecture_analyzer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_architecture_summary.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_ast_extractor.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_block1_reliability.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_block2_coverage.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_block5_quality.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_bug_fixes_v16.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_classifier.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_cli.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_code_notes_analyzer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_context_scorer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_contract_pipeline.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_coverage_parser.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_cross_consistency.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_dependency_analyzer_node_python.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_dependency_analyzer_polyglot.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_dependency_schema.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_detector_dotnet.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_detector_go_rust_java.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_detector_nodejs.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_detector_php_ruby_dart.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_detector_python.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_detector_universal_managed.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_detector_universal_systems.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_detectors_base.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_doc_analyzer_jsdom.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_doc_analyzer_python.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_encoding_regression.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_graph_analyzer_polyglot.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_graph_analyzer_python_node.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_graph_schema.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_hybrid_inference.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_integration.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_integration_dependencies.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_integration_detection.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_integration_docs.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_integration_graph_modules.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_integration_lqn.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_integration_metrics.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_integration_multistack.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_integration_semantics.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_integration_universal.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_java_spring_integration.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_metrics_analyzer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_packaging.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_phase1_improvements.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_pipeline_integrity.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_real_projects.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_redactor.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_scanner.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_schema.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_schema_normalization.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_semantic_analyzer_node.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_semantic_analyzer_python.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_semantic_import_resolution.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_semantic_schema.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_summarizer.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_surface_honesty.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_task_differentiation.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_telemetry.py +0 -0
- {sourcecode-1.30.3 → sourcecode-1.30.5}/tests/test_workspace_analyzer.py +0 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Continue Here — atlas-cli sesión 9
|
|
2
|
+
|
|
3
|
+
**Paused:** 2026-05-16 (sesión 9)
|
|
4
|
+
**Repo:** `/Users/user/Downloads/atlas-cli`
|
|
5
|
+
**Branch:** master
|
|
6
|
+
**Último commit:** `88e1ebd` — Actualizando README
|
|
7
|
+
**Working tree:** DIRTY (sin commit — usuario pidió "no hagas commit" esta sesión)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Lo que se hizo esta sesión
|
|
12
|
+
|
|
13
|
+
### Fix: test regresivo stale en `test_signal_hierarchy.py`
|
|
14
|
+
|
|
15
|
+
`test_prepare_context_review_pr_task` esperaba exit_code 0 pero la nueva conducta (desde `7085e97`) devuelve exit_code 1 cuando no hay diff. El test corría contra atlas-cli (no tmp_project — el arg se consume por `_preprocess_args`), entonces era frágil: con cambios pendientes en atlas-cli → exit 0, sin cambios → exit 1.
|
|
16
|
+
|
|
17
|
+
**Fix:** test acepta ambos exit codes y verifica estructura JSON en cada caso.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
### Feature: `behavioral_impact` para `review-pr`
|
|
22
|
+
|
|
23
|
+
Nueva capability: en vez de "archivos relacionados por heurística", modelar impacto causal del cambio.
|
|
24
|
+
|
|
25
|
+
**Nueva sección top-level en output de review-pr:**
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"behavioral_impact": [{
|
|
29
|
+
"entry_point": "ArticleController.favoriteArticle",
|
|
30
|
+
"affected_path": ["ArticleFavoriteService.favorite", "ArticleFavoriteRepository.save"],
|
|
31
|
+
"impact": ["article favorite persistence affected"],
|
|
32
|
+
"end_state": "DB write"
|
|
33
|
+
}]
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Dos traversals:**
|
|
38
|
+
|
|
39
|
+
| Archivo cambiado | Estrategia | entry_point |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| Controller | Forward: ctrl → svc → repo | El propio controller |
|
|
42
|
+
| Service/Repo/Domain | Reverse: buscar qué controller inyecta/llama la cadena | Controller que lo usa |
|
|
43
|
+
|
|
44
|
+
**Reverse lookup:** primero directo (ctrl usa clase directamente), luego indirecto (ctrl → svc mediador → clase cambiada).
|
|
45
|
+
|
|
46
|
+
**Impact generation:** basado en artifact_type + end_state + nombre de clase sin sufijo:
|
|
47
|
+
- Repository → `"X persistence affected"`
|
|
48
|
+
- Service + DB write → `"X data persistence behavior may change"`
|
|
49
|
+
- Service + event → `"X event emission affected"`
|
|
50
|
+
- + si hay `@PreAuthorize`/`@Secured` en controller → `"authorization check present on entry point"`
|
|
51
|
+
|
|
52
|
+
**Sin evidencia → no emitir path.** `_has_code_evidence` gate en cada paso.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Archivos modificados (sin commit)
|
|
57
|
+
|
|
58
|
+
| Archivo | Cambio |
|
|
59
|
+
|---------|--------|
|
|
60
|
+
| `src/sourcecode/flow_analyzer.py` | `analyze_behavioral_impact()` + helpers `_domain_from_class`, `_impact_descriptions`, `_impact_descriptions_for_controller` (~205 líneas nuevas) |
|
|
61
|
+
| `src/sourcecode/prepare_context.py` | Campo `behavioral_impact` en `TaskOutput`, bloque 6d llama `analyze_behavioral_impact` |
|
|
62
|
+
| `src/sourcecode/cli.py` | Serializa `behavioral_impact` en output de review-pr |
|
|
63
|
+
| `tests/test_signal_hierarchy.py` | Fix stale test `test_prepare_context_review_pr_task` |
|
|
64
|
+
| `tests/test_v1_10_regressions.py` | Clase `TestBehavioralImpact` con 5 tests unitarios |
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Tests al pausar
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
777 passed, 3 skipped, 1 deselected
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Los 5 tests nuevos en `TestBehavioralImpact` pasan:
|
|
75
|
+
- `test_service_change_finds_controller_entry_point` ✓
|
|
76
|
+
- `test_repository_change_finds_controller_via_service` ✓
|
|
77
|
+
- `test_controller_change_forward_traversal` ✓
|
|
78
|
+
- `test_no_evidence_returns_empty` ✓
|
|
79
|
+
- `test_impact_strings_describe_behavior_not_files` ✓
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Pendiente de sesión anterior (sigue vigente)
|
|
84
|
+
|
|
85
|
+
1. **Smoke test `delta`** — verificar Fix 1-3 (BFS module constraint) no afecta `delta`:
|
|
86
|
+
```bash
|
|
87
|
+
cd ~/Documents/workspace/spring-boot-realworld-example-app
|
|
88
|
+
sourcecode prepare-context delta . --since HEAD~1 2>/dev/null | python3 -c "
|
|
89
|
+
import json,sys; d=json.load(sys.stdin)
|
|
90
|
+
print('relevant_files:', len(d.get('relevant_files', [])))
|
|
91
|
+
"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
2. **Smoke test `security_change` path** — cambio real en auth logic debe expandir security chain.
|
|
95
|
+
|
|
96
|
+
3. **Tests unitarios para `_classify_diff_severity`** — sin tests actualmente.
|
|
97
|
+
|
|
98
|
+
4. **`User.java` clasificado como `"source"` no `"domain_model"`** — fix opcional en `_classify_changed_file`.
|
|
99
|
+
|
|
100
|
+
5. **Smoke tests saint-server** — pendiente sesión 4/5.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Pendiente de esta sesión (nuevo)
|
|
105
|
+
|
|
106
|
+
1. **COMMIT** — toda la sesión sin commit. Hacer commit:
|
|
107
|
+
```bash
|
|
108
|
+
git add src/sourcecode/flow_analyzer.py \
|
|
109
|
+
src/sourcecode/prepare_context.py \
|
|
110
|
+
src/sourcecode/cli.py \
|
|
111
|
+
tests/test_signal_hierarchy.py \
|
|
112
|
+
tests/test_v1_10_regressions.py
|
|
113
|
+
git commit -m "feat(review-pr): behavioral_impact — impacto causal de cambio, no expansión heurística"
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
2. **Smoke test `behavioral_impact`** en repo real:
|
|
117
|
+
```bash
|
|
118
|
+
/Users/user/.local/pipx/venvs/sourcecode/bin/python -m pip install -e . -q
|
|
119
|
+
cd ~/Documents/workspace/spring-boot-realworld-example-app
|
|
120
|
+
# Modificar un service (ej. ArticleFavoriteService.java) sin commit y correr:
|
|
121
|
+
sourcecode prepare-context review-pr . 2>/dev/null | python3 -c "
|
|
122
|
+
import json, sys
|
|
123
|
+
d = json.load(sys.stdin)
|
|
124
|
+
for bi in d.get('behavioral_impact', []):
|
|
125
|
+
print('entry:', bi['entry_point'])
|
|
126
|
+
print('path:', bi['affected_path'])
|
|
127
|
+
print('impact:', bi['impact'])
|
|
128
|
+
print('end_state:', bi['end_state'])
|
|
129
|
+
print()
|
|
130
|
+
"
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
3. **Evaluar si `execution_paths` sigue siendo útil** o si `behavioral_impact` lo reemplaza completamente. Ambos coexisten ahora.
|
|
134
|
+
|
|
135
|
+
4. **Impact generation refinement** — para service changes, `"X data persistence behavior may change"` es verbose. Podría simplificarse a `"X persistence affected"`.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Para retomar
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
cd /Users/user/Downloads/atlas-cli
|
|
143
|
+
git log --oneline -3
|
|
144
|
+
git diff --stat HEAD # verá los 5 archivos sin commit
|
|
145
|
+
|
|
146
|
+
# Verificar import
|
|
147
|
+
python3 -c "from sourcecode.flow_analyzer import analyze_behavioral_impact; print('OK')"
|
|
148
|
+
|
|
149
|
+
# Tests completos
|
|
150
|
+
python3 -m pytest tests/ \
|
|
151
|
+
--ignore=tests/test_block2_coverage.py \
|
|
152
|
+
--ignore=tests/test_packaging.py \
|
|
153
|
+
--deselect=tests/test_dependency_analyzer_node_python.py::test_python_requirements_without_lockfile_keeps_declared_versions \
|
|
154
|
+
-q
|
|
155
|
+
# Expected: 777 passed
|
|
156
|
+
|
|
157
|
+
# Tests nuevos específicamente
|
|
158
|
+
python3 -m pytest tests/test_v1_10_regressions.py::TestBehavioralImpact -v
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
*Pausado 2026-05-16 sesión 9 — gsd:pause-work*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 1.30.
|
|
3
|
+
Version: 1.30.5
|
|
4
4
|
Summary: Deterministic codebase context for AI coding agents
|
|
5
5
|
License: Apache License
|
|
6
6
|
Version 2.0, January 2004
|
|
@@ -219,9 +219,9 @@ Description-Content-Type: text/markdown
|
|
|
219
219
|
|
|
220
220
|
# sourcecode
|
|
221
221
|
|
|
222
|
-
**
|
|
222
|
+
**Deterministic, behavior-aware codebase context for AI agents and PR review.**
|
|
223
223
|
|
|
224
|
-

|
|
225
225
|

|
|
226
226
|
|
|
227
227
|
---
|
|
@@ -230,6 +230,8 @@ Description-Content-Type: text/markdown
|
|
|
230
230
|
|
|
231
231
|
`sourcecode` analyzes a repository and produces structured JSON or YAML designed to be fed directly to AI agents or language models. It solves the "stuff the whole repo into the prompt" problem by extracting a deterministic, high-signal summary: stack detection, entry points, dependencies, git hotspots, inline annotations, and confidence metadata.
|
|
232
232
|
|
|
233
|
+
For PR review specifically, `sourcecode` extracts **execution paths**: ordered chains from entry point through service to data access, with runtime signals (auth guards, cache short-circuits, async execution) anchored to the specific step where they affect behavior. A reviewer sees _what the system does_ under this change, not just which files changed.
|
|
234
|
+
|
|
233
235
|
Optimized for Java/Spring Boot monorepos. Works on any codebase.
|
|
234
236
|
|
|
235
237
|
---
|
|
@@ -255,7 +257,7 @@ pipx install sourcecode
|
|
|
255
257
|
|
|
256
258
|
```bash
|
|
257
259
|
sourcecode version
|
|
258
|
-
# sourcecode 1.30.
|
|
260
|
+
# sourcecode 1.30.5
|
|
259
261
|
```
|
|
260
262
|
|
|
261
263
|
---
|
|
@@ -342,7 +344,7 @@ sourcecode prepare-context TASK [PATH] [OPTIONS]
|
|
|
342
344
|
| `fix-bug` | Files ranked by risk (annotations, churn, uncommitted changes), suspected areas | Debugging session |
|
|
343
345
|
| `refactor` | Structural problems, improvement opportunities, high-annotation files | Code quality review |
|
|
344
346
|
| `generate-tests` | Source files without test pairs, coverage gap analysis | Writing missing tests |
|
|
345
|
-
| `review-pr` |
|
|
347
|
+
| `review-pr` | Execution paths with per-step runtime signals, security/transactional impact, test coverage gaps | Pre-merge behavior review |
|
|
346
348
|
| `delta` | Changed files with multi-hop impact analysis, structural import graph, system-level impact summary | Incremental CI/review context |
|
|
347
349
|
|
|
348
350
|
### Options
|
|
@@ -423,6 +425,80 @@ sourcecode prepare-context delta . --since main
|
|
|
423
425
|
|
|
424
426
|
---
|
|
425
427
|
|
|
428
|
+
## `review-pr` — behavior-aware PR analysis
|
|
429
|
+
|
|
430
|
+
Extracts **execution paths**: ordered chains from entry point through service to data access layer, with runtime signals anchored to the specific step where they affect behavior.
|
|
431
|
+
|
|
432
|
+
```bash
|
|
433
|
+
sourcecode prepare-context review-pr [PATH] --since REF
|
|
434
|
+
# or against uncommitted working-tree changes:
|
|
435
|
+
sourcecode prepare-context review-pr
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
**`execution_paths` schema:**
|
|
439
|
+
|
|
440
|
+
```json
|
|
441
|
+
{
|
|
442
|
+
"execution_paths": [
|
|
443
|
+
{
|
|
444
|
+
"name": "Order",
|
|
445
|
+
"entry_point": {
|
|
446
|
+
"step": "OrderController.createOrder",
|
|
447
|
+
"notes": ["condition: authorization check present (@PreAuthorize / @Secured)"]
|
|
448
|
+
},
|
|
449
|
+
"path": [
|
|
450
|
+
{
|
|
451
|
+
"step": "ShippingService.process",
|
|
452
|
+
"notes": [
|
|
453
|
+
"branch: Spring cache may short-circuit downstream call",
|
|
454
|
+
"async: runs in separate thread (@Async)"
|
|
455
|
+
]
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
"step": "OrderRepository.save",
|
|
459
|
+
"notes": []
|
|
460
|
+
}
|
|
461
|
+
],
|
|
462
|
+
"end_state": "DB write"
|
|
463
|
+
}
|
|
464
|
+
]
|
|
465
|
+
}
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
**Path rules:**
|
|
469
|
+
|
|
470
|
+
- One path per changed entry point — most-evident downstream call, not all branches
|
|
471
|
+
- Each step requires direct code evidence: field injection, constructor param, method call, or type annotation
|
|
472
|
+
- `notes` are scanned from that step's own source file — no cross-contamination between steps
|
|
473
|
+
- Path terminates where evidence ends; no gap-filling by naming convention or module similarity
|
|
474
|
+
|
|
475
|
+
**Runtime signals detected per step:**
|
|
476
|
+
|
|
477
|
+
| Signal | Example code | Note emitted |
|
|
478
|
+
|--------|-------------|--------------|
|
|
479
|
+
| Auth guard | `@PreAuthorize`, `@Secured`, `isAuthenticated()` | `condition: authorization check present` |
|
|
480
|
+
| Feature flag | `featureFlag.isEnabled()`, `FeatureToggle` | `condition: feature flag gates execution` |
|
|
481
|
+
| Null/empty guard | `if (x == null) return` | `condition: null/empty guard with early return` |
|
|
482
|
+
| Spring cache | `@Cacheable`, `@CacheEvict` | `branch: Spring cache may short-circuit downstream call` |
|
|
483
|
+
| Optional absence | `Optional<>`, `.orElseThrow()` | `branch: result may be absent (Optional)` |
|
|
484
|
+
| Async thread | `@Async`, `CompletableFuture` | `async: runs in separate thread (@Async)` |
|
|
485
|
+
| Event publishing | `publishEvent()`, `applicationEventPublisher` | `async: Spring application event emitted` |
|
|
486
|
+
| Kafka | `kafkaTemplate.send()` | `async: Kafka message produced` |
|
|
487
|
+
| RabbitMQ | `rabbitTemplate.send()` | `async: RabbitMQ message sent` |
|
|
488
|
+
|
|
489
|
+
**Other `review-pr` output fields:**
|
|
490
|
+
|
|
491
|
+
| Field | Description |
|
|
492
|
+
|-------|-------------|
|
|
493
|
+
| `review_hotspots` | Top changed files ranked by impact score |
|
|
494
|
+
| `suggested_review_order` | Security → API → Service → Persistence → Config |
|
|
495
|
+
| `security_impact` | Changed files touching the security surface |
|
|
496
|
+
| `transactional_impact` | Files crossing transaction boundaries |
|
|
497
|
+
| `test_coverage_risk` | Changed source files with no corresponding test |
|
|
498
|
+
| `affected_modules` | DDD domain modules touched by the change |
|
|
499
|
+
|
|
500
|
+
---
|
|
501
|
+
|
|
426
502
|
## Output schema
|
|
427
503
|
|
|
428
504
|
All outputs include a `confidence_summary` block with `overall`, `stack`, and `entry_points` confidence levels (`high` / `medium` / `low`), plus an `analysis_gaps` list describing what could not be analyzed and why.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# sourcecode
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Deterministic, behavior-aware codebase context for AI agents and PR review.**
|
|
4
4
|
|
|
5
|
-

|
|
6
6
|

|
|
7
7
|
|
|
8
8
|
---
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
|
|
12
12
|
`sourcecode` analyzes a repository and produces structured JSON or YAML designed to be fed directly to AI agents or language models. It solves the "stuff the whole repo into the prompt" problem by extracting a deterministic, high-signal summary: stack detection, entry points, dependencies, git hotspots, inline annotations, and confidence metadata.
|
|
13
13
|
|
|
14
|
+
For PR review specifically, `sourcecode` extracts **execution paths**: ordered chains from entry point through service to data access, with runtime signals (auth guards, cache short-circuits, async execution) anchored to the specific step where they affect behavior. A reviewer sees _what the system does_ under this change, not just which files changed.
|
|
15
|
+
|
|
14
16
|
Optimized for Java/Spring Boot monorepos. Works on any codebase.
|
|
15
17
|
|
|
16
18
|
---
|
|
@@ -36,7 +38,7 @@ pipx install sourcecode
|
|
|
36
38
|
|
|
37
39
|
```bash
|
|
38
40
|
sourcecode version
|
|
39
|
-
# sourcecode 1.30.
|
|
41
|
+
# sourcecode 1.30.5
|
|
40
42
|
```
|
|
41
43
|
|
|
42
44
|
---
|
|
@@ -123,7 +125,7 @@ sourcecode prepare-context TASK [PATH] [OPTIONS]
|
|
|
123
125
|
| `fix-bug` | Files ranked by risk (annotations, churn, uncommitted changes), suspected areas | Debugging session |
|
|
124
126
|
| `refactor` | Structural problems, improvement opportunities, high-annotation files | Code quality review |
|
|
125
127
|
| `generate-tests` | Source files without test pairs, coverage gap analysis | Writing missing tests |
|
|
126
|
-
| `review-pr` |
|
|
128
|
+
| `review-pr` | Execution paths with per-step runtime signals, security/transactional impact, test coverage gaps | Pre-merge behavior review |
|
|
127
129
|
| `delta` | Changed files with multi-hop impact analysis, structural import graph, system-level impact summary | Incremental CI/review context |
|
|
128
130
|
|
|
129
131
|
### Options
|
|
@@ -204,6 +206,80 @@ sourcecode prepare-context delta . --since main
|
|
|
204
206
|
|
|
205
207
|
---
|
|
206
208
|
|
|
209
|
+
## `review-pr` — behavior-aware PR analysis
|
|
210
|
+
|
|
211
|
+
Extracts **execution paths**: ordered chains from entry point through service to data access layer, with runtime signals anchored to the specific step where they affect behavior.
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
sourcecode prepare-context review-pr [PATH] --since REF
|
|
215
|
+
# or against uncommitted working-tree changes:
|
|
216
|
+
sourcecode prepare-context review-pr
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**`execution_paths` schema:**
|
|
220
|
+
|
|
221
|
+
```json
|
|
222
|
+
{
|
|
223
|
+
"execution_paths": [
|
|
224
|
+
{
|
|
225
|
+
"name": "Order",
|
|
226
|
+
"entry_point": {
|
|
227
|
+
"step": "OrderController.createOrder",
|
|
228
|
+
"notes": ["condition: authorization check present (@PreAuthorize / @Secured)"]
|
|
229
|
+
},
|
|
230
|
+
"path": [
|
|
231
|
+
{
|
|
232
|
+
"step": "ShippingService.process",
|
|
233
|
+
"notes": [
|
|
234
|
+
"branch: Spring cache may short-circuit downstream call",
|
|
235
|
+
"async: runs in separate thread (@Async)"
|
|
236
|
+
]
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"step": "OrderRepository.save",
|
|
240
|
+
"notes": []
|
|
241
|
+
}
|
|
242
|
+
],
|
|
243
|
+
"end_state": "DB write"
|
|
244
|
+
}
|
|
245
|
+
]
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
**Path rules:**
|
|
250
|
+
|
|
251
|
+
- One path per changed entry point — most-evident downstream call, not all branches
|
|
252
|
+
- Each step requires direct code evidence: field injection, constructor param, method call, or type annotation
|
|
253
|
+
- `notes` are scanned from that step's own source file — no cross-contamination between steps
|
|
254
|
+
- Path terminates where evidence ends; no gap-filling by naming convention or module similarity
|
|
255
|
+
|
|
256
|
+
**Runtime signals detected per step:**
|
|
257
|
+
|
|
258
|
+
| Signal | Example code | Note emitted |
|
|
259
|
+
|--------|-------------|--------------|
|
|
260
|
+
| Auth guard | `@PreAuthorize`, `@Secured`, `isAuthenticated()` | `condition: authorization check present` |
|
|
261
|
+
| Feature flag | `featureFlag.isEnabled()`, `FeatureToggle` | `condition: feature flag gates execution` |
|
|
262
|
+
| Null/empty guard | `if (x == null) return` | `condition: null/empty guard with early return` |
|
|
263
|
+
| Spring cache | `@Cacheable`, `@CacheEvict` | `branch: Spring cache may short-circuit downstream call` |
|
|
264
|
+
| Optional absence | `Optional<>`, `.orElseThrow()` | `branch: result may be absent (Optional)` |
|
|
265
|
+
| Async thread | `@Async`, `CompletableFuture` | `async: runs in separate thread (@Async)` |
|
|
266
|
+
| Event publishing | `publishEvent()`, `applicationEventPublisher` | `async: Spring application event emitted` |
|
|
267
|
+
| Kafka | `kafkaTemplate.send()` | `async: Kafka message produced` |
|
|
268
|
+
| RabbitMQ | `rabbitTemplate.send()` | `async: RabbitMQ message sent` |
|
|
269
|
+
|
|
270
|
+
**Other `review-pr` output fields:**
|
|
271
|
+
|
|
272
|
+
| Field | Description |
|
|
273
|
+
|-------|-------------|
|
|
274
|
+
| `review_hotspots` | Top changed files ranked by impact score |
|
|
275
|
+
| `suggested_review_order` | Security → API → Service → Persistence → Config |
|
|
276
|
+
| `security_impact` | Changed files touching the security surface |
|
|
277
|
+
| `transactional_impact` | Files crossing transaction boundaries |
|
|
278
|
+
| `test_coverage_risk` | Changed source files with no corresponding test |
|
|
279
|
+
| `affected_modules` | DDD domain modules touched by the change |
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
207
283
|
## Output schema
|
|
208
284
|
|
|
209
285
|
All outputs include a `confidence_summary` block with `overall`, `stack`, and `entry_points` confidence levels (`high` / `medium` / `low`), plus an `analysis_gaps` list describing what could not be analyzed and why.
|
|
@@ -1633,7 +1633,7 @@ def prepare_context_cmd(
|
|
|
1633
1633
|
refactor Structural issues, improvement opportunities
|
|
1634
1634
|
generate-tests Untested source files, test gap analysis
|
|
1635
1635
|
onboard Full project context for new agents/developers
|
|
1636
|
-
review-pr PR diff:
|
|
1636
|
+
review-pr PR diff: execution paths with per-step runtime signals, security/transactional impact, test gaps (requires git diff or --since)
|
|
1637
1637
|
delta Incremental context: git-changed files only
|
|
1638
1638
|
|
|
1639
1639
|
\b
|
|
@@ -1868,6 +1868,8 @@ def prepare_context_cmd(
|
|
|
1868
1868
|
out["suggested_review_order"] = output.suggested_review_order
|
|
1869
1869
|
if output.execution_paths:
|
|
1870
1870
|
out["execution_paths"] = output.execution_paths
|
|
1871
|
+
if output.behavioral_impact:
|
|
1872
|
+
out["behavioral_impact"] = output.behavioral_impact
|
|
1871
1873
|
if output.impact_summary:
|
|
1872
1874
|
out["impact_summary"] = output.impact_summary
|
|
1873
1875
|
if output.why_these_files:
|