sourcecode 1.30.10__tar.gz → 1.30.12__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.12/.continue-here.md +166 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/PKG-INFO +3 -3
- {sourcecode-1.30.10 → sourcecode-1.30.12}/README.md +2 -2
- {sourcecode-1.30.10 → sourcecode-1.30.12}/pyproject.toml +1 -1
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/__init__.py +1 -1
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/cli.py +85 -3
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/prepare_context.py +244 -178
- sourcecode-1.30.12/src/sourcecode/repository_ir.py +803 -0
- sourcecode-1.30.12/tests/test_repository_ir.py +451 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_v1_10_regressions.py +2 -2
- sourcecode-1.30.10/.continue-here.md +0 -173
- {sourcecode-1.30.10 → sourcecode-1.30.12}/.agents/skills/source-command-gsd-join-discord/SKILL.md +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/.agents/skills/source-command-gsd-review-backlog/SKILL.md +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/.agents/skills/source-command-gsd-workstreams/SKILL.md +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/.github/workflows/build-windows.yml +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/.gitignore +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/.ruff.toml +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/CONTRIBUTING.md +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/LICENSE +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/SECURITY.md +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/docs/privacy.md +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/docs/schema.md +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/raw +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/run_cli.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/adaptive_scanner.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/architecture_analyzer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/architecture_summary.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/ast_extractor.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/classifier.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/code_notes_analyzer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/confidence_analyzer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/context_scorer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/context_summarizer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/contract_model.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/contract_pipeline.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/coverage_parser.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/dependency_analyzer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/__init__.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/base.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/csproj_parser.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/dart.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/dotnet.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/elixir.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/go.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/heuristic.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/hybrid.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/java.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/jvm_ext.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/nodejs.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/parsers.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/php.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/project.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/python.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/ruby.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/rust.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/systems.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/terraform.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/tooling.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/doc_analyzer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/entrypoint_classifier.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/env_analyzer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/file_classifier.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/flow_analyzer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/git_analyzer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/graph_analyzer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/metrics_analyzer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/progress.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/ranking_engine.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/redactor.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/relevance_scorer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/repo_classifier.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/runtime_classifier.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/scanner.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/schema.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/semantic_analyzer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/serializer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/summarizer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/telemetry/__init__.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/telemetry/config.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/telemetry/consent.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/telemetry/events.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/telemetry/filters.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/telemetry/transport.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/tree_utils.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/workspace.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/__init__.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/conftest.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/coverage.xml +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/fastapi_app/pyproject.toml +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/fastapi_app/src/main.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/go_service/cmd/api/main.go +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/go_service/go.mod +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/jacoco.xml +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/latin1_sample.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/latin1_sample_iso.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/lcov.info +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/nextjs_app/app/page.tsx +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/nextjs_app/package.json +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/nextjs_app/pnpm-lock.yaml +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/pnpm_monorepo/apps/web/app/page.tsx +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/pnpm_monorepo/apps/web/package.json +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/pnpm_monorepo/packages/api/main.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/pnpm_monorepo/packages/api/pyproject.toml +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/pnpm_monorepo/pnpm-workspace.yaml +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/pom.xml +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/application/service/FindAusenteService.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/domain/entities/Ausente.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/infrastructure/rest/AusenteRestController.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/application/service/FindAutocoberturasService.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/domain/entities/Autocoberturas.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/infrastructure/rest/AutocoberturasRestController.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/application/service/FindCalendarioTrabajadorService.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/domain/entities/CalendarioTrabajador.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/infrastructure/rest/CalendarioTrabajadorRestController.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/application/service/FindDepartamentoService.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/domain/entities/Departamento.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/infrastructure/rest/DepartamentoRestController.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/application/service/FindEmpleadoService.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/domain/entities/Empleado.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/infrastructure/rest/EmpleadoRestController.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/DemoApplication.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/config/FilterConfig.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/domain/Health.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/mapper/HealthMapper.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/repository/HealthRepository.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/service/HealthService.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/HealthRestController.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/NominaRestController.java +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/resources/application-dev.yml +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/resources/application.yml +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/resources/mapper/HealthMapper.xml +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_architecture_analyzer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_architecture_summary.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_ast_extractor.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_block1_reliability.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_block2_coverage.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_block5_quality.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_bug_fixes_v16.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_classifier.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_cli.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_code_notes_analyzer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_context_scorer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_contract_pipeline.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_coverage_parser.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_cross_consistency.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_dependency_analyzer_node_python.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_dependency_analyzer_polyglot.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_dependency_schema.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detector_dotnet.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detector_go_rust_java.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detector_nodejs.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detector_php_ruby_dart.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detector_python.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detector_universal_managed.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detector_universal_systems.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detectors_base.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_doc_analyzer_jsdom.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_doc_analyzer_python.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_encoding_regression.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_graph_analyzer_polyglot.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_graph_analyzer_python_node.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_graph_schema.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_hybrid_inference.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_dependencies.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_detection.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_docs.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_graph_modules.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_lqn.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_metrics.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_multistack.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_semantics.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_universal.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_java_spring_integration.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_metrics_analyzer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_packaging.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_phase1_improvements.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_pipeline_integrity.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_real_projects.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_redactor.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_scanner.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_schema.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_schema_normalization.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_semantic_analyzer_node.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_semantic_analyzer_python.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_semantic_import_resolution.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_semantic_schema.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_signal_hierarchy.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_summarizer.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_surface_honesty.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_task_differentiation.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_telemetry.py +0 -0
- {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_workspace_analyzer.py +0 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Continue Here — atlas-cli sesión 11
|
|
2
|
+
|
|
3
|
+
**Paused:** 2026-05-16 (sesión 11)
|
|
4
|
+
**Repo:** `/Users/user/Downloads/atlas-cli`
|
|
5
|
+
**Branch:** master
|
|
6
|
+
**Último commit:** `dc157fa` — (fix) mejorando honestidad prepare-context pr
|
|
7
|
+
**Working tree:** `prepare_context.py` modificado (semantic engine fixes — NO committed)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Trabajo de esta sesión
|
|
12
|
+
|
|
13
|
+
### Bloque 1: Strict Diff Source Model
|
|
14
|
+
|
|
15
|
+
**Qué se hizo:**
|
|
16
|
+
- `DiffSourceType` enum añadido (`WORKTREE_UNSTAGED`, `WORKTREE_STAGED`, `GIT_SINCE_REF`, `GIT_RANGE`)
|
|
17
|
+
- `_get_pr_scope_files` reescrito → retorna 4-tuple `(all_files, scope_source, committed_files, uncommitted_files)`. Sin fallback a HEAD~1. Committed solo si `--since` explícito.
|
|
18
|
+
- `_get_git_changed_files` → sin default HEAD~1. Sin `--since`: WORKTREE_UNSTAGED (`git diff --name-only`). Con `--since`: GIT_SINCE_REF.
|
|
19
|
+
- `_FOLDER_TYPE_MAP` eliminado — path/folder no es evidencia.
|
|
20
|
+
- `TaskOutput` nuevos campos: `committed_changes`, `uncommitted_changes`, `analysis_scope`
|
|
21
|
+
- Cada entry `runtime_changes` incluye `diff_source` (GIT_RANGE vs WORKTREE_UNSTAGED)
|
|
22
|
+
- `changed-only` en cli.py: excluye untracked, solo staged+unstaged
|
|
23
|
+
- Tests `test_v1_10_regressions.py`: mocks actualizados a 4-tuple
|
|
24
|
+
|
|
25
|
+
**Committed en:** `dc157fa`
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
### Bloque 2: Evidence-Gated Semantic Engine (NO COMMITTED)
|
|
30
|
+
|
|
31
|
+
**Fichero con cambios:** `src/sourcecode/prepare_context.py` (unstaged)
|
|
32
|
+
|
|
33
|
+
**Qué se cambió:**
|
|
34
|
+
|
|
35
|
+
1. **`_ARTIFACT_CHANGE_TYPES["source"]` → `[]`**
|
|
36
|
+
- Antes: `["behavioral_change"]`. Ahora: ninguno.
|
|
37
|
+
- `behavioral_change` solo se emite si `diff_severities` devuelve `api_change` o `security_change`
|
|
38
|
+
|
|
39
|
+
2. **`_DIFF_SEVERITY_CHANGE_TYPES` nuevo dict**
|
|
40
|
+
- `api_change` → `["behavioral_change"]`
|
|
41
|
+
- `security_change` → `["behavioral_change", "security_change"]`
|
|
42
|
+
- `field_change` → `["structural_change"]`
|
|
43
|
+
- `unknown/trivial` → `[]`
|
|
44
|
+
|
|
45
|
+
3. **`_ATYPE_IMPACT_AREA["source"]` → `"application_layer"` (antes: `"transaction_boundary"`)**
|
|
46
|
+
- `"service"` también → `"application_layer"` (sin evidencia transaccional)
|
|
47
|
+
- `"transaction_boundary"` ya no se emite para archivos no clasificados
|
|
48
|
+
|
|
49
|
+
4. **`_role_in_system` default → `"unclassified"` (antes: `"core_service"`)**
|
|
50
|
+
- `"service"` anotado → `"service"` (no `"core_service"`)
|
|
51
|
+
|
|
52
|
+
5. **`_structured_why` evidence-gated**
|
|
53
|
+
- Solo emite `role_in_system`, `impact_area`, `propagation_risk` si tipo no es `source`/`unclassified`
|
|
54
|
+
- Añade `classification_confidence`
|
|
55
|
+
|
|
56
|
+
6. **`_score_to_confidence(score)` helper**
|
|
57
|
+
- `>= 0.60` → `"high"`, `>= 0.40` → `"medium"`, else → `"low"`
|
|
58
|
+
|
|
59
|
+
7. **`impact_score_per_file` ahora es dict estructurado**
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"score": 0.145,
|
|
63
|
+
"confidence": "low",
|
|
64
|
+
"score_breakdown": { "artifact_base": 0.125, ... },
|
|
65
|
+
"change_types": [],
|
|
66
|
+
"diff_severity": "trivial"
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
8. **`behavioral_changes`** — gateado en `diff_severities`, no en artifact type
|
|
71
|
+
|
|
72
|
+
9. **`changed_subsystems`** — excluye `source`/`unclassified`; eliminado `"transaction_layer"` del mapa
|
|
73
|
+
|
|
74
|
+
10. **`dependency_graph_summary.propagation_depth`** → `None` cuando no hay graph edges (no `0`)
|
|
75
|
+
|
|
76
|
+
11. **`_runtime_impact`** — eliminado mensaje de "verify transaction scope" para service sin evidencia anotacional
|
|
77
|
+
|
|
78
|
+
**Resultado verificado:**
|
|
79
|
+
```
|
|
80
|
+
changed_subsystems: []
|
|
81
|
+
behavioral_changes: []
|
|
82
|
+
role: unclassified
|
|
83
|
+
why: artifact_type: source | classification_confidence: low | change_effect: ...
|
|
84
|
+
# Sin: core_service, transaction_boundary, transaction_layer, propagation_risk
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Tests:** 765 passed, 3 skipped (sin nuevos fallos)
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Estado de tests
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
765 passed, 3 skipped
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Pre-existing failures (no relacionados):
|
|
98
|
+
- `tests/test_block2_coverage.py` — DocRecord bug en `doc_analyzer.py`
|
|
99
|
+
- `tests/test_dependency_analyzer_node_python.py::test_python_requirements_without_lockfile_keeps_declared_versions`
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## PENDIENTE (antes de próximo commit)
|
|
104
|
+
|
|
105
|
+
1. **Commit semantic engine fixes** en `prepare_context.py`
|
|
106
|
+
```bash
|
|
107
|
+
git add src/sourcecode/prepare_context.py
|
|
108
|
+
git commit -m "fix: evidence-gated semantic engine — remove unsupported behavioral/transaction claims"
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
2. **Smoke test en repo spring-boot real**
|
|
112
|
+
```bash
|
|
113
|
+
cd ~/Documents/workspace/spring-boot-realworld-example-app
|
|
114
|
+
sourcecode prepare-context delta --since HEAD~1 2>/dev/null | python3 -c "
|
|
115
|
+
import json, sys
|
|
116
|
+
d = json.load(sys.stdin)
|
|
117
|
+
si = d.get('system_impact', {})
|
|
118
|
+
print('subsystems:', si.get('changed_subsystems'))
|
|
119
|
+
print('behavioral:', si.get('behavioral_changes'))
|
|
120
|
+
for f, v in d.get('impact_score_per_file', {}).items():
|
|
121
|
+
print(f'{f}: conf={v[\"confidence\"]} sev={v[\"diff_severity\"]}')
|
|
122
|
+
"
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
3. **Smoke test behavioral_impact** (pendiente de sesión anterior):
|
|
126
|
+
```bash
|
|
127
|
+
cd ~/Documents/workspace/spring-boot-realworld-example-app
|
|
128
|
+
sourcecode prepare-context review-pr . 2>/dev/null | python3 -c "
|
|
129
|
+
import json, sys
|
|
130
|
+
d = json.load(sys.stdin)
|
|
131
|
+
for bi in d.get('behavioral_impact', []):
|
|
132
|
+
print('entry:', bi['entry_point'])
|
|
133
|
+
print('confidence:', bi['confidence'])
|
|
134
|
+
print('trace:', bi['trace'])
|
|
135
|
+
print()
|
|
136
|
+
"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
4. **Tests unitarios para `_classify_diff_severity`** — aún sin cobertura
|
|
140
|
+
|
|
141
|
+
5. **`User.java` clasificado como `"source"` no `"domain_model"`** — fix opcional
|
|
142
|
+
|
|
143
|
+
6. **Evaluar si `execution_paths` sigue siendo útil** o si `behavioral_impact` lo reemplaza
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Para retomar
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
cd /Users/user/Downloads/atlas-cli
|
|
151
|
+
git status # debe mostrar: prepare_context.py modified
|
|
152
|
+
|
|
153
|
+
python3 -m pytest tests/ \
|
|
154
|
+
--ignore=tests/test_block2_coverage.py \
|
|
155
|
+
--ignore=tests/test_dependency_analyzer_node_python.py \
|
|
156
|
+
-q
|
|
157
|
+
# Expected: 765 passed, 3 skipped
|
|
158
|
+
|
|
159
|
+
# Luego commit el semantic engine:
|
|
160
|
+
git add src/sourcecode/prepare_context.py
|
|
161
|
+
git commit -m "fix: evidence-gated semantic engine — remove unsupported behavioral/transaction claims"
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
*Pausado 2026-05-16 sesión 11 — 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.12
|
|
4
4
|
Summary: Deterministic codebase context for AI coding agents
|
|
5
5
|
License: Apache License
|
|
6
6
|
Version 2.0, January 2004
|
|
@@ -221,7 +221,7 @@ Description-Content-Type: text/markdown
|
|
|
221
221
|
|
|
222
222
|
**Deterministic, behavior-aware codebase context for AI agents and PR review.**
|
|
223
223
|
|
|
224
|
-

|
|
225
225
|

|
|
226
226
|
|
|
227
227
|
---
|
|
@@ -257,7 +257,7 @@ pipx install sourcecode
|
|
|
257
257
|
|
|
258
258
|
```bash
|
|
259
259
|
sourcecode version
|
|
260
|
-
# sourcecode 1.30.
|
|
260
|
+
# sourcecode 1.30.12
|
|
261
261
|
```
|
|
262
262
|
|
|
263
263
|
---
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Deterministic, behavior-aware codebase context for AI agents and PR review.**
|
|
4
4
|
|
|
5
|
-

|
|
6
6
|

|
|
7
7
|
|
|
8
8
|
---
|
|
@@ -38,7 +38,7 @@ pipx install sourcecode
|
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
40
|
sourcecode version
|
|
41
|
-
# sourcecode 1.30.
|
|
41
|
+
# sourcecode 1.30.12
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
---
|
|
@@ -1400,9 +1400,8 @@ def main(
|
|
|
1400
1400
|
if _gc_early and not (_bad_gc & set(_gc_early.limitations)):
|
|
1401
1401
|
_uc = _gc_early.uncommitted_changes
|
|
1402
1402
|
if _uc:
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
)
|
|
1403
|
+
# WORKTREE_UNSTAGED + WORKTREE_STAGED only; untracked excluded
|
|
1404
|
+
_allowed_changed_files = set(_uc.staged) | set(_uc.unstaged)
|
|
1406
1405
|
if not _allowed_changed_files:
|
|
1407
1406
|
typer.echo(
|
|
1408
1407
|
"[changed-only] git unavailable or no uncommitted changes — falling back to full scan.",
|
|
@@ -1953,6 +1952,89 @@ def telemetry_disable() -> None:
|
|
|
1953
1952
|
typer.echo("Re-enable at any time: sourcecode telemetry enable")
|
|
1954
1953
|
|
|
1955
1954
|
|
|
1955
|
+
# ── repo-ir ───────────────────────────────────────────────────────────────────
|
|
1956
|
+
|
|
1957
|
+
@app.command("repo-ir")
|
|
1958
|
+
def repo_ir_cmd(
|
|
1959
|
+
path: Path = typer.Argument(
|
|
1960
|
+
Path("."),
|
|
1961
|
+
help="Repository root to analyze (default: current directory)",
|
|
1962
|
+
),
|
|
1963
|
+
since: Optional[str] = typer.Option(
|
|
1964
|
+
None,
|
|
1965
|
+
"--since",
|
|
1966
|
+
help="Git ref for symbol-level diff (e.g. HEAD~1, main)",
|
|
1967
|
+
),
|
|
1968
|
+
files: Optional[str] = typer.Option(
|
|
1969
|
+
None,
|
|
1970
|
+
"--files",
|
|
1971
|
+
help="Comma-separated list of Java files (relative to path) to analyze",
|
|
1972
|
+
),
|
|
1973
|
+
output_path: Optional[Path] = typer.Option(
|
|
1974
|
+
None,
|
|
1975
|
+
"--output",
|
|
1976
|
+
"-o",
|
|
1977
|
+
help="Write output to a file instead of stdout",
|
|
1978
|
+
),
|
|
1979
|
+
include_tests: bool = typer.Option(
|
|
1980
|
+
False,
|
|
1981
|
+
"--include-tests",
|
|
1982
|
+
help="Include test files in analysis (excluded by default)",
|
|
1983
|
+
),
|
|
1984
|
+
) -> None:
|
|
1985
|
+
"""Deterministic symbol-level IR for Java repositories.
|
|
1986
|
+
|
|
1987
|
+
\b
|
|
1988
|
+
Extracts symbols, relations, Spring roles, and (with --since) symbol-level diffs.
|
|
1989
|
+
Output is JSON: symbols[], relations[], changed_symbols[], spring_summary, graph_metadata.
|
|
1990
|
+
|
|
1991
|
+
\b
|
|
1992
|
+
Examples:
|
|
1993
|
+
sourcecode repo-ir
|
|
1994
|
+
sourcecode repo-ir /path/to/repo --since HEAD~1
|
|
1995
|
+
sourcecode repo-ir --files src/main/java/UserService.java
|
|
1996
|
+
sourcecode repo-ir --since main --output ir.json
|
|
1997
|
+
"""
|
|
1998
|
+
import json as _json
|
|
1999
|
+
import sys as _sys
|
|
2000
|
+
|
|
2001
|
+
from sourcecode.repository_ir import build_repo_ir, find_java_files
|
|
2002
|
+
|
|
2003
|
+
root = path.resolve()
|
|
2004
|
+
if not root.is_dir():
|
|
2005
|
+
typer.echo(f"Error: {root} is not a directory", err=True)
|
|
2006
|
+
raise typer.Exit(1)
|
|
2007
|
+
|
|
2008
|
+
if files:
|
|
2009
|
+
file_list = [f.strip() for f in files.split(",") if f.strip()]
|
|
2010
|
+
else:
|
|
2011
|
+
file_list = find_java_files(root)
|
|
2012
|
+
if not include_tests:
|
|
2013
|
+
file_list = [f for f in file_list if "/test/" not in f and "/tests/" not in f]
|
|
2014
|
+
|
|
2015
|
+
if not file_list:
|
|
2016
|
+
typer.echo(
|
|
2017
|
+
_json.dumps({
|
|
2018
|
+
"symbols": [],
|
|
2019
|
+
"relations": [],
|
|
2020
|
+
"changed_symbols": [],
|
|
2021
|
+
"spring_summary": {},
|
|
2022
|
+
"graph_metadata": {"node_count": 0, "edge_count": 0, "has_call_graph": False},
|
|
2023
|
+
}, indent=2)
|
|
2024
|
+
)
|
|
2025
|
+
return
|
|
2026
|
+
|
|
2027
|
+
ir = build_repo_ir(file_list, root, since=since)
|
|
2028
|
+
output = _json.dumps(ir, indent=2, ensure_ascii=False)
|
|
2029
|
+
|
|
2030
|
+
if output_path:
|
|
2031
|
+
output_path.write_text(output, encoding="utf-8")
|
|
2032
|
+
typer.echo(f"IR written to {output_path}", err=True)
|
|
2033
|
+
else:
|
|
2034
|
+
_sys.stdout.write(output)
|
|
2035
|
+
_sys.stdout.write("\n")
|
|
2036
|
+
|
|
2037
|
+
|
|
1956
2038
|
# ── version ───────────────────────────────────────────────────────────────────
|
|
1957
2039
|
|
|
1958
2040
|
@app.command("version")
|