sourcecode 5.8.20__tar.gz → 5.8.21__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 (396) hide show
  1. {sourcecode-5.8.20 → sourcecode-5.8.21}/.gitignore +2 -0
  2. {sourcecode-5.8.20 → sourcecode-5.8.21}/CHANGELOG.md +31 -0
  3. {sourcecode-5.8.20 → sourcecode-5.8.21}/CONTRIBUTING.md +12 -0
  4. {sourcecode-5.8.20 → sourcecode-5.8.21}/PKG-INFO +15 -6
  5. {sourcecode-5.8.20 → sourcecode-5.8.21}/README.md +10 -4
  6. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/DEFECT-LEDGER.md +231 -5
  7. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/DEVELOPMENT-ROADMAP.md +88 -12
  8. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/EXECUTION-PLAN-12MO.md +41 -22
  9. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/EXECUTIVE-ROADMAP.md +192 -1
  10. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/MANUAL-USUARIO.md +9 -1
  11. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/USER_GUIDE.md +9 -2
  12. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/spec/envelope-v1.md +2 -0
  13. {sourcecode-5.8.20 → sourcecode-5.8.21}/pyproject.toml +6 -2
  14. sourcecode-5.8.21/scripts/test_fast.sh +15 -0
  15. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/__init__.py +1 -1
  16. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/audit_report.py +18 -0
  17. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/baseline_autocapture.py +18 -1
  18. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/canonical_ir.py +41 -5
  19. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/cli.py +635 -85
  20. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/compare.py +3 -0
  21. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/defect_classes/__init__.py +19 -0
  22. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/defect_classes/registry.json +4 -5
  23. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/envelope.py +81 -0
  24. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/error_schema.py +5 -0
  25. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/explain_endpoint.py +7 -0
  26. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/migrate_check.py +211 -114
  27. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/non_coverage.py +31 -4
  28. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/output_bounds.py +13 -0
  29. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/partial_contract.py +21 -0
  30. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/path_filters.py +67 -4
  31. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/perf.py +54 -2
  32. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/phased_run.py +28 -0
  33. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/posture.py +35 -6
  34. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/prepare_context.py +91 -12
  35. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/release_info.py +1 -1
  36. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/rename_refactor.py +26 -8
  37. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/repository_ir.py +239 -24
  38. sourcecode-5.8.21/src/sourcecode/resource_budget.py +77 -0
  39. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/risk.py +139 -12
  40. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/schema_registry.py +6 -0
  41. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/schemas/endpoints-v1.schema.json +15 -0
  42. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/schemas/envelope-v1.schema.json +10 -0
  43. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/selftest.py +179 -24
  44. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/serializer.py +66 -6
  45. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/spring_findings.py +32 -8
  46. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/spring_security_audit.py +23 -11
  47. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/summarizer.py +148 -9
  48. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/validation_surface.py +8 -0
  49. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/verify_edit.py +242 -37
  50. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/verify_repo.py +22 -2
  51. {sourcecode-5.8.20 → sourcecode-5.8.21}/.github/workflows/build-windows.yml +0 -0
  52. {sourcecode-5.8.20 → sourcecode-5.8.21}/.github/workflows/perf-gate.yml +0 -0
  53. {sourcecode-5.8.20 → sourcecode-5.8.21}/.ruff.toml +0 -0
  54. {sourcecode-5.8.20 → sourcecode-5.8.21}/CLAUDE.md +0 -0
  55. {sourcecode-5.8.20 → sourcecode-5.8.21}/LICENSE +0 -0
  56. {sourcecode-5.8.20 → sourcecode-5.8.21}/NOTICE +0 -0
  57. {sourcecode-5.8.20 → sourcecode-5.8.21}/SECURITY.md +0 -0
  58. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/CACHE.md +0 -0
  59. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/COMMERCIAL-OFFER.md +0 -0
  60. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/CUSTOMER-VALIDATION.md +0 -0
  61. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/DEMO-5MIN.md +0 -0
  62. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/MODERNIZATION.md +0 -0
  63. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/PRODUCT_AUDIT.md +0 -0
  64. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/PRODUCT_IDENTITY.md +0 -0
  65. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/PRODUCT_TIERS.md +0 -0
  66. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/RC1-CHECKLIST.md +0 -0
  67. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/RELEASE-CHECKLIST.md +0 -0
  68. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
  69. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
  70. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
  71. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
  72. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
  73. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
  74. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
  75. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
  76. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
  77. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/EPV-p6-class-typeref.md +0 -0
  78. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
  79. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
  80. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
  81. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
  82. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/adr/0001-semantic-ir.md +0 -0
  83. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
  84. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
  85. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
  86. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
  87. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/adr/0006-performance-harness.md +0 -0
  88. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/adr/0007-composition-semantics.md +0 -0
  89. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/adr/0008-answer-coherence.md +0 -0
  90. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/consumer-disposition-inventory.md +0 -0
  91. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/overview.md +0 -0
  92. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/product-architecture-review.md +0 -0
  93. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/product-strategy-layering.md +0 -0
  94. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
  95. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/architecture/semantic-ir-roadmap.md +0 -0
  96. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/baseline-ci.yml +0 -0
  97. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/commercial-pipeline-audit.md +0 -0
  98. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/contracts-ci.yml +0 -0
  99. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/contracts.md +0 -0
  100. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
  101. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
  102. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
  103. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
  104. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
  105. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
  106. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
  107. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
  108. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/licensing-schema.md +0 -0
  109. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/migrate-check.md +0 -0
  110. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/README.md +0 -0
  111. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/REGRESSION-GATE.md +0 -0
  112. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
  113. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
  114. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
  115. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
  116. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
  117. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
  118. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
  119. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
  120. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
  121. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
  122. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
  123. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
  124. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
  125. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
  126. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
  127. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
  128. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
  129. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
  130. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
  131. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
  132. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
  133. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
  134. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
  135. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
  136. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
  137. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
  138. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
  139. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
  140. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
  141. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
  142. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
  143. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
  144. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
  145. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
  146. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
  147. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
  148. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
  149. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
  150. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
  151. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
  152. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
  153. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
  154. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/gate-latest/README.md +0 -0
  155. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
  156. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
  157. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
  158. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
  159. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
  160. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
  161. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/perf/baselines/reference-best/README.md +0 -0
  162. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/posture.md +0 -0
  163. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/privacy.md +0 -0
  164. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/pro-experience-audit.md +0 -0
  165. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/schema.md +0 -0
  166. {sourcecode-5.8.20 → sourcecode-5.8.21}/docs/spring-audit-ci.yml +0 -0
  167. {sourcecode-5.8.20 → sourcecode-5.8.21}/hatch_build.py +0 -0
  168. {sourcecode-5.8.20 → sourcecode-5.8.21}/scripts/compare_integration_engines.py +0 -0
  169. {sourcecode-5.8.20 → sourcecode-5.8.21}/scripts/customer_smoke_test.sh +0 -0
  170. {sourcecode-5.8.20 → sourcecode-5.8.21}/scripts/generate_jdk_exports.py +0 -0
  171. {sourcecode-5.8.20 → sourcecode-5.8.21}/scripts/perf_gate.py +0 -0
  172. {sourcecode-5.8.20 → sourcecode-5.8.21}/scripts/perf_harness.py +0 -0
  173. {sourcecode-5.8.20 → sourcecode-5.8.21}/scripts/sync_gate_anchors.py +0 -0
  174. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/adaptive_scanner.py +0 -0
  175. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/analysis_budget.py +0 -0
  176. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/answer_bounds.py +0 -0
  177. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/archetype.py +0 -0
  178. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/architectural_baseline.py +0 -0
  179. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/architectural_delta.py +0 -0
  180. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/architecture_analyzer.py +0 -0
  181. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/architecture_summary.py +0 -0
  182. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/ast_extractor.py +0 -0
  183. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/audit_clusters.py +0 -0
  184. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/audit_recipe.py +0 -0
  185. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/audit_since.py +0 -0
  186. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/breaking_changes.py +0 -0
  187. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/build_modules.py +0 -0
  188. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/build_stamp.py +0 -0
  189. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/bundled_docs.py +0 -0
  190. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/cache.py +0 -0
  191. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/cache_model.py +0 -0
  192. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/call_surface.py +0 -0
  193. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/caller_metrics.py +0 -0
  194. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/caller_reach.py +0 -0
  195. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/chain_rules.py +0 -0
  196. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/change_plan.py +0 -0
  197. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/ci_output.py +0 -0
  198. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/cir_graphs.py +0 -0
  199. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/classifier.py +0 -0
  200. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/client_calls.py +0 -0
  201. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/code_notes_analyzer.py +0 -0
  202. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/confidence_analyzer.py +0 -0
  203. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/constraint_diff.py +0 -0
  204. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/consumer_join.py +0 -0
  205. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/container_wiring.py +0 -0
  206. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/context_cache.py +0 -0
  207. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/context_graph.py +0 -0
  208. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/context_scorer.py +0 -0
  209. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/context_summarizer.py +0 -0
  210. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/contract_diff.py +0 -0
  211. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/contract_init.py +0 -0
  212. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/contract_model.py +0 -0
  213. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/contract_pipeline.py +0 -0
  214. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/coverage_parser.py +0 -0
  215. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/data_exposure.py +0 -0
  216. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/data_labels.py +0 -0
  217. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/declarations.py +0 -0
  218. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/defect_identity.py +0 -0
  219. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/degradation.py +0 -0
  220. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/dependency_analyzer.py +0 -0
  221. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/deployment_prefix.py +0 -0
  222. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detach.py +0 -0
  223. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/__init__.py +0 -0
  224. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/base.py +0 -0
  225. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/csproj_parser.py +0 -0
  226. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/dart.py +0 -0
  227. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/dotnet.py +0 -0
  228. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/elixir.py +0 -0
  229. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/go.py +0 -0
  230. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/heuristic.py +0 -0
  231. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/hybrid.py +0 -0
  232. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/java.py +0 -0
  233. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/jvm_ext.py +0 -0
  234. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/nodejs.py +0 -0
  235. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/parsers.py +0 -0
  236. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/php.py +0 -0
  237. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/project.py +0 -0
  238. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/python.py +0 -0
  239. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/ruby.py +0 -0
  240. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/rust.py +0 -0
  241. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/systems.py +0 -0
  242. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/terraform.py +0 -0
  243. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/detectors/tooling.py +0 -0
  244. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/doc_analyzer.py +0 -0
  245. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/dynamic_argument_surface.py +0 -0
  246. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/empty_reach.py +0 -0
  247. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/endpoint_disposition.py +0 -0
  248. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/endpoint_literals.py +0 -0
  249. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/endpoint_metrics.py +0 -0
  250. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/entrypoint_classifier.py +0 -0
  251. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/env_analyzer.py +0 -0
  252. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/environment_resolution.py +0 -0
  253. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/evidence_provider.py +0 -0
  254. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/execution_plan.py +0 -0
  255. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/explain.py +0 -0
  256. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/facts/__init__.py +0 -0
  257. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/facts/registry.json +0 -0
  258. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/field_deprecations.py +0 -0
  259. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/file_chunker.py +0 -0
  260. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/file_classifier.py +0 -0
  261. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/filter_surface.py +0 -0
  262. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/format_contract.py +0 -0
  263. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/fqn_utils.py +0 -0
  264. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/functional_routes.py +0 -0
  265. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/gate_anchors.py +0 -0
  266. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/git_analyzer.py +0 -0
  267. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/git_checkout.py +0 -0
  268. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/github_diff.py +0 -0
  269. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/graph_analyzer.py +0 -0
  270. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/graph_evidence.py +0 -0
  271. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/hibernate_strat.py +0 -0
  272. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/identity_fallback.py +0 -0
  273. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/integration_coordinates.py +0 -0
  274. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/jdk_exports.py +0 -0
  275. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/license.py +0 -0
  276. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/manifest_cache.py +0 -0
  277. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/mcp/__init__.py +0 -0
  278. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/mcp/dependency_import.py +0 -0
  279. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  280. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  281. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  282. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  283. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  284. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/mcp/orchestrator.py +0 -0
  285. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/mcp/registry.py +0 -0
  286. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/mcp/runner.py +0 -0
  287. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/mcp/server.py +0 -0
  288. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/mcp_nudge.py +0 -0
  289. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/metrics_analyzer.py +0 -0
  290. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/migration_apply.py +0 -0
  291. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/migration_blast.py +0 -0
  292. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/openapi_surface.py +0 -0
  293. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/openrewrite_recipe.py +0 -0
  294. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/output_budget.py +0 -0
  295. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/output_ceiling.py +0 -0
  296. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/output_encoding.py +0 -0
  297. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/output_sink.py +0 -0
  298. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/parallel.py +0 -0
  299. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/parse_cache.py +0 -0
  300. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/path_admission.py +0 -0
  301. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/pipe_contract.py +0 -0
  302. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/pr_comment_renderer.py +0 -0
  303. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/pr_impact.py +0 -0
  304. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/product_info.py +0 -0
  305. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/progress.py +0 -0
  306. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/provenance.py +0 -0
  307. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/ranking_engine.py +0 -0
  308. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/readiness_timeline.py +0 -0
  309. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/readonly.py +0 -0
  310. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/reconciliation.py +0 -0
  311. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/redactor.py +0 -0
  312. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/reference_facts.py +0 -0
  313. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/regress.py +0 -0
  314. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/relevance_scorer.py +0 -0
  315. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/remediation_diff.py +0 -0
  316. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/remedies.py +0 -0
  317. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/repo_classifier.py +0 -0
  318. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/__init__.py +0 -0
  319. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/context.py +0 -0
  320. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/errors.py +0 -0
  321. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/executor.py +0 -0
  322. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/planner.py +0 -0
  323. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/query.py +0 -0
  324. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/request.py +0 -0
  325. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/resolution.py +0 -0
  326. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/result.py +0 -0
  327. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/retriever.py +0 -0
  328. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/runtime.py +0 -0
  329. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/steps.py +0 -0
  330. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
  331. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/steps_graph.py +0 -0
  332. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/steps_impact.py +0 -0
  333. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/steps_intf.py +0 -0
  334. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/steps_struct.py +0 -0
  335. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/retrieval/steps_txsec.py +0 -0
  336. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/ris.py +0 -0
  337. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/risk_model.py +0 -0
  338. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/rule_catalog.py +0 -0
  339. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/rule_pass.py +0 -0
  340. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/runs.py +0 -0
  341. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/runtime_classifier.py +0 -0
  342. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/sarif.py +0 -0
  343. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/scanner.py +0 -0
  344. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/schema.py +0 -0
  345. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/schema_producers.py +0 -0
  346. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
  347. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
  348. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
  349. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
  350. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/security_chain.py +0 -0
  351. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/security_config.py +0 -0
  352. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/security_config_scan.py +0 -0
  353. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/security_posture.py +0 -0
  354. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/selection_contract.py +0 -0
  355. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/semantic_analyzer.py +0 -0
  356. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/semantic_impact_engine.py +0 -0
  357. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/semantic_integration_engine.py +0 -0
  358. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/semantic_services.py +0 -0
  359. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/servlet_surface.py +0 -0
  360. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/source_text.py +0 -0
  361. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/spring_event_topology.py +0 -0
  362. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/spring_impact.py +0 -0
  363. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/spring_model.py +0 -0
  364. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/spring_profiles.py +0 -0
  365. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/spring_properties.py +0 -0
  366. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/spring_semantic.py +0 -0
  367. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/spring_tx_analyzer.py +0 -0
  368. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/sql_taint.py +0 -0
  369. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/target_admission.py +0 -0
  370. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/telemetry/__init__.py +0 -0
  371. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/telemetry/config.py +0 -0
  372. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/telemetry/consent.py +0 -0
  373. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/telemetry/events.py +0 -0
  374. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/telemetry/filters.py +0 -0
  375. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/telemetry/transport.py +0 -0
  376. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/test_gap_ranking.py +0 -0
  377. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/test_sources.py +0 -0
  378. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/text_input.py +0 -0
  379. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/timeline.py +0 -0
  380. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/timeline_cache.py +0 -0
  381. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/token_estimate.py +0 -0
  382. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/tree_utils.py +0 -0
  383. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/type_usage_surface.py +0 -0
  384. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/validation_inference.py +0 -0
  385. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/verify_rules.py +0 -0
  386. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/version_check.py +0 -0
  387. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/waivers.py +0 -0
  388. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/wired_surface.py +0 -0
  389. {sourcecode-5.8.20 → sourcecode-5.8.21}/src/sourcecode/workspace.py +0 -0
  390. {sourcecode-5.8.20 → sourcecode-5.8.21}/supabase/functions/README.md +0 -0
  391. {sourcecode-5.8.20 → sourcecode-5.8.21}/supabase/functions/get-license/index.ts +0 -0
  392. {sourcecode-5.8.20 → sourcecode-5.8.21}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
  393. {sourcecode-5.8.20 → sourcecode-5.8.21}/supabase/functions/telemetry/index.ts +0 -0
  394. {sourcecode-5.8.20 → sourcecode-5.8.21}/supabase/sql/license_event_ordering.sql +0 -0
  395. {sourcecode-5.8.20 → sourcecode-5.8.21}/supabase/sql/licensing_schema.sql +0 -0
  396. {sourcecode-5.8.20 → sourcecode-5.8.21}/supabase/sql/telemetry_events.sql +0 -0
@@ -12,6 +12,8 @@ build/
12
12
  .mypy_cache/
13
13
  .ruff_cache/
14
14
  .pytest_cache/
15
+ .testmondata
16
+ .testmondata-*
15
17
  src/*.egg-info/
16
18
 
17
19
  # Editor / IDE
@@ -1,5 +1,36 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.8.21] — 2026-08-22
4
+
5
+ *The tenth audit-pass queue is closed: seven remaining P3 fixes shipped as
6
+ separate commits, with the release documentation synchronized to the shipped
7
+ contracts.*
8
+
9
+ ### Fixed — answer contracts and operational safety
10
+
11
+ - **Repository identity (`AUD-596-D01`)** — the common response envelope now
12
+ publishes `repo_id` and `git_head` for repository-scoped JSON answers.
13
+ - **Validation figures (`AUD-596-D03`)** — route constraint figures publish their
14
+ unit and counted population instead of relying on ambiguous field names.
15
+ - **Compare candidates (`AUD-596-D08`)** — directory candidates are rejected
16
+ before model construction, and comparison results publish resolved counts.
17
+ - **Grammar errors (`AUD-596-D11`)** — invalid command usage is now
18
+ `INVALID_USAGE`; semantic input failures remain `INVALID_INPUT`.
19
+ - **Actionable hints (`AUD-596-D12`)** — rename, endpoint explanation and
20
+ regression inputs validate their shapes and provide next steps that can work.
21
+ - **Schema pinning (`AUD-596-D14`)** — ambiguous identifiers such as `1.0`
22
+ publish `pinnable: false` and the canonical names to pin instead.
23
+ - **Peak memory (`AUD-596-D10`)** — JSON answers publish `_meta.memory` with
24
+ peak RSS, and costly analyses enforce `ASK_MAX_RSS_MB` with a structured
25
+ `MEMORY_TOO_LARGE` refusal. Unset or `0` leaves the ceiling disabled.
26
+
27
+ ### Documentation
28
+
29
+ - Updated the README, English and Spanish user guides, release metadata and
30
+ roadmap status to 5.8.21.
31
+ - The generated `ask --help` remains the authority for command options and
32
+ now reports the installed 5.8.21 version.
33
+
3
34
  ## [5.8.20] — 2026-08-21
4
35
 
5
36
  *`C1-36` is closed on all four remedies. The row was opened by two field
@@ -48,6 +48,18 @@ ask . prepare-context explain
48
48
  pytest tests/
49
49
  ```
50
50
 
51
+ For the normal edit loop, use the incremental runner. The first run builds a
52
+ local dependency map; later runs execute only tests affected by changed code:
53
+
54
+ ```bash
55
+ scripts/test_fast.sh
56
+ ```
57
+
58
+ Pass normal pytest arguments through when needed, for example
59
+ `scripts/test_fast.sh tests/test_cli.py -x`. Run `pytest tests/` before merging
60
+ or when changing shared infrastructure, because the incremental selection is a
61
+ feedback optimization and the full suite remains the final regression gate.
62
+
51
63
  Run a single file:
52
64
  ```bash
53
65
  pytest tests/test_detector_nodejs.py -v
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 5.8.20
3
+ Version: 5.8.21
4
4
  Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
5
5
  Project-URL: Homepage, https://github.com/HarounDominique/sourcecode
6
6
  Project-URL: Repository, https://github.com/HarounDominique/sourcecode
@@ -36,8 +36,11 @@ Provides-Extra: dev
36
36
  Requires-Dist: jsonschema>=4.18; extra == 'dev'
37
37
  Requires-Dist: mcp<2,>=1.2; extra == 'dev'
38
38
  Requires-Dist: mypy>=1.10; extra == 'dev'
39
+ Requires-Dist: pytest-testmon<2.2,>=2.1.4; (python_version < '3.10') and extra == 'dev'
40
+ Requires-Dist: pytest-testmon>=2.2; (python_version >= '3.10') and extra == 'dev'
39
41
  Requires-Dist: pytest-xdist>=3.8; extra == 'dev'
40
- Requires-Dist: pytest>=8; extra == 'dev'
42
+ Requires-Dist: pytest<9,>=8; (python_version < '3.10') and extra == 'dev'
43
+ Requires-Dist: pytest>=8; (python_version >= '3.10') and extra == 'dev'
41
44
  Requires-Dist: ruff>=0.15; extra == 'dev'
42
45
  Provides-Extra: mcp
43
46
  Requires-Dist: mcp<2,>=1.2; extra == 'mcp'
@@ -55,7 +58,7 @@ Description-Content-Type: text/markdown
55
58
  > question. All analysis is local and deterministic; see [Privacy](#configuration--privacy)
56
59
  > before inspecting a repository whose telemetry policy you need to control.
57
60
 
58
- ![Version](https://img.shields.io/badge/version-5.8.20-blue)
61
+ ![Version](https://img.shields.io/badge/version-5.8.21-blue)
59
62
  ![Python](https://img.shields.io/badge/python-3.9%2B-green)
60
63
 
61
64
  Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
@@ -125,7 +128,13 @@ stops at 1 408 files and ends at 5.1s. Commands outside that phase-runner set
125
128
  must not be gated on this variable; their budget applicability remains visible in
126
129
  the [defect ledger](docs/DEFECT-LEDGER.md).
127
130
 
128
- **Current performance status.** Release 5.8.20 retains the shared Canonical IR
131
+ **Memory is measurable and bounded.** Repository-scoped JSON answers publish
132
+ `_meta.memory.peak_rss_mb` and the configured ceiling. For a supervised deep run,
133
+ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
134
+ answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
135
+ unset, or set it to `0`, to disable the ceiling explicitly.
136
+
137
+ **Current performance status.** Release 5.8.21 retains the shared Canonical IR
129
138
  path used by `validation` and now passes that same CIR into labelled `data-exposure`
130
139
  runs; the no-label path remains parse-free. The one-model-per-declared-label path is
131
140
  also retained. These are implementation properties, not duration promises:
@@ -159,7 +168,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
159
168
  # pip / pipx
160
169
  pipx install sourcecode # or: pip install sourcecode
161
170
 
162
- ask version # ask 5.8.20 — and, on a build that has aged,
171
+ ask version # ask 5.8.21 — and, on a build that has aged,
163
172
  # how many releases have probably shipped since
164
173
  ```
165
174
 
@@ -480,7 +489,7 @@ reading JSON sees the same boundary a buyer reads here.
480
489
 
481
490
  | Not covered | Why | What answers it |
482
491
  |---|---|---|
483
- | **General request-input-to-sink taint analysis.** | `ask risk` includes two bounded slices for annotated HTTP parameters and positional calls in repository Java sources: known query sinks, and MyBatis statements that splice a value into their SQL. Anything broader needs value flow through a program, which is a different analysis with a different failure mode: an unsound one produces confident findings that are wrong, and every claim here is meant to be checkable against the line that produced it. | A dataflow scanner (Semgrep, CodeQL) for complete taint. What this product adds on top is reachability and, for the two bounded slices, whether an annotated HTTP input reaches a known concatenated query sink or a spliced SQL statement — the latter with a three-state verdict that says `undecidable` rather than clearing a route it could not follow. |
492
+ | **General request-input-to-sink taint analysis.** | `ask risk` includes two bounded slices for annotated HTTP parameters and positional calls in repository Java sources: known query sinks, and MyBatis statements that splice a value into their SQL. “Known” is a published list — `risk` prints it as `query_sink_vocabulary`, with the calls it deliberately leaves out and why — so a concatenation into a call outside that list is not a miss to be discovered, it is a stated boundary. Anything broader needs value flow through a program, which is a different analysis with a different failure mode: an unsound one produces confident findings that are wrong, and every claim here is meant to be checkable against the line that produced it. | A dataflow scanner (Semgrep, CodeQL) for complete taint. What this product adds on top is reachability and, for the two bounded slices, whether an annotated HTTP input reaches a known concatenated query sink or a spliced SQL statement — the latter with a three-state verdict that says `undecidable` rather than clearing a route it could not follow. |
484
493
  | **Secrets outside Java, Spring configuration and the deployment descriptors — a Helm value, a CI variable file, a shell script.** | The file population this analyzer reads is the Java source, the Spring configuration convention and the descriptors it already parses to resolve an environment. A secret elsewhere is not missed by a weak rule; it is outside the set of files anything here opens. Narrowed by CL-10: a credential stored in `web.xml` or a Spring XML context IS reported (SEC-007), because those files were already being read. | A dedicated secret scanner over the whole tree (gitleaks, trufflehog). |
485
494
  | **Filter-chain order and per-filter URL patterns — the presence of a custom filter is structural only.** | Which filter runs first is decided by bean ordering this analyzer does not resolve. Where two active configurations both match a request, the answer published is `undecided` rather than a guess. | `ask posture --profile <set>` states per endpoint what the readable rules decide and what they leave undecided. |
486
495
  | **Known vulnerabilities in dependencies — no CVE database, no version advisory matching.** | Enriching a vulnerability feed is a different product with a different update cadence; a stale embedded database is worse than no database, because it reads as a clean bill of health. | A dependency scanner (Trivy, OWASP Dependency-Check). `impact-chain` then answers which of its findings anything actually reaches. |
@@ -10,7 +10,7 @@
10
10
  > question. All analysis is local and deterministic; see [Privacy](#configuration--privacy)
11
11
  > before inspecting a repository whose telemetry policy you need to control.
12
12
 
13
- ![Version](https://img.shields.io/badge/version-5.8.20-blue)
13
+ ![Version](https://img.shields.io/badge/version-5.8.21-blue)
14
14
  ![Python](https://img.shields.io/badge/python-3.9%2B-green)
15
15
 
16
16
  Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
@@ -80,7 +80,13 @@ stops at 1 408 files and ends at 5.1s. Commands outside that phase-runner set
80
80
  must not be gated on this variable; their budget applicability remains visible in
81
81
  the [defect ledger](docs/DEFECT-LEDGER.md).
82
82
 
83
- **Current performance status.** Release 5.8.20 retains the shared Canonical IR
83
+ **Memory is measurable and bounded.** Repository-scoped JSON answers publish
84
+ `_meta.memory.peak_rss_mb` and the configured ceiling. For a supervised deep run,
85
+ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
86
+ answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
87
+ unset, or set it to `0`, to disable the ceiling explicitly.
88
+
89
+ **Current performance status.** Release 5.8.21 retains the shared Canonical IR
84
90
  path used by `validation` and now passes that same CIR into labelled `data-exposure`
85
91
  runs; the no-label path remains parse-free. The one-model-per-declared-label path is
86
92
  also retained. These are implementation properties, not duration promises:
@@ -114,7 +120,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
114
120
  # pip / pipx
115
121
  pipx install sourcecode # or: pip install sourcecode
116
122
 
117
- ask version # ask 5.8.20 — and, on a build that has aged,
123
+ ask version # ask 5.8.21 — and, on a build that has aged,
118
124
  # how many releases have probably shipped since
119
125
  ```
120
126
 
@@ -435,7 +441,7 @@ reading JSON sees the same boundary a buyer reads here.
435
441
 
436
442
  | Not covered | Why | What answers it |
437
443
  |---|---|---|
438
- | **General request-input-to-sink taint analysis.** | `ask risk` includes two bounded slices for annotated HTTP parameters and positional calls in repository Java sources: known query sinks, and MyBatis statements that splice a value into their SQL. Anything broader needs value flow through a program, which is a different analysis with a different failure mode: an unsound one produces confident findings that are wrong, and every claim here is meant to be checkable against the line that produced it. | A dataflow scanner (Semgrep, CodeQL) for complete taint. What this product adds on top is reachability and, for the two bounded slices, whether an annotated HTTP input reaches a known concatenated query sink or a spliced SQL statement — the latter with a three-state verdict that says `undecidable` rather than clearing a route it could not follow. |
444
+ | **General request-input-to-sink taint analysis.** | `ask risk` includes two bounded slices for annotated HTTP parameters and positional calls in repository Java sources: known query sinks, and MyBatis statements that splice a value into their SQL. “Known” is a published list — `risk` prints it as `query_sink_vocabulary`, with the calls it deliberately leaves out and why — so a concatenation into a call outside that list is not a miss to be discovered, it is a stated boundary. Anything broader needs value flow through a program, which is a different analysis with a different failure mode: an unsound one produces confident findings that are wrong, and every claim here is meant to be checkable against the line that produced it. | A dataflow scanner (Semgrep, CodeQL) for complete taint. What this product adds on top is reachability and, for the two bounded slices, whether an annotated HTTP input reaches a known concatenated query sink or a spliced SQL statement — the latter with a three-state verdict that says `undecidable` rather than clearing a route it could not follow. |
439
445
  | **Secrets outside Java, Spring configuration and the deployment descriptors — a Helm value, a CI variable file, a shell script.** | The file population this analyzer reads is the Java source, the Spring configuration convention and the descriptors it already parses to resolve an environment. A secret elsewhere is not missed by a weak rule; it is outside the set of files anything here opens. Narrowed by CL-10: a credential stored in `web.xml` or a Spring XML context IS reported (SEC-007), because those files were already being read. | A dedicated secret scanner over the whole tree (gitleaks, trufflehog). |
440
446
  | **Filter-chain order and per-filter URL patterns — the presence of a custom filter is structural only.** | Which filter runs first is decided by bean ordering this analyzer does not resolve. Where two active configurations both match a request, the answer published is `undecided` rather than a guess. | `ask posture --profile <set>` states per endpoint what the readable rules decide and what they leave undecided. |
441
447
  | **Known vulnerabilities in dependencies — no CVE database, no version advisory matching.** | Enriching a vulnerability feed is a different product with a different update cadence; a stale embedded database is worse than no database, because it reads as a clean bill of health. | A dependency scanner (Trivy, OWASP Dependency-Check). `impact-chain` then answers which of its findings anything actually reaches. |