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.
Files changed (193) hide show
  1. sourcecode-1.30.12/.continue-here.md +166 -0
  2. {sourcecode-1.30.10 → sourcecode-1.30.12}/PKG-INFO +3 -3
  3. {sourcecode-1.30.10 → sourcecode-1.30.12}/README.md +2 -2
  4. {sourcecode-1.30.10 → sourcecode-1.30.12}/pyproject.toml +1 -1
  5. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/__init__.py +1 -1
  6. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/cli.py +85 -3
  7. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/prepare_context.py +244 -178
  8. sourcecode-1.30.12/src/sourcecode/repository_ir.py +803 -0
  9. sourcecode-1.30.12/tests/test_repository_ir.py +451 -0
  10. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_v1_10_regressions.py +2 -2
  11. sourcecode-1.30.10/.continue-here.md +0 -173
  12. {sourcecode-1.30.10 → sourcecode-1.30.12}/.agents/skills/source-command-gsd-join-discord/SKILL.md +0 -0
  13. {sourcecode-1.30.10 → sourcecode-1.30.12}/.agents/skills/source-command-gsd-review-backlog/SKILL.md +0 -0
  14. {sourcecode-1.30.10 → sourcecode-1.30.12}/.agents/skills/source-command-gsd-workstreams/SKILL.md +0 -0
  15. {sourcecode-1.30.10 → sourcecode-1.30.12}/.github/workflows/build-windows.yml +0 -0
  16. {sourcecode-1.30.10 → sourcecode-1.30.12}/.gitignore +0 -0
  17. {sourcecode-1.30.10 → sourcecode-1.30.12}/.ruff.toml +0 -0
  18. {sourcecode-1.30.10 → sourcecode-1.30.12}/CONTRIBUTING.md +0 -0
  19. {sourcecode-1.30.10 → sourcecode-1.30.12}/LICENSE +0 -0
  20. {sourcecode-1.30.10 → sourcecode-1.30.12}/SECURITY.md +0 -0
  21. {sourcecode-1.30.10 → sourcecode-1.30.12}/docs/privacy.md +0 -0
  22. {sourcecode-1.30.10 → sourcecode-1.30.12}/docs/schema.md +0 -0
  23. {sourcecode-1.30.10 → sourcecode-1.30.12}/raw +0 -0
  24. {sourcecode-1.30.10 → sourcecode-1.30.12}/run_cli.py +0 -0
  25. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/adaptive_scanner.py +0 -0
  26. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/architecture_analyzer.py +0 -0
  27. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/architecture_summary.py +0 -0
  28. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/ast_extractor.py +0 -0
  29. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/classifier.py +0 -0
  30. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/code_notes_analyzer.py +0 -0
  31. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/confidence_analyzer.py +0 -0
  32. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/context_scorer.py +0 -0
  33. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/context_summarizer.py +0 -0
  34. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/contract_model.py +0 -0
  35. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/contract_pipeline.py +0 -0
  36. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/coverage_parser.py +0 -0
  37. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/dependency_analyzer.py +0 -0
  38. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/__init__.py +0 -0
  39. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/base.py +0 -0
  40. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/csproj_parser.py +0 -0
  41. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/dart.py +0 -0
  42. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/dotnet.py +0 -0
  43. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/elixir.py +0 -0
  44. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/go.py +0 -0
  45. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/heuristic.py +0 -0
  46. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/hybrid.py +0 -0
  47. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/java.py +0 -0
  48. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/jvm_ext.py +0 -0
  49. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/nodejs.py +0 -0
  50. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/parsers.py +0 -0
  51. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/php.py +0 -0
  52. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/project.py +0 -0
  53. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/python.py +0 -0
  54. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/ruby.py +0 -0
  55. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/rust.py +0 -0
  56. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/systems.py +0 -0
  57. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/terraform.py +0 -0
  58. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/detectors/tooling.py +0 -0
  59. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/doc_analyzer.py +0 -0
  60. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/entrypoint_classifier.py +0 -0
  61. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/env_analyzer.py +0 -0
  62. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/file_classifier.py +0 -0
  63. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/flow_analyzer.py +0 -0
  64. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/git_analyzer.py +0 -0
  65. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/graph_analyzer.py +0 -0
  66. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/metrics_analyzer.py +0 -0
  67. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/progress.py +0 -0
  68. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/ranking_engine.py +0 -0
  69. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/redactor.py +0 -0
  70. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/relevance_scorer.py +0 -0
  71. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/repo_classifier.py +0 -0
  72. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/runtime_classifier.py +0 -0
  73. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/scanner.py +0 -0
  74. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/schema.py +0 -0
  75. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/semantic_analyzer.py +0 -0
  76. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/serializer.py +0 -0
  77. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/summarizer.py +0 -0
  78. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/telemetry/__init__.py +0 -0
  79. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/telemetry/config.py +0 -0
  80. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/telemetry/consent.py +0 -0
  81. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/telemetry/events.py +0 -0
  82. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/telemetry/filters.py +0 -0
  83. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/telemetry/transport.py +0 -0
  84. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/tree_utils.py +0 -0
  85. {sourcecode-1.30.10 → sourcecode-1.30.12}/src/sourcecode/workspace.py +0 -0
  86. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/__init__.py +0 -0
  87. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/conftest.py +0 -0
  88. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/coverage.xml +0 -0
  89. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/fastapi_app/pyproject.toml +0 -0
  90. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/fastapi_app/src/main.py +0 -0
  91. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/go_service/cmd/api/main.go +0 -0
  92. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/go_service/go.mod +0 -0
  93. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/jacoco.xml +0 -0
  94. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/latin1_sample.java +0 -0
  95. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/latin1_sample_iso.java +0 -0
  96. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/lcov.info +0 -0
  97. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/nextjs_app/app/page.tsx +0 -0
  98. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/nextjs_app/package.json +0 -0
  99. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/nextjs_app/pnpm-lock.yaml +0 -0
  100. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/pnpm_monorepo/apps/web/app/page.tsx +0 -0
  101. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/pnpm_monorepo/apps/web/package.json +0 -0
  102. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/pnpm_monorepo/packages/api/main.py +0 -0
  103. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/pnpm_monorepo/packages/api/pyproject.toml +0 -0
  104. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/pnpm_monorepo/pnpm-workspace.yaml +0 -0
  105. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/pom.xml +0 -0
  106. {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
  107. {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
  108. {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
  109. {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
  110. {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
  111. {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
  112. {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
  113. {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
  114. {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
  115. {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
  116. {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
  117. {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
  118. {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
  119. {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
  120. {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
  121. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/DemoApplication.java +0 -0
  122. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/config/FilterConfig.java +0 -0
  123. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/domain/Health.java +0 -0
  124. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/mapper/HealthMapper.java +0 -0
  125. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/repository/HealthRepository.java +0 -0
  126. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/service/HealthService.java +0 -0
  127. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/HealthRestController.java +0 -0
  128. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/NominaRestController.java +0 -0
  129. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/resources/application-dev.yml +0 -0
  130. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/resources/application.yml +0 -0
  131. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/fixtures/spring_boot_minimal/src/main/resources/mapper/HealthMapper.xml +0 -0
  132. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_architecture_analyzer.py +0 -0
  133. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_architecture_summary.py +0 -0
  134. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_ast_extractor.py +0 -0
  135. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_block1_reliability.py +0 -0
  136. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_block2_coverage.py +0 -0
  137. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_block5_quality.py +0 -0
  138. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_bug_fixes_v16.py +0 -0
  139. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_classifier.py +0 -0
  140. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_cli.py +0 -0
  141. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_code_notes_analyzer.py +0 -0
  142. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_context_scorer.py +0 -0
  143. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_contract_pipeline.py +0 -0
  144. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_coverage_parser.py +0 -0
  145. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_cross_consistency.py +0 -0
  146. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_dependency_analyzer_node_python.py +0 -0
  147. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_dependency_analyzer_polyglot.py +0 -0
  148. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_dependency_schema.py +0 -0
  149. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detector_dotnet.py +0 -0
  150. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detector_go_rust_java.py +0 -0
  151. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detector_nodejs.py +0 -0
  152. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detector_php_ruby_dart.py +0 -0
  153. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detector_python.py +0 -0
  154. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detector_universal_managed.py +0 -0
  155. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detector_universal_systems.py +0 -0
  156. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_detectors_base.py +0 -0
  157. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_doc_analyzer_jsdom.py +0 -0
  158. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_doc_analyzer_python.py +0 -0
  159. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_encoding_regression.py +0 -0
  160. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_graph_analyzer_polyglot.py +0 -0
  161. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_graph_analyzer_python_node.py +0 -0
  162. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_graph_schema.py +0 -0
  163. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_hybrid_inference.py +0 -0
  164. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration.py +0 -0
  165. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_dependencies.py +0 -0
  166. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_detection.py +0 -0
  167. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_docs.py +0 -0
  168. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_graph_modules.py +0 -0
  169. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_lqn.py +0 -0
  170. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_metrics.py +0 -0
  171. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_multistack.py +0 -0
  172. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_semantics.py +0 -0
  173. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_integration_universal.py +0 -0
  174. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_java_spring_integration.py +0 -0
  175. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_metrics_analyzer.py +0 -0
  176. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_packaging.py +0 -0
  177. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_phase1_improvements.py +0 -0
  178. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_pipeline_integrity.py +0 -0
  179. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_real_projects.py +0 -0
  180. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_redactor.py +0 -0
  181. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_scanner.py +0 -0
  182. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_schema.py +0 -0
  183. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_schema_normalization.py +0 -0
  184. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_semantic_analyzer_node.py +0 -0
  185. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_semantic_analyzer_python.py +0 -0
  186. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_semantic_import_resolution.py +0 -0
  187. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_semantic_schema.py +0 -0
  188. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_signal_hierarchy.py +0 -0
  189. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_summarizer.py +0 -0
  190. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_surface_honesty.py +0 -0
  191. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_task_differentiation.py +0 -0
  192. {sourcecode-1.30.10 → sourcecode-1.30.12}/tests/test_telemetry.py +0 -0
  193. {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.10
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
- ![Version](https://img.shields.io/badge/version-1.30.10-blue)
224
+ ![Version](https://img.shields.io/badge/version-1.30.12-blue)
225
225
  ![Python](https://img.shields.io/badge/python-3.10%2B-green)
226
226
 
227
227
  ---
@@ -257,7 +257,7 @@ pipx install sourcecode
257
257
 
258
258
  ```bash
259
259
  sourcecode version
260
- # sourcecode 1.30.10
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
- ![Version](https://img.shields.io/badge/version-1.30.10-blue)
5
+ ![Version](https://img.shields.io/badge/version-1.30.12-blue)
6
6
  ![Python](https://img.shields.io/badge/python-3.10%2B-green)
7
7
 
8
8
  ---
@@ -38,7 +38,7 @@ pipx install sourcecode
38
38
 
39
39
  ```bash
40
40
  sourcecode version
41
- # sourcecode 1.30.10
41
+ # sourcecode 1.30.12
42
42
  ```
43
43
 
44
44
  ---
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "1.30.10"
7
+ version = "1.30.12"
8
8
  description = "Deterministic codebase context for AI coding agents"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -1,3 +1,3 @@
1
1
  """sourcecode — Deterministic codebase context maps for AI coding agents."""
2
2
 
3
- __version__ = "1.30.10"
3
+ __version__ = "1.30.12"
@@ -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
- _allowed_changed_files = (
1404
- set(_uc.staged) | set(_uc.unstaged) | set(_uc.untracked)
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")