sourcecode 4.10.2__tar.gz → 4.10.3__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.2 → sourcecode-4.10.3}/CHANGELOG.md +23 -0
  2. {sourcecode-4.10.2 → sourcecode-4.10.3}/PKG-INFO +3 -3
  3. {sourcecode-4.10.2 → sourcecode-4.10.3}/README.md +2 -2
  4. {sourcecode-4.10.2 → sourcecode-4.10.3}/pyproject.toml +1 -1
  5. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/__init__.py +1 -1
  6. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/security_config_scan.py +26 -10
  7. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/spring_security_audit.py +2 -1
  8. {sourcecode-4.10.2 → sourcecode-4.10.3}/.github/workflows/build-windows.yml +0 -0
  9. {sourcecode-4.10.2 → sourcecode-4.10.3}/.gitignore +0 -0
  10. {sourcecode-4.10.2 → sourcecode-4.10.3}/.ruff.toml +0 -0
  11. {sourcecode-4.10.2 → sourcecode-4.10.3}/CLAUDE.md +0 -0
  12. {sourcecode-4.10.2 → sourcecode-4.10.3}/CONTRIBUTING.md +0 -0
  13. {sourcecode-4.10.2 → sourcecode-4.10.3}/LICENSE +0 -0
  14. {sourcecode-4.10.2 → sourcecode-4.10.3}/SECURITY.md +0 -0
  15. {sourcecode-4.10.2 → sourcecode-4.10.3}/raw +0 -0
  16. {sourcecode-4.10.2 → sourcecode-4.10.3}/scripts/compare_integration_engines.py +0 -0
  17. {sourcecode-4.10.2 → sourcecode-4.10.3}/scripts/customer_smoke_test.sh +0 -0
  18. {sourcecode-4.10.2 → sourcecode-4.10.3}/scripts/generate_jdk_exports.py +0 -0
  19. {sourcecode-4.10.2 → sourcecode-4.10.3}/scripts/perf_harness.py +0 -0
  20. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/adaptive_scanner.py +0 -0
  21. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/archetype.py +0 -0
  22. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/architectural_baseline.py +0 -0
  23. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/architectural_delta.py +0 -0
  24. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/architecture_analyzer.py +0 -0
  25. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/architecture_summary.py +0 -0
  26. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/ast_extractor.py +0 -0
  27. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/audit_report.py +0 -0
  28. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/baseline_autocapture.py +0 -0
  29. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/cache.py +0 -0
  30. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/cache_model.py +0 -0
  31. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/call_surface.py +0 -0
  32. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/caller_metrics.py +0 -0
  33. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/caller_reach.py +0 -0
  34. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/canonical_ir.py +0 -0
  35. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/chain_rules.py +0 -0
  36. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/change_plan.py +0 -0
  37. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/cir_graphs.py +0 -0
  38. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/classifier.py +0 -0
  39. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/cli.py +0 -0
  40. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/client_calls.py +0 -0
  41. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/code_notes_analyzer.py +0 -0
  42. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/compare.py +0 -0
  43. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/confidence_analyzer.py +0 -0
  44. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/constraint_diff.py +0 -0
  45. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/context_cache.py +0 -0
  46. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/context_graph.py +0 -0
  47. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/context_scorer.py +0 -0
  48. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/context_summarizer.py +0 -0
  49. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/contract_diff.py +0 -0
  50. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/contract_init.py +0 -0
  51. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/contract_model.py +0 -0
  52. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/contract_pipeline.py +0 -0
  53. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/coverage_parser.py +0 -0
  54. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/data_exposure.py +0 -0
  55. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/data_labels.py +0 -0
  56. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/defect_identity.py +0 -0
  57. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/degradation.py +0 -0
  58. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/dependency_analyzer.py +0 -0
  59. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/deployment_prefix.py +0 -0
  60. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/__init__.py +0 -0
  61. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/base.py +0 -0
  62. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/csproj_parser.py +0 -0
  63. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/dart.py +0 -0
  64. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/dotnet.py +0 -0
  65. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/elixir.py +0 -0
  66. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/go.py +0 -0
  67. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/heuristic.py +0 -0
  68. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/hybrid.py +0 -0
  69. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/java.py +0 -0
  70. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/jvm_ext.py +0 -0
  71. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/nodejs.py +0 -0
  72. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/parsers.py +0 -0
  73. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/php.py +0 -0
  74. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/project.py +0 -0
  75. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/python.py +0 -0
  76. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/ruby.py +0 -0
  77. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/rust.py +0 -0
  78. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/systems.py +0 -0
  79. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/terraform.py +0 -0
  80. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/detectors/tooling.py +0 -0
  81. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/doc_analyzer.py +0 -0
  82. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/dynamic_argument_surface.py +0 -0
  83. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/endpoint_literals.py +0 -0
  84. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/endpoint_metrics.py +0 -0
  85. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/entrypoint_classifier.py +0 -0
  86. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/env_analyzer.py +0 -0
  87. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/envelope.py +0 -0
  88. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/environment_resolution.py +0 -0
  89. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/error_schema.py +0 -0
  90. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/evidence_provider.py +0 -0
  91. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/explain.py +0 -0
  92. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/facts/__init__.py +0 -0
  93. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/facts/registry.json +0 -0
  94. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/file_chunker.py +0 -0
  95. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/file_classifier.py +0 -0
  96. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/filter_surface.py +0 -0
  97. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/format_contract.py +0 -0
  98. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/fqn_utils.py +0 -0
  99. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/git_analyzer.py +0 -0
  100. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/git_checkout.py +0 -0
  101. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/graph_analyzer.py +0 -0
  102. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/graph_evidence.py +0 -0
  103. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/hibernate_strat.py +0 -0
  104. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/identity_fallback.py +0 -0
  105. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/integration_coordinates.py +0 -0
  106. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/jdk_exports.py +0 -0
  107. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/license.py +0 -0
  108. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/mcp/__init__.py +0 -0
  109. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  110. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  111. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  112. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  113. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  114. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/mcp/orchestrator.py +0 -0
  115. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/mcp/registry.py +0 -0
  116. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/mcp/runner.py +0 -0
  117. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/mcp/server.py +0 -0
  118. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/mcp_nudge.py +0 -0
  119. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/metrics_analyzer.py +0 -0
  120. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/migrate_check.py +0 -0
  121. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/migration_blast.py +0 -0
  122. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/non_coverage.py +0 -0
  123. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/openapi_surface.py +0 -0
  124. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/openrewrite_recipe.py +0 -0
  125. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/output_budget.py +0 -0
  126. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/parse_cache.py +0 -0
  127. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/path_admission.py +0 -0
  128. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/path_filters.py +0 -0
  129. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/perf.py +0 -0
  130. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/pipe_contract.py +0 -0
  131. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/posture.py +0 -0
  132. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/pr_comment_renderer.py +0 -0
  133. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/pr_impact.py +0 -0
  134. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/prepare_context.py +0 -0
  135. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/progress.py +0 -0
  136. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/provenance.py +0 -0
  137. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/ranking_engine.py +0 -0
  138. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/readiness_timeline.py +0 -0
  139. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/reconciliation.py +0 -0
  140. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/redactor.py +0 -0
  141. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/reference_facts.py +0 -0
  142. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/release_info.py +0 -0
  143. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/relevance_scorer.py +0 -0
  144. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/remedies.py +0 -0
  145. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/rename_refactor.py +0 -0
  146. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/repo_classifier.py +0 -0
  147. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/repository_ir.py +0 -0
  148. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/__init__.py +0 -0
  149. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/context.py +0 -0
  150. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/errors.py +0 -0
  151. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/executor.py +0 -0
  152. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/planner.py +0 -0
  153. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/query.py +0 -0
  154. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/request.py +0 -0
  155. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/resolution.py +0 -0
  156. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/result.py +0 -0
  157. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/retriever.py +0 -0
  158. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/runtime.py +0 -0
  159. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/steps.py +0 -0
  160. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
  161. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/steps_graph.py +0 -0
  162. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/steps_impact.py +0 -0
  163. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/steps_intf.py +0 -0
  164. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/steps_struct.py +0 -0
  165. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/retrieval/steps_txsec.py +0 -0
  166. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/ris.py +0 -0
  167. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/risk.py +0 -0
  168. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/rule_catalog.py +0 -0
  169. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/runs.py +0 -0
  170. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/runtime_classifier.py +0 -0
  171. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/sarif.py +0 -0
  172. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/scanner.py +0 -0
  173. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/schema.py +0 -0
  174. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
  175. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/security_config.py +0 -0
  176. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/security_posture.py +0 -0
  177. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/semantic_analyzer.py +0 -0
  178. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/semantic_impact_engine.py +0 -0
  179. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/semantic_integration_engine.py +0 -0
  180. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/semantic_services.py +0 -0
  181. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/serializer.py +0 -0
  182. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/servlet_surface.py +0 -0
  183. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/source_text.py +0 -0
  184. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/spring_event_topology.py +0 -0
  185. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/spring_findings.py +0 -0
  186. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/spring_impact.py +0 -0
  187. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/spring_model.py +0 -0
  188. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/spring_profiles.py +0 -0
  189. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/spring_properties.py +0 -0
  190. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/spring_semantic.py +0 -0
  191. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/spring_tx_analyzer.py +0 -0
  192. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/summarizer.py +0 -0
  193. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/target_admission.py +0 -0
  194. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/telemetry/__init__.py +0 -0
  195. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/telemetry/config.py +0 -0
  196. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/telemetry/consent.py +0 -0
  197. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/telemetry/events.py +0 -0
  198. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/telemetry/filters.py +0 -0
  199. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/telemetry/transport.py +0 -0
  200. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/test_gap_ranking.py +0 -0
  201. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/test_sources.py +0 -0
  202. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/token_estimate.py +0 -0
  203. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/tree_utils.py +0 -0
  204. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/type_usage_surface.py +0 -0
  205. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/validation_inference.py +0 -0
  206. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/validation_surface.py +0 -0
  207. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/verify_edit.py +0 -0
  208. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/verify_repo.py +0 -0
  209. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/verify_rules.py +0 -0
  210. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/version_check.py +0 -0
  211. {sourcecode-4.10.2 → sourcecode-4.10.3}/src/sourcecode/workspace.py +0 -0
  212. {sourcecode-4.10.2 → sourcecode-4.10.3}/supabase/functions/README.md +0 -0
  213. {sourcecode-4.10.2 → sourcecode-4.10.3}/supabase/functions/get-license/index.ts +0 -0
  214. {sourcecode-4.10.2 → sourcecode-4.10.3}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
  215. {sourcecode-4.10.2 → sourcecode-4.10.3}/supabase/functions/telemetry/index.ts +0 -0
  216. {sourcecode-4.10.2 → sourcecode-4.10.3}/supabase/sql/license_event_ordering.sql +0 -0
  217. {sourcecode-4.10.2 → sourcecode-4.10.3}/supabase/sql/licensing_schema.sql +0 -0
  218. {sourcecode-4.10.2 → sourcecode-4.10.3}/supabase/sql/telemetry_events.sql +0 -0
@@ -2,6 +2,29 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [4.10.3] — 2026-08-05
6
+
7
+ ### Fixed
8
+
9
+ - **`GATE-001` no longer reads Java control keywords as method calls.** The regex
10
+ body scan behind the gated-endpoint audit treated `if(...)`, `for(...)`,
11
+ `while(...)`, `switch(...)`, `catch(...)` and `synchronized(...)` as same-class
12
+ invocations, so a handler could be reported as `Controller#if`. Those symbols
13
+ reached the `risk` critical band and `audit-report` top risks. Control keywords
14
+ are now excluded from method-name matches; the real private-method gate finding
15
+ stays covered.
16
+ - **`SEC-007` reports JavaMelody descriptor credentials in their field shape.**
17
+ `authorized-users` is now read directly from the named descriptor parameter even
18
+ when the value carries a digest (`{SHA-256}…`), spans multiple lines, or is
19
+ wrapped in `CDATA`, and the generic descriptor-value fallback is deduplicated so
20
+ one credential yields exactly one finding. The evidence line stays redacted.
21
+
22
+ ### Tests
23
+
24
+ - Regression coverage binds both fixes through the full `spring-audit` CLI path,
25
+ including a `options/DPA/WEB-INF/web.xml` descriptor and a controller whose
26
+ handler body contains the control constructs that produced the false positive.
27
+
5
28
  ## [4.10.2] — 2026-08-05
6
29
 
7
30
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 4.10.2
3
+ Version: 4.10.3
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.2-blue)
45
+ ![Version](https://img.shields.io/badge/version-4.10.3-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`**
@@ -106,7 +106,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
106
106
  # pip / pipx
107
107
  pipx install sourcecode # or: pip install sourcecode
108
108
 
109
- ask version # ask 4.10.2 — and, on a build that has aged,
109
+ ask version # ask 4.10.3 — and, on a build that has aged,
110
110
  # how many releases have probably shipped since
111
111
  ```
112
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.2-blue)
7
+ ![Version](https://img.shields.io/badge/version-4.10.3-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`**
@@ -68,7 +68,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
68
68
  # pip / pipx
69
69
  pipx install sourcecode # or: pip install sourcecode
70
70
 
71
- ask version # ask 4.10.2 — and, on a build that has aged,
71
+ ask version # ask 4.10.3 — and, on a build that has aged,
72
72
  # how many releases have probably shipped since
73
73
  ```
74
74
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "4.10.2"
7
+ version = "4.10.3"
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.2"
7
+ __version__ = "4.10.3"
@@ -111,8 +111,8 @@ _IS_REFERENCE = re.compile(r"[$@]\{[^}]+\}|^\s*$|^\s*ENC\(|^\s*\*+\s*$")
111
111
  #: XML elements whose text is a configured VALUE. Servlet/JEE spec vocabulary.
112
112
  _DESCRIPTOR_VALUE = re.compile(
113
113
  r"<(?P<tag>param-value|env-entry-value|value|property|password)\b[^>]*>"
114
- r"(?P<value>[^<]*)</(?P=tag)>",
115
- re.IGNORECASE,
114
+ r"(?P<value>.*?)</(?P=tag)>",
115
+ re.IGNORECASE | re.DOTALL,
116
116
  )
117
117
 
118
118
  _DESCRIPTOR_INIT_PARAM = re.compile(
@@ -124,8 +124,8 @@ _DESCRIPTOR_PARAM_NAME = re.compile(
124
124
  re.IGNORECASE,
125
125
  )
126
126
  _DESCRIPTOR_PARAM_VALUE = re.compile(
127
- r"<param-value\b[^>]*>(?P<value>[^<]*)</param-value>",
128
- re.IGNORECASE,
127
+ r"<param-value\b[^>]*>(?P<value>.*?)</param-value>",
128
+ re.IGNORECASE | re.DOTALL,
129
129
  )
130
130
  _JAVAMELODY_CREDENTIAL_PARAMS: frozenset[str] = frozenset({
131
131
  "authorized-users",
@@ -364,7 +364,14 @@ def _scan_descriptor(text: str, rel: str) -> "list[SecurityConfigObservation]":
364
364
  holds a reference and is not reported; one that carries a digest literal
365
365
  holds the credential itself, in a file under version control.
366
366
  """
367
+ def _xml_value(raw: str) -> str:
368
+ value = raw.strip()
369
+ if value.startswith("<![CDATA[") and value.endswith("]]>"):
370
+ value = value[len("<![CDATA["):-len("]]>")]
371
+ return value.strip()
372
+
367
373
  out: "list[SecurityConfigObservation]" = []
374
+ javamelody_value_offsets: set[int] = set()
368
375
  for param in _DESCRIPTOR_INIT_PARAM.finditer(text):
369
376
  body = param.group("body")
370
377
  name_m = _DESCRIPTOR_PARAM_NAME.search(body)
@@ -372,22 +379,29 @@ def _scan_descriptor(text: str, rel: str) -> "list[SecurityConfigObservation]":
372
379
  if name_m is None or value_m is None:
373
380
  continue
374
381
  name = name_m.group("value").strip().lower()
375
- value = value_m.group("value").strip()
382
+ value = _xml_value(value_m.group("value"))
376
383
  if name not in _JAVAMELODY_CREDENTIAL_PARAMS:
377
384
  continue
378
385
  if not value or _IS_REFERENCE.search(value):
379
386
  continue
380
387
  if ":" not in value:
381
388
  continue
382
- if _DIGEST_LITERAL.search(value):
383
- continue
384
389
  user = value.split(":", 1)[0].strip() or "user"
390
+ value_offset = param.start("body") + value_m.start("value")
391
+ javamelody_value_offsets.add(value_offset)
392
+ digest = _DIGEST_LITERAL.search(value)
393
+ evidence = (
394
+ f"<param-value>{user}:…{{{digest.group('algo')}}}"
395
+ f"{digest.group('digest')[:8]}…</param-value>"
396
+ if digest is not None
397
+ else f"<param-value>{user}:…</param-value>"
398
+ )
385
399
  out.append(SecurityConfigObservation(
386
400
  rule="SEC-007",
387
401
  file=rel,
388
- line=_line_of(text, param.start() + value_m.start()),
402
+ line=_line_of(text, value_offset),
389
403
  symbol=rel,
390
- evidence=f"<param-value>{user}:…</param-value>",
404
+ evidence=evidence,
391
405
  detail=(
392
406
  "JavaMelody authorized-users stores a monitoring-console credential "
393
407
  "directly in the deployment descriptor. The value is redacted here; "
@@ -395,7 +409,9 @@ def _scan_descriptor(text: str, rel: str) -> "list[SecurityConfigObservation]":
395
409
  ),
396
410
  ))
397
411
  for match in _DESCRIPTOR_VALUE.finditer(text):
398
- value = match.group("value").strip()
412
+ if match.start("value") in javamelody_value_offsets:
413
+ continue
414
+ value = _xml_value(match.group("value"))
399
415
  if not value or _IS_REFERENCE.search(value):
400
416
  continue
401
417
  digest = _DIGEST_LITERAL.search(value)
@@ -508,7 +508,8 @@ def _line_of(source: str, offset: int) -> int:
508
508
  _JAVA_METHOD_RE = re.compile(
509
509
  r"(?P<mods>(?:(?:public|protected|private|static|final|synchronized|abstract|native)\s+)*)"
510
510
  r"(?P<ret>[\w.$<>\[\], ?]+)\s+"
511
- r"(?P<name>[a-zA-Z_][\w$]*)\s*\([^;{}]*\)\s*(?:throws\s+[^{]+)?\{",
511
+ r"(?P<name>(?!(?:if|for|while|switch|catch|synchronized|return|new|throw|try|else|do)\b)"
512
+ r"[a-zA-Z_][\w$]*)\s*\([^;{}]*\)\s*(?:throws\s+[^{]+)?\{",
512
513
  re.MULTILINE,
513
514
  )
514
515
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes