sourcecode 5.9.19__tar.gz → 5.9.23__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 (464) hide show
  1. {sourcecode-5.9.19 → sourcecode-5.9.23}/CHANGELOG.md +70 -0
  2. {sourcecode-5.9.19 → sourcecode-5.9.23}/PKG-INFO +16 -8
  3. {sourcecode-5.9.19 → sourcecode-5.9.23}/README.md +15 -7
  4. sourcecode-5.9.23/docs/AUDIT-2026-09-01-EXTERNAL-5.9.22.md +71 -0
  5. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/DEFECT-LEDGER.md +26 -0
  6. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/DEVELOPMENT-ROADMAP.md +35 -0
  7. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/PRODUCT_TIERS.md +1 -1
  8. sourcecode-5.9.23/docs/RD-JVM-ASK-TRIAGE-2026-08-31.md +78 -0
  9. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/USER_GUIDE.md +9 -6
  10. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/migrate-check.md +24 -0
  11. sourcecode-5.9.23/docs/perf/baselines/5.9.22/petclinic__ask__cold.json +59 -0
  12. sourcecode-5.9.23/docs/perf/baselines/5.9.22/petclinic__ask__warm.json +47 -0
  13. {sourcecode-5.9.19 → sourcecode-5.9.23}/pyproject.toml +1 -1
  14. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/__init__.py +1 -1
  15. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/answer_bounds.py +10 -0
  16. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/canonical_ir.py +12 -4
  17. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/cli.py +113 -23
  18. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/context_graph.py +24 -18
  19. sourcecode-5.9.23/src/sourcecode/jvm_inventory.py +294 -0
  20. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/migrate_check.py +21 -0
  21. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/non_coverage.py +17 -0
  22. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/output_budget.py +18 -4
  23. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/parallel.py +3 -11
  24. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/repository_ir.py +139 -21
  25. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/resource_budget.py +10 -5
  26. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/risk.py +3 -2
  27. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/rule_catalog.py +1 -0
  28. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/schema_registry.py +2 -0
  29. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/spring_findings.py +4 -3
  30. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/spring_security_audit.py +57 -0
  31. {sourcecode-5.9.19 → sourcecode-5.9.23}/.github/workflows/build-windows.yml +0 -0
  32. {sourcecode-5.9.19 → sourcecode-5.9.23}/.github/workflows/perf-gate.yml +0 -0
  33. {sourcecode-5.9.19 → sourcecode-5.9.23}/.github/workflows/windows-battery.yml +0 -0
  34. {sourcecode-5.9.19 → sourcecode-5.9.23}/.github/workflows/windows-regression.yml +0 -0
  35. {sourcecode-5.9.19 → sourcecode-5.9.23}/.gitignore +0 -0
  36. {sourcecode-5.9.19 → sourcecode-5.9.23}/.ruff.toml +0 -0
  37. {sourcecode-5.9.19 → sourcecode-5.9.23}/CLAUDE.md +0 -0
  38. {sourcecode-5.9.19 → sourcecode-5.9.23}/CODE_OF_CONDUCT.md +0 -0
  39. {sourcecode-5.9.19 → sourcecode-5.9.23}/CONTRIBUTING.md +0 -0
  40. {sourcecode-5.9.19 → sourcecode-5.9.23}/LICENSE +0 -0
  41. {sourcecode-5.9.19 → sourcecode-5.9.23}/NOTICE +0 -0
  42. {sourcecode-5.9.19 → sourcecode-5.9.23}/SECURITY.md +0 -0
  43. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
  44. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
  45. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
  46. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
  47. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
  48. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
  49. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
  50. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
  51. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
  52. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
  53. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
  54. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
  55. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
  56. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
  57. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
  58. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +0 -0
  59. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.3.md +0 -0
  60. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-28-EXTERNAL-5.9.10.md +0 -0
  61. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.16.md +0 -0
  62. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.17.md +0 -0
  63. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-2026-08-31-REMEDIATION-5.9.18.md +0 -0
  64. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
  65. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/CACHE.md +0 -0
  66. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/COMMERCIAL-OFFER.md +0 -0
  67. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/CUSTOMER-VALIDATION.md +0 -0
  68. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/DEMO-5MIN.md +0 -0
  69. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
  70. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/EXECUTION-PLAN-12MO.md +0 -0
  71. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/EXECUTIVE-ROADMAP.md +0 -0
  72. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/MANUAL-USUARIO.md +0 -0
  73. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/MODERNIZATION.md +0 -0
  74. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/PRODUCT-ROUTE.md +0 -0
  75. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/PRODUCT_AUDIT.md +0 -0
  76. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/PRODUCT_IDENTITY.md +0 -0
  77. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/RC1-CHECKLIST.md +0 -0
  78. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/RELEASE-CHECKLIST.md +0 -0
  79. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/RELEASE-VERIFICATION.md +0 -0
  80. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
  81. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
  82. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
  83. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/DESIGN-assessment-report.md +0 -0
  84. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
  85. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
  86. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
  87. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
  88. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
  89. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
  90. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
  91. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
  92. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/DESIGN-pack-manifest.md +0 -0
  93. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
  94. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
  95. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
  96. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/EPV-p6-class-typeref.md +0 -0
  97. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
  98. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
  99. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
  100. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
  101. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/adr/0001-semantic-ir.md +0 -0
  102. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
  103. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
  104. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
  105. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
  106. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/adr/0006-performance-harness.md +0 -0
  107. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/adr/0007-composition-semantics.md +0 -0
  108. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/adr/0008-answer-coherence.md +0 -0
  109. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/consumer-disposition-inventory.md +0 -0
  110. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/overview.md +0 -0
  111. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/product-architecture-review.md +0 -0
  112. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/product-strategy-layering.md +0 -0
  113. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
  114. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/architecture/semantic-ir-roadmap.md +0 -0
  115. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/baseline-ci.yml +0 -0
  116. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/commercial-pipeline-audit.md +0 -0
  117. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/contracts-ci.yml +0 -0
  118. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/contracts.md +0 -0
  119. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
  120. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
  121. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
  122. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
  123. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
  124. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
  125. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
  126. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
  127. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/licensing-schema.md +0 -0
  128. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/pack-gate-github-actions.yml +0 -0
  129. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/pack-gate-gitlab.yml +0 -0
  130. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/README.md +0 -0
  131. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/REGRESSION-GATE.md +0 -0
  132. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
  133. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
  134. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
  135. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
  136. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
  137. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
  138. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
  139. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
  140. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
  141. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
  142. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
  143. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
  144. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
  145. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
  146. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
  147. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
  148. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
  149. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
  150. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
  151. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
  152. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
  153. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
  154. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
  155. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
  156. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
  157. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
  158. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
  159. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
  160. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
  161. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
  162. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
  163. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
  164. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
  165. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
  166. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
  167. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
  168. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
  169. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
  170. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
  171. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
  172. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
  173. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
  174. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/gate-latest/README.md +0 -0
  175. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
  176. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
  177. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
  178. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
  179. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
  180. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
  181. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/baselines/reference-best/README.md +0 -0
  182. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/perf/corpus-testing-2026-08-22.md +0 -0
  183. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/posture.md +0 -0
  184. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/privacy.md +0 -0
  185. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/pro-experience-audit.md +0 -0
  186. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/schema.md +0 -0
  187. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/spec/envelope-v1.md +0 -0
  188. {sourcecode-5.9.19 → sourcecode-5.9.23}/docs/spring-audit-ci.yml +0 -0
  189. {sourcecode-5.9.19 → sourcecode-5.9.23}/hatch_build.py +0 -0
  190. {sourcecode-5.9.19 → sourcecode-5.9.23}/scripts/compare_integration_engines.py +0 -0
  191. {sourcecode-5.9.19 → sourcecode-5.9.23}/scripts/context_cost_harness.py +0 -0
  192. {sourcecode-5.9.19 → sourcecode-5.9.23}/scripts/customer_smoke_test.sh +0 -0
  193. {sourcecode-5.9.19 → sourcecode-5.9.23}/scripts/generate_jdk_exports.py +0 -0
  194. {sourcecode-5.9.19 → sourcecode-5.9.23}/scripts/perf_gate.py +0 -0
  195. {sourcecode-5.9.19 → sourcecode-5.9.23}/scripts/perf_harness.py +0 -0
  196. {sourcecode-5.9.19 → sourcecode-5.9.23}/scripts/sync_gate_anchors.py +0 -0
  197. {sourcecode-5.9.19 → sourcecode-5.9.23}/scripts/test_fast.sh +0 -0
  198. {sourcecode-5.9.19 → sourcecode-5.9.23}/scripts/windows_reliability_matrix.py +0 -0
  199. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/__main__.py +0 -0
  200. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/access_drift.py +0 -0
  201. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/adaptive_scanner.py +0 -0
  202. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/analysis_budget.py +0 -0
  203. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/archetype.py +0 -0
  204. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/architectural_baseline.py +0 -0
  205. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/architectural_delta.py +0 -0
  206. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/architecture_analyzer.py +0 -0
  207. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/architecture_summary.py +0 -0
  208. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/ast_extractor.py +0 -0
  209. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/audit_clusters.py +0 -0
  210. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/audit_recipe.py +0 -0
  211. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/audit_report.py +0 -0
  212. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/audit_since.py +0 -0
  213. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/audit_verify.py +0 -0
  214. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/baseline_attestation.py +0 -0
  215. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/baseline_autocapture.py +0 -0
  216. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/breaking_changes.py +0 -0
  217. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/build_modules.py +0 -0
  218. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/build_stamp.py +0 -0
  219. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/bundled_docs.py +0 -0
  220. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/c4_render.py +0 -0
  221. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/cache.py +0 -0
  222. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/cache_model.py +0 -0
  223. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/cache_observation.py +0 -0
  224. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/call_surface.py +0 -0
  225. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/caller_metrics.py +0 -0
  226. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/caller_reach.py +0 -0
  227. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/chain_rules.py +0 -0
  228. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/change_plan.py +0 -0
  229. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/ci_output.py +0 -0
  230. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/cir_graphs.py +0 -0
  231. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/classifier.py +0 -0
  232. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/click_runtime.py +0 -0
  233. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/client_calls.py +0 -0
  234. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/code_notes_analyzer.py +0 -0
  235. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/compare.py +0 -0
  236. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/confidence_analyzer.py +0 -0
  237. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/constraint_diff.py +0 -0
  238. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/consumer_join.py +0 -0
  239. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/container_wiring.py +0 -0
  240. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/context_cache.py +0 -0
  241. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/context_scorer.py +0 -0
  242. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/context_summarizer.py +0 -0
  243. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/contract_diff.py +0 -0
  244. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/contract_init.py +0 -0
  245. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/contract_model.py +0 -0
  246. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/contract_pipeline.py +0 -0
  247. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/coverage_parser.py +0 -0
  248. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/cve_feed.py +0 -0
  249. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/cve_reachability.py +0 -0
  250. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/data_exposure.py +0 -0
  251. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/data_labels.py +0 -0
  252. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/declarations.py +0 -0
  253. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/defect_classes/__init__.py +0 -0
  254. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/defect_classes/registry.json +0 -0
  255. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/defect_identity.py +0 -0
  256. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/degradation.py +0 -0
  257. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/dependency_analyzer.py +0 -0
  258. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/deployment_prefix.py +0 -0
  259. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detach.py +0 -0
  260. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/__init__.py +0 -0
  261. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/base.py +0 -0
  262. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/csproj_parser.py +0 -0
  263. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/dart.py +0 -0
  264. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/dotnet.py +0 -0
  265. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/elixir.py +0 -0
  266. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/go.py +0 -0
  267. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/heuristic.py +0 -0
  268. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/hybrid.py +0 -0
  269. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/java.py +0 -0
  270. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/jvm_ext.py +0 -0
  271. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/nodejs.py +0 -0
  272. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/parsers.py +0 -0
  273. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/php.py +0 -0
  274. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/project.py +0 -0
  275. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/python.py +0 -0
  276. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/ruby.py +0 -0
  277. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/rust.py +0 -0
  278. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/systems.py +0 -0
  279. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/terraform.py +0 -0
  280. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/detectors/tooling.py +0 -0
  281. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/doc_analyzer.py +0 -0
  282. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/dynamic_argument_surface.py +0 -0
  283. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/empty_reach.py +0 -0
  284. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/endpoint_disposition.py +0 -0
  285. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/endpoint_literals.py +0 -0
  286. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/endpoint_metrics.py +0 -0
  287. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/entrypoint_classifier.py +0 -0
  288. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/env_analyzer.py +0 -0
  289. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/envelope.py +0 -0
  290. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/environment_resolution.py +0 -0
  291. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/error_schema.py +0 -0
  292. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/evidence_provider.py +0 -0
  293. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/execution_plan.py +0 -0
  294. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/explain.py +0 -0
  295. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/explain_endpoint.py +0 -0
  296. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/facts/__init__.py +0 -0
  297. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/facts/registry.json +0 -0
  298. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/field_deprecations.py +0 -0
  299. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/file_chunker.py +0 -0
  300. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/file_classifier.py +0 -0
  301. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/filter_surface.py +0 -0
  302. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/findings_baseline.py +0 -0
  303. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/format_contract.py +0 -0
  304. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/fqn_utils.py +0 -0
  305. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/functional_routes.py +0 -0
  306. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/gate_anchors.py +0 -0
  307. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/git_analyzer.py +0 -0
  308. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/git_checkout.py +0 -0
  309. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/github_diff.py +0 -0
  310. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/graph_analyzer.py +0 -0
  311. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/graph_evidence.py +0 -0
  312. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/hibernate_strat.py +0 -0
  313. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/identity_fallback.py +0 -0
  314. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/integration_coordinates.py +0 -0
  315. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/intent_router.py +0 -0
  316. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/jdk_exports.py +0 -0
  317. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/license.py +0 -0
  318. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/manifest_cache.py +0 -0
  319. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/mcp/__init__.py +0 -0
  320. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/mcp/dependency_import.py +0 -0
  321. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  322. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  323. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  324. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  325. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  326. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/mcp/orchestrator.py +0 -0
  327. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/mcp/registry.py +0 -0
  328. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/mcp/runner.py +0 -0
  329. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/mcp/server.py +0 -0
  330. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/mcp_nudge.py +0 -0
  331. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/metrics_analyzer.py +0 -0
  332. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/migration_apply.py +0 -0
  333. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/migration_blast.py +0 -0
  334. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/openapi_surface.py +0 -0
  335. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/openrewrite_recipe.py +0 -0
  336. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/output_bounds.py +0 -0
  337. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/output_ceiling.py +0 -0
  338. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/output_encoding.py +0 -0
  339. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/output_sink.py +0 -0
  340. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/pack_manifest.py +0 -0
  341. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/packs.py +0 -0
  342. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/parse_cache.py +0 -0
  343. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/partial_contract.py +0 -0
  344. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/path_admission.py +0 -0
  345. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/path_display.py +0 -0
  346. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/path_filters.py +0 -0
  347. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/perf.py +0 -0
  348. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/phased_run.py +0 -0
  349. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/pipe_contract.py +0 -0
  350. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/posture.py +0 -0
  351. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/pr_comment_renderer.py +0 -0
  352. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/pr_impact.py +0 -0
  353. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/pr_risk.py +0 -0
  354. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/prepare_context.py +0 -0
  355. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/product_info.py +0 -0
  356. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/progress.py +0 -0
  357. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/provenance.py +0 -0
  358. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/ranking_engine.py +0 -0
  359. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/readiness_timeline.py +0 -0
  360. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/readonly.py +0 -0
  361. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/reconciliation.py +0 -0
  362. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/redactor.py +0 -0
  363. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/reference_facts.py +0 -0
  364. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/regress.py +0 -0
  365. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/regulatory_pack.py +0 -0
  366. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/release_info.py +0 -0
  367. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/relevance_scorer.py +0 -0
  368. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/remediation_diff.py +0 -0
  369. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/remediation_flow.py +0 -0
  370. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/remediation_report.py +0 -0
  371. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/remedies.py +0 -0
  372. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/rename_refactor.py +0 -0
  373. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/repo_classifier.py +0 -0
  374. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/__init__.py +0 -0
  375. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/context.py +0 -0
  376. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/errors.py +0 -0
  377. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/executor.py +0 -0
  378. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/planner.py +0 -0
  379. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/query.py +0 -0
  380. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/request.py +0 -0
  381. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/resolution.py +0 -0
  382. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/result.py +0 -0
  383. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/retriever.py +0 -0
  384. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/runtime.py +0 -0
  385. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/steps.py +0 -0
  386. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
  387. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/steps_graph.py +0 -0
  388. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/steps_impact.py +0 -0
  389. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/steps_intf.py +0 -0
  390. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/steps_struct.py +0 -0
  391. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/retrieval/steps_txsec.py +0 -0
  392. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/ris.py +0 -0
  393. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/risk_model.py +0 -0
  394. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/rule_pass.py +0 -0
  395. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/runs.py +0 -0
  396. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/runtime_classifier.py +0 -0
  397. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/sarif.py +0 -0
  398. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/sarif_emit.py +0 -0
  399. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/scanner.py +0 -0
  400. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/schema.py +0 -0
  401. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/schema_producers.py +0 -0
  402. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
  403. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
  404. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
  405. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
  406. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
  407. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
  408. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
  409. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/security_chain.py +0 -0
  410. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/security_config.py +0 -0
  411. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/security_config_scan.py +0 -0
  412. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/security_posture.py +0 -0
  413. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/selection_contract.py +0 -0
  414. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/self_audit.py +0 -0
  415. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/selftest.py +0 -0
  416. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/semantic_analyzer.py +0 -0
  417. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/semantic_impact_engine.py +0 -0
  418. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/semantic_integration_engine.py +0 -0
  419. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/semantic_services.py +0 -0
  420. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/serializer.py +0 -0
  421. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/servlet_surface.py +0 -0
  422. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/source_text.py +0 -0
  423. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/spring_event_topology.py +0 -0
  424. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/spring_impact.py +0 -0
  425. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/spring_model.py +0 -0
  426. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/spring_profiles.py +0 -0
  427. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/spring_properties.py +0 -0
  428. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/spring_semantic.py +0 -0
  429. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/spring_tx_analyzer.py +0 -0
  430. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/sql_taint.py +0 -0
  431. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/summarizer.py +0 -0
  432. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/target_admission.py +0 -0
  433. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/telemetry/__init__.py +0 -0
  434. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/telemetry/config.py +0 -0
  435. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/telemetry/consent.py +0 -0
  436. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/telemetry/events.py +0 -0
  437. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/telemetry/filters.py +0 -0
  438. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/telemetry/transport.py +0 -0
  439. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/test_gap_ranking.py +0 -0
  440. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/test_sources.py +0 -0
  441. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/text_input.py +0 -0
  442. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/timeline.py +0 -0
  443. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/timeline_cache.py +0 -0
  444. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/token_estimate.py +0 -0
  445. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/tree_utils.py +0 -0
  446. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/type_usage_surface.py +0 -0
  447. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/validation_inference.py +0 -0
  448. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/validation_surface.py +0 -0
  449. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/verify_edit.py +0 -0
  450. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/verify_repo.py +0 -0
  451. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/verify_rules.py +0 -0
  452. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/version_check.py +0 -0
  453. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/vex.py +0 -0
  454. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/waivers.py +0 -0
  455. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/watch_loop.py +0 -0
  456. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/wired_surface.py +0 -0
  457. {sourcecode-5.9.19 → sourcecode-5.9.23}/src/sourcecode/workspace.py +0 -0
  458. {sourcecode-5.9.19 → sourcecode-5.9.23}/supabase/functions/README.md +0 -0
  459. {sourcecode-5.9.19 → sourcecode-5.9.23}/supabase/functions/get-license/index.ts +0 -0
  460. {sourcecode-5.9.19 → sourcecode-5.9.23}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
  461. {sourcecode-5.9.19 → sourcecode-5.9.23}/supabase/functions/telemetry/index.ts +0 -0
  462. {sourcecode-5.9.19 → sourcecode-5.9.23}/supabase/sql/license_event_ordering.sql +0 -0
  463. {sourcecode-5.9.19 → sourcecode-5.9.23}/supabase/sql/licensing_schema.sql +0 -0
  464. {sourcecode-5.9.19 → sourcecode-5.9.23}/supabase/sql/telemetry_events.sql +0 -0
@@ -1,5 +1,75 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.9.23] — 2026-09-01
4
+
5
+ *Regression hardening after the 5.9.22 audit and testing-repository battery.*
6
+
7
+ ### Fixed
8
+
9
+ - `--compact` and `--agent` reserve envelope metadata before trimming, so their
10
+ published 30 KB and 40 KB stdout ceilings remain true after final rendering.
11
+ - `--agent` now has a 1,536 MB default RSS ceiling, reports context construction
12
+ accurately in progress output, and rejects Java repositories above 10,000 files
13
+ with `AGENT_SCOPE_TOO_LARGE` before an unbounded deep analysis can be killed.
14
+ - Agent mode no longer builds a module graph implicitly; callers can still request
15
+ it explicitly with `--graph-modules`.
16
+
17
+ ### Documentation
18
+
19
+ - Added the Windows large-repository audit with measured P0/P1 regressions,
20
+ performance boundaries and explicit closure requirements.
21
+ - Synchronized the defect ledger and README so silent-success, incomplete
22
+ coverage, compact-output, cache-growth and deep-agent memory risks are visible
23
+ rather than implied closed by smaller-repository measurements.
24
+
25
+ ## [5.9.22] — 2026-08-31
26
+
27
+ *Large-repository route projection performance.*
28
+
29
+ ### Fixed
30
+
31
+ - Inherited route projection now resolves parent candidates through a module/name
32
+ index instead of scanning every class for every child. The ambiguity rule and
33
+ emitted routes remain unchanged, while cold `--agent --full` improved from about
34
+ 20.5 to 19.6 seconds on openmrs-core and from 32.0 to 30.8 seconds on Jenkins.
35
+
36
+ ### Verification Boundary
37
+
38
+ - Endpoint, inheritance, canonical IR and migration regression tests pass. Large
39
+ cold runs remain memory-heavy; reducing the duplicated canonical/raw model is
40
+ still required before claiming the 8/10 performance target.
41
+
42
+ ## [5.9.21] — 2026-08-31
43
+
44
+ *Cold-path memory and JVM inventory performance follow-up.*
45
+
46
+ ### Fixed
47
+
48
+ - Full CIR builds no longer retain every Java source body in the per-file linking
49
+ queue; the linking pass rereads source only when needed and keeps repository
50
+ constants and annotation references as compact metadata.
51
+ - Completed linking drops pass-local containers before canonical projection, reducing
52
+ overlap between raw IR assembly and the canonical model.
53
+ - `migrate-check` JVM inventory reuses the already discovered Java file list instead
54
+ of walking and rescanning the source tree a second time.
55
+
56
+ ### Verification Boundary
57
+
58
+ - Focused JVM, CIR cache-equivalence, canonical IR, source-span and migration tests
59
+ pass. Cold `--agent --full` remains memory-heavy on large repositories: the latest
60
+ controlled run measured about 710 MB on openmrs-core and 1.24 GB on Jenkins; this
61
+ release does not claim that the 8/10 performance target is fully reached.
62
+
63
+ ## [5.9.20] — 2026-08-31
64
+
65
+ *JVM ecosystem evidence and local SBOM inventory.*
66
+
67
+ ### Added
68
+
69
+ - `migrate-check` now publishes bounded `jvm_inventory` evidence for JVM frameworks, Java runtime declarations in CI/containers, modern JVM patterns and local CycloneDX/SPDX JSON documents.
70
+ - Added deterministic, negative-control and schema-registry coverage for the new inventory.
71
+ - Documented the accepted JVM R&D scope and its explicit no-network/non-coverage boundaries.
72
+
3
73
  ## [5.9.19] — 2026-08-31
4
74
 
5
75
  *Critical `pack gate --since` compatibility correction.*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 5.9.19
3
+ Version: 5.9.23
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.19-blue)
62
+ ![Version](https://img.shields.io/badge/version-5.9.23-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,12 +191,12 @@ 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
- **Current performance status.** Release 5.9.17 retains the shared Canonical IR
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`
201
201
  runs; the no-label path remains parse-free. These are implementation properties,
202
202
  not duration promises. It also removes two repeated walks of the same file tree in
@@ -212,6 +212,14 @@ 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.6/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. These findings are tracked in the [external audit](docs/AUDIT-2026-09-01-EXTERNAL-5.9.22.md)
220
+ and [defect ledger](docs/DEFECT-LEDGER.md); they are not closed by the existing
221
+ engineering-host measurements.
222
+
215
223
  The current external audit still records two open availability limits, and they
216
224
  are held open deliberately: `audit-report --format markdown` under contention, and
217
225
  the root compact flow under strict timeouts on very large monorepos. Neither
@@ -276,7 +284,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
276
284
  # pip / pipx
277
285
  pipx install sourcecode # or: pip install sourcecode
278
286
 
279
- ask version # ask 5.9.19 — and, on a build that has aged,
287
+ ask version # ask 5.9.22 — and, on a build that has aged,
280
288
  # how many releases have probably shipped since
281
289
  ```
282
290
 
@@ -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.19-blue)
13
+ ![Version](https://img.shields.io/badge/version-5.9.23-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,12 +142,12 @@ 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
- **Current performance status.** Release 5.9.17 retains the shared Canonical IR
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`
152
152
  runs; the no-label path remains parse-free. These are implementation properties,
153
153
  not duration promises. It also removes two repeated walks of the same file tree in
@@ -163,6 +163,14 @@ 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.6/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. These findings are tracked in the [external audit](docs/AUDIT-2026-09-01-EXTERNAL-5.9.22.md)
171
+ and [defect ledger](docs/DEFECT-LEDGER.md); they are not closed by the existing
172
+ engineering-host measurements.
173
+
166
174
  The current external audit still records two open availability limits, and they
167
175
  are held open deliberately: `audit-report --format markdown` under contention, and
168
176
  the root compact flow under strict timeouts on very large monorepos. Neither
@@ -227,7 +235,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
227
235
  # pip / pipx
228
236
  pipx install sourcecode # or: pip install sourcecode
229
237
 
230
- ask version # ask 5.9.19 — and, on a build that has aged,
238
+ ask version # ask 5.9.22 — and, on a build that has aged,
231
239
  # how many releases have probably shipped since
232
240
  ```
233
241
 
@@ -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
+
@@ -14,6 +14,32 @@ 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.22` (2026-09-01)
18
+
19
+ The external audit confirms strong precision, determinism and uncertainty
20
+ disclosure, but opens a P0/P1 cluster around silent success, incomplete
21
+ population disclosure, large-run memory and compact-output contracts. Full
22
+ evidence: [`AUDIT-2026-09-01-EXTERNAL-5.9.22.md`](AUDIT-2026-09-01-EXTERNAL-5.9.22.md).
23
+
24
+ | ID | Severity | Status | Evidence and required closure |
25
+ |---|---:|---|---|
26
+ | `BUG-01` | Critical maximum | **open, P0** | Full Markdown `audit-report` reproduced with `rc=0` and empty stdout. Add a global non-empty-answer invariant and renderer coverage. |
27
+ | `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. |
28
+ | `BUG-12` | Critical maximum | **open, P0** | Deep `--agent` output construction reaches multi-gigabyte RSS before a small answer. Bound projection while building. |
29
+ | `BUG-03` | High | **open, P1** | `content_id` changes between cold and warm because cache state is hashed into identity. Separate execution metadata from answer identity. |
30
+ | `BUG-04` | High | **open, P1** | `selftest` publishes `complete=true` with five error rows. Derive bounds from actual results. |
31
+ | `BUG-05` | High | **open, P1** | Overloaded endpoint handlers can receive the wrong declaration line. Resolve by mapping annotation or publish ambiguity. |
32
+ | `BUG-07` | High | **open, P1** | `--compact` remains oversized on `migrate-check` and `spring-audit`. Apply bounded projections with omission metadata. |
33
+ | `BUG-10` | High | **open, P1** | Unsupported routing styles can produce empty coverage gaps. Publish detected-but-unmodeled routing gaps. |
34
+ | `BUG-11` | High | **open, P1** | Default `pack assessment` can fail on a small Spring repository. Use a bounded default or explicit full mode. |
35
+ | `BUG-13` | High | **open, P1** | Unscoped `selftest` starts over nested repositories after warning. Refuse and require an explicit path. |
36
+ | `BUG-16` | High | **open, P1** | Context-cache growth has no published budget or eviction contract; about 1.5 GB was measured. |
37
+ | `BUG-22` | High | **open, P1** | RSS ceilings are checked post-hoc. Add periodic sampling and orderly abort. |
38
+
39
+ The remaining `BUG-04b`, `BUG-06`, `BUG-08`, `BUG-09`, `BUG-15`, `BUG-19`,
40
+ `BUG-20`, `BUG-21` and `BUG-23` findings are open P2/coverage follow-ups in
41
+ the audit document. None is closed by documentation alone.
42
+
17
43
  ## Current Synchronization — External Audit `AUD-621`
18
44
 
19
45
  **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.
@@ -1,11 +1,46 @@
1
1
  # ASK — Development Roadmap
2
2
 
3
+ ### Release 5.9.20 — JVM evidence inventory
4
+
5
+ The accepted JVM R&D scope is implemented in `migrate-check`: local framework,
6
+ toolchain, runtime-pattern and Docker/CI evidence plus bounded CycloneDX/SPDX JSON
7
+ reading. The output is advisory and additive; no network, dependency resolution,
8
+ CVE lookup, signature verification or runtime recommendation is performed.
9
+
10
+ ### Performance pass — 2026-08-31
11
+
12
+ The JVM inventory no longer rediscovers the Java tree inside `migrate-check`: the
13
+ command reuses its already-resolved source population and only discovers local
14
+ configuration, CI, container and SBOM candidates. On the current testing corpus,
15
+ fresh measurements were approximately 4.8 s for `openmrs-core` and 7.6 s for
16
+ `jenkins` using `migrate-check --compact`; no output or readiness semantics changed.
17
+
18
+ This is a bounded improvement, not closure of the performance target. The remaining
19
+ 8/10 work is the cold/full-graph path and high-cost `--agent`, `posture`, `risk` and
20
+ `impact-chain` cases. Those require separate profiling and memory measurements before
21
+ claiming a broad speedup.
22
+
3
23
  ### Release 5.9.19 — `AUD-621` remediation
4
24
 
5
25
  Release `5.9.19` carries the `5.9.18` Windows safeguards and fixes the separate `pack gate --since` crash caused by calling the Python 3.12-only tarfile filter API on Python 3.10. The compatibility path is covered by regression tests; native Windows repetition remains required for the broader reliability findings.
6
26
 
7
27
  These code changes do not replace the required native evidence. `AUD-621-R` and `AUD-621-WIN-PROC` remain open until the repetition matrix and process-tree cases pass on native Windows; `AUD-621-CONTEXT` remains profiling work.
8
28
 
29
+ ### JVM I+D triage — accepted scope from 2026-08-31
30
+
31
+ The external JVM report has been depurated against primary sources and the current
32
+ ASK route. It receives a limited green light: extend `migrate-check` with a
33
+ source-backed JDK/build/framework inventory (P0), then add small detectors for
34
+ virtual threads, `ScopedValue`, modules, native-image/jlink/jpackage and Java
35
+ versions declared by CI or containers (P1). The decision record, accepted facts,
36
+ rejected scope and sources are in
37
+ [`RD-JVM-ASK-TRIAGE-2026-08-31.md`](RD-JVM-ASK-TRIAGE-2026-08-31.md).
38
+
39
+ This does not authorize embeddings, hosted vector search, APM/repository
40
+ integrations, Sigstore verification, CVE database work or prescriptive runtime
41
+ tuning. A local CycloneDX/SPDX reader remains a conditional P2 experiment and
42
+ must preserve ASK's no-network, source-evidence and non-coverage contracts.
43
+
9
44
  ### External Audit Intake — `AUD-621` re-audit, release 5.9.17
10
45
 
11
46
  The 2026-08-31 re-audit corrects the optimistic interpretation of the previous
@@ -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 |
@@ -0,0 +1,78 @@
1
+ # Depuracion I+D JVM para ASK
2
+
3
+ **Fecha:** 2026-08-31
4
+ **Entrada:** informe externo sobre novedades del ecosistema JVM 2025-2026
5
+ **Decision:** luz verde parcial para inventario y deteccion estructural; no para ampliar ASK a busqueda vectorial, APM o integraciones externas.
6
+
7
+ ## Criterio
8
+
9
+ Una propuesta entra en el roadmap solo si cumple las cuatro condiciones siguientes:
10
+
11
+ - aporta un hecho que ASK pueda verificar localmente;
12
+ - puede publicarse con ruta y linea de evidencia;
13
+ - no requiere red, credenciales ni una base externa durante el analisis;
14
+ - mejora una pregunta que ASK ya responde sobre modernizacion, arquitectura o seguridad del cambio.
15
+
16
+ El informe original es util como lista de hipotesis, pero no como inventario de actualidad: mezcla releases confirmadas, roadmaps, previsiones y afirmaciones de proveedor sin enlaces reproducibles. Las versiones concretas no se convierten en reglas hasta que exista una fuente primaria y una prueba sobre un repositorio fixture.
17
+
18
+ ## Hechos aceptados
19
+
20
+ | Area | Hecho verificable | Uso en ASK |
21
+ |---|---|---|
22
+ | JDK 25 | `import module` esta finalizado en JEP 511; los archivos fuente compactos y los `main` de instancia pertenecen a JEP 512. | Detectar sintaxis y declarar el nivel de lenguaje observado, sin recomendar una migracion automaticamente. |
23
+ | Spring | Spring Framework 7 y Spring Boot 4.0 mantienen Java 17 como baseline y adoptan Java 25 como foco. | Extender la evidencia de version/framework de `migrate-check` y separar Boot 3/4. |
24
+ | Quarkus | Quarkus 3.31 declara soporte para Java 25, incluyendo runtime images y native builds con Mandrel. | Reconocer toolchain y empaquetado, sin inferir que Java 25 sea una recomendacion para todos los proyectos. |
25
+ | Jakarta EE | Jakarta EE 11 requiere Java 17 o superior e incorpora Jakarta Data 1.0, soporte para records y recursos basados en virtual threads. | Mejorar la lectura de stack y de requisitos de plataforma. |
26
+ | Gradle | Gradle 9 requiere JVM 17 o superior para ejecutar el daemon; toolchains permiten compilar para niveles diferentes. | Separar JVM del build y nivel de compilacion en el inventario. |
27
+ | SBOM | CycloneDX 1.7 y SPDX 3.0 son formatos publicos con esquemas y serializaciones verificables. | Posible entrada local futura; no implica una base CVE ni una integracion de repositorio. |
28
+
29
+ Fuentes primarias: [JEP 511](https://openjdk.org/jeps/8344700), [Spring Framework 7](https://spring.io/blog/2025/11/13/spring-framework-7-0-general-availability), [Spring Boot 4.0](https://spring.io/blog/2025/11/20/spring-boot-4-0-0-available-now), [Quarkus 3.31](https://quarkus.io/blog/quarkus-3-31-released/), [Jakarta EE 11](https://jakarta.ee/specifications/platform/11/), [Gradle 9](https://docs.gradle.org/current/userguide/upgrading_major_version_9.html), [CycloneDX](https://cyclonedx.org/specification/overview/) y [SPDX](https://spdx.dev/use/specifications/).
30
+
31
+ ## Propuestas aceptadas
32
+
33
+ ### P0 — Inventario de toolchain y framework
34
+
35
+ Ampliar el inventario existente de `migrate-check` para publicar, cuando haya evidencia:
36
+
37
+ - version de lenguaje/JDK objetivo y version de runtime declarada;
38
+ - proveedor o distribucion JDK solo cuando aparece de forma explicita;
39
+ - Maven/Gradle, wrapper, plugin y toolchain;
40
+ - Spring Boot, Spring Framework, Hibernate, Jakarta EE, Quarkus y Micronaut;
41
+ - separacion entre "declarado por build", "detectado en codigo" y "no observado".
42
+
43
+ No se debe resolver una version consultando Maven Central ni inferir el proveedor a partir de una imagen generica. La salida debe conservar el modelo actual de ASK: hecho, fuente, confianza y no cobertura.
44
+
45
+ ### P1 — Patrones JVM con evidencia
46
+
47
+ Añadir detecciones pequenas y especificas para:
48
+
49
+ - `Thread.ofVirtual`, `Executors.newVirtualThreadPerTaskExecutor` y APIs equivalentes;
50
+ - `ScopedValue`;
51
+ - `module-info.java` e instrucciones de empaquetado `jlink`, `jpackage` y `native-image`;
52
+ - version de Java en Dockerfiles y pipelines CI cuando el fichero esta en el repositorio.
53
+
54
+ Cada detector debe producir una observacion `archivo:linea`, evitar recomendaciones normativas y no alterar las poblaciones actuales de endpoints, riesgo o impacto. Si un patron no puede confirmarse, debe quedar como `unknown` o no observado, nunca como ausencia.
55
+
56
+ ### P2 — Entrada local de SBOM, incorporada
57
+
58
+ Se incorpora el parseo local de SBOM CycloneDX/SPDX en JSON ya presentes en el repositorio. El alcance se limita a formato, version y coordenadas de componentes. Quedan fuera la consulta de CVEs, la validacion de licencias, la verificacion Sigstore, la conexion con Artifactory/Nexus y el almacenamiento de claves.
59
+
60
+ La implementacion se ejecuta sin red y con limites de tamano. No confunde "componente declarado" con "vulnerabilidad explotable"; XML y documentos no reconocidos permanecen fuera del alcance explicito.
61
+
62
+ ## No aprobado
63
+
64
+ - Embeddings, Qdrant/Pinecone y busqueda semantica como camino principal: coste, deriva y falta de evidencia de que la busqueda estructural actual sea el cuello de botella.
65
+ - Subida o correlacion de perfiles JFR/async-profiler: superficie de privacidad y operacion fuera del producto actual.
66
+ - Plugins directos para APM, Artifactory, Nexus, Sigstore o proveedores JDK: dependencia externa y coste de mantenimiento desproporcionado.
67
+ - Recomendaciones automaticas de GC, Java 25 o framework: el repositorio no prueba por si solo la carga de produccion ni la compatibilidad operacional.
68
+ - Extender ASK a Docker/Kubernetes/Go como analizador general: no es una consecuencia de detectar un fichero de pipeline o una imagen base.
69
+
70
+ ## Criterios de cierre
71
+
72
+ La iniciativa no se considera hecha por reconocer una cadena. Debe aportar fixtures de Maven y Gradle, al menos un proyecto Spring Boot, uno Quarkus o Jakarta, un Dockerfile/CI con version Java y controles negativos. La bateria debe comprobar:
73
+
74
+ - evidencia de archivo y linea;
75
+ - determinismo frio/caliente y ausencia de red;
76
+ - distincion entre declarado, observado y desconocido;
77
+ - no regresion byte a byte de los payloads existentes cuando los nuevos campos no aplican;
78
+ - limites de salida y no mutacion del repositorio.
@@ -332,7 +332,7 @@ value in field use, and they are the ones to learn first:
332
332
  | `ask posture . --diff dev:prod` | The only command that answers *"what changes about effective access between two profile sets, across every endpoint at once"*. Experimental, and the most differentiated capability in the product. |
333
333
  | `ask endpoints .` | Every REST endpoint with its **effective path** (context-path + `spring.mvc.servlet.path` resolved), inferred security policy and per-endpoint confidence. Turns "audit the API" into a list. |
334
334
  | `ask spring-audit .` | Transactional anomalies that a compiler cannot see — `@Transactional` on a private method is a silent CGLIB no-op — plus the security surface. |
335
- | `ask migrate-check . --compact` | Boot 2→3 readiness plus Java LTS/licensing inventory: blockers, effort, target JDK evidence and explicit licensing-review signals. |
335
+ | `ask migrate-check . --compact` | Boot 2→3 readiness plus Java LTS/licensing and local JVM ecosystem inventory: blockers, effort, target JDK evidence, framework/runtime signals and explicit licensing-review signals. |
336
336
 
337
337
  Everything else is either a projection of the same model (`impact`, `export`, `explain`) or an
338
338
  agent-facing packaging of it (`--compact`, `--agent`, `prepare-context`). The full surface is
@@ -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
@@ -97,6 +97,30 @@ resolved for this field, and ASK does not make a legal entitlement claim. If the
97
97
  not declare a Java version, the inventory reports `java_version_unknown`; it never treats missing
98
98
  evidence as ready for the target LTS.
99
99
 
100
+ ## JVM ecosystem inventory (`jvm_inventory`)
101
+
102
+ The report also includes `jvm_inventory` (`jvm-inventory-v1`), a bounded and
103
+ advisory evidence block for modernization planning. It records local build
104
+ coordinates and source imports for Spring Boot/Framework, Hibernate, Jakarta EE,
105
+ Quarkus and Micronaut, plus evidence for virtual threads, `ScopedValue`, Java
106
+ modules, `native-image`, `jlink`, `jpackage`, and Java versions declared in Docker
107
+ or CI files. Source/build evidence includes a POSIX path and line number; SBOM
108
+ documents include their local path and format/version.
109
+
110
+ Frameworks are classified as `declared_only`, `observed_only`,
111
+ `declared_and_observed`, or `unobserved`; missing evidence is not a positive claim.
112
+ The scanner reads local text only, caps its file/evidence population, does not
113
+ execute Maven/Gradle, resolve dependencies, access the network, inspect a CVE
114
+ database, or make runtime recommendations. It is additive and does not affect
115
+ readiness, findings, effort, or existing endpoint populations.
116
+
117
+ The conditional P2 SBOM reader is available under `jvm_inventory.sbom` for
118
+ local CycloneDX JSON (`bomFormat`) and SPDX JSON (`spdxVersion`) documents. It
119
+ reports document format/version and bounded component coordinates only. It does
120
+ not query CVE or license databases, verify signatures, contact artifact
121
+ repositories, or make a supply-chain verdict. XML SBOMs and unrecognized JSON
122
+ remain outside this reader and are not interpreted.
123
+
100
124
  ## Claim provenance (`evidence_manifest`)
101
125
 
102
126
  Every JSON report also includes `evidence_manifest`: a compact index of the claims already
@@ -0,0 +1,59 @@
1
+ {
2
+ "schema_version": "perf-baseline-v1",
3
+ "tool_version": "5.9.22",
4
+ "captured_at": "2026-09-01T08:51:30Z",
5
+ "command": "ask",
6
+ "repo": {
7
+ "name": "spring-petclinic",
8
+ "commit": "45649e0",
9
+ "files": 47,
10
+ "bytes": 123264,
11
+ "classes": 25,
12
+ "methods": 72
13
+ },
14
+ "scale_dimensions": {
15
+ "files": 47,
16
+ "classes": 25,
17
+ "methods": 72
18
+ },
19
+ "scale_dimensions_basis": "The repository axes this timing is expected to scale over. A performance claim without these dimensions is not comparable across repositories.",
20
+ "mode": "cold",
21
+ "runs": 2,
22
+ "wall_ms": {
23
+ "p50": 742.306,
24
+ "p95": 753.485,
25
+ "min": 729.885,
26
+ "max": 754.727
27
+ },
28
+ "phase_ms": {
29
+ "discovery": {
30
+ "p50": 6.152,
31
+ "p95": 6.238
32
+ },
33
+ "detection": {
34
+ "p50": 19.386,
35
+ "p95": 19.954
36
+ },
37
+ "analysis": {
38
+ "p50": 126.555,
39
+ "p95": 127.517
40
+ },
41
+ "serialize": {
42
+ "p50": 0.898,
43
+ "p95": 0.906
44
+ },
45
+ "unattributed_p50": 589.315
46
+ },
47
+ "rss_peak_bytes": {
48
+ "p50": 75284480.0,
49
+ "p95": 75284480.0
50
+ },
51
+ "env": {
52
+ "python": "3.14.6",
53
+ "os": "darwin",
54
+ "cpu": "arm",
55
+ "cores": 8,
56
+ "hostname_hash": "3972fec0",
57
+ "host_id_declared": false
58
+ }
59
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "schema_version": "perf-baseline-v1",
3
+ "tool_version": "5.9.22",
4
+ "captured_at": "2026-09-01T08:51:32Z",
5
+ "command": "ask",
6
+ "repo": {
7
+ "name": "spring-petclinic",
8
+ "commit": "45649e0",
9
+ "files": 47,
10
+ "bytes": 123264,
11
+ "classes": 25,
12
+ "methods": 72
13
+ },
14
+ "scale_dimensions": {
15
+ "files": 47,
16
+ "classes": 25,
17
+ "methods": 72
18
+ },
19
+ "scale_dimensions_basis": "The repository axes this timing is expected to scale over. A performance claim without these dimensions is not comparable across repositories.",
20
+ "mode": "warm",
21
+ "runs": 2,
22
+ "wall_ms": {
23
+ "p50": 352.405,
24
+ "p95": 356.578,
25
+ "min": 347.768,
26
+ "max": 357.042
27
+ },
28
+ "phase_ms": {
29
+ "discovery": null,
30
+ "detection": null,
31
+ "analysis": null,
32
+ "serialize": null,
33
+ "instrumentation": "absent"
34
+ },
35
+ "rss_peak_bytes": {
36
+ "p50": 75284480.0,
37
+ "p95": 75284480.0
38
+ },
39
+ "env": {
40
+ "python": "3.14.6",
41
+ "os": "darwin",
42
+ "cpu": "arm",
43
+ "cores": 8,
44
+ "hostname_hash": "3972fec0",
45
+ "host_id_declared": false
46
+ }
47
+ }
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "5.9.19"
7
+ version = "5.9.23"
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.19"
7
+ __version__ = "5.9.23"