sourcecode 1.29.0__tar.gz → 1.30.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. sourcecode-1.30.0/.continue-here.md +118 -0
  2. {sourcecode-1.29.0 → sourcecode-1.30.0}/PKG-INFO +3 -3
  3. {sourcecode-1.29.0 → sourcecode-1.30.0}/README.md +2 -2
  4. {sourcecode-1.29.0 → sourcecode-1.30.0}/pyproject.toml +1 -1
  5. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/__init__.py +1 -1
  6. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/prepare_context.py +26 -1
  7. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_v1_10_regressions.py +5 -5
  8. sourcecode-1.29.0/.continue-here.md +0 -108
  9. {sourcecode-1.29.0 → sourcecode-1.30.0}/.agents/skills/source-command-gsd-join-discord/SKILL.md +0 -0
  10. {sourcecode-1.29.0 → sourcecode-1.30.0}/.agents/skills/source-command-gsd-review-backlog/SKILL.md +0 -0
  11. {sourcecode-1.29.0 → sourcecode-1.30.0}/.agents/skills/source-command-gsd-workstreams/SKILL.md +0 -0
  12. {sourcecode-1.29.0 → sourcecode-1.30.0}/.github/workflows/build-windows.yml +0 -0
  13. {sourcecode-1.29.0 → sourcecode-1.30.0}/.gitignore +0 -0
  14. {sourcecode-1.29.0 → sourcecode-1.30.0}/.ruff.toml +0 -0
  15. {sourcecode-1.29.0 → sourcecode-1.30.0}/CONTRIBUTING.md +0 -0
  16. {sourcecode-1.29.0 → sourcecode-1.30.0}/LICENSE +0 -0
  17. {sourcecode-1.29.0 → sourcecode-1.30.0}/SECURITY.md +0 -0
  18. {sourcecode-1.29.0 → sourcecode-1.30.0}/docs/privacy.md +0 -0
  19. {sourcecode-1.29.0 → sourcecode-1.30.0}/docs/schema.md +0 -0
  20. {sourcecode-1.29.0 → sourcecode-1.30.0}/raw +0 -0
  21. {sourcecode-1.29.0 → sourcecode-1.30.0}/run_cli.py +0 -0
  22. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/adaptive_scanner.py +0 -0
  23. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/architecture_analyzer.py +0 -0
  24. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/architecture_summary.py +0 -0
  25. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/ast_extractor.py +0 -0
  26. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/classifier.py +0 -0
  27. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/cli.py +0 -0
  28. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/code_notes_analyzer.py +0 -0
  29. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/confidence_analyzer.py +0 -0
  30. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/context_scorer.py +0 -0
  31. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/context_summarizer.py +0 -0
  32. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/contract_model.py +0 -0
  33. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/contract_pipeline.py +0 -0
  34. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/coverage_parser.py +0 -0
  35. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/dependency_analyzer.py +0 -0
  36. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/__init__.py +0 -0
  37. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/base.py +0 -0
  38. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/csproj_parser.py +0 -0
  39. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/dart.py +0 -0
  40. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/dotnet.py +0 -0
  41. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/elixir.py +0 -0
  42. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/go.py +0 -0
  43. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/heuristic.py +0 -0
  44. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/hybrid.py +0 -0
  45. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/java.py +0 -0
  46. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/jvm_ext.py +0 -0
  47. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/nodejs.py +0 -0
  48. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/parsers.py +0 -0
  49. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/php.py +0 -0
  50. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/project.py +0 -0
  51. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/python.py +0 -0
  52. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/ruby.py +0 -0
  53. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/rust.py +0 -0
  54. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/systems.py +0 -0
  55. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/terraform.py +0 -0
  56. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/detectors/tooling.py +0 -0
  57. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/doc_analyzer.py +0 -0
  58. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/entrypoint_classifier.py +0 -0
  59. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/env_analyzer.py +0 -0
  60. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/file_classifier.py +0 -0
  61. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/git_analyzer.py +0 -0
  62. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/graph_analyzer.py +0 -0
  63. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/metrics_analyzer.py +0 -0
  64. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/progress.py +0 -0
  65. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/ranking_engine.py +0 -0
  66. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/redactor.py +0 -0
  67. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/relevance_scorer.py +0 -0
  68. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/repo_classifier.py +0 -0
  69. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/runtime_classifier.py +0 -0
  70. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/scanner.py +0 -0
  71. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/schema.py +0 -0
  72. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/semantic_analyzer.py +0 -0
  73. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/serializer.py +0 -0
  74. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/summarizer.py +0 -0
  75. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/telemetry/__init__.py +0 -0
  76. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/telemetry/config.py +0 -0
  77. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/telemetry/consent.py +0 -0
  78. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/telemetry/events.py +0 -0
  79. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/telemetry/filters.py +0 -0
  80. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/telemetry/transport.py +0 -0
  81. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/tree_utils.py +0 -0
  82. {sourcecode-1.29.0 → sourcecode-1.30.0}/src/sourcecode/workspace.py +0 -0
  83. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/__init__.py +0 -0
  84. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/conftest.py +0 -0
  85. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/coverage.xml +0 -0
  86. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/fastapi_app/pyproject.toml +0 -0
  87. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/fastapi_app/src/main.py +0 -0
  88. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/go_service/cmd/api/main.go +0 -0
  89. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/go_service/go.mod +0 -0
  90. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/jacoco.xml +0 -0
  91. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/latin1_sample.java +0 -0
  92. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/latin1_sample_iso.java +0 -0
  93. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/lcov.info +0 -0
  94. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/nextjs_app/app/page.tsx +0 -0
  95. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/nextjs_app/package.json +0 -0
  96. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/nextjs_app/pnpm-lock.yaml +0 -0
  97. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/pnpm_monorepo/apps/web/app/page.tsx +0 -0
  98. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/pnpm_monorepo/apps/web/package.json +0 -0
  99. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/pnpm_monorepo/packages/api/main.py +0 -0
  100. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/pnpm_monorepo/packages/api/pyproject.toml +0 -0
  101. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/pnpm_monorepo/pnpm-workspace.yaml +0 -0
  102. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/pom.xml +0 -0
  103. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/application/service/FindAusenteService.java +0 -0
  104. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/domain/entities/Ausente.java +0 -0
  105. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/ausente/infrastructure/rest/AusenteRestController.java +0 -0
  106. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/application/service/FindAutocoberturasService.java +0 -0
  107. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/domain/entities/Autocoberturas.java +0 -0
  108. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/autocoberturas/infrastructure/rest/AutocoberturasRestController.java +0 -0
  109. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/application/service/FindCalendarioTrabajadorService.java +0 -0
  110. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/domain/entities/CalendarioTrabajador.java +0 -0
  111. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/calendarioTrabajador/infrastructure/rest/CalendarioTrabajadorRestController.java +0 -0
  112. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/application/service/FindDepartamentoService.java +0 -0
  113. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/domain/entities/Departamento.java +0 -0
  114. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/departamento/infrastructure/rest/DepartamentoRestController.java +0 -0
  115. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/application/service/FindEmpleadoService.java +0 -0
  116. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/domain/entities/Empleado.java +0 -0
  117. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/ddd/empleado/infrastructure/rest/EmpleadoRestController.java +0 -0
  118. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/DemoApplication.java +0 -0
  119. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/config/FilterConfig.java +0 -0
  120. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/domain/Health.java +0 -0
  121. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/mapper/HealthMapper.java +0 -0
  122. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/repository/HealthRepository.java +0 -0
  123. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/service/HealthService.java +0 -0
  124. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/HealthRestController.java +0 -0
  125. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/java/com/example/demo/web/NominaRestController.java +0 -0
  126. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/resources/application-dev.yml +0 -0
  127. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/resources/application.yml +0 -0
  128. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/fixtures/spring_boot_minimal/src/main/resources/mapper/HealthMapper.xml +0 -0
  129. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_architecture_analyzer.py +0 -0
  130. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_architecture_summary.py +0 -0
  131. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_ast_extractor.py +0 -0
  132. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_block1_reliability.py +0 -0
  133. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_block2_coverage.py +0 -0
  134. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_block5_quality.py +0 -0
  135. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_bug_fixes_v16.py +0 -0
  136. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_classifier.py +0 -0
  137. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_cli.py +0 -0
  138. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_code_notes_analyzer.py +0 -0
  139. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_context_scorer.py +0 -0
  140. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_contract_pipeline.py +0 -0
  141. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_coverage_parser.py +0 -0
  142. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_cross_consistency.py +0 -0
  143. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_dependency_analyzer_node_python.py +0 -0
  144. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_dependency_analyzer_polyglot.py +0 -0
  145. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_dependency_schema.py +0 -0
  146. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_detector_dotnet.py +0 -0
  147. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_detector_go_rust_java.py +0 -0
  148. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_detector_nodejs.py +0 -0
  149. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_detector_php_ruby_dart.py +0 -0
  150. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_detector_python.py +0 -0
  151. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_detector_universal_managed.py +0 -0
  152. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_detector_universal_systems.py +0 -0
  153. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_detectors_base.py +0 -0
  154. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_doc_analyzer_jsdom.py +0 -0
  155. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_doc_analyzer_python.py +0 -0
  156. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_encoding_regression.py +0 -0
  157. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_graph_analyzer_polyglot.py +0 -0
  158. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_graph_analyzer_python_node.py +0 -0
  159. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_graph_schema.py +0 -0
  160. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_hybrid_inference.py +0 -0
  161. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_integration.py +0 -0
  162. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_integration_dependencies.py +0 -0
  163. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_integration_detection.py +0 -0
  164. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_integration_docs.py +0 -0
  165. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_integration_graph_modules.py +0 -0
  166. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_integration_lqn.py +0 -0
  167. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_integration_metrics.py +0 -0
  168. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_integration_multistack.py +0 -0
  169. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_integration_semantics.py +0 -0
  170. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_integration_universal.py +0 -0
  171. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_java_spring_integration.py +0 -0
  172. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_metrics_analyzer.py +0 -0
  173. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_packaging.py +0 -0
  174. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_phase1_improvements.py +0 -0
  175. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_pipeline_integrity.py +0 -0
  176. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_real_projects.py +0 -0
  177. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_redactor.py +0 -0
  178. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_scanner.py +0 -0
  179. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_schema.py +0 -0
  180. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_schema_normalization.py +0 -0
  181. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_semantic_analyzer_node.py +0 -0
  182. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_semantic_analyzer_python.py +0 -0
  183. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_semantic_import_resolution.py +0 -0
  184. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_semantic_schema.py +0 -0
  185. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_signal_hierarchy.py +0 -0
  186. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_summarizer.py +0 -0
  187. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_surface_honesty.py +0 -0
  188. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_task_differentiation.py +0 -0
  189. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_telemetry.py +0 -0
  190. {sourcecode-1.29.0 → sourcecode-1.30.0}/tests/test_workspace_analyzer.py +0 -0
@@ -0,0 +1,118 @@
1
+ # Continue Here — atlas-cli session 5
2
+
3
+ **Paused:** 2026-05-16 (sesión 5)
4
+ **Repo:** `/Users/user/Downloads/atlas-cli`
5
+ **Branch:** master
6
+ **Commits esta sesión:** `e5a1a05` + `5c06ef3` (ambos committed, working tree limpio)
7
+
8
+ ---
9
+
10
+ ## Lo que se hizo esta sesión
11
+
12
+ ### Fix 1 — Windows encoding crash en `--since` (`e5a1a05`)
13
+
14
+ **Root cause:** `_get_available_refs()` en `prepare_context.py` llamaba `subprocess.run(text=True)` sin `encoding=` — usaba cp1252 en Windows. Byte 0x8d → `UnicodeDecodeError` no capturado. Además `r.stdout.splitlines()` sin guard → `AttributeError` si stdout fuera None.
15
+
16
+ **Fix:** dos líneas en `prepare_context.py:2309-2315`:
17
+ ```python
18
+ encoding="utf-8", errors="replace", # añadido
19
+ (r.stdout or "").splitlines() # guard añadido
20
+ ```
21
+
22
+ **Tests añadidos:** `tests/test_encoding_regression.py` — clase `TestGetAvailableRefsWindowsEncoding` (4 casos: stdout=None, bytes inválidos, ref inexistente, returncode!=0).
23
+
24
+ ---
25
+
26
+ ### Fix 2 — `review-pr` reescrito como pipeline delta-first (`5c06ef3`)
27
+
28
+ **Problema:** `review-pr` devolvía output genérico de repo completo sin diff real. Inútil para CI/PR review.
29
+
30
+ **Cambios:**
31
+
32
+ | Archivo | Qué cambió |
33
+ |---------|-----------|
34
+ | `prepare_context.py` | Gate 5d: 3 errores tempranos (no_git_repo, no_diff, git_ref_not_found). Reutiliza `_build_delta_impact`. Deriva security_impact/transactional_impact/test_coverage_risk del análisis delta. 7 nuevos campos en TaskOutput. |
35
+ | `cli.py` | Content map review-pr. Bloque output PR-específico. Error JSON + exit(1). Help text. |
36
+ | `test_v1_10_regressions.py` | 3 tests viejos (comportamiento genérico) reemplazados por 4 nuevos (gate git + mocks). |
37
+
38
+ **Nuevos campos en output:**
39
+ ```json
40
+ {
41
+ "review_type": "pull_request",
42
+ "ci_decision": "analysis_success",
43
+ "base_ref": "origin/main",
44
+ "changed_files": [...],
45
+ "affected_modules": [...],
46
+ "security_impact": {"affected_resources": [...], "risk_level": "high"},
47
+ "transactional_impact": {"affected_transactions": [...], "risk": "..."},
48
+ "test_coverage_risk": {"changed_files_without_tests": [...], "risk_level": "medium"},
49
+ "review_hotspots": [...],
50
+ "suggested_review_order": [...]
51
+ }
52
+ ```
53
+
54
+ **GitHub Actions ready:**
55
+ ```yaml
56
+ - run: sourcecode prepare-context review-pr . --since origin/main --output review.json
57
+ # exit 1 si no hay diff o ref no existe
58
+ ```
59
+
60
+ ---
61
+
62
+ ## Estado de tests al pausar
63
+
64
+ ```
65
+ 770 passed, 3 skipped
66
+ ```
67
+
68
+ Fallos pre-existentes (no relacionados, ya presentes antes de esta sesión):
69
+ - `test_block2_coverage.py::test_java_marked_unsupported` — `DocRecord.__init__` bug en `doc_analyzer.py`
70
+ - `test_dependency_analyzer_node_python.py::test_python_requirements_without_lockfile` — typer version mismatch
71
+
72
+ ---
73
+
74
+ ## Pendiente / próximos pasos opcionales
75
+
76
+ 1. **Smoke test review-pr en saint-server real con diff:**
77
+ ```bash
78
+ cd saint-server
79
+ git checkout -b test-review-pr
80
+ # modificar un controller
81
+ sourcecode prepare-context review-pr . --since main --output /tmp/review.json
82
+ cat /tmp/review.json | python3 -c "import json,sys; d=json.load(sys.stdin); print('sections:', list(d.keys()))"
83
+ ```
84
+
85
+ 2. **Verificar `security_impact` detecta correctamente:** cambiar un `SecurityConfig.java` y comprobar que aparece en `security_impact.affected_resources`.
86
+
87
+ 3. **`suggested_review_order` calidad:** verificar que el orden security→controller→service es correcto en PR reales con múltiples tipos de archivos.
88
+
89
+ 4. **`test_coverage_risk` stem matching sin normalización:** el gap entre `generate-tests` (normaliza `TestFoo→Foo`) y `review-pr` (stem directo). Si da falsos "untested", añadir normalización.
90
+
91
+ 5. **Agent token reduction** (trabajo sesiones anteriores): smoke test pendiente en saint-server — ver handoff sesión 4 para comandos.
92
+
93
+ ---
94
+
95
+ ## Para retomar
96
+
97
+ ```bash
98
+ cd /Users/user/Downloads/atlas-cli
99
+ git log --oneline -3
100
+ # debe mostrar:
101
+ # 5c06ef3 (feature) implementando mejoras significativas en prepare-context review-pr...
102
+ # e5a1a05 corrigiendo bug en delta --since en windows
103
+ # f1cb001 corrigiendo bug --agent que duplicaba tokens sin justificación
104
+
105
+ python3 -m pytest tests/ \
106
+ --ignore=tests/test_block2_coverage.py \
107
+ --deselect=tests/test_dependency_analyzer_node_python.py::test_python_requirements_without_lockfile_keeps_declared_versions \
108
+ -q
109
+ # Expected: 770 passed, 3 skipped
110
+
111
+ # Smoke test review-pr
112
+ sourcecode prepare-context review-pr . --since HEAD~1 --output /tmp/review.json
113
+ python3 -c "import json; d=json.load(open('/tmp/review.json')); print(list(d.keys()))"
114
+ ```
115
+
116
+ ---
117
+
118
+ *Pausado 2026-05-16 sesión 5 — gsd:pause-work*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 1.29.0
3
+ Version: 1.30.0
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
  **Compressed AI-ready context for Java/Spring enterprise codebases.**
223
223
 
224
- ![Version](https://img.shields.io/badge/version-1.29.0-blue)
224
+ ![Version](https://img.shields.io/badge/version-1.30.0-blue)
225
225
  ![Python](https://img.shields.io/badge/python-3.10%2B-green)
226
226
 
227
227
  ---
@@ -255,7 +255,7 @@ pipx install sourcecode
255
255
 
256
256
  ```bash
257
257
  sourcecode version
258
- # sourcecode 1.29.0
258
+ # sourcecode 1.30.0
259
259
  ```
260
260
 
261
261
  ---
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Compressed AI-ready context for Java/Spring enterprise codebases.**
4
4
 
5
- ![Version](https://img.shields.io/badge/version-1.29.0-blue)
5
+ ![Version](https://img.shields.io/badge/version-1.30.0-blue)
6
6
  ![Python](https://img.shields.io/badge/python-3.10%2B-green)
7
7
 
8
8
  ---
@@ -36,7 +36,7 @@ pipx install sourcecode
36
36
 
37
37
  ```bash
38
38
  sourcecode version
39
- # sourcecode 1.29.0
39
+ # sourcecode 1.30.0
40
40
  ```
41
41
 
42
42
  ---
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "1.29.0"
7
+ version = "1.30.0"
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.29.0"
3
+ __version__ = "1.30.0"
@@ -681,7 +681,13 @@ class TaskContextBuilder:
681
681
  error_message="review-pr requires a git repository.",
682
682
  ci_decision="no_git_repo",
683
683
  )
684
- _pr_raw = self._get_git_changed_files(since=since)
684
+ if since is None:
685
+ # review-pr with no --since: check only uncommitted changes.
686
+ # _get_git_changed_files(since=None) defaults to HEAD~1 which
687
+ # returns the last *committed* diff — a false positive here.
688
+ _pr_raw: Optional[list[str]] = self._get_uncommitted_changed_files()
689
+ else:
690
+ _pr_raw = self._get_git_changed_files(since=since)
685
691
  if _pr_raw is None:
686
692
  _avail_pr, _sug_pr = self._get_available_refs(since or "")
687
693
  _pr_hints: list[str] = []
@@ -2410,6 +2416,25 @@ class TaskContextBuilder:
2410
2416
  "error": True,
2411
2417
  }
2412
2418
 
2419
+ def _get_uncommitted_changed_files(self) -> list[str]:
2420
+ """Return files with uncommitted working-tree changes (unstaged only).
2421
+
2422
+ Used by review-pr when no --since ref is given, so we don't confuse
2423
+ the last *committed* diff (HEAD~1 vs HEAD) with an actual PR diff.
2424
+ """
2425
+ import subprocess
2426
+ try:
2427
+ result = subprocess.run(
2428
+ ["git", "diff", "--name-only", "--relative"],
2429
+ cwd=str(self.root), capture_output=True, text=True,
2430
+ encoding="utf-8", errors="replace", timeout=10,
2431
+ )
2432
+ if result.returncode == 0:
2433
+ return [l.strip() for l in (result.stdout or "").splitlines() if l.strip()]
2434
+ except (subprocess.TimeoutExpired, FileNotFoundError):
2435
+ pass
2436
+ return []
2437
+
2413
2438
  def _get_git_changed_files(self, since: Optional[str] = None) -> Optional[list[str]]:
2414
2439
  """Get files changed since a git ref (default: HEAD~1) relative to self.root.
2415
2440
 
@@ -552,10 +552,10 @@ class TestReviewPrSuspectedAreas:
552
552
  assert "ci_decision" in data
553
553
 
554
554
  def test_review_pr_no_diff_error_when_git_but_no_changes(self, monkeypatch):
555
- # Simulate: is_git_repo=True but no changed files
555
+ # Simulate: is_git_repo=True but no uncommitted changes
556
556
  from sourcecode import prepare_context as _pc
557
557
  monkeypatch.setattr(_pc.TaskContextBuilder, "_is_git_repo", lambda self: True)
558
- monkeypatch.setattr(_pc.TaskContextBuilder, "_get_git_changed_files", lambda self, since=None: [])
558
+ monkeypatch.setattr(_pc.TaskContextBuilder, "_get_uncommitted_changed_files", lambda self: [])
559
559
  result = _invoke("prepare-context", "review-pr", str(FIXTURE))
560
560
  assert result.exit_code == 1
561
561
  data = _json(result)
@@ -563,12 +563,12 @@ class TestReviewPrSuspectedAreas:
563
563
  assert data.get("ci_decision") == "no_changes"
564
564
 
565
565
  def test_review_pr_with_mocked_diff_returns_pr_fields(self, monkeypatch):
566
- # Simulate: valid git repo with one changed controller file
566
+ # Simulate: valid git repo with one changed controller file (no --since → uncommitted path)
567
567
  from sourcecode import prepare_context as _pc
568
568
  monkeypatch.setattr(_pc.TaskContextBuilder, "_is_git_repo", lambda self: True)
569
569
  monkeypatch.setattr(
570
- _pc.TaskContextBuilder, "_get_git_changed_files",
571
- lambda self, since=None: ["src/main/java/com/example/UserController.java"],
570
+ _pc.TaskContextBuilder, "_get_uncommitted_changed_files",
571
+ lambda self: ["src/main/java/com/example/UserController.java"],
572
572
  )
573
573
  result = _invoke("prepare-context", "review-pr", str(FIXTURE))
574
574
  assert result.exit_code == 0, result.output
@@ -1,108 +0,0 @@
1
- # Continue Here — atlas-cli --agent token reduction
2
-
3
- **Paused:** 2026-05-16 (sesión 4)
4
- **Repo:** `/Users/user/Downloads/atlas-cli`
5
- **Branch:** master
6
- **Commit:** `f1cb001 corrigiendo bug --agent que duplicaba tokens sin justificación` (committed)
7
-
8
- ---
9
-
10
- ## Estado actual
11
-
12
- Sesión 4: refactorización de `agent_view()` en `serializer.py` completada. **Todo committed.** Working tree limpio.
13
-
14
- ---
15
-
16
- ## Qué se hizo esta sesión
17
-
18
- ### Problema resuelto
19
-
20
- `--agent` producía ~11.337 tokens en SAS vs ~5.885 de `--compact`, con contenido casi idéntico. Objetivo: reducir tokens significativamente manteniendo solo lo que diferencia `--agent`.
21
-
22
- ### Cambios en `agent_view()` (`src/sourcecode/serializer.py`)
23
-
24
- | Cambio | Impacto |
25
- |--------|---------|
26
- | Elimina `production_dependencies` / `dev_tools` / `test_utilities` / `build_tooling` (dep_groups asdict completo) | Mayor fuente de bloat: -3.000-5.000 tokens en repos grandes |
27
- | `key_dependencies`: de asdict+50 items → `name+version+role+risk_flags` solo, cap 20 | -500-1.500 tokens |
28
- | Elimina `confidence_summary.hard_signals` / `soft_signals` / `ignored_signals` | -500-1.000 tokens |
29
- | Elimina bloque `agent_mode` (contenido estático sin señal) | -80 tokens siempre |
30
- | Elimina `signals.env_vars.keys[]` (duplica compact `env_map`) | -300-500 tokens |
31
- | `signals.code_notes.top` cap 10→5, strip a `kind+path+line+text` | -200 tokens |
32
- | Entry points (no-bootstrap): strip a `path+kind+confidence` (como compact) | reducción moderada |
33
- | Elimina `development_entry_points` (noise para agentes de producción) | pequeña |
34
- | `architecture.layers` capado a 5 | pequeña |
35
-
36
- **Reducción estimada para SAS:** −40–60% tokens vs `--agent` anterior.
37
-
38
- ### Campos que permanecen únicos de `--agent`
39
-
40
- | Campo | Por qué justifica tokens extra vs `--compact` |
41
- |-------|----------------------------------------------|
42
- | `file_relevance` (top-20 scored) | Compact no tiene equivalente. Agente sabe qué leer sin explorar. |
43
- | `architecture.layers` | Compact solo tiene `architecture_summary` string. |
44
- | `suspicious_dependencies` | Deps declarados sin import observado. Compact no lo tiene. |
45
- | `confidence_reasons` | Explicación accionable de secciones low-confidence. Compact no lo tiene. |
46
-
47
- ### Tests actualizados
48
-
49
- - `tests/test_block5_quality.py` — 5 tests de `agent_mode` reemplazados por tests de las nuevas garantías (no `agent_mode`, no `hard_signals`, no `env_vars.keys`, no dep_groups)
50
- - `tests/test_pipeline_integrity.py` — `test_agent_splits_development_and_auxiliary_eps` → verifica que dev/aux EPs NO aparecen
51
-
52
- ---
53
-
54
- ## Tests al pausar
55
-
56
- Suite completa (sin fallos pre-existentes): **todo verde**
57
-
58
- Fallos pre-existentes (no relacionados, ya presentes antes):
59
- - `test_block2_coverage.py::test_java_marked_unsupported` — DocRecord bug en doc_analyzer.py
60
- - `test_dependency_analyzer_node_python.py::test_python_requirements_without_lockfile` — versión typer mismatch
61
-
62
- ---
63
-
64
- ## Pendiente / próximos pasos opcionales
65
-
66
- 1. **Smoke test en saint-server** para medir tokens reales antes/después:
67
- ```bash
68
- sourcecode saint-server --agent --output /tmp/agent_new.json
69
- python3 -c "import json,sys; d=json.load(open('/tmp/agent_new.json')); print('agent tokens (est):', len(json.dumps(d))//4)"
70
- ```
71
-
72
- 2. **Verificar que `suspicious_dependencies` es útil en repos reales** — en repos Python/JS (no JVM, donde el index de imports no funciona). En JVM siempre vacío por diseño.
73
-
74
- 3. **Ajustar caps según medición real**: si `file_relevance` (20 files) sigue siendo el mayor contribuyente de tokens, considerar reducir a 15. Medir con `--full` vs default.
75
-
76
- 4. **Smoke tests delta pendientes** de sesión anterior — ver sección "Smoke tests sesión 3" en historial de commits.
77
-
78
- ---
79
-
80
- ## Para retomar
81
-
82
- ```bash
83
- cd /Users/user/Downloads/atlas-cli
84
- git log --oneline -3
85
- # debe mostrar: f1cb001 corrigiendo bug --agent que duplicaba tokens sin justificación
86
-
87
- python3 -m pytest tests/ \
88
- --ignore=tests/test_block2_coverage.py \
89
- --deselect=tests/test_dependency_analyzer_node_python.py::test_python_requirements_without_lockfile_keeps_declared_versions \
90
- -q
91
- # Expected: todo verde
92
-
93
- # Verificación rápida agent_view
94
- python3 -c "
95
- from sourcecode.serializer import agent_view
96
- from sourcecode.schema import SourceMap, StackInfo, SourceMapMetadata
97
- sm = SourceMap(stacks=[StackInfo(stack='python', primary=True)], project_type='python', project_summary='test')
98
- r = agent_view(sm)
99
- assert 'agent_mode' not in r
100
- assert 'production_dependencies' not in r
101
- assert 'hard_signals' not in r.get('confidence_summary', {})
102
- print('OK — agent_mode/dep_groups/hard_signals all absent')
103
- "
104
- ```
105
-
106
- ---
107
-
108
- *Pausado 2026-05-16 sesión 4 — gsd:pause-work*
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes