sourcecode 5.9.22__tar.gz → 5.9.24__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 (465) hide show
  1. {sourcecode-5.9.22 → sourcecode-5.9.24}/CHANGELOG.md +46 -0
  2. {sourcecode-5.9.22 → sourcecode-5.9.24}/PKG-INFO +16 -6
  3. {sourcecode-5.9.22 → sourcecode-5.9.24}/README.md +15 -5
  4. sourcecode-5.9.24/docs/AUDIT-2026-09-01-EXTERNAL-5.9.22.md +71 -0
  5. sourcecode-5.9.24/docs/AUDIT-2026-09-01-EXTERNAL-5.9.23.md +40 -0
  6. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/DEFECT-LEDGER.md +39 -0
  7. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/PRODUCT_TIERS.md +1 -1
  8. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/USER_GUIDE.md +8 -5
  9. {sourcecode-5.9.22 → sourcecode-5.9.24}/pyproject.toml +1 -1
  10. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/__init__.py +1 -1
  11. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/answer_bounds.py +27 -10
  12. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/canonical_ir.py +1 -0
  13. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/cli.py +116 -13
  14. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/migrate_check.py +14 -0
  15. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/non_coverage.py +17 -0
  16. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/output_budget.py +18 -4
  17. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/release_info.py +1 -1
  18. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/repository_ir.py +46 -1
  19. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/resource_budget.py +10 -5
  20. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/rule_catalog.py +1 -0
  21. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/spring_findings.py +4 -3
  22. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/spring_security_audit.py +57 -0
  23. {sourcecode-5.9.22 → sourcecode-5.9.24}/.github/workflows/build-windows.yml +0 -0
  24. {sourcecode-5.9.22 → sourcecode-5.9.24}/.github/workflows/perf-gate.yml +0 -0
  25. {sourcecode-5.9.22 → sourcecode-5.9.24}/.github/workflows/windows-battery.yml +0 -0
  26. {sourcecode-5.9.22 → sourcecode-5.9.24}/.github/workflows/windows-regression.yml +0 -0
  27. {sourcecode-5.9.22 → sourcecode-5.9.24}/.gitignore +0 -0
  28. {sourcecode-5.9.22 → sourcecode-5.9.24}/.ruff.toml +0 -0
  29. {sourcecode-5.9.22 → sourcecode-5.9.24}/CLAUDE.md +0 -0
  30. {sourcecode-5.9.22 → sourcecode-5.9.24}/CODE_OF_CONDUCT.md +0 -0
  31. {sourcecode-5.9.22 → sourcecode-5.9.24}/CONTRIBUTING.md +0 -0
  32. {sourcecode-5.9.22 → sourcecode-5.9.24}/LICENSE +0 -0
  33. {sourcecode-5.9.22 → sourcecode-5.9.24}/NOTICE +0 -0
  34. {sourcecode-5.9.22 → sourcecode-5.9.24}/SECURITY.md +0 -0
  35. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
  36. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
  37. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
  38. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
  39. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
  40. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
  41. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
  42. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
  43. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
  44. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
  45. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
  46. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
  47. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
  48. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
  49. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
  50. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +0 -0
  51. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.3.md +0 -0
  52. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-28-EXTERNAL-5.9.10.md +0 -0
  53. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.16.md +0 -0
  54. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.17.md +0 -0
  55. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-2026-08-31-REMEDIATION-5.9.18.md +0 -0
  56. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
  57. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/CACHE.md +0 -0
  58. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/COMMERCIAL-OFFER.md +0 -0
  59. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/CUSTOMER-VALIDATION.md +0 -0
  60. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/DEMO-5MIN.md +0 -0
  61. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/DEVELOPMENT-ROADMAP.md +0 -0
  62. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
  63. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/EXECUTION-PLAN-12MO.md +0 -0
  64. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/EXECUTIVE-ROADMAP.md +0 -0
  65. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/MANUAL-USUARIO.md +0 -0
  66. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/MODERNIZATION.md +0 -0
  67. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/PRODUCT-ROUTE.md +0 -0
  68. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/PRODUCT_AUDIT.md +0 -0
  69. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/PRODUCT_IDENTITY.md +0 -0
  70. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/RC1-CHECKLIST.md +0 -0
  71. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/RD-JVM-ASK-TRIAGE-2026-08-31.md +0 -0
  72. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/RELEASE-CHECKLIST.md +0 -0
  73. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/RELEASE-VERIFICATION.md +0 -0
  74. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
  75. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
  76. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
  77. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/DESIGN-assessment-report.md +0 -0
  78. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
  79. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
  80. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
  81. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
  82. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
  83. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
  84. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
  85. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
  86. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/DESIGN-pack-manifest.md +0 -0
  87. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
  88. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
  89. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
  90. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/EPV-p6-class-typeref.md +0 -0
  91. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
  92. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
  93. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
  94. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
  95. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/adr/0001-semantic-ir.md +0 -0
  96. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
  97. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
  98. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
  99. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
  100. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/adr/0006-performance-harness.md +0 -0
  101. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/adr/0007-composition-semantics.md +0 -0
  102. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/adr/0008-answer-coherence.md +0 -0
  103. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/consumer-disposition-inventory.md +0 -0
  104. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/overview.md +0 -0
  105. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/product-architecture-review.md +0 -0
  106. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/product-strategy-layering.md +0 -0
  107. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
  108. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/architecture/semantic-ir-roadmap.md +0 -0
  109. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/baseline-ci.yml +0 -0
  110. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/commercial-pipeline-audit.md +0 -0
  111. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/contracts-ci.yml +0 -0
  112. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/contracts.md +0 -0
  113. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
  114. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
  115. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
  116. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
  117. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
  118. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
  119. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
  120. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
  121. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/licensing-schema.md +0 -0
  122. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/migrate-check.md +0 -0
  123. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/pack-gate-github-actions.yml +0 -0
  124. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/pack-gate-gitlab.yml +0 -0
  125. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/README.md +0 -0
  126. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/REGRESSION-GATE.md +0 -0
  127. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
  128. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
  129. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
  130. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
  131. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
  132. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
  133. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
  134. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
  135. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
  136. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
  137. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
  138. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
  139. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
  140. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
  141. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
  142. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
  143. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
  144. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
  145. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
  146. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
  147. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
  148. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
  149. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
  150. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
  151. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
  152. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
  153. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
  154. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
  155. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
  156. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
  157. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
  158. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
  159. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
  160. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
  161. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
  162. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
  163. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
  164. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
  165. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
  166. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
  167. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
  168. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
  169. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/5.9.22/petclinic__ask__cold.json +0 -0
  170. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/5.9.22/petclinic__ask__warm.json +0 -0
  171. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/gate-latest/README.md +0 -0
  172. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
  173. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
  174. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
  175. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
  176. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
  177. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
  178. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/baselines/reference-best/README.md +0 -0
  179. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/perf/corpus-testing-2026-08-22.md +0 -0
  180. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/posture.md +0 -0
  181. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/privacy.md +0 -0
  182. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/pro-experience-audit.md +0 -0
  183. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/schema.md +0 -0
  184. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/spec/envelope-v1.md +0 -0
  185. {sourcecode-5.9.22 → sourcecode-5.9.24}/docs/spring-audit-ci.yml +0 -0
  186. {sourcecode-5.9.22 → sourcecode-5.9.24}/hatch_build.py +0 -0
  187. {sourcecode-5.9.22 → sourcecode-5.9.24}/scripts/compare_integration_engines.py +0 -0
  188. {sourcecode-5.9.22 → sourcecode-5.9.24}/scripts/context_cost_harness.py +0 -0
  189. {sourcecode-5.9.22 → sourcecode-5.9.24}/scripts/customer_smoke_test.sh +0 -0
  190. {sourcecode-5.9.22 → sourcecode-5.9.24}/scripts/generate_jdk_exports.py +0 -0
  191. {sourcecode-5.9.22 → sourcecode-5.9.24}/scripts/perf_gate.py +0 -0
  192. {sourcecode-5.9.22 → sourcecode-5.9.24}/scripts/perf_harness.py +0 -0
  193. {sourcecode-5.9.22 → sourcecode-5.9.24}/scripts/sync_gate_anchors.py +0 -0
  194. {sourcecode-5.9.22 → sourcecode-5.9.24}/scripts/test_fast.sh +0 -0
  195. {sourcecode-5.9.22 → sourcecode-5.9.24}/scripts/windows_reliability_matrix.py +0 -0
  196. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/__main__.py +0 -0
  197. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/access_drift.py +0 -0
  198. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/adaptive_scanner.py +0 -0
  199. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/analysis_budget.py +0 -0
  200. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/archetype.py +0 -0
  201. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/architectural_baseline.py +0 -0
  202. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/architectural_delta.py +0 -0
  203. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/architecture_analyzer.py +0 -0
  204. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/architecture_summary.py +0 -0
  205. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/ast_extractor.py +0 -0
  206. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/audit_clusters.py +0 -0
  207. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/audit_recipe.py +0 -0
  208. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/audit_report.py +0 -0
  209. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/audit_since.py +0 -0
  210. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/audit_verify.py +0 -0
  211. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/baseline_attestation.py +0 -0
  212. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/baseline_autocapture.py +0 -0
  213. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/breaking_changes.py +0 -0
  214. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/build_modules.py +0 -0
  215. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/build_stamp.py +0 -0
  216. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/bundled_docs.py +0 -0
  217. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/c4_render.py +0 -0
  218. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/cache.py +0 -0
  219. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/cache_model.py +0 -0
  220. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/cache_observation.py +0 -0
  221. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/call_surface.py +0 -0
  222. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/caller_metrics.py +0 -0
  223. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/caller_reach.py +0 -0
  224. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/chain_rules.py +0 -0
  225. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/change_plan.py +0 -0
  226. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/ci_output.py +0 -0
  227. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/cir_graphs.py +0 -0
  228. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/classifier.py +0 -0
  229. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/click_runtime.py +0 -0
  230. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/client_calls.py +0 -0
  231. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/code_notes_analyzer.py +0 -0
  232. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/compare.py +0 -0
  233. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/confidence_analyzer.py +0 -0
  234. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/constraint_diff.py +0 -0
  235. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/consumer_join.py +0 -0
  236. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/container_wiring.py +0 -0
  237. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/context_cache.py +0 -0
  238. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/context_graph.py +0 -0
  239. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/context_scorer.py +0 -0
  240. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/context_summarizer.py +0 -0
  241. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/contract_diff.py +0 -0
  242. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/contract_init.py +0 -0
  243. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/contract_model.py +0 -0
  244. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/contract_pipeline.py +0 -0
  245. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/coverage_parser.py +0 -0
  246. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/cve_feed.py +0 -0
  247. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/cve_reachability.py +0 -0
  248. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/data_exposure.py +0 -0
  249. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/data_labels.py +0 -0
  250. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/declarations.py +0 -0
  251. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/defect_classes/__init__.py +0 -0
  252. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/defect_classes/registry.json +0 -0
  253. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/defect_identity.py +0 -0
  254. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/degradation.py +0 -0
  255. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/dependency_analyzer.py +0 -0
  256. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/deployment_prefix.py +0 -0
  257. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detach.py +0 -0
  258. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/__init__.py +0 -0
  259. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/base.py +0 -0
  260. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/csproj_parser.py +0 -0
  261. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/dart.py +0 -0
  262. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/dotnet.py +0 -0
  263. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/elixir.py +0 -0
  264. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/go.py +0 -0
  265. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/heuristic.py +0 -0
  266. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/hybrid.py +0 -0
  267. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/java.py +0 -0
  268. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/jvm_ext.py +0 -0
  269. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/nodejs.py +0 -0
  270. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/parsers.py +0 -0
  271. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/php.py +0 -0
  272. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/project.py +0 -0
  273. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/python.py +0 -0
  274. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/ruby.py +0 -0
  275. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/rust.py +0 -0
  276. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/systems.py +0 -0
  277. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/terraform.py +0 -0
  278. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/detectors/tooling.py +0 -0
  279. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/doc_analyzer.py +0 -0
  280. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/dynamic_argument_surface.py +0 -0
  281. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/empty_reach.py +0 -0
  282. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/endpoint_disposition.py +0 -0
  283. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/endpoint_literals.py +0 -0
  284. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/endpoint_metrics.py +0 -0
  285. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/entrypoint_classifier.py +0 -0
  286. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/env_analyzer.py +0 -0
  287. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/envelope.py +0 -0
  288. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/environment_resolution.py +0 -0
  289. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/error_schema.py +0 -0
  290. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/evidence_provider.py +0 -0
  291. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/execution_plan.py +0 -0
  292. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/explain.py +0 -0
  293. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/explain_endpoint.py +0 -0
  294. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/facts/__init__.py +0 -0
  295. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/facts/registry.json +0 -0
  296. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/field_deprecations.py +0 -0
  297. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/file_chunker.py +0 -0
  298. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/file_classifier.py +0 -0
  299. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/filter_surface.py +0 -0
  300. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/findings_baseline.py +0 -0
  301. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/format_contract.py +0 -0
  302. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/fqn_utils.py +0 -0
  303. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/functional_routes.py +0 -0
  304. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/gate_anchors.py +0 -0
  305. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/git_analyzer.py +0 -0
  306. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/git_checkout.py +0 -0
  307. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/github_diff.py +0 -0
  308. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/graph_analyzer.py +0 -0
  309. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/graph_evidence.py +0 -0
  310. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/hibernate_strat.py +0 -0
  311. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/identity_fallback.py +0 -0
  312. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/integration_coordinates.py +0 -0
  313. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/intent_router.py +0 -0
  314. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/jdk_exports.py +0 -0
  315. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/jvm_inventory.py +0 -0
  316. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/license.py +0 -0
  317. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/manifest_cache.py +0 -0
  318. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/mcp/__init__.py +0 -0
  319. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/mcp/dependency_import.py +0 -0
  320. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  321. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  322. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  323. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  324. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  325. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/mcp/orchestrator.py +0 -0
  326. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/mcp/registry.py +0 -0
  327. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/mcp/runner.py +0 -0
  328. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/mcp/server.py +0 -0
  329. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/mcp_nudge.py +0 -0
  330. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/metrics_analyzer.py +0 -0
  331. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/migration_apply.py +0 -0
  332. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/migration_blast.py +0 -0
  333. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/openapi_surface.py +0 -0
  334. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/openrewrite_recipe.py +0 -0
  335. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/output_bounds.py +0 -0
  336. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/output_ceiling.py +0 -0
  337. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/output_encoding.py +0 -0
  338. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/output_sink.py +0 -0
  339. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/pack_manifest.py +0 -0
  340. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/packs.py +0 -0
  341. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/parallel.py +0 -0
  342. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/parse_cache.py +0 -0
  343. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/partial_contract.py +0 -0
  344. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/path_admission.py +0 -0
  345. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/path_display.py +0 -0
  346. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/path_filters.py +0 -0
  347. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/perf.py +0 -0
  348. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/phased_run.py +0 -0
  349. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/pipe_contract.py +0 -0
  350. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/posture.py +0 -0
  351. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/pr_comment_renderer.py +0 -0
  352. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/pr_impact.py +0 -0
  353. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/pr_risk.py +0 -0
  354. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/prepare_context.py +0 -0
  355. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/product_info.py +0 -0
  356. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/progress.py +0 -0
  357. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/provenance.py +0 -0
  358. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/ranking_engine.py +0 -0
  359. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/readiness_timeline.py +0 -0
  360. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/readonly.py +0 -0
  361. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/reconciliation.py +0 -0
  362. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/redactor.py +0 -0
  363. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/reference_facts.py +0 -0
  364. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/regress.py +0 -0
  365. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/regulatory_pack.py +0 -0
  366. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/relevance_scorer.py +0 -0
  367. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/remediation_diff.py +0 -0
  368. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/remediation_flow.py +0 -0
  369. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/remediation_report.py +0 -0
  370. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/remedies.py +0 -0
  371. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/rename_refactor.py +0 -0
  372. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/repo_classifier.py +0 -0
  373. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/__init__.py +0 -0
  374. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/context.py +0 -0
  375. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/errors.py +0 -0
  376. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/executor.py +0 -0
  377. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/planner.py +0 -0
  378. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/query.py +0 -0
  379. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/request.py +0 -0
  380. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/resolution.py +0 -0
  381. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/result.py +0 -0
  382. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/retriever.py +0 -0
  383. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/runtime.py +0 -0
  384. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/steps.py +0 -0
  385. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
  386. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/steps_graph.py +0 -0
  387. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/steps_impact.py +0 -0
  388. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/steps_intf.py +0 -0
  389. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/steps_struct.py +0 -0
  390. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/retrieval/steps_txsec.py +0 -0
  391. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/ris.py +0 -0
  392. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/risk.py +0 -0
  393. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/risk_model.py +0 -0
  394. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/rule_pass.py +0 -0
  395. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/runs.py +0 -0
  396. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/runtime_classifier.py +0 -0
  397. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/sarif.py +0 -0
  398. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/sarif_emit.py +0 -0
  399. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/scanner.py +0 -0
  400. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/schema.py +0 -0
  401. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/schema_producers.py +0 -0
  402. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/schema_registry.py +0 -0
  403. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
  404. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
  405. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
  406. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
  407. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
  408. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
  409. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
  410. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/security_chain.py +0 -0
  411. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/security_config.py +0 -0
  412. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/security_config_scan.py +0 -0
  413. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/security_posture.py +0 -0
  414. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/selection_contract.py +0 -0
  415. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/self_audit.py +0 -0
  416. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/selftest.py +0 -0
  417. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/semantic_analyzer.py +0 -0
  418. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/semantic_impact_engine.py +0 -0
  419. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/semantic_integration_engine.py +0 -0
  420. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/semantic_services.py +0 -0
  421. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/serializer.py +0 -0
  422. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/servlet_surface.py +0 -0
  423. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/source_text.py +0 -0
  424. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/spring_event_topology.py +0 -0
  425. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/spring_impact.py +0 -0
  426. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/spring_model.py +0 -0
  427. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/spring_profiles.py +0 -0
  428. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/spring_properties.py +0 -0
  429. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/spring_semantic.py +0 -0
  430. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/spring_tx_analyzer.py +0 -0
  431. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/sql_taint.py +0 -0
  432. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/summarizer.py +0 -0
  433. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/target_admission.py +0 -0
  434. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/telemetry/__init__.py +0 -0
  435. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/telemetry/config.py +0 -0
  436. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/telemetry/consent.py +0 -0
  437. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/telemetry/events.py +0 -0
  438. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/telemetry/filters.py +0 -0
  439. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/telemetry/transport.py +0 -0
  440. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/test_gap_ranking.py +0 -0
  441. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/test_sources.py +0 -0
  442. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/text_input.py +0 -0
  443. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/timeline.py +0 -0
  444. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/timeline_cache.py +0 -0
  445. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/token_estimate.py +0 -0
  446. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/tree_utils.py +0 -0
  447. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/type_usage_surface.py +0 -0
  448. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/validation_inference.py +0 -0
  449. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/validation_surface.py +0 -0
  450. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/verify_edit.py +0 -0
  451. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/verify_repo.py +0 -0
  452. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/verify_rules.py +0 -0
  453. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/version_check.py +0 -0
  454. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/vex.py +0 -0
  455. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/waivers.py +0 -0
  456. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/watch_loop.py +0 -0
  457. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/wired_surface.py +0 -0
  458. {sourcecode-5.9.22 → sourcecode-5.9.24}/src/sourcecode/workspace.py +0 -0
  459. {sourcecode-5.9.22 → sourcecode-5.9.24}/supabase/functions/README.md +0 -0
  460. {sourcecode-5.9.22 → sourcecode-5.9.24}/supabase/functions/get-license/index.ts +0 -0
  461. {sourcecode-5.9.22 → sourcecode-5.9.24}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
  462. {sourcecode-5.9.22 → sourcecode-5.9.24}/supabase/functions/telemetry/index.ts +0 -0
  463. {sourcecode-5.9.22 → sourcecode-5.9.24}/supabase/sql/license_event_ordering.sql +0 -0
  464. {sourcecode-5.9.22 → sourcecode-5.9.24}/supabase/sql/licensing_schema.sql +0 -0
  465. {sourcecode-5.9.22 → sourcecode-5.9.24}/supabase/sql/telemetry_events.sql +0 -0
@@ -1,5 +1,51 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.9.24] — 2026-09-01
4
+
5
+ *Follow-up correction batch after the external 5.9.23 audit.*
6
+
7
+ ### Fixed
8
+
9
+ - Aggregated nested answer-cap contracts so compact output reports rows hidden
10
+ below nested payloads instead of publishing a misleading zero count.
11
+ - Bound `--jobs` to 128 workers, preventing accidental unbounded process-pool
12
+ requests while retaining automatic and explicit parallelism.
13
+ - Removed Rich markup from help output written to a pipe, so scripts and CI logs
14
+ receive plain, parseable text.
15
+ - Accepted an optional repository path on `remediation-report` for consistency
16
+ with repository-oriented command invocation.
17
+
18
+ ### Known Limitations
19
+
20
+ - The external 5.9.23 audit measured rare zero-byte successful answers from
21
+ `risk` and Markdown `audit-report`. This remains a P0 CI blocker: validate
22
+ output bytes until `EMPTY_ANSWER` is enforced globally.
23
+ - `--agent` can reject large repositories after expensive post-hoc RSS sampling,
24
+ and nested workspaces can make root help unacceptably slow. The prioritized
25
+ remediation queue is maintained in the defect ledger.
26
+
27
+ ## [5.9.23] — 2026-09-01
28
+
29
+ *Regression hardening after the 5.9.22 audit and testing-repository battery.*
30
+
31
+ ### Fixed
32
+
33
+ - `--compact` and `--agent` reserve envelope metadata before trimming, so their
34
+ published 30 KB and 40 KB stdout ceilings remain true after final rendering.
35
+ - `--agent` now has a 1,536 MB default RSS ceiling, reports context construction
36
+ accurately in progress output, and rejects Java repositories above 10,000 files
37
+ with `AGENT_SCOPE_TOO_LARGE` before an unbounded deep analysis can be killed.
38
+ - Agent mode no longer builds a module graph implicitly; callers can still request
39
+ it explicitly with `--graph-modules`.
40
+
41
+ ### Documentation
42
+
43
+ - Added the Windows large-repository audit with measured P0/P1 regressions,
44
+ performance boundaries and explicit closure requirements.
45
+ - Synchronized the defect ledger and README so silent-success, incomplete
46
+ coverage, compact-output, cache-growth and deep-agent memory risks are visible
47
+ rather than implied closed by smaller-repository measurements.
48
+
3
49
  ## [5.9.22] — 2026-08-31
4
50
 
5
51
  *Large-repository route projection performance.*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 5.9.22
3
+ Version: 5.9.24
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
@@ -59,7 +59,7 @@ Description-Content-Type: text/markdown
59
59
  > question. All analysis is local and deterministic; see [Privacy](#configuration--privacy)
60
60
  > before inspecting a repository whose telemetry policy you need to control.
61
61
 
62
- ![Version](https://img.shields.io/badge/version-5.9.22-blue)
62
+ ![Version](https://img.shields.io/badge/version-5.9.24-blue)
63
63
  ![Python](https://img.shields.io/badge/python-3.9%2B-green)
64
64
 
65
65
  Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
@@ -191,10 +191,10 @@ must not be gated on this variable; their budget applicability remains visible i
191
191
  the [defect ledger](docs/DEFECT-LEDGER.md).
192
192
 
193
193
  **Memory is measurable and bounded.** Repository-scoped JSON answers publish
194
- `_meta.memory.peak_rss_mb` and the configured ceiling. For a supervised deep run,
195
- set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
196
- answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
197
- unset, or set it to `0`, to disable the ceiling explicitly.
194
+ `_meta.memory.peak_rss_mb` and the configured ceiling. `--agent` applies a
195
+ 1,536 MB ceiling by default; set `ASK_MAX_RSS_MB=<megabytes>` to override it or
196
+ `ASK_MAX_RSS_MB=0` to disable it explicitly. If the process exceeds the ceiling,
197
+ ASK refuses the answer with `MEMORY_TOO_LARGE`, including the observed peak and limit.
198
198
 
199
199
  **Current performance status.** Release 5.9.22 retains the shared Canonical IR
200
200
  path used by `validation` and now passes that same CIR into labelled `data-exposure`
@@ -212,6 +212,16 @@ exit 75 (`--allow-partial` accepts one deliberately). The long-run progress
212
212
  message names the phase it is in and whether that phase has changed, so a slow run
213
213
  is distinguishable from a blocked one.
214
214
 
215
+ **External audit boundary (2026-09-01).** The latest Windows audit rates the
216
+ large-repository experience at **6.9/10** and reports open P0/P1 issues: empty
217
+ successful Markdown `audit-report`, silent `risk` termination, multi-gigabyte
218
+ deep-agent RSS, incomplete parse/coverage disclosure and oversized compact
219
+ surfaces. The 5.9.23 audit found a CI-blocking empty-output regression that
220
+ remains open in 5.9.24; do not use `risk` or Markdown `audit-report` as
221
+ unattended gates until it is fixed. Findings are tracked in the [external audit](docs/AUDIT-2026-09-01-EXTERNAL-5.9.23.md)
222
+ and [defect ledger](docs/DEFECT-LEDGER.md); they are not closed by the existing
223
+ engineering-host measurements.
224
+
215
225
  The current external audit still records two open availability limits, and they
216
226
  are held open deliberately: `audit-report --format markdown` under contention, and
217
227
  the root compact flow under strict timeouts on very large monorepos. Neither
@@ -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.9.22-blue)
13
+ ![Version](https://img.shields.io/badge/version-5.9.24-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
@@ -142,10 +142,10 @@ must not be gated on this variable; their budget applicability remains visible i
142
142
  the [defect ledger](docs/DEFECT-LEDGER.md).
143
143
 
144
144
  **Memory is measurable and bounded.** Repository-scoped JSON answers publish
145
- `_meta.memory.peak_rss_mb` and the configured ceiling. For a supervised deep run,
146
- set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
147
- answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
148
- unset, or set it to `0`, to disable the ceiling explicitly.
145
+ `_meta.memory.peak_rss_mb` and the configured ceiling. `--agent` applies a
146
+ 1,536 MB ceiling by default; set `ASK_MAX_RSS_MB=<megabytes>` to override it or
147
+ `ASK_MAX_RSS_MB=0` to disable it explicitly. If the process exceeds the ceiling,
148
+ ASK refuses the answer with `MEMORY_TOO_LARGE`, including the observed peak and limit.
149
149
 
150
150
  **Current performance status.** Release 5.9.22 retains the shared Canonical IR
151
151
  path used by `validation` and now passes that same CIR into labelled `data-exposure`
@@ -163,6 +163,16 @@ exit 75 (`--allow-partial` accepts one deliberately). The long-run progress
163
163
  message names the phase it is in and whether that phase has changed, so a slow run
164
164
  is distinguishable from a blocked one.
165
165
 
166
+ **External audit boundary (2026-09-01).** The latest Windows audit rates the
167
+ large-repository experience at **6.9/10** and reports open P0/P1 issues: empty
168
+ successful Markdown `audit-report`, silent `risk` termination, multi-gigabyte
169
+ deep-agent RSS, incomplete parse/coverage disclosure and oversized compact
170
+ surfaces. The 5.9.23 audit found a CI-blocking empty-output regression that
171
+ remains open in 5.9.24; do not use `risk` or Markdown `audit-report` as
172
+ unattended gates until it is fixed. Findings are tracked in the [external audit](docs/AUDIT-2026-09-01-EXTERNAL-5.9.23.md)
173
+ and [defect ledger](docs/DEFECT-LEDGER.md); they are not closed by the existing
174
+ engineering-host measurements.
175
+
166
176
  The current external audit still records two open availability limits, and they
167
177
  are held open deliberately: `audit-report --format markdown` under contention, and
168
178
  the root compact flow under strict timeouts on very large monorepos. Neither
@@ -0,0 +1,71 @@
1
+ # External Audit — ASK Engine 5.9.22
2
+
3
+ **Received:** 2026-09-01
4
+ **Audited build:** `5.9.22` (`64c8b3e429eadd7a12d34eb1e5eefa0c08e430e4`)
5
+ **Platform:** Windows 11, Python 3.10, Git Bash
6
+ **Corpus:** repositories under `laboratorioDePruebas/testing/`; the largest
7
+ reported target contains 3,342 Java files.
8
+
9
+ This document records external observations. An observation is not a closure:
10
+ the defect ledger remains authoritative until a fix, all affected consumers and
11
+ a regression assertion exist.
12
+
13
+ ## Executive Result
14
+
15
+ The audit rates ASK Engine **6.6/10** on the large MSAS corpus and **7.5/10** on
16
+ the smaller nine-axis assessment. The measurements agree on the main risk:
17
+ source analysis is accurate and unusually explicit about uncertainty, but large
18
+ repository execution and several output contracts are not yet reliable enough
19
+ for interactive or unattended security use.
20
+
21
+ Strengths confirmed: endpoint extraction, effective access resolution,
22
+ determinism, structured input errors, cache warm-up and bounded CI-oriented
23
+ flows. The principal gaps are silent success, incomplete parse disclosure,
24
+ SQL-injection recall, memory, and inconsistent CLI contracts.
25
+
26
+ ## Priority Findings
27
+
28
+ | ID | Priority | Status | Finding and closure requirement |
29
+ |---|---|---|---|
30
+ | `BUG-01` | P0 | Open | `audit-report --format markdown` reproduced with `rc=0` and empty stdout. Add a non-empty-answer invariant and full/partial renderer coverage. |
31
+ | `BUG-02` | P0 | Open | Large `risk` ended `rc=127` with no output or structured error. Add fail-fast resource/process handling and durable partial checkpoints. |
32
+ | `BUG-12` | P0 | Open | Deep `--agent` output construction reaches multi-gigabyte RSS before producing a small answer. Bound projection while building, not after materialization. |
33
+ | `BUG-03` | P1 | Open | `content_id` changes between cold and warm because cache state is hashed into the answer. Separate execution metadata from answer identity. |
34
+ | `BUG-04` | P1 | Open | `selftest` publishes `complete=true` with five error rows. Derive bounds from its actual result population. |
35
+ | `BUG-04b` | P1 | Open | `selftest` uses a fixed 120-second deadline not covered by the documented analysis budget. Make it configurable or refuse unscoped large runs. |
36
+ | `BUG-05` | P1 | Open | Overloaded endpoint handlers can receive the wrong declaration line. Resolve by mapping annotation or publish ambiguity. |
37
+ | `BUG-06` | P1 | Open | The `repo-ir --budget-tokens 12000` help example is below the measured minimum view (~20,367 tokens) on the audited corpus. |
38
+ | `BUG-07` | P1 | Open | `--compact` exceeds the published size expectation on `migrate-check` and `spring-audit`. Apply bounded projections with omission metadata. |
39
+ | `BUG-08` | P1 | Open | Root help claims universal `--path`, `--repo` and `--dir` aliases, but sampled commands reject them. Align implementation and help. |
40
+ | `BUG-09` | P2 | Open | Related diff commands disagree on `--base`, `--base-ref`, `--since`, `--repo` and `--path`. Accept compatible aliases or publish one vocabulary. |
41
+ | `BUG-10` | P1 | Open | Unsupported routing styles can produce `coverage.gaps=[]`. Publish detected-but-unmodeled routing gaps. |
42
+ | `BUG-11` | P1 | Open | Default `pack assessment` can fail on a small Spring repository. Use a bounded default or explicit full mode. |
43
+ | `BUG-13` | P1 | Open | Unscoped `selftest` starts over nested repositories after warning. Refuse and require an explicit repository path. |
44
+ | `BUG-15` | P2 | Open | Non-terminal help output contains visible markup/control text. Strip markup when stdout is not a TTY. |
45
+ | `BUG-16` | P1 | Open | Context-cache growth is not bounded or documented; about 1.5 GB was measured. Add a published budget, eviction policy and status. |
46
+ | `BUG-19` | P2 | Open | Unknown-command errors use plain text instead of the JSON error envelope. Normalize command admission errors. |
47
+ | `BUG-20` | P2 | Open | `--detach` can report the unresolved user path while writing to a resolved Windows path. Publish the actual absolute output path. |
48
+ | `BUG-21` | P2 | Open | `--jobs 999` is silently clipped. Publish the effective limit or reject out-of-range values. |
49
+ | `BUG-22` | P1 | Open | RSS ceilings are checked post-hoc; a 50 MB ceiling was reported only after ~768 MB. Add periodic in-flight sampling and orderly abort. |
50
+ | `BUG-23` | P2 / coverage | Open | Micronaut is detected but unsupported and its controllers are not modeled as endpoints. Add a scoped coverage contract. |
51
+
52
+ ## Performance Evidence
53
+
54
+ The audit measured `--agent` on ThingsBoard at **182.6 s / 2,088 MB RSS** and
55
+ `spring-audit` at **164.2 s cold**. On the larger MSAS corpus it reports
56
+ `ask . --agent` at **447 s**, `contract-diff` at **329 s**, `delta` at **187 s**,
57
+ and `validation --compact` at **91 s**. Warm root compact analysis can be below
58
+ one second; these are cold/deep-path costs.
59
+
60
+ Until the P0/P1 rows close, do not market `risk`, full `audit-report` or full
61
+ `--agent` as interactive guarantees for 3,000+ Java-file repositories. The
62
+ target remains bounded interactive views below 20 s and peak RSS below 400 MB
63
+ on the reference large-repository tier.
64
+
65
+ ## Required Closure Bar
66
+
67
+ Each P0/P1 row requires a focused regression test, output/exit-code assertions,
68
+ cold/warm/concurrent runs on the affected platform, and a ledger entry naming
69
+ the fix commit and remaining verification boundary. Documentation alone never
70
+ closes a defect.
71
+
@@ -0,0 +1,40 @@
1
+ # External Audit - 5.9.23
2
+
3
+ ## Release Status
4
+
5
+ The 5.9.23 re-audit rates ASK Engine at **6.9/10**, down from 7.5. Precision
6
+ remains strong and SEC-010 closes the previously reported concatenated-SQLi
7
+ coverage gap. The release is **not recommended for unattended CI gating** until
8
+ the empty-success invariant is implemented.
9
+
10
+ ## Priority Regressions
11
+
12
+ 1. `NEW-01` P0: `risk` and Markdown `audit-report` were observed exiting 0 with
13
+ zero stdout and stderr. The audit measured 3 occurrences in 47 runs with
14
+ byte counting. Its later controls did not reproduce warm-cache or contention
15
+ causality, so those are not asserted as the root cause.
16
+ 2. `REG-02` Critical: the default 1,536 MB agent ceiling rejects valid large
17
+ repositories only after expensive work; the effective default ceiling is not
18
+ visible in successful-agent metadata.
19
+ 3. `BUG-01` P0: malformed Java can disappear without file-specific disclosure.
20
+ 4. `REG-03` High: warm Spring audit runs were 2.1-3.8x slower despite full CIR
21
+ reuse.
22
+ 5. `NEW-02` High: overloaded endpoint handlers can publish the wrong declaration
23
+ line while claiming a handler-declaration anchor.
24
+
25
+ ## Verified Improvements
26
+
27
+ - SEC-010 emits a dedicated high-severity finding for HTTP input reaching a
28
+ concatenated SQL query sink, with no observed false positives on three clean
29
+ repositories.
30
+ - Compact migration inventory is materially bounded and publishes per-framework
31
+ omission contracts.
32
+ - Help recommendations use repository profile evidence and route aliases were
33
+ restored across the sampled command surface.
34
+
35
+ ## Verification Boundary
36
+
37
+ The audit was performed on Windows 11 / Python 3.10 across 21 repositories and
38
+ about 180 invocations. Reported timings are platform-specific evidence, not
39
+ portable performance guarantees. Its zero-output finding is operationally
40
+ critical even though its precise trigger remains unproven.
@@ -14,6 +14,45 @@ Status values: `open` · `in-progress` · `closed <version>` · `by-design` (wit
14
14
  The facts these rows are keyed to are published: `ask schema facts-v1` prints the registry
15
15
  (authority, definition, consumers, parity test) that the release battery enforces.
16
16
 
17
+ ## Current Synchronization — External Audit `5.9.23`, carried into `5.9.24` (2026-09-01)
18
+
19
+ **Release gate: do not use 5.9.24 as a CI decision gate for these surfaces.** The audit measured
20
+ three `rc=0`, zero-byte answers across `risk` and Markdown `audit-report`.
21
+ The trigger is not yet established; warm-cache and contention hypotheses were
22
+ explicitly tested and did not reproduce it. A global non-empty-output invariant
23
+ is therefore the P0 containment work, not a claim that the root cause is known.
24
+
25
+ Priority order is: `NEW-01` empty successful output; `REG-02` default agent
26
+ memory rejection and post-hoc RSS enforcement; `BUG-01` undeclared parse loss;
27
+ `REG-03` warm-path slowdown; `NEW-02` overloaded endpoint anchors; then
28
+ workspace-help/selftest/plan and output-contract regressions. Full evidence:
29
+ [`AUDIT-2026-09-01-EXTERNAL-5.9.23.md`](AUDIT-2026-09-01-EXTERNAL-5.9.23.md).
30
+
31
+ | ID | Severity | Status | Evidence and required closure |
32
+ |---|---:|---|---|
33
+ | `NEW-01` | Critical maximum | **open, P0 / CI blocker** | `risk` and Markdown `audit-report` can exit `0` with zero bytes on stdout and stderr. The measured rate was 3/47 byte-counted runs; root cause is unknown. Enforce `EMPTY_ANSWER` globally and add byte-counted background-process coverage. |
34
+ | `REG-02` | Critical | **open, regression** | The 1,536 MB default `--agent` ceiling rejects valid large repositories only after spending minutes; it is not published in successful default-agent metadata. Bound projection during construction, sample RSS periodically, and publish the effective ceiling. |
35
+ | `REG-03` | High | **open, regression** | Warm `spring-audit` was measured 2.1–3.8x slower despite a fully reused CIR. Attribute the warm pass before claiming cache benefit. |
36
+ | `REG-01` | High | **open, regression** | Root `ask --help` took 83–86 seconds in a workspace with nested repositories. Help must not perform unbounded repository/profile analysis. |
37
+ | `REG-04` | Medium | **closed 5.9.24** | `_meta.answer_bounds.capped` now aggregates nested cap contracts, so compact answers disclose rows omitted below nested payloads. Regression coverage includes nested dictionaries and lists. |
38
+ | `NEW-02` | High | **open** | Overloaded endpoint handlers can all inherit the final overload's `declaration_line`. Resolve by mapping annotation/signature or publish ambiguity. |
39
+ | `BUG-01` | Critical maximum | **open, P0** | A malformed Java file can disappear without a file-specific declaration. Publish parse failure/recovery in the answer bounds and preserve any affected endpoint gap. |
40
+ | `BUG-02` | Critical maximum | **open, P0** | Large `risk` ended `rc=127` with no output or structured failure. Add fail-fast resource/process handling and durable partial checkpoints. |
41
+ | `BUG-12` | Critical maximum | **open, P0** | Deep `--agent` output construction reaches multi-gigabyte RSS before a small answer. Bound projection while building. |
42
+ | `BUG-03` | High | **open, P1** | Marginal Spring detection can overstate what a zero-finding result covers. Publish Spring footprint/coverage with the stack-fit claim. |
43
+ | `BUG-04` | High | **open, P1** | `selftest` publishes `complete=true` with five error rows. Derive bounds from actual results. |
44
+ | `BUG-05` | High | **open, P1** | Overloaded endpoint handlers can receive the wrong declaration line. Resolve by mapping annotation or publish ambiguity. |
45
+ | `BUG-07` | Closed 5.9.23, verification gap | Compact JVM inventory is bounded, but the audit notes no selftest row protects the correction. Add release-battery coverage before treating it as durable closure. |
46
+ | `BUG-10` | High | **open, P1** | Unsupported routing styles can produce empty coverage gaps. Publish detected-but-unmodeled routing gaps. |
47
+ | `BUG-11` | High | **open, P1** | Default `pack assessment` can fail on a small Spring repository. Use a bounded default or explicit full mode. |
48
+ | `BUG-13` | High | **open, P1** | Unscoped `selftest` starts over nested repositories after warning. Refuse and require an explicit path. |
49
+ | `BUG-16` | High | **open, P1** | Context-cache growth has no published budget or eviction contract; about 1.5 GB was measured. |
50
+ | `BUG-22` | High | **open, P1** | RSS ceilings are checked post-hoc. Add periodic sampling and orderly abort. |
51
+
52
+ The remaining `BUG-04b`, `BUG-06`, `BUG-08`, `BUG-09`, `BUG-15`, `BUG-19`,
53
+ `BUG-20`, `BUG-21` and `BUG-23` findings are open P2/coverage follow-ups in
54
+ the audit document. None is closed by documentation alone.
55
+
17
56
  ## Current Synchronization — External Audit `AUD-621`
18
57
 
19
58
  **Release `5.9.19` remediation.** The stderr-decoding fix for `AUD-621-PACK-STDERR` remains in code, and the distinct `pack gate --since` crash found by the post-remediation re-audit is corrected with a Python 3.9–3.11-compatible tar extraction path. `AUD-621-R` has a second Windows barrier at process-pool construction, complementing the sequential fallback. The broader findings remain open until their required native Windows evidence is recorded; `AUD-621-CONTEXT` and `AUD-621-WIN-PROC` are unchanged.
@@ -59,7 +59,7 @@ single-repo, offline.**
59
59
  | **Modernization planning** | `ask modernize .` | Hotspots, callerless types (with `unknown` where a framework may dispatch), coupling tangles, refactor roadmap |
60
60
  | **Git-churn ranking** | `--rank-by git-churn` | File volatility via git history |
61
61
  | **No truncation limits** | `--full` | Full transactional boundaries, DTO mappers, large result sets |
62
- | **Spring semantic audit** | `ask spring-audit .` | TX-001..006 anomalies + SEC-001..009 security surface; JAVA/SPRING only |
62
+ | **Spring semantic audit** | `ask spring-audit .` | TX-001..006 anomalies + SEC-001..010 security surface; JAVA/SPRING only |
63
63
  | **Impact chain + opt-in TX/SEC findings** | `ask impact-chain <symbol>` (`--with-findings` for audit findings) | Systemic blast radius with transaction boundary and security surfaces per hop |
64
64
  | **Event topology** | `ask impact-chain <event> --type events` | Publisher → event → consumer graph; AFTER_COMMIT/BEFORE_COMMIT TX phase |
65
65
  | RIS bootstrap context | `ask cold-start .` | Repository Intelligence Snapshot; instant return from persisted cache |
@@ -382,6 +382,9 @@ Output: detected stacks, entry points, dependencies, transactional boundaries (S
382
382
  ### `ask --agent`
383
383
 
384
384
  More structured version of `--compact`. Designed for AI agent system prompt injection.
385
+ It is bounded to 40 KB on stdout and admits repositories up to 10,000 Java files;
386
+ larger repositories return `AGENT_SCOPE_TOO_LARGE` before expensive analysis. Use
387
+ `--compact` or narrow the path in that case.
385
388
 
386
389
  ```bash
387
390
  ask /repo --agent --output context.json
@@ -528,7 +531,7 @@ disabled changes runtime behaviour nobody measured; a diff is how a person makes
528
531
  call with the evidence in front of them.
529
532
 
530
533
  **TX patterns (TX-001..TX-006):** proxy bypass, nested transactions, readOnly propagation, NOT_SUPPORTED in active TX, exception swallowing, self-invocation of a `@Transactional` sibling.
531
- **SEC patterns (SEC-001..SEC-009):** unsecured endpoints, CVE-2025-41248 `@PreAuthorize` inheritance bypass, `@Transactional` on controllers, passwords stored under a fast unsalted digest, CSRF disabled under session-bearing authentication, cookies created without the Secure attribute, credentials stored in a deployment descriptor, SQL built by MyBatis string interpolation, and anonymous request-chain exceptions. **DEAD-001** reports a security control that is present only in comments and therefore disabled.
534
+ **SEC patterns (SEC-001..SEC-010):** unsecured endpoints, CVE-2025-41248 `@PreAuthorize` inheritance bypass, `@Transactional` on controllers, passwords stored under a fast unsalted digest, CSRF disabled under session-bearing authentication, cookies created without the Secure attribute, credentials stored in a deployment descriptor, SQL built by MyBatis string interpolation, anonymous request-chain exceptions, and HTTP input reaching a concatenated known query sink through bounded positional in-repository calls. **DEAD-001** reports a security control that is present only in comments and therefore disabled.
532
535
  **GATE patterns (GATE-001..GATE-004):** custom AOP/security-gate risks over the same custom-gate authority published in `security_posture`: proxy bypass (`private`/`final`/self-invocation), advice that appears to fail open, disabled or tautological annotation attributes, and fragile `args[0]`/reflection binding.
533
536
 
534
537
  Each finding includes `severity`, `confidence`, `symbol`, `source_file`, `evidence`, `explanation`, and `fix_hint`. JAVA/SPRING ONLY.
@@ -1812,10 +1815,10 @@ stops at 1 408 files inside the `SEC-004` group and ends at 5.1s.
1812
1815
  **Memory budget.** Repository-scoped JSON answers include `_meta.memory` with
1813
1816
  `unit: "MB"`, the observed `peak_rss_mb`, the `peak_rss_basis` it was sampled
1814
1817
  from, `configured_max_rss_mb`, and `ceiling_enforceable`. To bound long analyses
1815
- on a CI or supervised runner, set `ASK_MAX_RSS_MB=<megabytes>`. Exceeding the
1816
- ceiling produces exit code `1` and a structured `MEMORY_TOO_LARGE` error with the
1817
- peak and configured limit; no partial answer is published. Unset the variable, or
1818
- set it to `0`, to disable this ceiling.
1818
+ on a CI or supervised runner, set `ASK_MAX_RSS_MB=<megabytes>`. `--agent` uses
1819
+ 1,536 MB when the variable is unset. Exceeding the ceiling produces exit code `1`
1820
+ and a structured `MEMORY_TOO_LARGE` error with the peak and configured limit; no
1821
+ partial answer is published. Set the variable to `0` to disable this ceiling.
1819
1822
 
1820
1823
  Where the platform exposes no footprint sample, `peak_rss_mb` is `null` and
1821
1824
  `peak_rss_basis` says why — never `0`, which would read as a measured floor. A
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "5.9.22"
7
+ version = "5.9.24"
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__ = "5.9.22"
7
+ __version__ = "5.9.24"
@@ -99,6 +99,16 @@ def _gaps(payload: "dict[str, Any]") -> "list[dict[str, Any]]":
99
99
  found.append({"field": "non_coverage", "what": _summarise(entry)})
100
100
  elif non_coverage:
101
101
  found.append({"field": "non_coverage", "what": _summarise(non_coverage)})
102
+ populations = [payload.get("population")]
103
+ metadata = payload.get("metadata")
104
+ if isinstance(metadata, dict):
105
+ populations.append(metadata.get("population"))
106
+ for population in populations:
107
+ if not isinstance(population, dict):
108
+ continue
109
+ for failure in _as_list(population.get("parse_failures")):
110
+ if failure:
111
+ found.append({"field": "population.parse_failures", "what": _summarise(failure)})
102
112
  for prefix, block in _blocks(payload):
103
113
  for field in _GAP_FIELDS:
104
114
  value = block.get(field)
@@ -160,17 +170,24 @@ def _exclusions(payload: "dict[str, Any]") -> "list[dict[str, Any]]":
160
170
 
161
171
  def _caps(payload: "dict[str, Any]") -> "list[dict[str, Any]]":
162
172
  found: "list[dict[str, Any]]" = []
173
+ def walk(value: Any, prefix: str) -> None:
174
+ if isinstance(value, dict):
175
+ for key, child in value.items():
176
+ path = f"{prefix}{key}"
177
+ if key.endswith(_CAP_SUFFIX) and isinstance(child, dict):
178
+ omitted = child.get("omitted")
179
+ if omitted not in (None, 0):
180
+ found.append({"field": path, **{
181
+ axis: child[axis] for axis in ("total", "shown", "omitted")
182
+ if axis in child
183
+ }})
184
+ walk(child, f"{path}.")
185
+ elif isinstance(value, list):
186
+ for index, child in enumerate(value):
187
+ walk(child, f"{prefix}{index}.")
188
+
163
189
  for prefix, block in _blocks(payload):
164
- for key, value in block.items():
165
- if not key.endswith(_CAP_SUFFIX) or not isinstance(value, dict):
166
- continue
167
- omitted = value.get("omitted")
168
- if omitted in (None, 0):
169
- continue
170
- found.append({"field": f"{prefix}{key}", **{
171
- axis: value[axis] for axis in ("total", "shown", "omitted")
172
- if axis in value
173
- }})
190
+ walk(block, prefix)
174
191
  return found
175
192
 
176
193
 
@@ -594,6 +594,7 @@ def ir_dict_to_canonical(
594
594
  "edge_count": len(call_graph),
595
595
  "subsystems": ir.get("subsystems") or [],
596
596
  "analysis_gaps": ir.get("analysis_gaps") or [],
597
+ "population": ir.get("population") or {},
597
598
  "spring_events": ir.get("spring_events") or {},
598
599
  "score_basis": (ir.get("impact") or {}).get("score_basis", "none"),
599
600
  "reverse_graph_size": len(ir.get("reverse_graph") or {}),