sourcecode 5.9.27__tar.gz → 5.9.29__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 (474) hide show
  1. {sourcecode-5.9.27 → sourcecode-5.9.29}/CHANGELOG.md +153 -0
  2. {sourcecode-5.9.27 → sourcecode-5.9.29}/PKG-INFO +3 -3
  3. {sourcecode-5.9.27 → sourcecode-5.9.29}/README.md +2 -2
  4. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-09-01-EXTERNAL-5.9.22.md +2 -2
  5. sourcecode-5.9.29/docs/AUDIT-2026-09-02-ALTERNATIVE-5.9.27.md +102 -0
  6. sourcecode-5.9.29/docs/AUDIT-2026-09-02-ALTERNATIVE-5.9.28.md +174 -0
  7. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/DEFECT-LEDGER.md +223 -0
  8. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/DEVELOPMENT-ROADMAP.md +128 -6
  9. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/EXECUTIVE-ROADMAP.md +104 -0
  10. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/USER_GUIDE.md +1 -1
  11. {sourcecode-5.9.27 → sourcecode-5.9.29}/pyproject.toml +1 -1
  12. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/__init__.py +1 -1
  13. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/audit_recipe.py +6 -0
  14. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/cache.py +81 -4
  15. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/cli.py +238 -8
  16. sourcecode-5.9.29/src/sourcecode/concurrency.py +295 -0
  17. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/context_cache.py +43 -2
  18. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/degradation.py +15 -0
  19. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/dependency_analyzer.py +25 -0
  20. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/empty_answer_diagnostics.py +11 -0
  21. sourcecode-5.9.29/src/sourcecode/inflight.py +287 -0
  22. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/manifest_cache.py +11 -9
  23. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/output_budget.py +49 -10
  24. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/parallel.py +35 -2
  25. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/progress.py +34 -0
  26. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/repository_ir.py +149 -0
  27. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/resource_budget.py +106 -0
  28. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/risk.py +99 -19
  29. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/rule_pass.py +18 -0
  30. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_findings.py +8 -0
  31. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_impact.py +17 -3
  32. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_security_audit.py +15 -2
  33. {sourcecode-5.9.27 → sourcecode-5.9.29}/.github/workflows/build-windows.yml +0 -0
  34. {sourcecode-5.9.27 → sourcecode-5.9.29}/.github/workflows/perf-gate.yml +0 -0
  35. {sourcecode-5.9.27 → sourcecode-5.9.29}/.github/workflows/windows-battery.yml +0 -0
  36. {sourcecode-5.9.27 → sourcecode-5.9.29}/.github/workflows/windows-regression.yml +0 -0
  37. {sourcecode-5.9.27 → sourcecode-5.9.29}/.gitignore +0 -0
  38. {sourcecode-5.9.27 → sourcecode-5.9.29}/.ruff.toml +0 -0
  39. {sourcecode-5.9.27 → sourcecode-5.9.29}/CLAUDE.md +0 -0
  40. {sourcecode-5.9.27 → sourcecode-5.9.29}/CODE_OF_CONDUCT.md +0 -0
  41. {sourcecode-5.9.27 → sourcecode-5.9.29}/CONTRIBUTING.md +0 -0
  42. {sourcecode-5.9.27 → sourcecode-5.9.29}/LICENSE +0 -0
  43. {sourcecode-5.9.27 → sourcecode-5.9.29}/NOTICE +0 -0
  44. {sourcecode-5.9.27 → sourcecode-5.9.29}/SECURITY.md +0 -0
  45. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
  46. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
  47. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
  48. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
  49. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
  50. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
  51. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
  52. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
  53. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
  54. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
  55. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
  56. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
  57. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
  58. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
  59. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
  60. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +0 -0
  61. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.3.md +0 -0
  62. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-28-EXTERNAL-5.9.10.md +0 -0
  63. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.16.md +0 -0
  64. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.17.md +0 -0
  65. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-08-31-REMEDIATION-5.9.18.md +0 -0
  66. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-09-01-ALTERNATIVE-5.9.23.md +0 -0
  67. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-09-01-EXTERNAL-5.9.23.md +0 -0
  68. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-09-02-ALTERNATIVE-5.9.25.md +0 -0
  69. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-09-02-EXTERNAL-5.9.25.md +0 -0
  70. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-2026-09-02-EXTERNAL-5.9.26.md +0 -0
  71. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
  72. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/CACHE.md +0 -0
  73. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/COMMERCIAL-OFFER.md +0 -0
  74. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/CUSTOMER-VALIDATION.md +0 -0
  75. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/DEMO-5MIN.md +0 -0
  76. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
  77. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/EXECUTION-PLAN-12MO.md +0 -0
  78. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/MANUAL-USUARIO.md +0 -0
  79. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/MODERNIZATION.md +0 -0
  80. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/PRODUCT-ROUTE.md +0 -0
  81. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/PRODUCT_AUDIT.md +0 -0
  82. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/PRODUCT_IDENTITY.md +0 -0
  83. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/PRODUCT_TIERS.md +0 -0
  84. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/RC1-CHECKLIST.md +0 -0
  85. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/RD-JVM-ASK-TRIAGE-2026-08-31.md +0 -0
  86. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/RELEASE-CHECKLIST.md +0 -0
  87. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/RELEASE-VERIFICATION.md +0 -0
  88. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
  89. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
  90. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
  91. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-assessment-report.md +0 -0
  92. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
  93. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
  94. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
  95. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
  96. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
  97. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
  98. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
  99. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
  100. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-pack-manifest.md +0 -0
  101. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
  102. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
  103. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
  104. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/EPV-p6-class-typeref.md +0 -0
  105. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
  106. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
  107. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
  108. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
  109. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0001-semantic-ir.md +0 -0
  110. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
  111. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
  112. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
  113. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
  114. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0006-performance-harness.md +0 -0
  115. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0007-composition-semantics.md +0 -0
  116. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/adr/0008-answer-coherence.md +0 -0
  117. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/consumer-disposition-inventory.md +0 -0
  118. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/overview.md +0 -0
  119. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/product-architecture-review.md +0 -0
  120. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/product-strategy-layering.md +0 -0
  121. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
  122. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/architecture/semantic-ir-roadmap.md +0 -0
  123. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/baseline-ci.yml +0 -0
  124. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/commercial-pipeline-audit.md +0 -0
  125. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/contracts-ci.yml +0 -0
  126. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/contracts.md +0 -0
  127. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
  128. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
  129. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
  130. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
  131. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
  132. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
  133. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
  134. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
  135. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/licensing-schema.md +0 -0
  136. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/migrate-check.md +0 -0
  137. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/pack-gate-github-actions.yml +0 -0
  138. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/pack-gate-gitlab.yml +0 -0
  139. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/README.md +0 -0
  140. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/REGRESSION-GATE.md +0 -0
  141. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
  142. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
  143. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
  144. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
  145. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
  146. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
  147. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
  148. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
  149. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
  150. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
  151. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
  152. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
  153. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
  154. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
  155. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
  156. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
  157. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
  158. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
  159. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
  160. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
  161. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
  162. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
  163. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
  164. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
  165. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
  166. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
  167. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
  168. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
  169. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
  170. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
  171. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
  172. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
  173. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
  174. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
  175. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
  176. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
  177. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
  178. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
  179. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
  180. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
  181. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
  182. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
  183. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/5.9.22/petclinic__ask__cold.json +0 -0
  184. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/5.9.22/petclinic__ask__warm.json +0 -0
  185. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/gate-latest/README.md +0 -0
  186. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
  187. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
  188. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
  189. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
  190. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
  191. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
  192. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/baselines/reference-best/README.md +0 -0
  193. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/perf/corpus-testing-2026-08-22.md +0 -0
  194. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/posture.md +0 -0
  195. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/privacy.md +0 -0
  196. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/pro-experience-audit.md +0 -0
  197. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/schema.md +0 -0
  198. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/spec/envelope-v1.md +0 -0
  199. {sourcecode-5.9.27 → sourcecode-5.9.29}/docs/spring-audit-ci.yml +0 -0
  200. {sourcecode-5.9.27 → sourcecode-5.9.29}/hatch_build.py +0 -0
  201. {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/compare_integration_engines.py +0 -0
  202. {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/context_cost_harness.py +0 -0
  203. {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/customer_smoke_test.sh +0 -0
  204. {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/generate_jdk_exports.py +0 -0
  205. {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/perf_gate.py +0 -0
  206. {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/perf_harness.py +0 -0
  207. {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/sync_gate_anchors.py +0 -0
  208. {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/test_fast.sh +0 -0
  209. {sourcecode-5.9.27 → sourcecode-5.9.29}/scripts/windows_reliability_matrix.py +0 -0
  210. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/__main__.py +0 -0
  211. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/access_drift.py +0 -0
  212. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/adaptive_scanner.py +0 -0
  213. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/analysis_budget.py +0 -0
  214. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/answer_bounds.py +0 -0
  215. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/archetype.py +0 -0
  216. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/architectural_baseline.py +0 -0
  217. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/architectural_delta.py +0 -0
  218. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/architecture_analyzer.py +0 -0
  219. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/architecture_summary.py +0 -0
  220. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/ast_extractor.py +0 -0
  221. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/audit_clusters.py +0 -0
  222. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/audit_report.py +0 -0
  223. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/audit_since.py +0 -0
  224. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/audit_verify.py +0 -0
  225. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/baseline_attestation.py +0 -0
  226. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/baseline_autocapture.py +0 -0
  227. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/breaking_changes.py +0 -0
  228. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/build_modules.py +0 -0
  229. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/build_stamp.py +0 -0
  230. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/bundled_docs.py +0 -0
  231. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/c4_render.py +0 -0
  232. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/cache_model.py +0 -0
  233. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/cache_observation.py +0 -0
  234. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/call_surface.py +0 -0
  235. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/caller_metrics.py +0 -0
  236. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/caller_reach.py +0 -0
  237. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/canonical_ir.py +0 -0
  238. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/chain_rules.py +0 -0
  239. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/change_plan.py +0 -0
  240. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/ci_output.py +0 -0
  241. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/cir_graphs.py +0 -0
  242. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/classifier.py +0 -0
  243. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/click_runtime.py +0 -0
  244. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/client_calls.py +0 -0
  245. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/code_notes_analyzer.py +0 -0
  246. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/compare.py +0 -0
  247. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/confidence_analyzer.py +0 -0
  248. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/constraint_diff.py +0 -0
  249. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/consumer_join.py +0 -0
  250. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/container_wiring.py +0 -0
  251. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/context_graph.py +0 -0
  252. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/context_scorer.py +0 -0
  253. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/context_summarizer.py +0 -0
  254. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/contract_diff.py +0 -0
  255. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/contract_init.py +0 -0
  256. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/contract_model.py +0 -0
  257. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/contract_pipeline.py +0 -0
  258. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/coverage_parser.py +0 -0
  259. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/cve_feed.py +0 -0
  260. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/cve_reachability.py +0 -0
  261. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/data_exposure.py +0 -0
  262. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/data_labels.py +0 -0
  263. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/declarations.py +0 -0
  264. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/defect_classes/__init__.py +0 -0
  265. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/defect_classes/registry.json +0 -0
  266. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/defect_identity.py +0 -0
  267. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/deployment_prefix.py +0 -0
  268. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detach.py +0 -0
  269. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/__init__.py +0 -0
  270. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/base.py +0 -0
  271. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/csproj_parser.py +0 -0
  272. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/dart.py +0 -0
  273. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/dotnet.py +0 -0
  274. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/elixir.py +0 -0
  275. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/go.py +0 -0
  276. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/heuristic.py +0 -0
  277. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/hybrid.py +0 -0
  278. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/java.py +0 -0
  279. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/jvm_ext.py +0 -0
  280. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/nodejs.py +0 -0
  281. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/parsers.py +0 -0
  282. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/php.py +0 -0
  283. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/project.py +0 -0
  284. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/python.py +0 -0
  285. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/ruby.py +0 -0
  286. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/rust.py +0 -0
  287. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/systems.py +0 -0
  288. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/terraform.py +0 -0
  289. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/detectors/tooling.py +0 -0
  290. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/doc_analyzer.py +0 -0
  291. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/dynamic_argument_surface.py +0 -0
  292. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/empty_reach.py +0 -0
  293. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/endpoint_disposition.py +0 -0
  294. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/endpoint_literals.py +0 -0
  295. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/endpoint_metrics.py +0 -0
  296. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/entrypoint_classifier.py +0 -0
  297. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/env_analyzer.py +0 -0
  298. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/envelope.py +0 -0
  299. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/environment_resolution.py +0 -0
  300. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/error_schema.py +0 -0
  301. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/evidence_provider.py +0 -0
  302. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/execution_plan.py +0 -0
  303. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/explain.py +0 -0
  304. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/explain_endpoint.py +0 -0
  305. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/facts/__init__.py +0 -0
  306. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/facts/registry.json +0 -0
  307. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/field_deprecations.py +0 -0
  308. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/file_chunker.py +0 -0
  309. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/file_classifier.py +0 -0
  310. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/filter_surface.py +0 -0
  311. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/findings_baseline.py +0 -0
  312. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/format_contract.py +0 -0
  313. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/fqn_utils.py +0 -0
  314. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/functional_routes.py +0 -0
  315. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/gate_anchors.py +0 -0
  316. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/git_analyzer.py +0 -0
  317. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/git_checkout.py +0 -0
  318. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/github_diff.py +0 -0
  319. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/graph_analyzer.py +0 -0
  320. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/graph_evidence.py +0 -0
  321. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/hibernate_strat.py +0 -0
  322. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/identity_fallback.py +0 -0
  323. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/integration_coordinates.py +0 -0
  324. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/intent_router.py +0 -0
  325. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/jdk_exports.py +0 -0
  326. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/jvm_inventory.py +0 -0
  327. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/license.py +0 -0
  328. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/__init__.py +0 -0
  329. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/dependency_import.py +0 -0
  330. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  331. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  332. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  333. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  334. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  335. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/orchestrator.py +0 -0
  336. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/registry.py +0 -0
  337. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/runner.py +0 -0
  338. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp/server.py +0 -0
  339. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/mcp_nudge.py +0 -0
  340. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/metrics_analyzer.py +0 -0
  341. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/migrate_check.py +0 -0
  342. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/migration_apply.py +0 -0
  343. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/migration_blast.py +0 -0
  344. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/non_coverage.py +0 -0
  345. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/openapi_surface.py +0 -0
  346. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/openrewrite_recipe.py +0 -0
  347. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/output_bounds.py +0 -0
  348. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/output_ceiling.py +0 -0
  349. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/output_encoding.py +0 -0
  350. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/output_sink.py +0 -0
  351. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/pack_manifest.py +0 -0
  352. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/packs.py +0 -0
  353. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/parse_cache.py +0 -0
  354. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/partial_contract.py +0 -0
  355. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/path_admission.py +0 -0
  356. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/path_display.py +0 -0
  357. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/path_filters.py +0 -0
  358. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/perf.py +0 -0
  359. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/phased_run.py +0 -0
  360. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/pipe_contract.py +0 -0
  361. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/posture.py +0 -0
  362. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/pr_comment_renderer.py +0 -0
  363. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/pr_impact.py +0 -0
  364. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/pr_risk.py +0 -0
  365. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/prepare_context.py +0 -0
  366. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/product_info.py +0 -0
  367. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/provenance.py +0 -0
  368. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/ranking_engine.py +0 -0
  369. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/readiness_timeline.py +0 -0
  370. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/readonly.py +0 -0
  371. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/reconciliation.py +0 -0
  372. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/redactor.py +0 -0
  373. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/reference_facts.py +0 -0
  374. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/regress.py +0 -0
  375. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/regulatory_pack.py +0 -0
  376. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/release_info.py +0 -0
  377. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/relevance_scorer.py +0 -0
  378. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/remediation_diff.py +0 -0
  379. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/remediation_flow.py +0 -0
  380. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/remediation_report.py +0 -0
  381. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/remedies.py +0 -0
  382. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/rename_refactor.py +0 -0
  383. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/repo_classifier.py +0 -0
  384. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/__init__.py +0 -0
  385. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/context.py +0 -0
  386. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/errors.py +0 -0
  387. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/executor.py +0 -0
  388. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/planner.py +0 -0
  389. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/query.py +0 -0
  390. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/request.py +0 -0
  391. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/resolution.py +0 -0
  392. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/result.py +0 -0
  393. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/retriever.py +0 -0
  394. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/runtime.py +0 -0
  395. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/steps.py +0 -0
  396. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
  397. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/steps_graph.py +0 -0
  398. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/steps_impact.py +0 -0
  399. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/steps_intf.py +0 -0
  400. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/steps_struct.py +0 -0
  401. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/retrieval/steps_txsec.py +0 -0
  402. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/ris.py +0 -0
  403. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/risk_model.py +0 -0
  404. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/rule_catalog.py +0 -0
  405. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/runs.py +0 -0
  406. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/runtime_classifier.py +0 -0
  407. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/sarif.py +0 -0
  408. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/sarif_emit.py +0 -0
  409. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/scanner.py +0 -0
  410. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schema.py +0 -0
  411. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schema_producers.py +0 -0
  412. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schema_registry.py +0 -0
  413. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
  414. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
  415. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
  416. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
  417. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
  418. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
  419. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
  420. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/security_chain.py +0 -0
  421. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/security_config.py +0 -0
  422. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/security_config_scan.py +0 -0
  423. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/security_posture.py +0 -0
  424. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/selection_contract.py +0 -0
  425. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/self_audit.py +0 -0
  426. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/selftest.py +0 -0
  427. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/semantic_analyzer.py +0 -0
  428. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/semantic_impact_engine.py +0 -0
  429. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/semantic_integration_engine.py +0 -0
  430. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/semantic_services.py +0 -0
  431. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/serializer.py +0 -0
  432. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/servlet_surface.py +0 -0
  433. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/source_text.py +0 -0
  434. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_event_topology.py +0 -0
  435. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_model.py +0 -0
  436. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_profiles.py +0 -0
  437. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_properties.py +0 -0
  438. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_semantic.py +0 -0
  439. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/spring_tx_analyzer.py +0 -0
  440. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/sql_taint.py +0 -0
  441. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/summarizer.py +0 -0
  442. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/target_admission.py +0 -0
  443. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/telemetry/__init__.py +0 -0
  444. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/telemetry/config.py +0 -0
  445. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/telemetry/consent.py +0 -0
  446. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/telemetry/events.py +0 -0
  447. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/telemetry/filters.py +0 -0
  448. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/telemetry/transport.py +0 -0
  449. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/test_gap_ranking.py +0 -0
  450. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/test_sources.py +0 -0
  451. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/text_input.py +0 -0
  452. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/timeline.py +0 -0
  453. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/timeline_cache.py +0 -0
  454. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/token_estimate.py +0 -0
  455. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/tree_utils.py +0 -0
  456. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/type_usage_surface.py +0 -0
  457. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/validation_inference.py +0 -0
  458. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/validation_surface.py +0 -0
  459. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/verify_edit.py +0 -0
  460. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/verify_repo.py +0 -0
  461. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/verify_rules.py +0 -0
  462. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/version_check.py +0 -0
  463. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/vex.py +0 -0
  464. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/waivers.py +0 -0
  465. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/watch_loop.py +0 -0
  466. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/wired_surface.py +0 -0
  467. {sourcecode-5.9.27 → sourcecode-5.9.29}/src/sourcecode/workspace.py +0 -0
  468. {sourcecode-5.9.27 → sourcecode-5.9.29}/supabase/functions/README.md +0 -0
  469. {sourcecode-5.9.27 → sourcecode-5.9.29}/supabase/functions/get-license/index.ts +0 -0
  470. {sourcecode-5.9.27 → sourcecode-5.9.29}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
  471. {sourcecode-5.9.27 → sourcecode-5.9.29}/supabase/functions/telemetry/index.ts +0 -0
  472. {sourcecode-5.9.27 → sourcecode-5.9.29}/supabase/sql/license_event_ordering.sql +0 -0
  473. {sourcecode-5.9.27 → sourcecode-5.9.29}/supabase/sql/licensing_schema.sql +0 -0
  474. {sourcecode-5.9.27 → sourcecode-5.9.29}/supabase/sql/telemetry_events.sql +0 -0
@@ -1,5 +1,158 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.9.29] — 2026-09-02
4
+
5
+ *The 5.9.28 field round's two P0s and its P1, plus the suite's first green run
6
+ in several releases. Where 5.9.28 answered a question about the worker pool,
7
+ this release answers the one about where a run stops when it stops.*
8
+
9
+ ### Added
10
+
11
+ - **An in-flight marker for runs that never finish (`R-01-INFLIGHT`).** The
12
+ field measured four `spring-audit` hangs and could say nothing about any of
13
+ them: every diagnostic this product had — the envelope, the forensic sidecar
14
+ — lives on a path a hung run never reaches. A marker is now written when a
15
+ hang-prone command starts, rewritten at each phase and stage change the
16
+ heartbeat already reports, and deleted on the way out. A run killed
17
+ externally leaves `inflight/<pid>.json` naming its argv, its start time, the
18
+ phase and the stage it stopped in. Abandoned markers are published by a
19
+ later run in `_meta.incomplete_runs`, because the run that stops cannot
20
+ report anything itself; each row states whether it is a measurement (the
21
+ process is gone) or an inference (no refresh, on a platform that cannot
22
+ probe liveness safely). Covers the audit family plus `onboard` and
23
+ `remediate`, the two commands the field reports hanging outside it.
24
+ `ASK_NO_INFLIGHT_MARKER=1` disables it.
25
+ - **`timings.rule_families`** — wall time per rule family, highest first, with
26
+ a basis stating that it ranks cost and not complexity. The phase split could
27
+ say `security_rules: 12,617 ms` and never which of six families spent it.
28
+
29
+ ### Fixed
30
+
31
+ - **The most expensive rule family is between 3 and 24 times faster, with a
32
+ byte-identical answer (P1).** `SEC-010` was 85 % of the rule phase and 35 %
33
+ of a whole audit; profiling found the walk under it re-reading every
34
+ remaining source, from disk, once per callee name it resolved — 96,399 reads
35
+ for 28 lookups. It indexes declarable names in the pass that already reads
36
+ each file once. Measured warm: `SEC-010` 10,830 → 3,246 ms on a 3,860-file
37
+ repository (audit 15.5 → 12.2 s) and 64,391 → 2,628 ms on an 878-file one
38
+ (audit 71.1 → 8.4 s), unchanged where a repository has no HTTP-input seeds.
39
+ `content_id` identical on all three.
40
+ - **That family reports while it runs, and a deadline can stop it inside.** It
41
+ owned the longest stretch of an audit and left one heartbeat line unchanged
42
+ for the whole of it, which from outside is what the field calls a hang. A
43
+ budget cut returns what it measured instead of surfacing as an analysis
44
+ error.
45
+ - **`manifest_cache` keyed its entries on a list that omitted every
46
+ lockfile.** Two repositories with identical manifests and different resolved
47
+ dependencies hashed the same, and the second was served the first's answer.
48
+ The key now reads the analyzer's own `INPUT_FILENAMES`, and a battery reads
49
+ that module's source and fails if it opens a file the set does not name.
50
+ - **`SpringAuditResult.merge()` dropped `spring_footprint`**, which switched
51
+ BUG-03's marginal-detection disclosure back off on every `--scope all` run —
52
+ the default.
53
+ - Machine-census leases are refreshed while a run is alive, so a killed run no
54
+ longer makes every later run on that machine halve its worker pool for an
55
+ hour; the lease directory is capped.
56
+
57
+ ### Changed
58
+
59
+ - The suite is green: 13,748 tests, 0 failures. It had carried twenty-one
60
+ standing reds for several releases, which is how a real regression becomes
61
+ indistinguishable from the background. Two were the product defects above;
62
+ the rest were assertions that had fallen behind the code they pin, each
63
+ fixed or opted out with the reason stated.
64
+
65
+ ### Known Limitations
66
+
67
+ - `ALT-01`/`ALT-03` remain open. The bisection the field asked for ran over two
68
+ corpora — 250 to 4,772 files on one, 9,195 on another — and found no size at
69
+ which `spring-audit` stops answering: 5.8 s to 39.6 s, sublinear, `rc=0`
70
+ throughout. File count alone is exonerated on this platform at up to 2.75x
71
+ the field repository's size. This release makes the stretch the failing runs
72
+ sat in several times shorter and, for the first time, visible while it
73
+ happens; it does not claim to have fixed the hang.
74
+ - The next field round should send `inflight/` and `entry-trace.jsonl`
75
+ together after a hang. A marker still stuck in `SEC-010` says the family is
76
+ not the cause; a marker in another stage moves the search there; no marker
77
+ at all keeps it upstream of `main_entry`.
78
+ - `BUG-02` and `BUG-12` still need the field's own large repository.
79
+
80
+ ## [5.9.28] — 2026-09-02
81
+
82
+ *Remediation batch on the 5.9.27 audit queue: nine rows, one commit each. The
83
+ round's own P0 — "does the shared worker pool tolerate concurrent `ask`
84
+ processes on one machine, or assume exclusive use?" — is answered here in
85
+ source, and the answer was exclusive use.*
86
+
87
+ ### Fixed
88
+
89
+ - **Concurrent invocations no longer size their worker pools as if each owned
90
+ the machine (`R-01`).** `parallel.default_jobs()` returned `cpu_count() - 1`
91
+ per process, so `k` concurrent runs started `k x (N-1)` parsing workers on
92
+ `N` cores and nothing in any payload said the machine had been shared. A
93
+ best-effort census of live invocations now divides that budget, and
94
+ `_meta.concurrency` publishes peers at start, whether the budget was shared,
95
+ and that a shared run is not an isolated-machine measurement. `cache._gc`
96
+ defers eviction while a peer is live, so a sweep cannot delete the working
97
+ set a concurrent run is reading. `ASK_NO_CONCURRENCY_CENSUS=1` restores the
98
+ previous behaviour.
99
+ - **The RSS ceiling stops a run where it is crossed (`BUG-22`, `REG-02`'s
100
+ enforcement half).** The check ran at phase boundaries only, so a phase
101
+ could allocate without bound and be refused after it finished — the field's
102
+ 2,029.92 MB peak under a 1,536 MB ceiling that was genuinely in force. The
103
+ ceiling is now sampled inside the parse loop (throttled to one footprint
104
+ sample per 0.5 s) and raises a typed refusal rendered as the same
105
+ `MEMORY_TOO_LARGE` envelope, instead of `EXECUTION_FAILED`.
106
+ - **A routing style this model does not read is published rather than reported
107
+ as an absent surface (`BUG-10`).** `unmodeled_routing_evidence` names the
108
+ files declaring an annotation whose argument is a path-like string literal
109
+ that produced no endpoint — a rule that names no framework. Measured:
110
+ `struts` reports 4 files under `@Action`/`@Namespace` where the answer used
111
+ to say nothing was found.
112
+ - **Overloaded handlers publish their ambiguity (`NEW-02`/`BUG-05`).** The
113
+ symbol index is keyed `Class#method` without parameter types, so every
114
+ overload collapsed onto the last declaration scanned. Entries now carry
115
+ `overload_count`, `anchor_ambiguity` and `anchor_candidate_lines`; an
116
+ unambiguous anchor carries none of it.
117
+ - **`selftest` refuses an unscoped run over nested repositories (`BUG-13`).**
118
+ It warned and then ran the ledger against the whole workspace. The implicit
119
+ `.` now refuses with `INVALID_USAGE` before any row runs; `--allow-nested`
120
+ is there for a caller who means it.
121
+ - **Every cache store publishes what evicts it (`BUG-16`).** The context
122
+ cache's 30-day TTL and 256-entry cap lived inside `_gc`, so ~1.7 GB of
123
+ growth had no readable contract. `cache status` now prints each store's
124
+ eviction contract, read from the same authority the sweep uses.
125
+ - **`_truncation_summary` accounts for its own bytes (`ALT-08`).**
126
+ `final_size_bytes` was measured before the summary and note were attached;
127
+ it is now measured over the assembled payload, with `content_size_bytes`
128
+ keeping the trimmed-content figure under a name that says which it is.
129
+ - **`impact-chain` publishes a null audit share when no audit ran
130
+ (`ALT-25`).** `metadata.audit_time_ms` was always ~0.0 on the default path —
131
+ the elapsed time of *not* running an opt-in repository-wide audit, under a
132
+ name readers compare against `query_time_ms`.
133
+ - **`retrieve security-surface --target` says why it has no anchor.** Four
134
+ rounds were answered "No such option: --target". The refusal now states that
135
+ the intent is repository-wide and names `security-chain --target`, derived
136
+ from `intent_router.ANCHOR_KINDS`.
137
+
138
+ ### Known Limitations
139
+
140
+ - `ALT-01`/`ALT-03` remain open. This release removes the contention mechanism
141
+ the 5.9.27 round evidenced; it does not explain the one hang observed with
142
+ nothing else running. The next field round should re-measure with
143
+ `_meta.concurrency` attached — `peer_invocations_at_start: 0` beside a
144
+ failure separates contention from whatever remains.
145
+ - `BUG-02` (`rc=127` with no output) and `BUG-12` (multi-gigabyte RSS while
146
+ building a small answer) still need the field's own large repository.
147
+ `BUG-22`'s in-phase sampler bounds the second one's damage without closing
148
+ it.
149
+ - `ask --help` measures 0.41-0.44 s on the engineering host against
150
+ 14.4-14.7 s in the field under confirmed contention. Not a refutation — a
151
+ different machine — and a reason to re-measure before profiling it as a
152
+ standalone defect.
153
+ - The release gate is unchanged: do not use the audit-command family to gate
154
+ unattended CI until the field re-measures.
155
+
3
156
  ## [5.9.27] — 2026-09-02
4
157
 
5
158
  *Follow-up from the 5.9.26 re-audit — a sharper instrumentation lead and a
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 5.9.27
3
+ Version: 5.9.29
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.27-blue)
62
+ ![Version](https://img.shields.io/badge/version-5.9.29-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
@@ -290,7 +290,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
290
290
  # pip / pipx
291
291
  pipx install sourcecode # or: pip install sourcecode
292
292
 
293
- ask version # ask 5.9.27 — and, on a build that has aged,
293
+ ask version # ask 5.9.29 — and, on a build that has aged,
294
294
  # how many releases have probably shipped since
295
295
  ```
296
296
 
@@ -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.27-blue)
13
+ ![Version](https://img.shields.io/badge/version-5.9.29-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
@@ -241,7 +241,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
241
241
  # pip / pipx
242
242
  pipx install sourcecode # or: pip install sourcecode
243
243
 
244
- ask version # ask 5.9.27 — and, on a build that has aged,
244
+ ask version # ask 5.9.29 — and, on a build that has aged,
245
245
  # how many releases have probably shipped since
246
246
  ```
247
247
 
@@ -12,7 +12,7 @@ a regression assertion exist.
12
12
 
13
13
  ## Executive Result
14
14
 
15
- The audit rates ASK Engine **6.6/10** on the large MSAS corpus and **7.5/10** on
15
+ The audit rates ASK Engine **6.6/10** on the large native-Windows corpus and **7.5/10** on
16
16
  the smaller nine-axis assessment. The measurements agree on the main risk:
17
17
  source analysis is accurate and unusually explicit about uncertainty, but large
18
18
  repository execution and several output contracts are not yet reliable enough
@@ -52,7 +52,7 @@ SQL-injection recall, memory, and inconsistent CLI contracts.
52
52
  ## Performance Evidence
53
53
 
54
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
55
+ `spring-audit` at **164.2 s cold**. On the larger native-Windows corpus it reports
56
56
  `ask . --agent` at **447 s**, `contract-diff` at **329 s**, `delta` at **187 s**,
57
57
  and `validation --compact` at **91 s**. Warm root compact analysis can be below
58
58
  one second; these are cold/deep-path costs.
@@ -0,0 +1,102 @@
1
+ # Alternative External Audit - 5.9.27
2
+
3
+ ## Scope And Verdict
4
+
5
+ Native-Windows re-audit on the same audited repository (3,342 Java files) used
6
+ in every prior round. Score **4.6/10**, the first uptick in four rounds (5.9.22
7
+ 6.6, 5.9.23 4.9, 5.9.25 4.3, 5.9.26 3.8). The uptick carries a large
8
+ qualification discovered mid-session: this audit's own machine was shared
9
+ with a second, independent automated process, and that materially changes
10
+ how the four-round erratic-failure pattern should be read.
11
+
12
+ ## Priority Finding — Confirmed Shared-Machine Contention
13
+
14
+ The auditor found the shared `entry-trace.jsonl` diagnostic file (added in
15
+ 5.9.27 to answer whether audit-family commands reach `main_entry`) growing
16
+ with invocations they never launched, against five OSS reference
17
+ repositories (`thingsboard`, `mall`, `struts`, `spring-petclinic`,
18
+ `jhipster-sample-app`) under the same `timeout N ask ...` harness pattern the
19
+ auditor uses. `Get-CimInstance Win32_Process` confirmed a live process under
20
+ the same Windows user actively running `ask.exe risk mall --limit 20` at the
21
+ time of inspection — not background noise, a second real test harness on the
22
+ same machine, same user, same shared `~/.sourcecode` cache and diagnostics
23
+ directory. Two of the auditor's own `spring-audit . --compact` hangs
24
+ overlapped a 525-second window in which 34 foreign invocations were traced.
25
+
26
+ This reframes, but does not resolve, the standing question. If ASK's shared
27
+ worker pool and cache do not isolate concurrent `ask` processes on one
28
+ machine, contention could produce exactly the observed pattern — the same
29
+ command sometimes hanging, sometimes returning empty near-instantly, with no
30
+ per-process variable distinguishing the two. It does not explain everything
31
+ (one hang occurred right after the trace went quiet for 20 seconds with
32
+ nothing else running), so contention is documented as a real, evidenced
33
+ contributing factor, not a proven sole cause.
34
+
35
+ ## Integrity Note
36
+
37
+ This round's ledger entry for 5.9.26 described a two-pass, self-contradictory
38
+ session ("an initial 129-invocation pass ... 0/23 ... 7.4/10, then a second
39
+ pass ... 0/35 ... 3.8/10"). This auditor states plainly that the first pass
40
+ and its 7.4/10 score do not correspond to anything they ran or reported. Given
41
+ the newly confirmed shared-machine contention, the likely explanation is that
42
+ 5.9.26's report mixed observations from two concurrent, independent audit
43
+ sessions on the same machine (the native-Windows lineage and a
44
+ multi-repository "testing/" corpus lineage matching the five OSS repos found
45
+ in the trace this round) rather than one evaluator's two passes. Recorded as
46
+ an open provenance question, not resolved either way — see
47
+ [`DEFECT-LEDGER.md`](DEFECT-LEDGER.md) for how this changes the 5.9.26 record.
48
+
49
+ ## Priority Regressions
50
+
51
+ None newly introduced. The audit-command family remains the standing issue:
52
+ `spring-audit`, `verify`, `risk`, `audit-report` stayed at 0 successful
53
+ answers in this session's isolated (non-overlapping) invocations;
54
+ `migrate-check` and `migrate-apply` each answered once, both immediately
55
+ after the foreign trace activity appeared to quiet down — noted as a
56
+ correlation worth cross-referencing against `entry-trace.jsonl`, not asserted
57
+ as causal.
58
+
59
+ ## Verified Improvements
60
+
61
+ - **The entry-point trace (5.9.27's response to last round's `R-01`) works as
62
+ designed**: the auditor's own invocations — `verify .`, `migrate-apply .`,
63
+ `risk . --limit 20`, `audit-report . --format markdown`, `risk . -o
64
+ promise.json` — now appear in `entry-trace.jsonl` even when they return
65
+ empty or hang. This confirms `main_entry` is reached on the failing runs,
66
+ closing the question the previous round's diagnostic gap left open. The
67
+ `empty_answer_diagnostics.record()` sidecar still never fires on any
68
+ observed failure, which narrows the search specifically to somewhere
69
+ between `main_entry` and the output-promise guard — a materially smaller
70
+ surface than "somewhere in the process" three rounds ago.
71
+ - `selftest`'s itemized gaps (last round's fix) confirmed: `"10 ledger row(s)
72
+ could not run: ASK-16, B6, E-37, ..."` replaces the prior generic slug.
73
+ - `ALT-09` (piped refusal on `cache clear`) reconfirmed a third consecutive
74
+ session.
75
+ - `BUG-15`/`BUG-21` (markup leak, `--jobs` range) reconfirmed.
76
+ - `migrate-check`/`migrate-apply` produced complete, reasonably sized
77
+ payloads (37.5 KB/41s and 9.5 KB/46s) on the runs that did answer.
78
+
79
+ ## Open, Unchanged
80
+
81
+ - `onboard .` remains the single most erratic measurement across rounds:
82
+ 904ms to a full 200-second external kill within the same session, same
83
+ invocation, same tree, no changes between runs.
84
+ - `ask --help` measured 14.4-14.7s this session, worse than the 3-4s the
85
+ 5.9.26 ledger entry flagged as worth its own row "if it persists" — it has
86
+ persisted across two rounds now. May share `R-01`'s contention signature;
87
+ not verified in isolation this session.
88
+ - `watch`'s ~55s index-warm-before-first-tick is unchanged and correctly
89
+ understood as real cost, not a defect, per the prior round's correction.
90
+ - `retrieve security-surface --target` still rejects `--target` as an unknown
91
+ option, unchanged across four rounds.
92
+
93
+ ## Verification Boundary
94
+
95
+ Session ran on a machine independently confirmed to be shared with a second,
96
+ concurrent `ask` test harness during at least part of the observation window.
97
+ Reliability figures in this round should be read as measured under
98
+ uncontrolled, real contention, not as an isolated single-process baseline.
99
+ The auditor's own recommendation: repeat `spring-audit . --compact` x3 on
100
+ both a reference repo and the audited repository in the same clean window, nothing else
101
+ running, to separate "the repository" from "the shared machine" as the
102
+ variable.
@@ -0,0 +1,174 @@
1
+ # Alternative External Audit - 5.9.28
2
+
3
+ *The audited repository is referred to neutrally throughout (3,342 Java files,
4
+ `repo_id 7fced5c877cacfc5`, dirty working tree) — it is the same subject as
5
+ every prior round in this lineage.*
6
+
7
+ ## Scope And Verdict
8
+
9
+ Native-Windows re-audit, sixth round in this lineage. Score **6.2/10** (5.9.22
10
+ 6.6, 5.9.23 4.9, 5.9.25 4.3, 5.9.26 3.8, 5.9.27 4.6, 5.9.28 6.2) — the first
11
+ substantial rise in five versions, and the first with a root cause identified
12
+ in code rather than a symptom patched. **No regression against 5.9.27 was
13
+ found.** Windows 11 Pro 10.0.26200, Python 3.10.0, pipx, `ask.EXE`, build
14
+ `adbbf9ca7652e2ad2dfdb2db911c12e1793dded5`.
15
+
16
+ | Axis | 5.9.27 | 5.9.28 | Basis |
17
+ |---|---:|---:|---|
18
+ | Analysis accuracy | 9.0 | 9.5 | Overload anchoring exact and cross-checked against the real source |
19
+ | Honesty of figures | 9.0 | 9.3 | `audit_time_ms` null instead of a false `0.0`; every cache store publishes its eviction contract |
20
+ | Diagnostic instrumentation | partial progress | real step, known limit | `_meta.concurrency` is precise and actionable — and absent from exactly the runs that fail |
21
+ | CLI ergonomics | 6.5 | 7.5 | Nested-workspace `selftest` refusal; `retrieve --target` explains and redirects |
22
+ | Audit-family reliability | 2/12 | 2/8, cause bounded | `migrate-check`/`migrate-apply` clean; `spring-audit` 0/4, `verify` 0/1, `risk` 0/1, `audit-report` 0/1 |
23
+ | Light-path performance | 6.5 | 6.5 | `impact-chain` 11.3 s, `review-pr` 29.4 s — within range under residual contention |
24
+
25
+ ## Priority Finding — The Hang Reproduces With Contention Ruled Down
26
+
27
+ The most important measurement of this round. The auditor isolated the
28
+ contention variable to its lowest observable level across six sessions, and
29
+ the failure persisted at 100%:
30
+
31
+ 1. `entry-trace.jsonl` was monitored for 120 s with nothing launched, waiting
32
+ for a quiet window.
33
+ 2. 100 s of total calm confirmed — no new lines.
34
+ 3. `timeout -k 5 150 ask spring-audit . --compact` launched into that window.
35
+ 4. Result: `rc=124`, 150,176 ms, **0 bytes of stdout**.
36
+ 5. The trace grew by two lines over the whole 150 s window: the auditor's own
37
+ invocation, and one light foreign invocation (`risk thingsboard --limit
38
+ 20`) — against the *dozens* of concurrent foreign invocations measured in
39
+ the 5.9.27 session.
40
+
41
+ Session total: **4/4 hangs** of `spring-audit . --compact`, the last of them
42
+ under the lowest contention load obtainable in six audits.
43
+
44
+ The 5.9.28 release note states: *"one hang was observed with nothing else
45
+ running, and that is unexplained."* This round supplies four repetitions of
46
+ that case rather than one, which turns "unexplained" into "unexplained and
47
+ reproducible" — a better-defined problem, still unsolved. Contention is a
48
+ real, now precisely measured factor; it is **not the sole cause**. Something
49
+ specific to this repository still breaks `spring-audit` on a near-idle
50
+ machine.
51
+
52
+ The auditor's recommendation: profile the `applying all rules over 3342 Java
53
+ files` phase (the one the stderr heartbeat names) against a growing subset of
54
+ the repository — 250, 500, 1,000, 2,000, 3,342 files — to find where the
55
+ behaviour changes from "answers" to "hangs indefinitely". If the command
56
+ exhausts memory or time deterministically on some code pattern in this tree,
57
+ contention would be worsening a failure that already exists in isolation
58
+ rather than causing one.
59
+
60
+ ## Instrumentation Gap — The Blind Spot `_meta.concurrency` Cannot Cover
61
+
62
+ `_meta.concurrency` is described as the best instrumentation to appear in six
63
+ sessions. On a successful `endpoints --output` run it read
64
+ `{"peer_invocations_at_start": 17, "worker_budget_shared": true, "jobs": 1,
65
+ "jobs_unshared": 4}` — exact, actionable, and enough for any consumer to tell
66
+ a contaminated timing from an isolated one without doing process archaeology.
67
+
68
+ It never appears on a hung or empty run: stderr across the four `spring-audit`
69
+ hangs contains zero mentions of `concurrency`, because those processes die
70
+ before assembling any payload. This is the same blind spot `R-01` identified
71
+ in the 5.9.26 round (the process does not reach the output guard); what has
72
+ changed is that we now know it *would* publish something useful if it got
73
+ there.
74
+
75
+ Concrete suggestion from the auditor: write an in-flight marker
76
+ (`inflight/<pid>.json` carrying `{argv, started_at, last_phase}`, updated at
77
+ each phase change the heartbeat already reports) when an audit-family command
78
+ starts, and delete it on completion. A process that hangs or dies leaves that
79
+ file orphaned — which is precisely the forensic evidence the next field
80
+ session needs, without depending on an external observer correlating
81
+ timestamps in a trace file shared with an unknown number of other processes.
82
+
83
+ ## Measured Reliability — Six Versions, Same Invocation, Same Repository
84
+
85
+ | Invocation | 5.9.23 | 5.9.25 | 5.9.26 | 5.9.27 | 5.9.28 |
86
+ |---|---:|---:|---:|---:|---|
87
+ | `spring-audit . --compact` | 0/24 | 0/18 | 0/8 | 0/5 | 0/4 (3 under verified-minimal contention) |
88
+ | `verify .` | 0/24 | 0/18 | 0/5 | 0/1 | 0/1 |
89
+ | `migrate-check . --compact` | 7/12 | 4/26 | 0/5 | 1/1 | 1/1 ✓ |
90
+ | `migrate-apply .` | 14/24 | 0/26 | 0/5 | 1/1 | 1/1 ✓ |
91
+ | `risk . --limit 20` | 0/13 | 0/7 | 0/4 | 0/1 | 0/1 |
92
+ | `audit-report . --format markdown` | 0/7 | 0/7 | 0/4 | 0/1 | 0/1 |
93
+
94
+ `migrate-check` and `migrate-apply` have now answered reliably in two
95
+ consecutive sessions (38–39 s, correct payloads) — a trend rather than luck.
96
+ The other four remain at zero.
97
+
98
+ ## Verified Fixes — Checked With The Auditor's Own Data
99
+
100
+ - **`NEW-02`/`BUG-05` (overload anchoring) — closed, cross-checked against the
101
+ real source.** `ask endpoints . --output`: the four endpoints of one
102
+ overloaded handler pair now publish `anchor_ambiguity: true`,
103
+ `overload_count: 2`, `anchor_candidate_lines: [134, 145]`, and those two
104
+ line numbers match the two real annotations the auditor had verified by hand
105
+ three sessions earlier. First defect tracked since the 5.9.22 round that is
106
+ genuinely resolved rather than "not reproduced this time".
107
+ - **`BUG-13` (nested-workspace `selftest`) — closed, verified against a
108
+ purpose-built fixture.** The auditor built a workspace holding two real
109
+ nested Git repositories: refusal in **373 ms**, `{"code": "INVALID_USAGE",
110
+ ..., "nested_repositories": 2}`, with `--allow-nested` documented. Against
111
+ 1/12 rows passing in 120 s before.
112
+ - **`BUG-16` (cache eviction contract) — closed.** `ask cache status` now
113
+ prints, per store, when and how entries are evicted — information absent for
114
+ four versions.
115
+ - **`ALT-25` (`impact-chain.audit_time_ms`) — closed.** `null` with
116
+ `findings_status: "not_computed"` and the rule stated, replacing the
117
+ misleading `0.0`.
118
+ - **`retrieve security-surface --target` — closed, high quality.** The refusal
119
+ now says the intent is repository-wide and names
120
+ `ask retrieve security-chain --target <symbol>`, after four sessions of
121
+ "No such option: --target".
122
+ - **`R-01`'s mechanism — confirmed real and quantified** (see above), with the
123
+ reservation that the disclosure cannot reach the failing runs.
124
+
125
+ ## Not Verified This Round
126
+
127
+ - **`ALT-08` — the auditor ran the wrong command and says so.**
128
+ `ask review-pr . --files -` (119,979 bytes, above the declared 100,000-byte
129
+ ceiling) carries no `_truncation_summary` at all: that field belongs to
130
+ `ask prepare-context review-pr`, a different command sharing the task name.
131
+ Neither claimed nor refuted; pending a repeat with the correct command.
132
+ - `BUG-22`/`REG-02` (`--agent` not relaunched), `BUG-10` (needs a repository
133
+ with the routing styles it detects, absent here), `ALT-07`, `ALT-10`,
134
+ `BUG-02`, `BUG-12`, `BUG-09`, `BUG-23`: not relaunched for time budget, no
135
+ regression signal against any of them.
136
+ - `ask --help`: 12.3 s cold, 2.9 s on immediate repetition. Still high on the
137
+ audit machine, consistent with residual contention rather than a defect in
138
+ the command.
139
+
140
+ ## Verified And Defect-Free In 5.9.28
141
+
142
+ `endpoints` (3,763, exact), `impact-chain` (37,445 bytes), `posture`,
143
+ `verify-edit`, `explain`, `impact`, `drift`, `trend`, `chunk-file`, `intent`,
144
+ `pr-risk`, `review-pr` (119,979 bytes, coherent), `migrate-check` (38,081
145
+ bytes), `migrate-apply` (10,142 bytes), `selftest` with an explicit path
146
+ (`rc=75`, 9,910 bytes) and with nesting detection (`rc=2`). `--jobs`
147
+ out-of-range rejection confirmed for the sixth consecutive session.
148
+
149
+ ## Commercial Position
150
+
151
+ The reliable subset grew for real this round — `migrate-check`,
152
+ `migrate-apply`, `endpoints`, `posture`, `impact-chain`, `pr-risk`,
153
+ `review-pr`, `selftest` with an explicit path, now with correct overload
154
+ anchors — and is valued at **18–20 €/dev/month**, up from prior rounds. The
155
+ central security-audit family (`spring-audit`, `verify`, `risk`,
156
+ `audit-report`) remains unusable on this repository for the sixth consecutive
157
+ version.
158
+
159
+ **Upgrade recommendation: yes, unconditionally** — no regression against
160
+ 5.9.27, and four corrections verified with the auditor's own data rather than
161
+ accepted on the changelog's word. For anyone who needs the audit family on
162
+ this repository specifically: still not the moment, but for the first time the
163
+ team has a concrete, reproducible lead instead of a diffuse symptom.
164
+
165
+ ## Attack Order Requested By The Auditor
166
+
167
+ 1. `R-01` — bisect the `applying all rules` phase over a growing file subset
168
+ (250 → 3,342) to find where the behaviour changes; the trigger may not be
169
+ purely concurrency.
170
+ 2. Extend `R-01`'s instrumentation to runs that never complete — the in-flight
171
+ marker above.
172
+ 3. `R-02` — repeat the `ALT-08` verification with `ask prepare-context
173
+ review-pr`.
174
+ 4. Remaining rows unchanged in priority from the 5.9.27 report.