sourcecode 4.10.0__tar.gz → 4.10.2__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 (218) hide show
  1. {sourcecode-4.10.0 → sourcecode-4.10.2}/CHANGELOG.md +43 -0
  2. {sourcecode-4.10.0 → sourcecode-4.10.2}/PKG-INFO +11 -4
  3. {sourcecode-4.10.0 → sourcecode-4.10.2}/README.md +10 -3
  4. {sourcecode-4.10.0 → sourcecode-4.10.2}/pyproject.toml +1 -1
  5. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/__init__.py +1 -1
  6. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/migrate_check.py +1 -0
  7. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/provenance.py +12 -9
  8. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/repository_ir.py +21 -0
  9. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/runs.py +12 -1
  10. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/security_config_scan.py +12 -0
  11. {sourcecode-4.10.0 → sourcecode-4.10.2}/.github/workflows/build-windows.yml +0 -0
  12. {sourcecode-4.10.0 → sourcecode-4.10.2}/.gitignore +0 -0
  13. {sourcecode-4.10.0 → sourcecode-4.10.2}/.ruff.toml +0 -0
  14. {sourcecode-4.10.0 → sourcecode-4.10.2}/CLAUDE.md +0 -0
  15. {sourcecode-4.10.0 → sourcecode-4.10.2}/CONTRIBUTING.md +0 -0
  16. {sourcecode-4.10.0 → sourcecode-4.10.2}/LICENSE +0 -0
  17. {sourcecode-4.10.0 → sourcecode-4.10.2}/SECURITY.md +0 -0
  18. {sourcecode-4.10.0 → sourcecode-4.10.2}/raw +0 -0
  19. {sourcecode-4.10.0 → sourcecode-4.10.2}/scripts/compare_integration_engines.py +0 -0
  20. {sourcecode-4.10.0 → sourcecode-4.10.2}/scripts/customer_smoke_test.sh +0 -0
  21. {sourcecode-4.10.0 → sourcecode-4.10.2}/scripts/generate_jdk_exports.py +0 -0
  22. {sourcecode-4.10.0 → sourcecode-4.10.2}/scripts/perf_harness.py +0 -0
  23. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/adaptive_scanner.py +0 -0
  24. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/archetype.py +0 -0
  25. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/architectural_baseline.py +0 -0
  26. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/architectural_delta.py +0 -0
  27. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/architecture_analyzer.py +0 -0
  28. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/architecture_summary.py +0 -0
  29. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/ast_extractor.py +0 -0
  30. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/audit_report.py +0 -0
  31. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/baseline_autocapture.py +0 -0
  32. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/cache.py +0 -0
  33. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/cache_model.py +0 -0
  34. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/call_surface.py +0 -0
  35. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/caller_metrics.py +0 -0
  36. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/caller_reach.py +0 -0
  37. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/canonical_ir.py +0 -0
  38. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/chain_rules.py +0 -0
  39. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/change_plan.py +0 -0
  40. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/cir_graphs.py +0 -0
  41. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/classifier.py +0 -0
  42. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/cli.py +0 -0
  43. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/client_calls.py +0 -0
  44. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/code_notes_analyzer.py +0 -0
  45. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/compare.py +0 -0
  46. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/confidence_analyzer.py +0 -0
  47. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/constraint_diff.py +0 -0
  48. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/context_cache.py +0 -0
  49. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/context_graph.py +0 -0
  50. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/context_scorer.py +0 -0
  51. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/context_summarizer.py +0 -0
  52. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/contract_diff.py +0 -0
  53. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/contract_init.py +0 -0
  54. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/contract_model.py +0 -0
  55. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/contract_pipeline.py +0 -0
  56. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/coverage_parser.py +0 -0
  57. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/data_exposure.py +0 -0
  58. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/data_labels.py +0 -0
  59. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/defect_identity.py +0 -0
  60. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/degradation.py +0 -0
  61. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/dependency_analyzer.py +0 -0
  62. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/deployment_prefix.py +0 -0
  63. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/__init__.py +0 -0
  64. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/base.py +0 -0
  65. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/csproj_parser.py +0 -0
  66. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/dart.py +0 -0
  67. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/dotnet.py +0 -0
  68. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/elixir.py +0 -0
  69. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/go.py +0 -0
  70. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/heuristic.py +0 -0
  71. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/hybrid.py +0 -0
  72. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/java.py +0 -0
  73. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/jvm_ext.py +0 -0
  74. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/nodejs.py +0 -0
  75. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/parsers.py +0 -0
  76. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/php.py +0 -0
  77. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/project.py +0 -0
  78. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/python.py +0 -0
  79. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/ruby.py +0 -0
  80. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/rust.py +0 -0
  81. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/systems.py +0 -0
  82. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/terraform.py +0 -0
  83. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/detectors/tooling.py +0 -0
  84. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/doc_analyzer.py +0 -0
  85. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/dynamic_argument_surface.py +0 -0
  86. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/endpoint_literals.py +0 -0
  87. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/endpoint_metrics.py +0 -0
  88. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/entrypoint_classifier.py +0 -0
  89. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/env_analyzer.py +0 -0
  90. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/envelope.py +0 -0
  91. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/environment_resolution.py +0 -0
  92. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/error_schema.py +0 -0
  93. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/evidence_provider.py +0 -0
  94. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/explain.py +0 -0
  95. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/facts/__init__.py +0 -0
  96. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/facts/registry.json +0 -0
  97. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/file_chunker.py +0 -0
  98. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/file_classifier.py +0 -0
  99. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/filter_surface.py +0 -0
  100. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/format_contract.py +0 -0
  101. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/fqn_utils.py +0 -0
  102. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/git_analyzer.py +0 -0
  103. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/git_checkout.py +0 -0
  104. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/graph_analyzer.py +0 -0
  105. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/graph_evidence.py +0 -0
  106. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/hibernate_strat.py +0 -0
  107. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/identity_fallback.py +0 -0
  108. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/integration_coordinates.py +0 -0
  109. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/jdk_exports.py +0 -0
  110. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/license.py +0 -0
  111. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/mcp/__init__.py +0 -0
  112. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  113. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  114. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  115. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  116. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  117. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/mcp/orchestrator.py +0 -0
  118. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/mcp/registry.py +0 -0
  119. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/mcp/runner.py +0 -0
  120. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/mcp/server.py +0 -0
  121. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/mcp_nudge.py +0 -0
  122. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/metrics_analyzer.py +0 -0
  123. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/migration_blast.py +0 -0
  124. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/non_coverage.py +0 -0
  125. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/openapi_surface.py +0 -0
  126. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/openrewrite_recipe.py +0 -0
  127. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/output_budget.py +0 -0
  128. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/parse_cache.py +0 -0
  129. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/path_admission.py +0 -0
  130. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/path_filters.py +0 -0
  131. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/perf.py +0 -0
  132. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/pipe_contract.py +0 -0
  133. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/posture.py +0 -0
  134. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/pr_comment_renderer.py +0 -0
  135. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/pr_impact.py +0 -0
  136. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/prepare_context.py +0 -0
  137. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/progress.py +0 -0
  138. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/ranking_engine.py +0 -0
  139. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/readiness_timeline.py +0 -0
  140. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/reconciliation.py +0 -0
  141. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/redactor.py +0 -0
  142. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/reference_facts.py +0 -0
  143. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/release_info.py +0 -0
  144. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/relevance_scorer.py +0 -0
  145. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/remedies.py +0 -0
  146. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/rename_refactor.py +0 -0
  147. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/repo_classifier.py +0 -0
  148. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/__init__.py +0 -0
  149. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/context.py +0 -0
  150. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/errors.py +0 -0
  151. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/executor.py +0 -0
  152. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/planner.py +0 -0
  153. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/query.py +0 -0
  154. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/request.py +0 -0
  155. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/resolution.py +0 -0
  156. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/result.py +0 -0
  157. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/retriever.py +0 -0
  158. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/runtime.py +0 -0
  159. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/steps.py +0 -0
  160. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
  161. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/steps_graph.py +0 -0
  162. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/steps_impact.py +0 -0
  163. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/steps_intf.py +0 -0
  164. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/steps_struct.py +0 -0
  165. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/retrieval/steps_txsec.py +0 -0
  166. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/ris.py +0 -0
  167. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/risk.py +0 -0
  168. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/rule_catalog.py +0 -0
  169. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/runtime_classifier.py +0 -0
  170. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/sarif.py +0 -0
  171. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/scanner.py +0 -0
  172. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/schema.py +0 -0
  173. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
  174. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/security_config.py +0 -0
  175. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/security_posture.py +0 -0
  176. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/semantic_analyzer.py +0 -0
  177. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/semantic_impact_engine.py +0 -0
  178. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/semantic_integration_engine.py +0 -0
  179. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/semantic_services.py +0 -0
  180. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/serializer.py +0 -0
  181. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/servlet_surface.py +0 -0
  182. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/source_text.py +0 -0
  183. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/spring_event_topology.py +0 -0
  184. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/spring_findings.py +0 -0
  185. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/spring_impact.py +0 -0
  186. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/spring_model.py +0 -0
  187. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/spring_profiles.py +0 -0
  188. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/spring_properties.py +0 -0
  189. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/spring_security_audit.py +0 -0
  190. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/spring_semantic.py +0 -0
  191. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/spring_tx_analyzer.py +0 -0
  192. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/summarizer.py +0 -0
  193. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/target_admission.py +0 -0
  194. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/telemetry/__init__.py +0 -0
  195. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/telemetry/config.py +0 -0
  196. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/telemetry/consent.py +0 -0
  197. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/telemetry/events.py +0 -0
  198. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/telemetry/filters.py +0 -0
  199. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/telemetry/transport.py +0 -0
  200. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/test_gap_ranking.py +0 -0
  201. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/test_sources.py +0 -0
  202. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/token_estimate.py +0 -0
  203. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/tree_utils.py +0 -0
  204. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/type_usage_surface.py +0 -0
  205. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/validation_inference.py +0 -0
  206. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/validation_surface.py +0 -0
  207. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/verify_edit.py +0 -0
  208. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/verify_repo.py +0 -0
  209. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/verify_rules.py +0 -0
  210. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/version_check.py +0 -0
  211. {sourcecode-4.10.0 → sourcecode-4.10.2}/src/sourcecode/workspace.py +0 -0
  212. {sourcecode-4.10.0 → sourcecode-4.10.2}/supabase/functions/README.md +0 -0
  213. {sourcecode-4.10.0 → sourcecode-4.10.2}/supabase/functions/get-license/index.ts +0 -0
  214. {sourcecode-4.10.0 → sourcecode-4.10.2}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
  215. {sourcecode-4.10.0 → sourcecode-4.10.2}/supabase/functions/telemetry/index.ts +0 -0
  216. {sourcecode-4.10.0 → sourcecode-4.10.2}/supabase/sql/license_event_ordering.sql +0 -0
  217. {sourcecode-4.10.0 → sourcecode-4.10.2}/supabase/sql/licensing_schema.sql +0 -0
  218. {sourcecode-4.10.0 → sourcecode-4.10.2}/supabase/sql/telemetry_events.sql +0 -0
@@ -2,6 +2,49 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [4.10.2] — 2026-08-05
6
+
7
+ ### Fixed
8
+
9
+ - **Durable run records are read-only by default.** Long repo-wide/deep commands
10
+ now write run records under `~/.sourcecode/runs/<repo-hash>/` instead of
11
+ `<repo>/.ask/runs`, with `ASK_RUNS_IN_REPO=1` as the explicit repo-local opt-in.
12
+ - **`DEAD-001` comment scanning avoids ordinary files.** The commented-security
13
+ control pass now prefilters by security-control vocabulary before extracting
14
+ comment spans, preserving `DEAD-001` positives while reducing the cost added to
15
+ large `spring-audit` runs.
16
+ - **Field regression guards for `spring-audit`.** End-to-end tests now lock that
17
+ reserved-keyword handler symbols such as `#if` cannot reach security findings,
18
+ and that JavaMelody `authorized-users` credentials in `web.xml` emit `SEC-007`.
19
+
20
+ ### Documentation
21
+
22
+ - README, user guide, roadmap and defect ledger now record the 4.10.0 field
23
+ confirmation queue, the supervised heartbeat contract and the external run-record
24
+ location.
25
+
26
+ ## [4.10.1] — 2026-08-05
27
+
28
+ ### Fixed
29
+
30
+ - **`cache model` now includes `audit-report`.** Warm-cache documentation and
31
+ machine output now agree that `audit-report` reuses the same structural layers
32
+ as the other deep analysis/reporting commands.
33
+ - **`migrate-check --blast-radius` no longer changes unrelated provenance.**
34
+ The optional blast-radius flag now adds only the blast-radius block; the shared
35
+ evidence manifest stays deterministic for shape-comparison consumers.
36
+ - **`impact` expands class/interface seeds to in-repository subtypes.** A base
37
+ class or interface query now reaches callers of subtype members, matching the
38
+ endpoint-reach behavior already expected from `impact-chain`.
39
+ - **Severity fields are locked to named units.** Tests now preserve the contract
40
+ that declared scanner severity, composed effective severity and risk band are
41
+ separate fields rather than contradictory values for the same claim.
42
+
43
+ ### Documentation
44
+
45
+ - README, user guide, roadmap and defect ledger now reflect the 4.10.1 patch
46
+ status and close stale rows that were already fixed by measured tests.
47
+
5
48
  ## [4.10.0] — 2026-08-05
6
49
 
7
50
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 4.10.0
3
+ Version: 4.10.2
4
4
  Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
5
5
  License-File: LICENSE
6
6
  Keywords: agents,ai,codebase,context,developer-tools,llm
@@ -42,7 +42,7 @@ Description-Content-Type: text/markdown
42
42
 
43
43
  **Context · Impact · Migration · Architecture · Review — everything from one structural model.**
44
44
 
45
- ![Version](https://img.shields.io/badge/version-4.10.0-blue)
45
+ ![Version](https://img.shields.io/badge/version-4.10.2-blue)
46
46
  ![Python](https://img.shields.io/badge/python-3.9%2B-green)
47
47
 
48
48
  > **ASK Engine** is the product. The CLI command is **`ask`**. The legacy **`sourcecode`**
@@ -73,7 +73,14 @@ These numbers are cache-layer benchmarks, not a promise for every command. Per-s
73
73
 
74
74
  With the right command class, ASK Engine becomes **constant infrastructure** inside agent loops — call the fast/context surfaces before edits and reserve deep compositions for the points where their evidence is worth the runtime.
75
75
 
76
- **Large-repo controls.** Set `ASK_PROGRESS=1` to get line heartbeats in non-TTY supervised runs. Set `ASK_MAX_ANALYSIS_SECONDS=<seconds>` to fail before starting a repo-wide/deep command whose configured budget is below its safe floor. Use `ask audit-report --from-risk risk.json` to package an existing risk run instead of recomputing it.
76
+ **Large-repo controls.** Set `ASK_PROGRESS=1` to get line heartbeats in non-TTY
77
+ supervised runs. Long repo-wide/deep runs also write durable records under
78
+ `~/.sourcecode/runs/<repo-hash>/` by default, not inside the audited repository;
79
+ set `ASK_RUNS_IN_REPO=1` only when repo-local `.ask/runs` records are intentional.
80
+ Set `ASK_MAX_ANALYSIS_SECONDS=<seconds>` to fail before starting a repo-wide/deep
81
+ command whose configured budget is below its safe floor. Use
82
+ `ask audit-report --from-risk risk.json` to package an existing risk run instead
83
+ of recomputing it.
77
84
 
78
85
  **What a warm actually covers.** `ask cache warm` runs the compact analysis: it rebuilds the
79
86
  shared structural layers (L1/L2 + the Repository Intelligence Snapshot + the shared Canonical
@@ -99,7 +106,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
99
106
  # pip / pipx
100
107
  pipx install sourcecode # or: pip install sourcecode
101
108
 
102
- ask version # ask 4.10.0 — and, on a build that has aged,
109
+ ask version # ask 4.10.2 — and, on a build that has aged,
103
110
  # how many releases have probably shipped since
104
111
  ```
105
112
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  **Context · Impact · Migration · Architecture · Review — everything from one structural model.**
6
6
 
7
- ![Version](https://img.shields.io/badge/version-4.10.0-blue)
7
+ ![Version](https://img.shields.io/badge/version-4.10.2-blue)
8
8
  ![Python](https://img.shields.io/badge/python-3.9%2B-green)
9
9
 
10
10
  > **ASK Engine** is the product. The CLI command is **`ask`**. The legacy **`sourcecode`**
@@ -35,7 +35,14 @@ These numbers are cache-layer benchmarks, not a promise for every command. Per-s
35
35
 
36
36
  With the right command class, ASK Engine becomes **constant infrastructure** inside agent loops — call the fast/context surfaces before edits and reserve deep compositions for the points where their evidence is worth the runtime.
37
37
 
38
- **Large-repo controls.** Set `ASK_PROGRESS=1` to get line heartbeats in non-TTY supervised runs. Set `ASK_MAX_ANALYSIS_SECONDS=<seconds>` to fail before starting a repo-wide/deep command whose configured budget is below its safe floor. Use `ask audit-report --from-risk risk.json` to package an existing risk run instead of recomputing it.
38
+ **Large-repo controls.** Set `ASK_PROGRESS=1` to get line heartbeats in non-TTY
39
+ supervised runs. Long repo-wide/deep runs also write durable records under
40
+ `~/.sourcecode/runs/<repo-hash>/` by default, not inside the audited repository;
41
+ set `ASK_RUNS_IN_REPO=1` only when repo-local `.ask/runs` records are intentional.
42
+ Set `ASK_MAX_ANALYSIS_SECONDS=<seconds>` to fail before starting a repo-wide/deep
43
+ command whose configured budget is below its safe floor. Use
44
+ `ask audit-report --from-risk risk.json` to package an existing risk run instead
45
+ of recomputing it.
39
46
 
40
47
  **What a warm actually covers.** `ask cache warm` runs the compact analysis: it rebuilds the
41
48
  shared structural layers (L1/L2 + the Repository Intelligence Snapshot + the shared Canonical
@@ -61,7 +68,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
61
68
  # pip / pipx
62
69
  pipx install sourcecode # or: pip install sourcecode
63
70
 
64
- ask version # ask 4.10.0 — and, on a build that has aged,
71
+ ask version # ask 4.10.2 — and, on a build that has aged,
65
72
  # how many releases have probably shipped since
66
73
  ```
67
74
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "4.10.0"
7
+ version = "4.10.2"
8
8
  description = "Persistent structural context and ultra-fast repeated analysis for AI coding agents"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -4,4 +4,4 @@ ASK Engine is the product. ``ask`` is the canonical CLI command; ``sourcecode``
4
4
  the legacy compatibility alias and the Python/PyPI package name. See
5
5
  docs/PRODUCT_IDENTITY.md (normative)."""
6
6
 
7
- __version__ = "4.10.0"
7
+ __version__ = "4.10.2"
@@ -3008,6 +3008,7 @@ def run_migrate_check(
3008
3008
  "target_jdk": target_jdk,
3009
3009
  "keep_boot": keep_boot,
3010
3010
  },
3011
+ include_generated_at=False,
3011
3012
  )
3012
3013
  return report
3013
3014
 
@@ -162,6 +162,7 @@ def build_evidence_manifest(
162
162
  command: str,
163
163
  root: Path,
164
164
  inputs: Optional[dict[str, Any]] = None,
165
+ include_generated_at: bool = True,
165
166
  ) -> dict[str, Any]:
166
167
  """Build a machine-readable provenance index for an existing payload."""
167
168
  root = Path(root).resolve()
@@ -173,17 +174,19 @@ def build_evidence_manifest(
173
174
  for claim in claims
174
175
  if (claim.get("source") or {}).get("path")
175
176
  })
177
+ run: dict[str, Any] = {
178
+ "command": command,
179
+ "tool": "ask",
180
+ "tool_version": __version__,
181
+ "repository": str(root),
182
+ "git_head": _git_head(root),
183
+ "inputs": inputs or {},
184
+ }
185
+ if include_generated_at:
186
+ run["generated_at"] = datetime.now(timezone.utc).isoformat()
176
187
  return {
177
188
  "schema_version": PROVENANCE_SCHEMA,
178
- "run": {
179
- "command": command,
180
- "tool": "ask",
181
- "tool_version": __version__,
182
- "repository": str(root),
183
- "git_head": _git_head(root),
184
- "generated_at": datetime.now(timezone.utc).isoformat(),
185
- "inputs": inputs or {},
186
- },
189
+ "run": run,
187
190
  "claims": claims,
188
191
  "sources": [{"path": path} for path in sources],
189
192
  "claims_cap": (
@@ -6975,6 +6975,27 @@ def compute_blast_radius(
6975
6975
  )
6976
6976
  except Exception:
6977
6977
  _impl_graph = None
6978
+ if _impl_graph is not None:
6979
+ _class_fqns = {
6980
+ n.get("fqn") or ""
6981
+ for n in graph_nodes
6982
+ if (n.get("symbol_kind") or n.get("type"))
6983
+ in {"class", "interface", "enum", "record", "annotation"}
6984
+ }
6985
+
6986
+ def _seed_class(_sym: str) -> str:
6987
+ return _sym if _sym in _class_fqns else _enclosing_class(_sym)
6988
+
6989
+ _seed_set = set(matched_fqns)
6990
+ _expanded = set(matched_fqns)
6991
+ _symbols_by_class: dict[str, list[str]] = {}
6992
+ for _sym in reverse_graph:
6993
+ _symbols_by_class.setdefault(_seed_class(_sym), []).append(_sym)
6994
+ for _seed in sorted(_seed_set):
6995
+ for _subtype in getattr(_impl_graph, "all_subtypes_of")(_seed_class(_seed)):
6996
+ for _sym in _symbols_by_class.get(_subtype, ()):
6997
+ _expanded.add(_sym)
6998
+ matched_fqns = _expanded
6978
6999
  for seed in matched_fqns:
6979
7000
  _seed_callers = _all_callers_from_rg(seed, reverse_graph, _rg_index, _impl_graph)
6980
7001
  if len(_seed_callers) > _HUB_CALLER_THRESHOLD and max_depth > 1:
@@ -2,6 +2,7 @@
2
2
  from __future__ import annotations
3
3
 
4
4
  import json
5
+ import hashlib
5
6
  import os
6
7
  import time
7
8
  import uuid
@@ -18,7 +19,17 @@ def _now() -> float:
18
19
 
19
20
 
20
21
  def _runs_dir(root: Path) -> Path:
21
- return Path(root).resolve() / ".ask" / "runs"
22
+ override = os.environ.get("ASK_RUNS_DIR", "").strip()
23
+ if override:
24
+ return Path(override).expanduser().resolve()
25
+ if os.environ.get("ASK_RUNS_IN_REPO", "").lower() in ("1", "true", "yes", "on"):
26
+ return Path(root).resolve() / ".ask" / "runs"
27
+ try:
28
+ key_source = str(Path(root).resolve())
29
+ except Exception:
30
+ key_source = str(Path(root).absolute())
31
+ repo_key = hashlib.sha256(key_source.encode("utf-8", errors="replace")).hexdigest()[:16]
32
+ return Path.home() / ".sourcecode" / "runs" / repo_key
22
33
 
23
34
 
24
35
  @dataclass
@@ -212,6 +212,15 @@ _COMMENTED_CONFIG_CONTROLS: tuple[tuple[re.Pattern, str, str], ...] = (
212
212
  ),
213
213
  )
214
214
 
215
+ _COMMENTED_JAVA_HINTS = (
216
+ "@PreAuthorize", "@PostAuthorize", "@Secured", "@RolesAllowed", "@DenyAll",
217
+ "@PermitAll", "FiltroSeguridad", "Security", "Authz", "Authorize",
218
+ "Authorized", "setSecure", "csrfTokenRepository", "csrf(",
219
+ )
220
+ _COMMENTED_XML_HINTS = (
221
+ "<transport-guarantee", "CONFIDENTIAL", "<security-constraint", "<intercept-url",
222
+ )
223
+
215
224
 
216
225
  @dataclass(frozen=True)
217
226
  class SecurityConfigObservation:
@@ -456,6 +465,9 @@ def _scan_commented_controls(
456
465
  from sourcecode.source_text import commented_spans
457
466
 
458
467
  rules = _COMMENTED_XML_CONTROLS if xml else _COMMENTED_JAVA_CONTROLS
468
+ hints = _COMMENTED_XML_HINTS if xml else _COMMENTED_JAVA_HINTS
469
+ if not any(hint in source for hint in hints):
470
+ return []
459
471
  out: "list[SecurityConfigObservation]" = []
460
472
  seen: set[tuple[str, int]] = set()
461
473
  for start, end in commented_spans(source, xml=xml):
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes