sourcecode 5.8.11__tar.gz → 5.8.12__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 (384) hide show
  1. {sourcecode-5.8.11 → sourcecode-5.8.12}/CHANGELOG.md +21 -0
  2. {sourcecode-5.8.11 → sourcecode-5.8.12}/PKG-INFO +20 -8
  3. {sourcecode-5.8.11 → sourcecode-5.8.12}/README.md +19 -7
  4. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/DEFECT-LEDGER.md +45 -9
  5. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/DEVELOPMENT-ROADMAP.md +23 -13
  6. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/EXECUTIVE-ROADMAP.md +36 -13
  7. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/USER_GUIDE.md +16 -10
  8. {sourcecode-5.8.11 → sourcecode-5.8.12}/pyproject.toml +1 -1
  9. {sourcecode-5.8.11 → sourcecode-5.8.12}/scripts/perf_harness.py +14 -0
  10. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/__init__.py +1 -1
  11. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/audit_recipe.py +5 -0
  12. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/cache_model.py +3 -3
  13. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/cli.py +58 -4
  14. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/data_exposure.py +21 -1
  15. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/endpoint_disposition.py +7 -2
  16. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/hibernate_strat.py +8 -1
  17. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/migrate_check.py +22 -0
  18. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/openrewrite_recipe.py +17 -0
  19. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/perf.py +7 -0
  20. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/selftest.py +33 -31
  21. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/spring_security_audit.py +7 -2
  22. {sourcecode-5.8.11 → sourcecode-5.8.12}/.github/workflows/build-windows.yml +0 -0
  23. {sourcecode-5.8.11 → sourcecode-5.8.12}/.github/workflows/perf-gate.yml +0 -0
  24. {sourcecode-5.8.11 → sourcecode-5.8.12}/.gitignore +0 -0
  25. {sourcecode-5.8.11 → sourcecode-5.8.12}/.ruff.toml +0 -0
  26. {sourcecode-5.8.11 → sourcecode-5.8.12}/CLAUDE.md +0 -0
  27. {sourcecode-5.8.11 → sourcecode-5.8.12}/CONTRIBUTING.md +0 -0
  28. {sourcecode-5.8.11 → sourcecode-5.8.12}/LICENSE +0 -0
  29. {sourcecode-5.8.11 → sourcecode-5.8.12}/NOTICE +0 -0
  30. {sourcecode-5.8.11 → sourcecode-5.8.12}/SECURITY.md +0 -0
  31. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/CACHE.md +0 -0
  32. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/COMMERCIAL-OFFER.md +0 -0
  33. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/CUSTOMER-VALIDATION.md +0 -0
  34. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/DEMO-5MIN.md +0 -0
  35. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/EXECUTION-PLAN-12MO.md +0 -0
  36. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/MANUAL-USUARIO.md +0 -0
  37. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/MODERNIZATION.md +0 -0
  38. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/PRODUCT_AUDIT.md +0 -0
  39. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/PRODUCT_IDENTITY.md +0 -0
  40. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/PRODUCT_TIERS.md +0 -0
  41. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/RC1-CHECKLIST.md +0 -0
  42. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/RELEASE-CHECKLIST.md +0 -0
  43. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
  44. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
  45. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
  46. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
  47. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
  48. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
  49. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
  50. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
  51. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
  52. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/EPV-p6-class-typeref.md +0 -0
  53. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
  54. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
  55. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
  56. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
  57. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/adr/0001-semantic-ir.md +0 -0
  58. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
  59. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
  60. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
  61. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
  62. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/adr/0006-performance-harness.md +0 -0
  63. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/adr/0007-composition-semantics.md +0 -0
  64. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/adr/0008-answer-coherence.md +0 -0
  65. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/consumer-disposition-inventory.md +0 -0
  66. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/overview.md +0 -0
  67. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/product-architecture-review.md +0 -0
  68. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/product-strategy-layering.md +0 -0
  69. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
  70. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/architecture/semantic-ir-roadmap.md +0 -0
  71. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/baseline-ci.yml +0 -0
  72. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/commercial-pipeline-audit.md +0 -0
  73. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/contracts-ci.yml +0 -0
  74. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/contracts.md +0 -0
  75. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
  76. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
  77. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
  78. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
  79. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
  80. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
  81. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
  82. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
  83. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/licensing-schema.md +0 -0
  84. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/migrate-check.md +0 -0
  85. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/README.md +0 -0
  86. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/REGRESSION-GATE.md +0 -0
  87. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
  88. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
  89. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
  90. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
  91. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
  92. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
  93. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
  94. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
  95. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
  96. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
  97. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
  98. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
  99. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
  100. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
  101. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
  102. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
  103. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
  104. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
  105. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
  106. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
  107. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
  108. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
  109. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
  110. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
  111. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
  112. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
  113. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
  114. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
  115. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
  116. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
  117. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
  118. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
  119. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
  120. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
  121. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
  122. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
  123. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
  124. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
  125. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
  126. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
  127. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
  128. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
  129. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/gate-latest/README.md +0 -0
  130. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
  131. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
  132. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
  133. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
  134. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
  135. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
  136. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/perf/baselines/reference-best/README.md +0 -0
  137. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/posture.md +0 -0
  138. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/privacy.md +0 -0
  139. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/pro-experience-audit.md +0 -0
  140. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/schema.md +0 -0
  141. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/spec/envelope-v1.md +0 -0
  142. {sourcecode-5.8.11 → sourcecode-5.8.12}/docs/spring-audit-ci.yml +0 -0
  143. {sourcecode-5.8.11 → sourcecode-5.8.12}/scripts/compare_integration_engines.py +0 -0
  144. {sourcecode-5.8.11 → sourcecode-5.8.12}/scripts/customer_smoke_test.sh +0 -0
  145. {sourcecode-5.8.11 → sourcecode-5.8.12}/scripts/generate_jdk_exports.py +0 -0
  146. {sourcecode-5.8.11 → sourcecode-5.8.12}/scripts/perf_gate.py +0 -0
  147. {sourcecode-5.8.11 → sourcecode-5.8.12}/scripts/sync_gate_anchors.py +0 -0
  148. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/adaptive_scanner.py +0 -0
  149. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/answer_bounds.py +0 -0
  150. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/archetype.py +0 -0
  151. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/architectural_baseline.py +0 -0
  152. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/architectural_delta.py +0 -0
  153. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/architecture_analyzer.py +0 -0
  154. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/architecture_summary.py +0 -0
  155. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/ast_extractor.py +0 -0
  156. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/audit_clusters.py +0 -0
  157. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/audit_report.py +0 -0
  158. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/audit_since.py +0 -0
  159. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/baseline_autocapture.py +0 -0
  160. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/breaking_changes.py +0 -0
  161. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/build_modules.py +0 -0
  162. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/bundled_docs.py +0 -0
  163. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/cache.py +0 -0
  164. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/call_surface.py +0 -0
  165. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/caller_metrics.py +0 -0
  166. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/caller_reach.py +0 -0
  167. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/canonical_ir.py +0 -0
  168. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/chain_rules.py +0 -0
  169. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/change_plan.py +0 -0
  170. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/cir_graphs.py +0 -0
  171. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/classifier.py +0 -0
  172. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/client_calls.py +0 -0
  173. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/code_notes_analyzer.py +0 -0
  174. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/compare.py +0 -0
  175. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/confidence_analyzer.py +0 -0
  176. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/constraint_diff.py +0 -0
  177. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/consumer_join.py +0 -0
  178. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/container_wiring.py +0 -0
  179. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/context_cache.py +0 -0
  180. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/context_graph.py +0 -0
  181. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/context_scorer.py +0 -0
  182. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/context_summarizer.py +0 -0
  183. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/contract_diff.py +0 -0
  184. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/contract_init.py +0 -0
  185. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/contract_model.py +0 -0
  186. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/contract_pipeline.py +0 -0
  187. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/coverage_parser.py +0 -0
  188. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/data_labels.py +0 -0
  189. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/declarations.py +0 -0
  190. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/defect_identity.py +0 -0
  191. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/degradation.py +0 -0
  192. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/dependency_analyzer.py +0 -0
  193. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/deployment_prefix.py +0 -0
  194. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detach.py +0 -0
  195. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/__init__.py +0 -0
  196. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/base.py +0 -0
  197. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/csproj_parser.py +0 -0
  198. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/dart.py +0 -0
  199. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/dotnet.py +0 -0
  200. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/elixir.py +0 -0
  201. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/go.py +0 -0
  202. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/heuristic.py +0 -0
  203. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/hybrid.py +0 -0
  204. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/java.py +0 -0
  205. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/jvm_ext.py +0 -0
  206. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/nodejs.py +0 -0
  207. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/parsers.py +0 -0
  208. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/php.py +0 -0
  209. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/project.py +0 -0
  210. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/python.py +0 -0
  211. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/ruby.py +0 -0
  212. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/rust.py +0 -0
  213. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/systems.py +0 -0
  214. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/terraform.py +0 -0
  215. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/detectors/tooling.py +0 -0
  216. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/doc_analyzer.py +0 -0
  217. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/dynamic_argument_surface.py +0 -0
  218. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/empty_reach.py +0 -0
  219. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/endpoint_literals.py +0 -0
  220. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/endpoint_metrics.py +0 -0
  221. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/entrypoint_classifier.py +0 -0
  222. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/env_analyzer.py +0 -0
  223. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/envelope.py +0 -0
  224. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/environment_resolution.py +0 -0
  225. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/error_schema.py +0 -0
  226. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/evidence_provider.py +0 -0
  227. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/execution_plan.py +0 -0
  228. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/explain.py +0 -0
  229. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/explain_endpoint.py +0 -0
  230. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/facts/__init__.py +0 -0
  231. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/facts/registry.json +0 -0
  232. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/field_deprecations.py +0 -0
  233. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/file_chunker.py +0 -0
  234. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/file_classifier.py +0 -0
  235. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/filter_surface.py +0 -0
  236. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/format_contract.py +0 -0
  237. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/fqn_utils.py +0 -0
  238. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/functional_routes.py +0 -0
  239. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/gate_anchors.py +0 -0
  240. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/git_analyzer.py +0 -0
  241. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/git_checkout.py +0 -0
  242. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/graph_analyzer.py +0 -0
  243. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/graph_evidence.py +0 -0
  244. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/identity_fallback.py +0 -0
  245. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/integration_coordinates.py +0 -0
  246. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/jdk_exports.py +0 -0
  247. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/license.py +0 -0
  248. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/manifest_cache.py +0 -0
  249. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/mcp/__init__.py +0 -0
  250. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/mcp/dependency_import.py +0 -0
  251. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  252. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  253. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  254. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  255. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  256. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/mcp/orchestrator.py +0 -0
  257. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/mcp/registry.py +0 -0
  258. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/mcp/runner.py +0 -0
  259. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/mcp/server.py +0 -0
  260. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/mcp_nudge.py +0 -0
  261. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/metrics_analyzer.py +0 -0
  262. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/migration_blast.py +0 -0
  263. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/non_coverage.py +0 -0
  264. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/openapi_surface.py +0 -0
  265. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/output_bounds.py +0 -0
  266. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/output_budget.py +0 -0
  267. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/output_ceiling.py +0 -0
  268. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/output_encoding.py +0 -0
  269. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/output_sink.py +0 -0
  270. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/parallel.py +0 -0
  271. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/parse_cache.py +0 -0
  272. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/partial_contract.py +0 -0
  273. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/path_admission.py +0 -0
  274. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/path_filters.py +0 -0
  275. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/phased_run.py +0 -0
  276. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/pipe_contract.py +0 -0
  277. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/posture.py +0 -0
  278. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/pr_comment_renderer.py +0 -0
  279. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/pr_impact.py +0 -0
  280. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/prepare_context.py +0 -0
  281. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/product_info.py +0 -0
  282. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/progress.py +0 -0
  283. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/provenance.py +0 -0
  284. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/ranking_engine.py +0 -0
  285. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/readiness_timeline.py +0 -0
  286. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/readonly.py +0 -0
  287. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/reconciliation.py +0 -0
  288. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/redactor.py +0 -0
  289. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/reference_facts.py +0 -0
  290. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/regress.py +0 -0
  291. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/release_info.py +0 -0
  292. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/relevance_scorer.py +0 -0
  293. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/remediation_diff.py +0 -0
  294. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/remedies.py +0 -0
  295. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/rename_refactor.py +0 -0
  296. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/repo_classifier.py +0 -0
  297. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/repository_ir.py +0 -0
  298. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/__init__.py +0 -0
  299. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/context.py +0 -0
  300. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/errors.py +0 -0
  301. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/executor.py +0 -0
  302. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/planner.py +0 -0
  303. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/query.py +0 -0
  304. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/request.py +0 -0
  305. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/resolution.py +0 -0
  306. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/result.py +0 -0
  307. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/retriever.py +0 -0
  308. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/runtime.py +0 -0
  309. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/steps.py +0 -0
  310. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
  311. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/steps_graph.py +0 -0
  312. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/steps_impact.py +0 -0
  313. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/steps_intf.py +0 -0
  314. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/steps_struct.py +0 -0
  315. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/retrieval/steps_txsec.py +0 -0
  316. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/ris.py +0 -0
  317. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/risk.py +0 -0
  318. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/risk_model.py +0 -0
  319. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/rule_catalog.py +0 -0
  320. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/rule_pass.py +0 -0
  321. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/runs.py +0 -0
  322. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/runtime_classifier.py +0 -0
  323. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/sarif.py +0 -0
  324. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/scanner.py +0 -0
  325. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/schema.py +0 -0
  326. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/schema_producers.py +0 -0
  327. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/schema_registry.py +0 -0
  328. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
  329. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
  330. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
  331. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
  332. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
  333. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
  334. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/security_chain.py +0 -0
  335. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/security_config.py +0 -0
  336. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/security_config_scan.py +0 -0
  337. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/security_posture.py +0 -0
  338. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/semantic_analyzer.py +0 -0
  339. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/semantic_impact_engine.py +0 -0
  340. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/semantic_integration_engine.py +0 -0
  341. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/semantic_services.py +0 -0
  342. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/serializer.py +0 -0
  343. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/servlet_surface.py +0 -0
  344. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/source_text.py +0 -0
  345. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/spring_event_topology.py +0 -0
  346. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/spring_findings.py +0 -0
  347. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/spring_impact.py +0 -0
  348. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/spring_model.py +0 -0
  349. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/spring_profiles.py +0 -0
  350. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/spring_properties.py +0 -0
  351. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/spring_semantic.py +0 -0
  352. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/spring_tx_analyzer.py +0 -0
  353. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/sql_taint.py +0 -0
  354. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/summarizer.py +0 -0
  355. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/target_admission.py +0 -0
  356. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/telemetry/__init__.py +0 -0
  357. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/telemetry/config.py +0 -0
  358. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/telemetry/consent.py +0 -0
  359. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/telemetry/events.py +0 -0
  360. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/telemetry/filters.py +0 -0
  361. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/telemetry/transport.py +0 -0
  362. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/test_gap_ranking.py +0 -0
  363. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/test_sources.py +0 -0
  364. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/text_input.py +0 -0
  365. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/timeline.py +0 -0
  366. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/timeline_cache.py +0 -0
  367. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/token_estimate.py +0 -0
  368. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/tree_utils.py +0 -0
  369. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/type_usage_surface.py +0 -0
  370. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/validation_inference.py +0 -0
  371. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/validation_surface.py +0 -0
  372. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/verify_edit.py +0 -0
  373. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/verify_repo.py +0 -0
  374. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/verify_rules.py +0 -0
  375. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/version_check.py +0 -0
  376. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/waivers.py +0 -0
  377. {sourcecode-5.8.11 → sourcecode-5.8.12}/src/sourcecode/workspace.py +0 -0
  378. {sourcecode-5.8.11 → sourcecode-5.8.12}/supabase/functions/README.md +0 -0
  379. {sourcecode-5.8.11 → sourcecode-5.8.12}/supabase/functions/get-license/index.ts +0 -0
  380. {sourcecode-5.8.11 → sourcecode-5.8.12}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
  381. {sourcecode-5.8.11 → sourcecode-5.8.12}/supabase/functions/telemetry/index.ts +0 -0
  382. {sourcecode-5.8.11 → sourcecode-5.8.12}/supabase/sql/license_event_ordering.sql +0 -0
  383. {sourcecode-5.8.11 → sourcecode-5.8.12}/supabase/sql/licensing_schema.sql +0 -0
  384. {sourcecode-5.8.11 → sourcecode-5.8.12}/supabase/sql/telemetry_events.sql +0 -0
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.8.12] — 2026-08-19
4
+
5
+ *Performance-mitigation and release-hygiene update. The external cross-version
6
+ performance regression remains open until it is reproduced under its controlled
7
+ `saint-server` protocol; this release does not present local warm-cache results
8
+ as that closure.*
9
+
10
+ ### Changed
11
+ - `validation` now reuses the shared Canonical IR for matching repository scopes;
12
+ `data-exposure` builds its Spring semantic model once per invocation and shares
13
+ it across declared label seeds.
14
+ - Root help, README and the user guide state cache reuse by command scope rather
15
+ than promising one universal parse path.
16
+ - `ASK_MAX_ANALYSIS_SECONDS` is documented accurately: it enforces a deadline
17
+ for `spring-audit`, `risk` and `audit-report`, not every deep command.
18
+
19
+ ### Verified
20
+ - On the local BroadleafCommerce corpus, the final analyzer fingerprint filled
21
+ the shared CIR in 10.46s and a warm `validation --compact` hit took 4.01s with
22
+ byte-identical output. This is local cache-state evidence only.
23
+
3
24
  ## [5.8.11] — 2026-08-19
4
25
 
5
26
  *Packaging re-release after the failed PyPI upload of 5.8.10. No functional or
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 5.8.11
3
+ Version: 5.8.12
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
@@ -49,7 +49,7 @@ Description-Content-Type: text/markdown
49
49
 
50
50
  **Context · Impact · Migration · Architecture · Review — everything from one structural model.**
51
51
 
52
- ![Version](https://img.shields.io/badge/version-5.8.11-blue)
52
+ ![Version](https://img.shields.io/badge/version-5.8.12-blue)
53
53
  ![Python](https://img.shields.io/badge/python-3.9%2B-green)
54
54
 
55
55
  Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
@@ -102,10 +102,12 @@ intentional. Use `ask audit-report --from-risk risk.json` to package an existing
102
102
  risk run instead of recomputing it.
103
103
 
104
104
  **A budget is honoured, never a veto.** `ASK_MAX_ANALYSIS_SECONDS=<seconds>`
105
- bounds a repo-wide/deep command. A value below the class floor prints what that
106
- class typically needs and **runs anyway** refusing to answer is the opposite of
107
- this product's doctrine. A run that spends its budget stops on the loop that is
108
- spending the time, not only between phases: a rule family cut in flight is
105
+ currently bounds the phase-runner commands `spring-audit`, `risk` and
106
+ `audit-report`; it is not a process-wide timeout for every command. A value below
107
+ the class floor prints what that class typically needs and **runs anyway**
108
+ refusing to answer is the opposite of this product's doctrine. A run that spends
109
+ its budget stops on the loop that is spending the time, not only between phases:
110
+ a rule family cut in flight is
109
111
  published as `rules_partially_run` with how far it reached, families that never
110
112
  started are named in `rules_not_run`, `_partial` names the phases that completed
111
113
  and the ones that did not, and the findings measured before the cut are kept.
@@ -113,7 +115,17 @@ The answer marks itself where the numbers are — `summary.partial`,
113
115
  `counts_are_floor`, `counts_basis` — and `confidence_level` is capped at `low`,
114
116
  because the confidence of the findings that exist says nothing about the family
115
117
  that did not run. Measured on BroadleafCommerce (2 766 Java files): a 4.5s budget
116
- stops at 1 408 files and ends at 5.1s.
118
+ stops at 1 408 files and ends at 5.1s. Commands outside that phase-runner set
119
+ must not be gated on this variable; their budget applicability remains visible in
120
+ the [defect ledger](docs/DEFECT-LEDGER.md).
121
+
122
+ **Current performance status.** In 5.8.12, `validation` reuses the shared
123
+ Canonical IR and `data-exposure` reuses one semantic model across all declared
124
+ label seeds. On the local BroadleafCommerce corpus, the final fingerprint filled
125
+ the shared CIR in 10.46s and a warm `validation --compact` run took 4.01s with
126
+ byte-identical output. This is a same-host cache observation, not a replacement
127
+ for the controlled `saint-server` cross-version comparison still tracked in the
128
+ [roadmap](docs/DEVELOPMENT-ROADMAP.md).
117
129
 
118
130
  **What a warm actually covers.** `ask cache warm` runs the compact analysis: it rebuilds the
119
131
  shared structural layers (L1/L2 + the Repository Intelligence Snapshot + the shared Canonical
@@ -139,7 +151,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
139
151
  # pip / pipx
140
152
  pipx install sourcecode # or: pip install sourcecode
141
153
 
142
- ask version # ask 5.8.11 — and, on a build that has aged,
154
+ ask version # ask 5.8.12 — and, on a build that has aged,
143
155
  # how many releases have probably shipped since
144
156
  ```
145
157
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  **Context · Impact · Migration · Architecture · Review — everything from one structural model.**
6
6
 
7
- ![Version](https://img.shields.io/badge/version-5.8.11-blue)
7
+ ![Version](https://img.shields.io/badge/version-5.8.12-blue)
8
8
  ![Python](https://img.shields.io/badge/python-3.9%2B-green)
9
9
 
10
10
  Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
@@ -57,10 +57,12 @@ intentional. Use `ask audit-report --from-risk risk.json` to package an existing
57
57
  risk run instead of recomputing it.
58
58
 
59
59
  **A budget is honoured, never a veto.** `ASK_MAX_ANALYSIS_SECONDS=<seconds>`
60
- bounds a repo-wide/deep command. A value below the class floor prints what that
61
- class typically needs and **runs anyway** refusing to answer is the opposite of
62
- this product's doctrine. A run that spends its budget stops on the loop that is
63
- spending the time, not only between phases: a rule family cut in flight is
60
+ currently bounds the phase-runner commands `spring-audit`, `risk` and
61
+ `audit-report`; it is not a process-wide timeout for every command. A value below
62
+ the class floor prints what that class typically needs and **runs anyway**
63
+ refusing to answer is the opposite of this product's doctrine. A run that spends
64
+ its budget stops on the loop that is spending the time, not only between phases:
65
+ a rule family cut in flight is
64
66
  published as `rules_partially_run` with how far it reached, families that never
65
67
  started are named in `rules_not_run`, `_partial` names the phases that completed
66
68
  and the ones that did not, and the findings measured before the cut are kept.
@@ -68,7 +70,17 @@ The answer marks itself where the numbers are — `summary.partial`,
68
70
  `counts_are_floor`, `counts_basis` — and `confidence_level` is capped at `low`,
69
71
  because the confidence of the findings that exist says nothing about the family
70
72
  that did not run. Measured on BroadleafCommerce (2 766 Java files): a 4.5s budget
71
- stops at 1 408 files and ends at 5.1s.
73
+ stops at 1 408 files and ends at 5.1s. Commands outside that phase-runner set
74
+ must not be gated on this variable; their budget applicability remains visible in
75
+ the [defect ledger](docs/DEFECT-LEDGER.md).
76
+
77
+ **Current performance status.** In 5.8.12, `validation` reuses the shared
78
+ Canonical IR and `data-exposure` reuses one semantic model across all declared
79
+ label seeds. On the local BroadleafCommerce corpus, the final fingerprint filled
80
+ the shared CIR in 10.46s and a warm `validation --compact` run took 4.01s with
81
+ byte-identical output. This is a same-host cache observation, not a replacement
82
+ for the controlled `saint-server` cross-version comparison still tracked in the
83
+ [roadmap](docs/DEVELOPMENT-ROADMAP.md).
72
84
 
73
85
  **What a warm actually covers.** `ask cache warm` runs the compact analysis: it rebuilds the
74
86
  shared structural layers (L1/L2 + the Repository Intelligence Snapshot + the shared Canonical
@@ -94,7 +106,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
94
106
  # pip / pipx
95
107
  pipx install sourcecode # or: pip install sourcecode
96
108
 
97
- ask version # ask 5.8.11 — and, on a build that has aged,
109
+ ask version # ask 5.8.12 — and, on a build that has aged,
98
110
  # how many releases have probably shipped since
99
111
  ```
100
112
 
@@ -16,20 +16,56 @@ The facts these rows are keyed to are published: `ask schema facts-v1` prints th
16
16
 
17
17
  ## Current Synchronization
18
18
 
19
- **As of 2026-08-19, the `5.8.11` release commit:** this is the current status of
20
- the 5.8.9 re-audit queue. The audit observations below remain historical evidence;
21
- only the table here declares present state.
19
+ **As of 2026-08-19, the external `5.8.11` re-audit:** this is the current status of
20
+ the 5.8.8/5.8.9 audit queue. The subject remained `saint-server` at `3dde0376`, with a
21
+ byte-identical CIR and the same 53/61 invocables exercised. The score is **78/100**
22
+ (75 in 5.8.8, 80 in 5.8.9). The observations below remain historical evidence; only
23
+ this table declares present state.
22
24
 
23
25
  | Rows | Current status | Evidence |
24
26
  |---|---|---|
25
- | `AUD-588-B01`, `AUD-589-B01`, `C3-122` | **closed** | `20596c8`; failed writes cannot suppress the global output-promise guard, covering both `risk` and `audit-report` emit paths. |
26
- | `AUD-588-B03` | **closed** | `16a52cc`; `SEC-009`, static `@Profile` evidence and `permit_all_rules` are emitted with regressions. |
27
- | `AUD-588-B04` | **closed** | `fd34eb1`; `data-exposure` preserves the chain decision for every route. |
27
+ | `AUD-588-B01`, `AUD-589-B01`, `C3-122` | **implemented in 5.8.12** | `9884488` requires `risk` and `audit-report` to deliver stdout or their requested artifact before exit 0; the remaining closure evidence is a field-scale subprocess reproduction. |
28
+ | `AUD-511-R01` / `AUD-588-B03` | **implemented in 5.8.12** | `13362ec` makes SEC-009 read comment-blanked Java, so a Javadoc profile cannot override the live `@Profile("!m3")` declaration. |
29
+ | `AUD-588-B04` | **retracted audit premise** | `data-exposure` correctly preserves `chain_decision`; the reported `coverage_unknown` routes were custom-gate annotations whose application was not configured. `fd34eb1` remains a valid additive disclosure, but no further B04 fix is due. |
28
30
  | `AUD-588-B05` | **closed** | `c15f5b6`; changed container-wired components block a false `unaffected` disposition. |
29
- | `AUD-588-B07` | **closed** | `5cc6ba7`; ASK-09 reads the envelope error contract and covers the wrapped shape. |
31
+ | `AUD-511-R03` / `AUD-588-B07` | **implemented in 5.8.12** | `47aee1e` gives the published `OUTPUT_TOO_LARGE` envelope precedence over an inconsistent process status and preserves the excerpt in every branch. |
30
32
  | `AUD-588-B08` | **closed** | `c084555`; `impact` publishes its independent stdout-byte budget. |
31
- | `AUD-588-B11` (container/units subset) | **closed** | `ca72b61`, `a49cf6a`; plan/compare publish container wiring and impact-chain names security-surface units. |
32
- | `AUD-588-B02`, `B06`, B11 residuals, `B12` | **open** | Require provider non-coverage verification, remaining contract parity and controlled cost calibration; no closure is inferred from the release. |
33
+ | `AUD-588-B11` (container/units subset) | **partially implemented in 5.8.12** | `d745d31` discovers nested Maven modules; `273ae8e` suppresses unsupported `pr-impact.unaffected_basis`. `impact` naming, source population units, risk tiers and plan narrative remain open. |
34
+ | `AUD-511-R02` / `AUD-589-B02` | **partially mitigated in 5.8.12, still under investigation** | `b93f230` reuses one `SpringSemanticModel` across every declared `data-exposure` seed; `473f47a` routes `validation` through the shared CIR cache, and `91bd0c0` retains subcommand `--no-cache` compatibility. On the local BroadleafCommerce corpus at the final analyzer fingerprint, a first shared-CIR fill took 10.46 s and its warm `validation --compact` hit took 4.01 s with byte-identical output. This is a same-host cache-state observation, not the 5.8.9/5.8.11 external A/B: the six-run C3-120 comparison and the configured `saint-server` reproduction remain required. |
35
+ | `AUD-588-B02`, `B06`, B11 residuals, `B12` | **partially open in 5.8.12** | `3869c87` excludes explicit EclipseLink from Hibernate applicability and effort; `037223e` publishes provider non-coverage. B11 parity and controlled cost calibration remain required. |
36
+
37
+ ### Re-audit Intake: 5.8.11
38
+
39
+ The third external pass uses the same `saint-server` snapshot (`3dde0376`), read-only
40
+ protocol and warm-cache preparation as 5.8.8 and 5.8.9. The CIR hash is identical across
41
+ all three versions. It exercises 53/61 invocables (87%) and reports 78/100. That makes
42
+ rule, output and execution changes attributable without claiming that the application was
43
+ run or that the eight blocked invocables were covered.
44
+
45
+ | ID | Priority | Finding | Required correction / verification |
46
+ |---|---|---|---|
47
+ | `AUD-588-B01`, `AUD-589-B01`, `C3-122` | P0 | `risk -o` can exit 0 with no file; `risk` and `audit-report` can finish with empty stdout. The failure has fast and slow composition paths. | Add a real-subprocess invariant: exit 0 must produce parseable stdout or the requested artifact. Exercise `risk` and `audit-report` with and without `-o`, plus budget-cut partial output. |
48
+ | `AUD-511-R01` | P1 regression | SEC-009 takes `@Profile` from comments and reports an active `@Profile("!m3")` request chain as inactive. | Reuse comment-blanked source and declaration-local profile evidence, or consume posture's authority. Regress a misleading javadoc and both positive/negative profile forms. |
49
+ | `AUD-511-R02` / `AUD-589-B02` | P1 investigation | `endpoints`, `impact`, `spring-audit`, `modernize`, `validation` and `timeline` measure 1.4-2.4x slower than 5.8.9; `data-exposure --config` remains high. | **Partial implementation:** `b93f230` shares the data-exposure semantic model across seeds and `473f47a` makes `validation` reuse the shared CIR; `91bd0c0` confirms `--no-cache` remains a compatibility no-op. Re-run the idle-host, isolated-cache, interleaved-control protocol against the audited `saint-server` configuration before attributing or closing the field regression. |
50
+ | `AUD-511-R03`, `AUD-588-B07` | P1 regression | ASK-09 reports `not_applicable` even though its literal probe emits `OUTPUT_TOO_LARGE` 12x above the ceiling. | Derive branch selection exclusively from the output envelope. Publish `observed_payload_excerpt` for pass, fail, error and not-applicable rows. |
51
+ | `AUD-588-B02` + `B06` | P1 | The EclipseLink repository still receives Hibernate readiness, rewrite-zone classification and 32.9-66.2 person-days; `non_coverage` is null. | A declared competing provider must remove the Hibernate axis from readiness, effort and classification and add provider non-coverage. EclipseLink automation remains out of scope. |
52
+ | `AUD-588-B11` residual | P2 | `impact.matched_fqns` mixes exact resolution with 235 implementations; `migrate-recipe` misses nested Maven manifests; source-file populations lack units; `risk` tier labels diverge; plan/pr-impact prose trails their new container facts. | Bind consumers to established authorities, name populations and units, and add cross-command parity tests. Do not add parallel detection. |
53
+ | `AUD-588-B12` | P2 | 5.1.0 anchors disagree in both directions with 5.8.11 measurements; `timeline` is advertised as foreground despite a 404s sample. | Recalibrate only after controlled measurements and align foreground advice with the explicit opt-in progress policy. |
54
+
55
+ ### Feature Recommendations: 5.8.11
56
+
57
+ | ID | Recommendation | Current decision |
58
+ |---|---|---|
59
+ | `AUD-588-F01` | EclipseLink/JPA-provider migration axis. | **Deferred product feature.** First close B02/B06 so the current Hibernate answer is honest about non-coverage. |
60
+ | `AUD-588-F02` | Shared answer-contract authority for profiles, units, populations, caveats and container reach. | **Partial.** The SEC-009 regression and B11 residuals show that new consumers are still re-deriving facts. |
61
+ | `AUD-588-F03` | Versioned cost model by repository size and cache state. | **Partial.** Existing dimensions do not make stale 5.1.0 anchors operationally safe; controlled remeasurement is prerequisite. |
62
+ | `AUD-588-F04` | Default foreground heartbeat without corrupting machine output. | **Explicit opt-in by decision.** Until revised, cost advice must not imply that long commands emit progress by default. |
63
+ | `AUD-588-F05` | Raise audit coverage through safe operational paths and dirty-tree `verify-edit`. | **Locally verified only.** The external run remains 53/61; treat dirty-tree behavior as a validation gap, not a closed product claim. |
64
+
65
+ **Recommended order:** composition-output invariant → SEC-009 profile regression → controlled
66
+ performance measurement → EclipseLink applicability/non-coverage → ASK-09 → B11 narrative
67
+ and parity residuals → cost-model calibration. Keep B04 closed as a retracted premise, and
68
+ do not implement EclipseLink migration automation as part of this bug battery.
33
69
 
34
70
  **As of 2026-08-19, the `5.8.9` release commit:** the latest audit queue was implemented in
35
71
  committed post-5.8.7 fixes. This table is
@@ -3,19 +3,29 @@
3
3
  *Chief-engineer development record. This is the internal, dev-facing counterpart to the
4
4
  customer-facing `docs/EXECUTIVE-ROADMAP.md`.*
5
5
 
6
- > **CURRENT STATE — 2026-08-19 — 5.8.11 release**
7
- >
8
- > The 5.8.9 re-audit battery closed the reproducible output, envelope, security-chain
9
- > and container-reach defects in atomic commits. `20596c8` fixes the output-promise
10
- > seam; `16a52cc` adds `SEC-009` and profile evidence; `fd34eb1`, `c15f5b6`,
11
- > `5cc6ba7`, `c084555`, `ca72b61` and `a49cf6a` close the independent consumer
12
- > regressions. Targeted cross-command regression suites pass.
13
- >
14
- > Remaining work is explicit: provider-specific migration non-coverage (`B02/B06`),
15
- > the unresolved portions of answer-contract parity (`B11`), controlled cost-model
16
- > recalibration and the opt-in progress decision (`B12`). EclipseLink migration support
17
- > remains a deferred feature, not a bug fix. Historical 5.8.9 intake tables below are
18
- > superseded by this block where their statuses differ.
6
+ > **CURRENT STATE — 2026-08-19 — 5.8.12 release**
7
+ >
8
+ > The external 5.8.11 re-audit scores **78/100** over the same byte-identical
9
+ > `saint-server` CIR and 53/61 invocables. It refutes two closures, exposes one new
10
+ > security regression and measures a cross-command performance regression. The release
11
+ > fixes remain valuable where verified: B05, B08 and the container/units B11 subset hold;
12
+ > the B04 `data-exposure` premise is retracted by the auditor after configuration-based
13
+ > verification. Historical tables below are superseded by this block where statuses differ.
14
+ >
15
+ > | Priority | Work | Acceptance direction |
16
+ > |---|---|---|
17
+ > | P0 | `AUD-588-B01` / `AUD-589-B01` / `C3-122`: silent composition exits in `risk` and `audit-report`. | **Implemented in 5.8.12:** `9884488` turns an exit-0 return without delivered output into a typed failure. Field-scale subprocess reproduction remains required. |
18
+ > | P1 | `AUD-511-R01`: SEC-009 profile evidence reads comments. | **Implemented in 5.8.12:** `13362ec` uses comment-blanked Java and regresses a misleading Javadoc. |
19
+ > | P1 | `AUD-511-R02`: 1.4-2.4x performance slowdown. | **Partially mitigated in 5.8.12:** `b93f230` shares the `data-exposure` semantic model across label seeds; `473f47a` gives `validation` the shared CIR cache; `91bd0c0` preserves the published `--no-cache` no-op. Local Broadleaf warm validation is lower, but controlled 5.8.9/5.8.11 remeasurement remains the acceptance gate. |
20
+ > | P1 | `AUD-511-R03`: ASK-09 false `not_applicable`. | **Implemented in 5.8.12:** `47aee1e` uses the emitted envelope as authority and retains evidence for every result. |
21
+ > | P1 | `AUD-588-B02/B06`: EclipseLink is billed a Hibernate migration. | **Implemented in 5.8.12:** `3869c87` excludes the axis; `037223e` publishes the unsupported-provider gap. |
22
+ > | P2 | `AUD-588-B11` residuals and `B12`. | `d745d31` and `273ae8e` close nested-build discovery and false exclusion prose. Finish naming/population/tier/plan parity, then recalibrate cost advice under controlled evidence. |
23
+ >
24
+ > **Feature decisions:** `F01` (EclipseLink migration automation) remains deferred, but
25
+ > provider non-coverage is a prerequisite bug fix. `F02` is partial and must consolidate
26
+ > existing authorities rather than re-derive facts. `F03` is partial pending calibrated
27
+ > measurements. `F04` remains opt-in, so foreground advice must not imply a heartbeat.
28
+ > `F05` remains locally verified only; dirty-tree `verify-edit` is a validation gap.
19
29
 
20
30
  > **CURRENT STATE — 2026-08-19 — 5.8.9 working tree**
21
31
  >
@@ -5,10 +5,10 @@ director; no internal implementation knowledge assumed.*
5
5
 
6
6
  > **DOCUMENT STATUS — 2026-08-19**
7
7
  >
8
- > The current release is **5.8.11**. It closes the reproducible output-delivery,
9
- > security-chain, selftest-envelope and container-reach defects from the 5.8.9
10
- > re-audit. The 5.8.7 and 5.8.9 findings below are historical evidence and must be
11
- > read with this status block.
8
+ > The current release is **5.8.12**. Its external re-audit scores **78/100** on the
9
+ > same repository and protocol as the two prior rounds (75, then 80). The repository
10
+ > model is byte-identical, so the reported changes are execution, rule or presentation
11
+ > behavior. This block supersedes earlier release claims where they conflict.
12
12
  >
13
13
  > **Closed in the current working tree:** `B23`, `B24`, `B25`, `B26`, `B27`, `B28`, the
14
14
  > `C4-25` residual, `C4-27`, `C4-28`, additive `C1-49`, and `C3-130` for `plan`/`cold-start`,
@@ -19,17 +19,40 @@ director; no internal implementation knowledge assumed.*
19
19
  > profiling, compatibility-window or host-specific CI work, not an unresolved bug from that
20
20
  > audit. Historical scores and release claims below remain historical; this block is current.
21
21
 
22
- > **5.8.11 AUDIT REMEDIATION**
22
+ > **5.8.11 RE-AUDIT CORRECTION**
23
23
  >
24
- > A requested output file now either exists or the command returns a typed failure;
25
- > `selftest` can validate a genuine output-ceiling refusal; security exceptions and
26
- > their static profile conditions are visible as findings; and change-planning views
27
- > retain container-driven reach instead of treating it as an empty call cone. The
28
- > release also distinguishes the token ceiling from `impact`'s independent byte cap.
24
+ > The re-audit confirms the container-reach correction (`pr-impact`, `plan`, `compare`),
25
+ > the independent `impact` byte budget and the `impact-chain` security-surface unit.
26
+ > It also retracts the earlier `data-exposure` premise: routes reported as
27
+ > `coverage_unknown` were custom-gate annotations whose runtime application had not been
28
+ > declared, not lost `permit_all` decisions.
29
29
  >
30
- > The open roadmap is narrower: provider-specific EclipseLink migration disclosure,
31
- > residual cross-command parity and controlled cost calibration. EclipseLink migration
32
- > automation remains a future product capability rather than a claim of this release.
30
+ > Three priorities replace the previous closure claim. First, `risk` and `audit-report`
31
+ > can still return success with no usable stdout or requested file. Second, the new
32
+ > `SEC-009` profile evidence can read a comment and mark the active public chain inactive.
33
+ > Third, controlled measurements show a 1.4-2.4x slowdown in several commands. The
34
+ > selftest ceiling row is also reopened: it now hides a genuine refusal as
35
+ > `not_applicable`.
36
+ >
37
+ > EclipseLink migration automation remains a future product capability. Its prerequisite
38
+ > is not optional: current migration readiness must stop charging an inapplicable
39
+ > Hibernate axis and publish the unsupported-provider gap. Shared answer contracts,
40
+ > calibrated cost advice and foreground-progress policy remain partial work, not release
41
+ > claims.
42
+
43
+ > **IMPLEMENTATION UPDATE — released in 5.8.12**
44
+ >
45
+ > The output invariant (`9884488`), comment-safe SEC-009 profile evidence (`13362ec`),
46
+ > ASK-09 envelope precedence (`47aee1e`), EclipseLink applicability and disclosure
47
+ > (`3869c87`, `037223e`), nested Maven discovery (`d745d31`) and guarded negative-set
48
+ > prose (`273ae8e`) are implemented with targeted regressions. Performance work has also
49
+ > landed but is not called closed: `b93f230` removes one semantic-model rebuild per
50
+ > `data-exposure` label seed, `473f47a` lets `validation` reuse the shared repository
51
+ > model, and `91bd0c0` preserves the documented `--no-cache` compatibility behavior.
52
+ > A local BroadleafCommerce warm cache hit measured 4.01 s for `validation --compact`
53
+ > after a 10.46 s first shared-CIR fill, with byte-identical output; this is not an
54
+ > external-version comparison. The controlled performance A/B, remaining B11 parity and
55
+ > field-scale validation of the composition paths still prevent declaring the roadmap clean.
33
56
 
34
57
  > **NEW AUDIT INTAKE — ASK 5.8.8 / `saint-server` — 2026-08-19**
35
58
  >
@@ -39,10 +39,12 @@ Evidence — every answer is backed by auditable evidence, not a gues
39
39
  CLI commands — impact, endpoints, spring-audit, explain, … each a projection
40
40
  ```
41
41
 
42
- The key idea: **the source is parsed once** into the Semantic IR; everything above that is
43
- computed from the IR, cached, and shared. `impact`, `endpoints`, and `spring-audit` are not
44
- three analyzers they are three questions asked of the same graph. (The extraction and
45
- consumption contract is fixed in the architecture ADRs 0001–0004 under `docs/architecture/`.)
42
+ The key idea: the extraction is **content-addressed**. Commands reuse the parse cache and,
43
+ where their analysed scope matches, the shared Canonical IR; `ask cache model` names what a
44
+ warm buys for each command rather than implying that every projection costs the same. In
45
+ 5.8.12, `validation` enters through that shared CIR and `data-exposure` reuses one semantic
46
+ model across all declared label seeds. (The extraction and consumption contract is fixed in
47
+ the architecture ADRs 0001–0004 under `docs/architecture/`.)
46
48
 
47
49
  ---
48
50
 
@@ -136,7 +138,7 @@ pipx install sourcecode # isolated install, no venv needed
136
138
 
137
139
  # Verify
138
140
  ask version
139
- # ask 5.8.11
141
+ # ask 5.8.12
140
142
  ```
141
143
 
142
144
  Requires Python 3.9+.
@@ -1482,10 +1484,12 @@ the tree. Set `ASK_RUNS_IN_REPO=1` only when `.ask/runs` belongs in that
1482
1484
  repository's own artefacts, or `ASK_RUNS_DIR=/path/to/runs` to choose an external
1483
1485
  location explicitly.
1484
1486
 
1485
- **Large-repo budgets.** Set `ASK_MAX_ANALYSIS_SECONDS=<seconds>` to bound a
1486
- repo-wide or deep command. The budget is **honoured, not vetoed**: if the value
1487
- is below the class floor ASK says so on stderr and runs anyway, and a run that
1488
- spends its budget publishes what it measured with
1487
+ **Large-repo budgets.** Set `ASK_MAX_ANALYSIS_SECONDS=<seconds>` to bound the
1488
+ phase-runner commands `spring-audit`, `risk` and `audit-report`. It is not a
1489
+ process-wide timeout for every repo-wide or deep command. The budget is
1490
+ **honoured, not vetoed**: if the value is below the class floor ASK says so on
1491
+ stderr and runs anyway, and a run that spends its budget publishes what it
1492
+ measured with
1489
1493
 
1490
1494
  ```json
1491
1495
  "_partial": {"partial": true,
@@ -1505,7 +1509,9 @@ inventories `rules_run` / `rules_not_run` with `rules_run_count` and
1505
1509
  stops at 1 408 files inside the `SEC-004` group and ends at 5.1s.
1506
1510
 
1507
1511
  Every count in such an answer is a floor over what ran — a family or phase that
1508
- never ran is named, never reported as an absence of findings. The mark lives
1512
+ never ran is named, never reported as an absence of findings. Commands outside
1513
+ that phase-runner set are not bounded by this variable and must not be CI-gated
1514
+ on it. The mark lives
1509
1515
  where the numbers are as well as at the root: `summary.partial`,
1510
1516
  `summary.counts_are_floor` and `summary.counts_basis`, with
1511
1517
  `confidence_level` capped at `low` and `confidence_basis` saying the cut is the
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "5.8.11"
7
+ version = "5.8.12"
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"
@@ -116,6 +116,8 @@ def build_argv(command: str, repo_path: Path, cold: bool) -> list[str]:
116
116
  argv = [ASK_BIN]
117
117
  if command:
118
118
  argv.append(command)
119
+ if command == perf.CONTROL_COMMAND:
120
+ argv += list(perf.STEADY_CONTROL_POSITIONAL_ARGS)
119
121
  argv.append(str(repo_path))
120
122
  argv += ["--format", "json"]
121
123
  # C3-110: some commands need an argument to be measurable at all, and the one
@@ -247,6 +249,18 @@ def measure_steady(
247
249
  Nothing here decides whether a release is fast. It decides whether the
248
250
  numbers are measurements at all — an unconverged sample publishes no figure.
249
251
  """
252
+ if repo_path.name != perf.STEADY_CONTROL_REPOSITORY:
253
+ return {
254
+ "schema_version": "perf-steady-v1",
255
+ "tool_version": TOOL_VERSION,
256
+ "protocol": perf.measurement_protocol(),
257
+ "measured": False,
258
+ "reason": (
259
+ "the steady protocol control is pinned to "
260
+ f"{perf.STEADY_CONTROL_REPOSITORY}, not {repo_path.name}; "
261
+ "choose the declared corpus or add a separately validated control"
262
+ ),
263
+ }
250
264
  host = perf.host_verdict()
251
265
  if not host["idle_enough"] and not allow_busy_host:
252
266
  return {
@@ -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.8.11"
7
+ __version__ = "5.8.12"
@@ -127,6 +127,11 @@ MANUAL_BASIS: "dict[str, str]" = {
127
127
  "clause) and an injection sink for a value, and an executor cannot tell "
128
128
  "them apart without the caller's intent"
129
129
  ),
130
+ "SEC-009": (
131
+ "whether an anonymous request matcher is intentional depends on the "
132
+ "deployment profile and authorization policy, so removing it would be "
133
+ "an unreviewed behaviour change rather than a safe rewrite"
134
+ ),
130
135
  "DEAD-001": (
131
136
  "a disabled security control is a decision somebody made; re-enabling it "
132
137
  "changes runtime behaviour nobody has measured here"
@@ -653,9 +653,9 @@ def cost_sentence() -> str:
653
653
  f"files, and a repository-wide audit measured {seconds:g} s on a "
654
654
  f"{_thousands(FIELD_ANCHOR_JAVA_FILES)}-file repository "
655
655
  f"({FIELD_ANCHOR_MEASURED_VERSION}{stale}).{gate} `ask cache model` prints "
656
- f"the figure and the build behind it for every command; "
657
- f"ASK_MAX_ANALYSIS_SECONDS/ASK_PROGRESS bound and narrate a run where CI "
658
- f"wants an explicit budget."
656
+ f"the figure and the build behind it for every command; ASK_PROGRESS "
657
+ f"narrates supervised work, while ASK_MAX_ANALYSIS_SECONDS bounds only "
658
+ f"the phase-runner commands (spring-audit, risk and audit-report)."
659
659
  )
660
660
 
661
661
 
@@ -572,7 +572,8 @@ def _build_help_text(scope: "Optional[Any]" = None) -> str:
572
572
 
573
573
  Deterministic Java/Spring semantics and reusable structural context for AI coding agents.
574
574
 
575
- Cache warms on first scan; later calls reuse pre-built context instead of rescanning.
575
+ Content-addressed parse and context caches reuse prior knowledge where a command's
576
+ scope matches; `ask cache model` says exactly what a warm buys per command.
576
577
  {_cost_sentence()}
577
578
 
578
579
  {_start_here_block(scope)}
@@ -584,6 +585,12 @@ Cache warms on first scan; later calls reuse pre-built context instead of rescan
584
585
  ask --compact --git-context [dim]# + git hotspots and uncommitted files[/dim]
585
586
  ask --agent [dim]# full structured JSON for AI agents[/dim]
586
587
 
588
+ [bold]Performance / CI:[/bold]
589
+ validation . --compact [dim]# reuses the shared CIR on a warm matching scope[/dim]
590
+ data-exposure . [dim]# one semantic model is shared across declared label seeds[/dim]
591
+ ASK_MAX_ANALYSIS_SECONDS=N [dim]# deadline only for spring-audit, risk, audit-report[/dim]
592
+ [dim]Other commands are not time-bounded by this variable; use `--progress` or `--detach` where offered.[/dim]
593
+
587
594
  [bold]Change and risk:[/bold]
588
595
  impact-chain <Class> . [dim]# blast radius; TX/SEC findings opt-in[/dim]
589
596
  impact <Class> . [dim]# reverse deps → endpoints reached[/dim]
@@ -1954,6 +1961,7 @@ def _output_ceiling_error(content: str, *, to_file: bool) -> "Optional[dict[str,
1954
1961
  #: that cannot produce the file it was asked for must not be able to say it did.
1955
1962
  _OUTPUT_PROMISED: "Optional[str]" = None
1956
1963
  _OUTPUT_DELIVERED: bool = False
1964
+ _ANSWER_REQUIRED_BY: "Optional[str]" = None
1957
1965
 
1958
1966
 
1959
1967
  def _record_output_promise(argv: "list[str]") -> None:
@@ -1966,9 +1974,10 @@ def _record_output_promise(argv: "list[str]") -> None:
1966
1974
  parser owns that. It is used only to ask, at the end, whether a file the run
1967
1975
  promised exists.
1968
1976
  """
1969
- global _OUTPUT_PROMISED, _OUTPUT_DELIVERED
1977
+ global _OUTPUT_PROMISED, _OUTPUT_DELIVERED, _ANSWER_REQUIRED_BY
1970
1978
  _OUTPUT_PROMISED = None
1971
1979
  _OUTPUT_DELIVERED = False
1980
+ _ANSWER_REQUIRED_BY = None
1972
1981
  for i, token in enumerate(argv):
1973
1982
  value: "Optional[str]" = None
1974
1983
  if token in ("--output", "-o"):
@@ -1987,6 +1996,36 @@ def _mark_output_delivered() -> None:
1987
1996
  _OUTPUT_DELIVERED = True
1988
1997
 
1989
1998
 
1999
+ def _require_answer_delivery(command: str) -> None:
2000
+ """Require a composed-report command to publish an answer before exit 0.
2001
+
2002
+ A file promise catches only ``-o``. Risk composition also has a stdout
2003
+ contract: a successful invocation must leave one parseable document behind.
2004
+ Keeping that obligation opt-in avoids changing intentionally quiet commands
2005
+ while covering both expensive composition surfaces.
2006
+ """
2007
+ global _ANSWER_REQUIRED_BY
2008
+ _ANSWER_REQUIRED_BY = command
2009
+
2010
+
2011
+ def _fail_on_missing_required_answer(exit_code: object) -> None:
2012
+ """Turn a silent successful composed run into a typed failure (C3-122)."""
2013
+ if exit_code not in (0, None) or _OUTPUT_DELIVERED or not _ANSWER_REQUIRED_BY:
2014
+ return
2015
+ _emit_error_json(
2016
+ EXECUTION_FAILED_CODE,
2017
+ f"{_ANSWER_REQUIRED_BY} finished without publishing an answer.",
2018
+ hint=(
2019
+ "The command returned successfully before its output was delivered. "
2020
+ "Re-run with progress enabled and report the invocation; a composed "
2021
+ "report must produce parseable stdout or its requested file."
2022
+ ),
2023
+ command=_ANSWER_REQUIRED_BY,
2024
+ expected="parseable stdout or the requested output artifact",
2025
+ )
2026
+ raise SystemExit(1)
2027
+
2028
+
1990
2029
  def _fail_on_unkept_output_promise(exit_code: object) -> None:
1991
2030
  """Refuse to report success for an answer that was never produced (C3-122).
1992
2031
 
@@ -7946,11 +7985,22 @@ def validation_cmd(
7946
7985
  target = _admit_path(path)
7947
7986
 
7948
7987
  from sourcecode.context_graph import ContextGraph
7988
+ from sourcecode.repository_ir import find_java_files
7949
7989
  from sourcecode.validation_surface import build_validation_surface
7950
7990
  _prog = Progress()
7951
7991
  _prog.start("mapping validation surface")
7952
- # Structural facts come from the ContextGraph — the single access layer.
7953
- _graph = ContextGraph.build_from_root(target)
7992
+ # Structural facts still come from the ContextGraph — the single access
7993
+ # layer — but its CIR now follows the shared knowledge-cache door used by
7994
+ # the other repository-wide commands. A validation run therefore does not
7995
+ # parse the same tree again after `cache warm`, `impact`, or `explain`.
7996
+ # `--no-cache` remains the published no-op for subcommands; the direct build
7997
+ # is strictly the best-effort fallback if the shared layer cannot answer.
7998
+ try:
7999
+ from sourcecode.context_cache import shared_cir
8000
+
8001
+ _graph = ContextGraph.from_cir(shared_cir(target, find_java_files(target)))
8002
+ except Exception:
8003
+ _graph = ContextGraph.build_from_root(target)
7954
8004
  data = build_validation_surface(target, graph=_graph)
7955
8005
 
7956
8006
  # P1-C: classify the request-body validation *pattern* so a repo with a
@@ -10666,6 +10716,7 @@ def risk_cmd(
10666
10716
  ask risk . --table --rule SEC-008 --band high --top-n 20
10667
10717
  ask risk . --limit 10 -o risk.json
10668
10718
  """
10719
+ _require_answer_delivery("risk")
10669
10720
  _apply_jobs(jobs)
10670
10721
  from sourcecode.risk import build_risk
10671
10722
 
@@ -11023,6 +11074,7 @@ def audit_report_cmd(
11023
11074
  ask audit-report . --profile prod --format markdown
11024
11075
  ask audit-report . --sign-key audit.key -o audit-report.json
11025
11076
  """
11077
+ _require_answer_delivery("audit-report")
11026
11078
  from sourcecode.audit_report import build_audit_report, render_markdown
11027
11079
 
11028
11080
  path = _admit_path(path)
@@ -16406,8 +16458,10 @@ def main_entry() -> None:
16406
16458
  try:
16407
16459
  # prog_name pins usage/help to the canonical `ask`, whatever the alias.
16408
16460
  app(prog_name="ask")
16461
+ _fail_on_missing_required_answer(0)
16409
16462
  _fail_on_unkept_output_promise(0)
16410
16463
  except SystemExit as _sysexit:
16464
+ _fail_on_missing_required_answer(_sysexit.code)
16411
16465
  _fail_on_unkept_output_promise(_sysexit.code)
16412
16466
  raise
16413
16467
  except WriteRefused as _refused:
@@ -253,10 +253,30 @@ def build_data_exposure(
253
253
  rows: dict[str, dict] = {}
254
254
  seeds_report: list[dict] = []
255
255
 
256
+ # Every seed answers a different reachability question over the same CIR.
257
+ # `run_impact_chain` accepts a prepared model precisely so that a declaration
258
+ # with several types does not rebuild the repository-wide semantic indexes
259
+ # once per type. Build lazily: declarations whose labels do not resolve keep
260
+ # the existing failure isolation in `run_impact_chain`.
261
+ impact_model = model
262
+
256
263
  for label in decl.labels:
257
264
  for seed in label.seed_types:
258
265
  found_signature = _signature_routes(graph, seed, handlers)
259
- chain = run_impact_chain(cir, seed, root=root, model=model, depth=depth)
266
+ if impact_model is None:
267
+ try:
268
+ from sourcecode.spring_model import SpringSemanticModel
269
+
270
+ impact_model = SpringSemanticModel.build(cir)
271
+ except Exception:
272
+ # `run_impact_chain` owns its error envelope. Retaining None
273
+ # here preserves that per-seed fallback if the model cannot be
274
+ # assembled instead of turning a partial exposure answer into
275
+ # a command failure.
276
+ pass
277
+ chain = run_impact_chain(
278
+ cir, seed, root=root, model=impact_model, depth=depth,
279
+ )
260
280
  resolution = str(getattr(chain, "resolution", "not_found"))
261
281
  reached = list(getattr(chain, "endpoints_affected", []) or [])
262
282