sourcecode 4.10.7__tar.gz → 4.11.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 (225) hide show
  1. {sourcecode-4.10.7 → sourcecode-4.11.0}/CHANGELOG.md +118 -0
  2. {sourcecode-4.10.7 → sourcecode-4.11.0}/PKG-INFO +23 -7
  3. {sourcecode-4.10.7 → sourcecode-4.11.0}/README.md +22 -6
  4. {sourcecode-4.10.7 → sourcecode-4.11.0}/pyproject.toml +1 -1
  5. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/__init__.py +1 -1
  6. sourcecode-4.11.0/src/sourcecode/cache.tmp_new +772 -0
  7. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/cache_model.py +70 -3
  8. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/canonical_ir.py +8 -2
  9. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/cli.py +514 -161
  10. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/context_cache.py +9 -3
  11. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/context_graph.py +8 -3
  12. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detach.py +27 -1
  13. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/format_contract.py +48 -6
  14. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/non_coverage.py +90 -2
  15. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/progress.py +124 -4
  16. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/repository_ir.py +17 -3
  17. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/rule_catalog.py +5 -1
  18. {sourcecode-4.10.7 → sourcecode-4.11.0}/.github/workflows/build-windows.yml +0 -0
  19. {sourcecode-4.10.7 → sourcecode-4.11.0}/.gitignore +0 -0
  20. {sourcecode-4.10.7 → sourcecode-4.11.0}/.ruff.toml +0 -0
  21. {sourcecode-4.10.7 → sourcecode-4.11.0}/CLAUDE.md +0 -0
  22. {sourcecode-4.10.7 → sourcecode-4.11.0}/CONTRIBUTING.md +0 -0
  23. {sourcecode-4.10.7 → sourcecode-4.11.0}/LICENSE +0 -0
  24. {sourcecode-4.10.7 → sourcecode-4.11.0}/SECURITY.md +0 -0
  25. {sourcecode-4.10.7 → sourcecode-4.11.0}/raw +0 -0
  26. {sourcecode-4.10.7 → sourcecode-4.11.0}/scripts/compare_integration_engines.py +0 -0
  27. {sourcecode-4.10.7 → sourcecode-4.11.0}/scripts/customer_smoke_test.sh +0 -0
  28. {sourcecode-4.10.7 → sourcecode-4.11.0}/scripts/generate_jdk_exports.py +0 -0
  29. {sourcecode-4.10.7 → sourcecode-4.11.0}/scripts/perf_harness.py +0 -0
  30. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/adaptive_scanner.py +0 -0
  31. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/archetype.py +0 -0
  32. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/architectural_baseline.py +0 -0
  33. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/architectural_delta.py +0 -0
  34. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/architecture_analyzer.py +0 -0
  35. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/architecture_summary.py +0 -0
  36. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/ast_extractor.py +0 -0
  37. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/audit_report.py +0 -0
  38. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/baseline_autocapture.py +0 -0
  39. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/cache.py +0 -0
  40. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/call_surface.py +0 -0
  41. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/caller_metrics.py +0 -0
  42. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/caller_reach.py +0 -0
  43. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/chain_rules.py +0 -0
  44. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/change_plan.py +0 -0
  45. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/cir_graphs.py +0 -0
  46. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/classifier.py +0 -0
  47. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/client_calls.py +0 -0
  48. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/code_notes_analyzer.py +0 -0
  49. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/compare.py +0 -0
  50. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/confidence_analyzer.py +0 -0
  51. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/constraint_diff.py +0 -0
  52. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/container_wiring.py +0 -0
  53. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/context_scorer.py +0 -0
  54. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/context_summarizer.py +0 -0
  55. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/contract_diff.py +0 -0
  56. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/contract_init.py +0 -0
  57. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/contract_model.py +0 -0
  58. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/contract_pipeline.py +0 -0
  59. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/coverage_parser.py +0 -0
  60. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/data_exposure.py +0 -0
  61. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/data_labels.py +0 -0
  62. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/defect_identity.py +0 -0
  63. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/degradation.py +0 -0
  64. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/dependency_analyzer.py +0 -0
  65. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/deployment_prefix.py +0 -0
  66. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/__init__.py +0 -0
  67. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/base.py +0 -0
  68. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/csproj_parser.py +0 -0
  69. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/dart.py +0 -0
  70. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/dotnet.py +0 -0
  71. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/elixir.py +0 -0
  72. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/go.py +0 -0
  73. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/heuristic.py +0 -0
  74. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/hybrid.py +0 -0
  75. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/java.py +0 -0
  76. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/jvm_ext.py +0 -0
  77. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/nodejs.py +0 -0
  78. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/parsers.py +0 -0
  79. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/php.py +0 -0
  80. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/project.py +0 -0
  81. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/python.py +0 -0
  82. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/ruby.py +0 -0
  83. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/rust.py +0 -0
  84. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/systems.py +0 -0
  85. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/terraform.py +0 -0
  86. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/detectors/tooling.py +0 -0
  87. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/doc_analyzer.py +0 -0
  88. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/dynamic_argument_surface.py +0 -0
  89. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/endpoint_literals.py +0 -0
  90. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/endpoint_metrics.py +0 -0
  91. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/entrypoint_classifier.py +0 -0
  92. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/env_analyzer.py +0 -0
  93. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/envelope.py +0 -0
  94. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/environment_resolution.py +0 -0
  95. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/error_schema.py +0 -0
  96. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/evidence_provider.py +0 -0
  97. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/execution_plan.py +0 -0
  98. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/explain.py +0 -0
  99. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/facts/__init__.py +0 -0
  100. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/facts/registry.json +0 -0
  101. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/file_chunker.py +0 -0
  102. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/file_classifier.py +0 -0
  103. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/filter_surface.py +0 -0
  104. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/fqn_utils.py +0 -0
  105. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/git_analyzer.py +0 -0
  106. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/git_checkout.py +0 -0
  107. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/graph_analyzer.py +0 -0
  108. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/graph_evidence.py +0 -0
  109. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/hibernate_strat.py +0 -0
  110. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/identity_fallback.py +0 -0
  111. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/integration_coordinates.py +0 -0
  112. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/jdk_exports.py +0 -0
  113. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/license.py +0 -0
  114. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/mcp/__init__.py +0 -0
  115. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  116. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  117. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  118. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  119. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  120. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/mcp/orchestrator.py +0 -0
  121. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/mcp/registry.py +0 -0
  122. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/mcp/runner.py +0 -0
  123. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/mcp/server.py +0 -0
  124. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/mcp_nudge.py +0 -0
  125. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/metrics_analyzer.py +0 -0
  126. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/migrate_check.py +0 -0
  127. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/migration_blast.py +0 -0
  128. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/openapi_surface.py +0 -0
  129. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/openrewrite_recipe.py +0 -0
  130. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/output_budget.py +0 -0
  131. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/output_encoding.py +0 -0
  132. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/parse_cache.py +0 -0
  133. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/path_admission.py +0 -0
  134. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/path_filters.py +0 -0
  135. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/perf.py +0 -0
  136. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/phased_run.py +0 -0
  137. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/pipe_contract.py +0 -0
  138. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/posture.py +0 -0
  139. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/pr_comment_renderer.py +0 -0
  140. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/pr_impact.py +0 -0
  141. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/prepare_context.py +0 -0
  142. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/provenance.py +0 -0
  143. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/ranking_engine.py +0 -0
  144. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/readiness_timeline.py +0 -0
  145. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/reconciliation.py +0 -0
  146. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/redactor.py +0 -0
  147. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/reference_facts.py +0 -0
  148. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/release_info.py +0 -0
  149. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/relevance_scorer.py +0 -0
  150. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/remedies.py +0 -0
  151. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/rename_refactor.py +0 -0
  152. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/repo_classifier.py +0 -0
  153. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/__init__.py +0 -0
  154. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/context.py +0 -0
  155. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/errors.py +0 -0
  156. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/executor.py +0 -0
  157. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/planner.py +0 -0
  158. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/query.py +0 -0
  159. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/request.py +0 -0
  160. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/resolution.py +0 -0
  161. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/result.py +0 -0
  162. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/retriever.py +0 -0
  163. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/runtime.py +0 -0
  164. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/steps.py +0 -0
  165. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
  166. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/steps_graph.py +0 -0
  167. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/steps_impact.py +0 -0
  168. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/steps_intf.py +0 -0
  169. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/steps_struct.py +0 -0
  170. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/retrieval/steps_txsec.py +0 -0
  171. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/ris.py +0 -0
  172. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/risk.py +0 -0
  173. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/runs.py +0 -0
  174. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/runtime_classifier.py +0 -0
  175. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/sarif.py +0 -0
  176. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/scanner.py +0 -0
  177. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/schema.py +0 -0
  178. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
  179. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/security_config.py +0 -0
  180. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/security_config_scan.py +0 -0
  181. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/security_posture.py +0 -0
  182. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/semantic_analyzer.py +0 -0
  183. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/semantic_impact_engine.py +0 -0
  184. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/semantic_integration_engine.py +0 -0
  185. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/semantic_services.py +0 -0
  186. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/serializer.py +0 -0
  187. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/servlet_surface.py +0 -0
  188. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/source_text.py +0 -0
  189. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/spring_event_topology.py +0 -0
  190. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/spring_findings.py +0 -0
  191. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/spring_impact.py +0 -0
  192. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/spring_model.py +0 -0
  193. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/spring_profiles.py +0 -0
  194. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/spring_properties.py +0 -0
  195. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/spring_security_audit.py +0 -0
  196. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/spring_semantic.py +0 -0
  197. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/spring_tx_analyzer.py +0 -0
  198. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/summarizer.py +0 -0
  199. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/target_admission.py +0 -0
  200. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/telemetry/__init__.py +0 -0
  201. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/telemetry/config.py +0 -0
  202. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/telemetry/consent.py +0 -0
  203. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/telemetry/events.py +0 -0
  204. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/telemetry/filters.py +0 -0
  205. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/telemetry/transport.py +0 -0
  206. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/test_gap_ranking.py +0 -0
  207. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/test_sources.py +0 -0
  208. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/text_input.py +0 -0
  209. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/token_estimate.py +0 -0
  210. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/tree_utils.py +0 -0
  211. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/type_usage_surface.py +0 -0
  212. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/validation_inference.py +0 -0
  213. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/validation_surface.py +0 -0
  214. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/verify_edit.py +0 -0
  215. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/verify_repo.py +0 -0
  216. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/verify_rules.py +0 -0
  217. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/version_check.py +0 -0
  218. {sourcecode-4.10.7 → sourcecode-4.11.0}/src/sourcecode/workspace.py +0 -0
  219. {sourcecode-4.10.7 → sourcecode-4.11.0}/supabase/functions/README.md +0 -0
  220. {sourcecode-4.10.7 → sourcecode-4.11.0}/supabase/functions/get-license/index.ts +0 -0
  221. {sourcecode-4.10.7 → sourcecode-4.11.0}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
  222. {sourcecode-4.10.7 → sourcecode-4.11.0}/supabase/functions/telemetry/index.ts +0 -0
  223. {sourcecode-4.10.7 → sourcecode-4.11.0}/supabase/sql/license_event_ordering.sql +0 -0
  224. {sourcecode-4.10.7 → sourcecode-4.11.0}/supabase/sql/licensing_schema.sql +0 -0
  225. {sourcecode-4.10.7 → sourcecode-4.11.0}/supabase/sql/telemetry_events.sql +0 -0
@@ -2,6 +2,124 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [4.11.0] — 2026-08-07
6
+
7
+ **The queue behind Tier D: five ledger rows, and three batteries that were red in
8
+ the release before this one.** C3-59 · C3-56 (second half) · C3-52 · C3-60 (second
9
+ half) · CL-15 close here, one commit each. Two of them were bigger than the row
10
+ said, and both in the same direction — a flag that parses and does not check, a
11
+ message that promises output nobody writes:
12
+
13
+ - **`--format` was published by eleven commands that validated nothing**, so
14
+ `ask risk . --format bogus` answered with JSON as if the value had counted
15
+ (C3-59);
16
+ - **`--detach` told the operator "progress and errors go to `log`"** and the log
17
+ held one line, because a detached worker has no terminal and the heartbeat
18
+ switched itself off exactly where it is the only way to tell work from a hang
19
+ (C3-52).
20
+
21
+ ⚠ **Behaviour changes to read before upgrading a pipeline:**
22
+
23
+ - **An unsupported `--format` now exits 2** with the values that are valid, on
24
+ the eleven commands that used to accept anything and answer JSON. A script
25
+ passing a value that was never supported fails where it used to appear to work.
26
+ - **`--format/-f` is accepted after 34 more commands**, including the 29
27
+ `retrieve` intents, `modernize`, `schema`, `onboard` and `fix-bug`.
28
+ - **`ask config <path>` refuses a path that does not exist** (exit 1, the standard
29
+ envelope) instead of reporting "nothing is declared" about it.
30
+ - **A detached run writes heartbeat lines into its own log** unless `--progress`
31
+ or `ASK_PROGRESS` says otherwise. Nothing changes for a foreground, piped or CI
32
+ run that does not ask.
33
+
34
+ Three tests were **already red in 4.10.7** — each a battery that derives its
35
+ population from the CLI, so C4-17's and C4-20's own changes tripped them — and
36
+ they are fixed here. One of the three was not a test defect: it found `ask config`
37
+ answering about a repository that does not exist.
38
+
39
+ ### Changed
40
+
41
+ - **The `spring-audit` security section says what it is before it says what it
42
+ found** (CL-15). A field evaluation found the repository's critical SQL
43
+ injection by hand and ASK did not report it — correctly and by declaration
44
+ (NC-001: no dataflow) — but the section is announced as a *security surface*,
45
+ which invites reading it as a defect finder. The surface now states, from one
46
+ table rendered into both `--help` and the payload, that it reads the security
47
+ **configuration and exposure** (declared chain rules, open endpoints, disabled
48
+ controls, bypassable gates, each with file and line), that it is **not** a
49
+ vulnerability scanner, and where it is strongest: given a defect somebody else
50
+ found, `ask impact` and `ask risk` quantify what it reaches. The rule-family
51
+ label follows (`security surface` → `security configuration and exposure`). No
52
+ rule and no finding changed — this was always a naming defect.
53
+
54
+ ### Fixed
55
+
56
+ - **`ask config <path>` refuses a repository nobody could read** instead of
57
+ reporting on it (C4-21 follow-up). The command gained a repository argument in
58
+ 4.10.7 without the admission gate every other path-taking command uses, so
59
+ `ask config /nonexistent` answered *"Declaration: none at
60
+ /nonexistent/sourcecode.config.json"* with exit 0 — and *"nothing is declared
61
+ here"* is indistinguishable from *"nobody could look"*, which is the reading
62
+ ADR-0008 exists to prevent.
63
+
64
+ - **`ask cache model` states which repository its figures were measured on, and
65
+ what that means for yours** (C3-60, second half). It published `verify-edit` as
66
+ *14,6 s → 9,6 s → 5,6 s* and called it *"built for the edit loop"* while the
67
+ same command had not answered at 495 s on the field repository — both
68
+ measurements, one printed. The command now measures the scope it is run in
69
+ (same authority as `--help` and the remedies), says whether the published
70
+ figures transfer to it, and gives each command a `here:` line saying how it can
71
+ be run on *this* repository. No figure changed and nothing is projected: an
72
+ unmeasurable scope gets the reference figures unqualified, as before.
73
+
74
+ - **`--progress off | stderr | file:<path>` on every command that can make you
75
+ wait** (C3-52). The heartbeat existed and the watcher model everybody uses
76
+ could not see it: a supervisor reading the standard streams got nothing for
77
+ 703 seconds unless it knew to set `ASK_PROGRESS=1` or to poll the run record —
78
+ knowledge that appeared in no `--help` and in no payload. The choice is now
79
+ published on the command being typed (62 commands, population from the
80
+ registry), `ASK_PROGRESS` still sets the same thing in the environment, and an
81
+ unrecognised value is refused with exit 2 rather than silently falling back to
82
+ the default. Nothing changes for a piped or CI run that does not ask.
83
+ - **A detached run's log carries the progress its own envelope promises**
84
+ (C3-52). `--detach` printed *"Progress and errors go to `log`"* and the log
85
+ held one line, because a detached worker has no terminal and the heartbeat
86
+ disabled itself exactly where it is the only way to tell work from a hang. A
87
+ detached run now enables the heartbeat into its own log unless `--progress` or
88
+ `ASK_PROGRESS` says otherwise; no shell reads those bytes, so the PowerShell
89
+ `$?` problem (C3-66) cannot be reached from a detached run.
90
+
91
+ - **The progress heartbeat carries a denominator and an ETA** (C3-56, second
92
+ half). `phase=auditing 3342 Java files elapsed=6.8m` said the run was alive and
93
+ nothing about whether it was worth waiting for; the field's only way to tell
94
+ work from a hang was reading the worker's CPU time. The line now reads
95
+ `phase=auditing 2766 Java files stage=parsing 1458/2766 files elapsed=2.0s
96
+ eta=1.8s eta_covers=parsing`, with the counts coming from the loops that read
97
+ the files rather than from the spinner. The ETA **names what it covers**
98
+ (nothing here knows the cost of the stages after the counted one), is withheld
99
+ until it can be measured, and is dropped when the phase changes rather than
100
+ freezing at `2766/2766`. A run with no heartbeat enabled is not asked to count.
101
+
102
+ - **`-f` means `--format` on every command that publishes it, and every command
103
+ that answers with a payload document publishes it** (C3-59). `-f json` was
104
+ accepted by `endpoints` and `spring-audit` and refused by `modernize`, whose
105
+ error called `-f` a global flag *"as `ask -f <path>`"* — so the message taught
106
+ the collision it was meant to remove. The population is now the C4-17 rule one
107
+ level along (a payload command publishes `--format/-f`; a command that answers
108
+ in lines is exempt on the record in `cli.COMMANDS_WITHOUT_FORMAT`), and 34
109
+ commands gained the flag: `modernize`, `archetype`, `cold-start`, `schema`,
110
+ `onboard`, `fix-bug` and the 29 `retrieve` intents. One conversion in the emit
111
+ seam serves all of them, on the *stamped* document, so a YAML answer carries
112
+ the same `_meta` as the JSON one.
113
+ - **An unsupported `--format` is refused instead of silently ignored** (C3-59).
114
+ Eleven commands published the flag and validated nothing — `ask risk .
115
+ --format bogus` answered with JSON as if the value had counted. Validation
116
+ moved into the shared option factory, keyed off the command being run, so a
117
+ command cannot publish the flag and skip the check;
118
+ `sourcecode.format_contract.FORMAT_REGISTRY` is the one authority for what
119
+ each command accepts, and an invalid value exits 2 with the values that are
120
+ valid. `rename-class` keeps `-f` for `--from` (on the record in
121
+ `COMMANDS_WITHOUT_FORMAT_SHORTHAND`); its long `--format` is unchanged.
122
+
5
123
  ## [4.10.7] — 2026-08-07
6
124
 
7
125
  **Tier D, and with it the M13 bug queue.** Five ledger rows close (C4-17 · C4-18 ·
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 4.10.7
3
+ Version: 4.11.0
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.7-blue)
45
+ ![Version](https://img.shields.io/badge/version-4.11.0-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,8 +73,10 @@ 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
77
- supervised runs. Long repo-wide/deep runs also write durable records under
76
+ **Large-repo controls.** Pass `--progress stderr` (or `--progress file:run.log`)
77
+ for line heartbeats in a non-TTY supervised run with the file being read so
78
+ far and an ETA for the stage being measured. `ASK_PROGRESS` sets the same thing
79
+ in the environment. Long repo-wide/deep runs also write durable records under
78
80
  `~/.sourcecode/runs/<repo-hash>/` by default, not inside the audited repository;
79
81
  set `ASK_RUNS_IN_REPO=1` only when repo-local `.ask/runs` records are intentional.
80
82
  Set `ASK_MAX_ANALYSIS_SECONDS=<seconds>` to fail before starting a repo-wide/deep
@@ -106,7 +108,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
106
108
  # pip / pipx
107
109
  pipx install sourcecode # or: pip install sourcecode
108
110
 
109
- ask version # ask 4.10.7 — and, on a build that has aged,
111
+ ask version # ask 4.11.0 — and, on a build that has aged,
110
112
  # how many releases have probably shipped since
111
113
  ```
112
114
 
@@ -322,7 +324,7 @@ from it.
322
324
  | `migrate-recipe` | experimental | the migration report as the OpenRewrite recipe that applies it | only recipes a finding named; the manual remainder published beside them; writes nothing without `--write`, and never a runnable command for an empty recipe list |
323
325
  | `data-exposure` | experimental | which routes can carry the data you labelled, and who reaches them | labels declared in `sourcecode.config.json` — never inferred from a name; `signature` and `call_reach` evidence published apart, field-level flow out of scope (NC-008). With nothing declared, `ask data-exposure /path/to/repo` answers `answered: false` and hands back the file, the key and an example to declare — it never reports zero exposed routes |
324
326
  | `endpoints` | core | every REST endpoint, effective path, security policy, confidence | Spring MVC + JAX-RS (~65 % recall on JAX-RS sub-resource locators). `--compact` answers the exposure census without the rows; `--servlets` lists the servlet-mounted surface as its own population; `--client-usage` says which routes the TS/JS client in this repository actually calls |
325
- | `spring-audit` | core | transactional anomalies + security surface + validation gaps | `--ci`, `-f github-comment`; `--table --rule SEC-008 --top-n 20` for human-scale review |
327
+ | `spring-audit` | core | transactional anomalies + security configuration/exposure + validation gaps | `--ci`, `-f github-comment`; `--table --rule SEC-008 --top-n 20` for human-scale review |
326
328
  | `migrate-check` | core | Boot 2→3 readiness + Java LTS/licensing inventory: located blockers, per-dimension score, effort, detected Java 8/11/17/21/25 evidence and explicit licensing-review signals | `--target-jdk 25` sets the target LTS route; `--blast-radius` orders the re-test plan; `--table --rule MIG-001 --band critical --top-n 20` for blocker triage |
327
329
  | `impact` / `impact-chain` | core | blast radius of a change, to the endpoints it reaches | target the **interface**, not the `Impl` |
328
330
  | `pr-impact` | core | the same, scoped to a PR diff | gating command: `--fail-on`, exit codes |
@@ -359,7 +361,21 @@ Honest limits worth knowing before you rely on it:
359
361
  - Architecture classification is tuned for Spring MVC layered apps; SPI/plugin models (e.g. Quarkus extensions) may be misclassified. JAX-RS subresource-locator endpoint recall is ~65%.
360
362
  - Self-invocation `@Transactional` bypass (same-class call skipping the proxy) is not detected.
361
363
 
362
- ### What the security surface does not answer
364
+ ### What the security section is, and what it does not answer
365
+
366
+ **What it reads:** the security *configuration and exposure* of a repository — which
367
+ rules the request chain declares, which endpoints they leave open, which controls are
368
+ present but disabled, and which custom gates can be bypassed, each with the file and
369
+ line that says so.
370
+
371
+ **What it is not:** a vulnerability scanner. No value flows through a program here, so
372
+ an injection, a deserialization sink or a logic flaw inside a method body is not looked
373
+ for, and its absence from the report is not evidence (NC-001, below).
374
+
375
+ **Where it is strongest:** given a defect somebody else found — a scanner finding, a
376
+ line from a review — `ask impact <symbol>` and `ask risk` quantify what it reaches: the
377
+ endpoints, the transactional boundaries and the modules downstream of it, with the
378
+ confidence of each hop. That is the question a taint scanner does not answer.
363
379
 
364
380
  Published because a product that states its limits is not compared on breadth — it is
365
381
  compared on depth. Each row is emitted in the payload too (`non_coverage`), so an agent
@@ -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.7-blue)
7
+ ![Version](https://img.shields.io/badge/version-4.11.0-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,8 +35,10 @@ 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
39
- supervised runs. Long repo-wide/deep runs also write durable records under
38
+ **Large-repo controls.** Pass `--progress stderr` (or `--progress file:run.log`)
39
+ for line heartbeats in a non-TTY supervised run with the file being read so
40
+ far and an ETA for the stage being measured. `ASK_PROGRESS` sets the same thing
41
+ in the environment. Long repo-wide/deep runs also write durable records under
40
42
  `~/.sourcecode/runs/<repo-hash>/` by default, not inside the audited repository;
41
43
  set `ASK_RUNS_IN_REPO=1` only when repo-local `.ask/runs` records are intentional.
42
44
  Set `ASK_MAX_ANALYSIS_SECONDS=<seconds>` to fail before starting a repo-wide/deep
@@ -68,7 +70,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
68
70
  # pip / pipx
69
71
  pipx install sourcecode # or: pip install sourcecode
70
72
 
71
- ask version # ask 4.10.7 — and, on a build that has aged,
73
+ ask version # ask 4.11.0 — and, on a build that has aged,
72
74
  # how many releases have probably shipped since
73
75
  ```
74
76
 
@@ -284,7 +286,7 @@ from it.
284
286
  | `migrate-recipe` | experimental | the migration report as the OpenRewrite recipe that applies it | only recipes a finding named; the manual remainder published beside them; writes nothing without `--write`, and never a runnable command for an empty recipe list |
285
287
  | `data-exposure` | experimental | which routes can carry the data you labelled, and who reaches them | labels declared in `sourcecode.config.json` — never inferred from a name; `signature` and `call_reach` evidence published apart, field-level flow out of scope (NC-008). With nothing declared, `ask data-exposure /path/to/repo` answers `answered: false` and hands back the file, the key and an example to declare — it never reports zero exposed routes |
286
288
  | `endpoints` | core | every REST endpoint, effective path, security policy, confidence | Spring MVC + JAX-RS (~65 % recall on JAX-RS sub-resource locators). `--compact` answers the exposure census without the rows; `--servlets` lists the servlet-mounted surface as its own population; `--client-usage` says which routes the TS/JS client in this repository actually calls |
287
- | `spring-audit` | core | transactional anomalies + security surface + validation gaps | `--ci`, `-f github-comment`; `--table --rule SEC-008 --top-n 20` for human-scale review |
289
+ | `spring-audit` | core | transactional anomalies + security configuration/exposure + validation gaps | `--ci`, `-f github-comment`; `--table --rule SEC-008 --top-n 20` for human-scale review |
288
290
  | `migrate-check` | core | Boot 2→3 readiness + Java LTS/licensing inventory: located blockers, per-dimension score, effort, detected Java 8/11/17/21/25 evidence and explicit licensing-review signals | `--target-jdk 25` sets the target LTS route; `--blast-radius` orders the re-test plan; `--table --rule MIG-001 --band critical --top-n 20` for blocker triage |
289
291
  | `impact` / `impact-chain` | core | blast radius of a change, to the endpoints it reaches | target the **interface**, not the `Impl` |
290
292
  | `pr-impact` | core | the same, scoped to a PR diff | gating command: `--fail-on`, exit codes |
@@ -321,7 +323,21 @@ Honest limits worth knowing before you rely on it:
321
323
  - Architecture classification is tuned for Spring MVC layered apps; SPI/plugin models (e.g. Quarkus extensions) may be misclassified. JAX-RS subresource-locator endpoint recall is ~65%.
322
324
  - Self-invocation `@Transactional` bypass (same-class call skipping the proxy) is not detected.
323
325
 
324
- ### What the security surface does not answer
326
+ ### What the security section is, and what it does not answer
327
+
328
+ **What it reads:** the security *configuration and exposure* of a repository — which
329
+ rules the request chain declares, which endpoints they leave open, which controls are
330
+ present but disabled, and which custom gates can be bypassed, each with the file and
331
+ line that says so.
332
+
333
+ **What it is not:** a vulnerability scanner. No value flows through a program here, so
334
+ an injection, a deserialization sink or a logic flaw inside a method body is not looked
335
+ for, and its absence from the report is not evidence (NC-001, below).
336
+
337
+ **Where it is strongest:** given a defect somebody else found — a scanner finding, a
338
+ line from a review — `ask impact <symbol>` and `ask risk` quantify what it reaches: the
339
+ endpoints, the transactional boundaries and the modules downstream of it, with the
340
+ confidence of each hop. That is the question a taint scanner does not answer.
325
341
 
326
342
  Published because a product that states its limits is not compared on breadth — it is
327
343
  compared on depth. Each row is emitted in the payload too (`non_coverage`), so an agent
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "4.10.7"
7
+ version = "4.11.0"
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.7"
7
+ __version__ = "4.11.0"