sourcecode 5.9.9__tar.gz → 5.9.10__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 (451) hide show
  1. {sourcecode-5.9.9 → sourcecode-5.9.10}/CHANGELOG.md +10 -0
  2. {sourcecode-5.9.9 → sourcecode-5.9.10}/PKG-INFO +12 -10
  3. {sourcecode-5.9.9 → sourcecode-5.9.10}/README.md +11 -9
  4. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/DEFECT-LEDGER.md +29 -3
  5. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/DEVELOPMENT-ROADMAP.md +42 -6
  6. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/EXECUTIVE-ROADMAP.md +12 -11
  7. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/MANUAL-USUARIO.md +9 -2
  8. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/USER_GUIDE.md +16 -4
  9. {sourcecode-5.9.9 → sourcecode-5.9.10}/pyproject.toml +1 -1
  10. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/__init__.py +1 -1
  11. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/access_drift.py +10 -3
  12. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/classifier.py +11 -0
  13. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/cli.py +4 -0
  14. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/context_summarizer.py +1 -0
  15. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/java.py +2 -0
  16. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/spring_event_topology.py +1 -0
  17. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/summarizer.py +2 -0
  18. {sourcecode-5.9.9 → sourcecode-5.9.10}/.github/workflows/build-windows.yml +0 -0
  19. {sourcecode-5.9.9 → sourcecode-5.9.10}/.github/workflows/perf-gate.yml +0 -0
  20. {sourcecode-5.9.9 → sourcecode-5.9.10}/.github/workflows/windows-battery.yml +0 -0
  21. {sourcecode-5.9.9 → sourcecode-5.9.10}/.gitignore +0 -0
  22. {sourcecode-5.9.9 → sourcecode-5.9.10}/.ruff.toml +0 -0
  23. {sourcecode-5.9.9 → sourcecode-5.9.10}/CLAUDE.md +0 -0
  24. {sourcecode-5.9.9 → sourcecode-5.9.10}/CODE_OF_CONDUCT.md +0 -0
  25. {sourcecode-5.9.9 → sourcecode-5.9.10}/CONTRIBUTING.md +0 -0
  26. {sourcecode-5.9.9 → sourcecode-5.9.10}/LICENSE +0 -0
  27. {sourcecode-5.9.9 → sourcecode-5.9.10}/NOTICE +0 -0
  28. {sourcecode-5.9.9 → sourcecode-5.9.10}/SECURITY.md +0 -0
  29. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
  30. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
  31. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
  32. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
  33. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
  34. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
  35. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
  36. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
  37. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
  38. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
  39. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
  40. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
  41. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
  42. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
  43. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
  44. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +0 -0
  45. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.3.md +0 -0
  46. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
  47. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/CACHE.md +0 -0
  48. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/COMMERCIAL-OFFER.md +0 -0
  49. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/CUSTOMER-VALIDATION.md +0 -0
  50. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/DEMO-5MIN.md +0 -0
  51. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
  52. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/EXECUTION-PLAN-12MO.md +0 -0
  53. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/MODERNIZATION.md +0 -0
  54. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/PRODUCT-ROUTE.md +0 -0
  55. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/PRODUCT_AUDIT.md +0 -0
  56. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/PRODUCT_IDENTITY.md +0 -0
  57. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/PRODUCT_TIERS.md +0 -0
  58. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/RC1-CHECKLIST.md +0 -0
  59. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/RELEASE-CHECKLIST.md +0 -0
  60. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
  61. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
  62. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
  63. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/DESIGN-assessment-report.md +0 -0
  64. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
  65. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
  66. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
  67. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
  68. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
  69. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
  70. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
  71. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
  72. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/DESIGN-pack-manifest.md +0 -0
  73. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
  74. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
  75. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
  76. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/EPV-p6-class-typeref.md +0 -0
  77. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
  78. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
  79. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
  80. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
  81. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/adr/0001-semantic-ir.md +0 -0
  82. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
  83. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
  84. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
  85. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
  86. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/adr/0006-performance-harness.md +0 -0
  87. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/adr/0007-composition-semantics.md +0 -0
  88. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/adr/0008-answer-coherence.md +0 -0
  89. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/consumer-disposition-inventory.md +0 -0
  90. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/overview.md +0 -0
  91. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/product-architecture-review.md +0 -0
  92. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/product-strategy-layering.md +0 -0
  93. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
  94. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/architecture/semantic-ir-roadmap.md +0 -0
  95. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/baseline-ci.yml +0 -0
  96. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/commercial-pipeline-audit.md +0 -0
  97. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/contracts-ci.yml +0 -0
  98. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/contracts.md +0 -0
  99. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
  100. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
  101. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
  102. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
  103. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
  104. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
  105. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
  106. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
  107. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/licensing-schema.md +0 -0
  108. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/migrate-check.md +0 -0
  109. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/pack-gate-github-actions.yml +0 -0
  110. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/pack-gate-gitlab.yml +0 -0
  111. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/README.md +0 -0
  112. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/REGRESSION-GATE.md +0 -0
  113. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
  114. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
  115. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
  116. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
  117. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
  118. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
  119. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
  120. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
  121. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
  122. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
  123. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
  124. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
  125. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
  126. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
  127. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
  128. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
  129. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
  130. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
  131. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
  132. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
  133. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
  134. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
  135. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
  136. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
  137. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
  138. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
  139. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
  140. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
  141. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
  142. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
  143. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
  144. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
  145. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
  146. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
  147. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
  148. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
  149. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
  150. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
  151. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
  152. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
  153. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
  154. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
  155. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/gate-latest/README.md +0 -0
  156. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
  157. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
  158. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
  159. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
  160. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
  161. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
  162. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/baselines/reference-best/README.md +0 -0
  163. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/perf/corpus-testing-2026-08-22.md +0 -0
  164. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/posture.md +0 -0
  165. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/privacy.md +0 -0
  166. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/pro-experience-audit.md +0 -0
  167. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/schema.md +0 -0
  168. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/spec/envelope-v1.md +0 -0
  169. {sourcecode-5.9.9 → sourcecode-5.9.10}/docs/spring-audit-ci.yml +0 -0
  170. {sourcecode-5.9.9 → sourcecode-5.9.10}/hatch_build.py +0 -0
  171. {sourcecode-5.9.9 → sourcecode-5.9.10}/scripts/compare_integration_engines.py +0 -0
  172. {sourcecode-5.9.9 → sourcecode-5.9.10}/scripts/context_cost_harness.py +0 -0
  173. {sourcecode-5.9.9 → sourcecode-5.9.10}/scripts/customer_smoke_test.sh +0 -0
  174. {sourcecode-5.9.9 → sourcecode-5.9.10}/scripts/generate_jdk_exports.py +0 -0
  175. {sourcecode-5.9.9 → sourcecode-5.9.10}/scripts/perf_gate.py +0 -0
  176. {sourcecode-5.9.9 → sourcecode-5.9.10}/scripts/perf_harness.py +0 -0
  177. {sourcecode-5.9.9 → sourcecode-5.9.10}/scripts/sync_gate_anchors.py +0 -0
  178. {sourcecode-5.9.9 → sourcecode-5.9.10}/scripts/test_fast.sh +0 -0
  179. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/__main__.py +0 -0
  180. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/adaptive_scanner.py +0 -0
  181. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/analysis_budget.py +0 -0
  182. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/answer_bounds.py +0 -0
  183. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/archetype.py +0 -0
  184. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/architectural_baseline.py +0 -0
  185. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/architectural_delta.py +0 -0
  186. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/architecture_analyzer.py +0 -0
  187. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/architecture_summary.py +0 -0
  188. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/ast_extractor.py +0 -0
  189. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/audit_clusters.py +0 -0
  190. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/audit_recipe.py +0 -0
  191. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/audit_report.py +0 -0
  192. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/audit_since.py +0 -0
  193. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/audit_verify.py +0 -0
  194. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/baseline_attestation.py +0 -0
  195. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/baseline_autocapture.py +0 -0
  196. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/breaking_changes.py +0 -0
  197. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/build_modules.py +0 -0
  198. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/build_stamp.py +0 -0
  199. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/bundled_docs.py +0 -0
  200. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/c4_render.py +0 -0
  201. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/cache.py +0 -0
  202. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/cache_model.py +0 -0
  203. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/cache_observation.py +0 -0
  204. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/call_surface.py +0 -0
  205. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/caller_metrics.py +0 -0
  206. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/caller_reach.py +0 -0
  207. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/canonical_ir.py +0 -0
  208. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/chain_rules.py +0 -0
  209. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/change_plan.py +0 -0
  210. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/ci_output.py +0 -0
  211. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/cir_graphs.py +0 -0
  212. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/client_calls.py +0 -0
  213. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/code_notes_analyzer.py +0 -0
  214. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/compare.py +0 -0
  215. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/confidence_analyzer.py +0 -0
  216. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/constraint_diff.py +0 -0
  217. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/consumer_join.py +0 -0
  218. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/container_wiring.py +0 -0
  219. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/context_cache.py +0 -0
  220. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/context_graph.py +0 -0
  221. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/context_scorer.py +0 -0
  222. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/contract_diff.py +0 -0
  223. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/contract_init.py +0 -0
  224. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/contract_model.py +0 -0
  225. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/contract_pipeline.py +0 -0
  226. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/coverage_parser.py +0 -0
  227. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/cve_feed.py +0 -0
  228. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/cve_reachability.py +0 -0
  229. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/data_exposure.py +0 -0
  230. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/data_labels.py +0 -0
  231. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/declarations.py +0 -0
  232. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/defect_classes/__init__.py +0 -0
  233. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/defect_classes/registry.json +0 -0
  234. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/defect_identity.py +0 -0
  235. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/degradation.py +0 -0
  236. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/dependency_analyzer.py +0 -0
  237. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/deployment_prefix.py +0 -0
  238. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detach.py +0 -0
  239. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/__init__.py +0 -0
  240. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/base.py +0 -0
  241. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/csproj_parser.py +0 -0
  242. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/dart.py +0 -0
  243. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/dotnet.py +0 -0
  244. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/elixir.py +0 -0
  245. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/go.py +0 -0
  246. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/heuristic.py +0 -0
  247. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/hybrid.py +0 -0
  248. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/jvm_ext.py +0 -0
  249. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/nodejs.py +0 -0
  250. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/parsers.py +0 -0
  251. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/php.py +0 -0
  252. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/project.py +0 -0
  253. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/python.py +0 -0
  254. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/ruby.py +0 -0
  255. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/rust.py +0 -0
  256. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/systems.py +0 -0
  257. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/terraform.py +0 -0
  258. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/detectors/tooling.py +0 -0
  259. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/doc_analyzer.py +0 -0
  260. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/dynamic_argument_surface.py +0 -0
  261. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/empty_reach.py +0 -0
  262. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/endpoint_disposition.py +0 -0
  263. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/endpoint_literals.py +0 -0
  264. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/endpoint_metrics.py +0 -0
  265. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/entrypoint_classifier.py +0 -0
  266. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/env_analyzer.py +0 -0
  267. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/envelope.py +0 -0
  268. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/environment_resolution.py +0 -0
  269. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/error_schema.py +0 -0
  270. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/evidence_provider.py +0 -0
  271. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/execution_plan.py +0 -0
  272. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/explain.py +0 -0
  273. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/explain_endpoint.py +0 -0
  274. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/facts/__init__.py +0 -0
  275. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/facts/registry.json +0 -0
  276. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/field_deprecations.py +0 -0
  277. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/file_chunker.py +0 -0
  278. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/file_classifier.py +0 -0
  279. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/filter_surface.py +0 -0
  280. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/findings_baseline.py +0 -0
  281. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/format_contract.py +0 -0
  282. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/fqn_utils.py +0 -0
  283. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/functional_routes.py +0 -0
  284. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/gate_anchors.py +0 -0
  285. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/git_analyzer.py +0 -0
  286. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/git_checkout.py +0 -0
  287. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/github_diff.py +0 -0
  288. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/graph_analyzer.py +0 -0
  289. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/graph_evidence.py +0 -0
  290. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/hibernate_strat.py +0 -0
  291. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/identity_fallback.py +0 -0
  292. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/integration_coordinates.py +0 -0
  293. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/intent_router.py +0 -0
  294. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/jdk_exports.py +0 -0
  295. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/license.py +0 -0
  296. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/manifest_cache.py +0 -0
  297. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/mcp/__init__.py +0 -0
  298. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/mcp/dependency_import.py +0 -0
  299. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  300. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  301. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  302. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  303. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  304. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/mcp/orchestrator.py +0 -0
  305. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/mcp/registry.py +0 -0
  306. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/mcp/runner.py +0 -0
  307. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/mcp/server.py +0 -0
  308. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/mcp_nudge.py +0 -0
  309. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/metrics_analyzer.py +0 -0
  310. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/migrate_check.py +0 -0
  311. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/migration_apply.py +0 -0
  312. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/migration_blast.py +0 -0
  313. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/non_coverage.py +0 -0
  314. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/openapi_surface.py +0 -0
  315. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/openrewrite_recipe.py +0 -0
  316. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/output_bounds.py +0 -0
  317. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/output_budget.py +0 -0
  318. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/output_ceiling.py +0 -0
  319. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/output_encoding.py +0 -0
  320. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/output_sink.py +0 -0
  321. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/pack_manifest.py +0 -0
  322. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/packs.py +0 -0
  323. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/parallel.py +0 -0
  324. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/parse_cache.py +0 -0
  325. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/partial_contract.py +0 -0
  326. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/path_admission.py +0 -0
  327. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/path_display.py +0 -0
  328. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/path_filters.py +0 -0
  329. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/perf.py +0 -0
  330. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/phased_run.py +0 -0
  331. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/pipe_contract.py +0 -0
  332. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/posture.py +0 -0
  333. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/pr_comment_renderer.py +0 -0
  334. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/pr_impact.py +0 -0
  335. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/pr_risk.py +0 -0
  336. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/prepare_context.py +0 -0
  337. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/product_info.py +0 -0
  338. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/progress.py +0 -0
  339. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/provenance.py +0 -0
  340. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/ranking_engine.py +0 -0
  341. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/readiness_timeline.py +0 -0
  342. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/readonly.py +0 -0
  343. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/reconciliation.py +0 -0
  344. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/redactor.py +0 -0
  345. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/reference_facts.py +0 -0
  346. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/regress.py +0 -0
  347. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/regulatory_pack.py +0 -0
  348. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/release_info.py +0 -0
  349. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/relevance_scorer.py +0 -0
  350. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/remediation_diff.py +0 -0
  351. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/remediation_flow.py +0 -0
  352. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/remediation_report.py +0 -0
  353. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/remedies.py +0 -0
  354. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/rename_refactor.py +0 -0
  355. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/repo_classifier.py +0 -0
  356. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/repository_ir.py +0 -0
  357. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/resource_budget.py +0 -0
  358. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/__init__.py +0 -0
  359. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/context.py +0 -0
  360. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/errors.py +0 -0
  361. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/executor.py +0 -0
  362. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/planner.py +0 -0
  363. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/query.py +0 -0
  364. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/request.py +0 -0
  365. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/resolution.py +0 -0
  366. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/result.py +0 -0
  367. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/retriever.py +0 -0
  368. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/runtime.py +0 -0
  369. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/steps.py +0 -0
  370. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
  371. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/steps_graph.py +0 -0
  372. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/steps_impact.py +0 -0
  373. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/steps_intf.py +0 -0
  374. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/steps_struct.py +0 -0
  375. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/retrieval/steps_txsec.py +0 -0
  376. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/ris.py +0 -0
  377. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/risk.py +0 -0
  378. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/risk_model.py +0 -0
  379. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/rule_catalog.py +0 -0
  380. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/rule_pass.py +0 -0
  381. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/runs.py +0 -0
  382. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/runtime_classifier.py +0 -0
  383. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/sarif.py +0 -0
  384. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/sarif_emit.py +0 -0
  385. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/scanner.py +0 -0
  386. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/schema.py +0 -0
  387. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/schema_producers.py +0 -0
  388. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/schema_registry.py +0 -0
  389. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
  390. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
  391. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
  392. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
  393. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
  394. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
  395. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
  396. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/security_chain.py +0 -0
  397. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/security_config.py +0 -0
  398. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/security_config_scan.py +0 -0
  399. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/security_posture.py +0 -0
  400. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/selection_contract.py +0 -0
  401. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/self_audit.py +0 -0
  402. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/selftest.py +0 -0
  403. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/semantic_analyzer.py +0 -0
  404. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/semantic_impact_engine.py +0 -0
  405. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/semantic_integration_engine.py +0 -0
  406. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/semantic_services.py +0 -0
  407. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/serializer.py +0 -0
  408. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/servlet_surface.py +0 -0
  409. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/source_text.py +0 -0
  410. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/spring_findings.py +0 -0
  411. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/spring_impact.py +0 -0
  412. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/spring_model.py +0 -0
  413. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/spring_profiles.py +0 -0
  414. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/spring_properties.py +0 -0
  415. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/spring_security_audit.py +0 -0
  416. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/spring_semantic.py +0 -0
  417. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/spring_tx_analyzer.py +0 -0
  418. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/sql_taint.py +0 -0
  419. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/target_admission.py +0 -0
  420. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/telemetry/__init__.py +0 -0
  421. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/telemetry/config.py +0 -0
  422. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/telemetry/consent.py +0 -0
  423. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/telemetry/events.py +0 -0
  424. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/telemetry/filters.py +0 -0
  425. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/telemetry/transport.py +0 -0
  426. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/test_gap_ranking.py +0 -0
  427. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/test_sources.py +0 -0
  428. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/text_input.py +0 -0
  429. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/timeline.py +0 -0
  430. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/timeline_cache.py +0 -0
  431. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/token_estimate.py +0 -0
  432. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/tree_utils.py +0 -0
  433. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/type_usage_surface.py +0 -0
  434. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/validation_inference.py +0 -0
  435. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/validation_surface.py +0 -0
  436. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/verify_edit.py +0 -0
  437. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/verify_repo.py +0 -0
  438. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/verify_rules.py +0 -0
  439. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/version_check.py +0 -0
  440. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/vex.py +0 -0
  441. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/waivers.py +0 -0
  442. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/watch_loop.py +0 -0
  443. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/wired_surface.py +0 -0
  444. {sourcecode-5.9.9 → sourcecode-5.9.10}/src/sourcecode/workspace.py +0 -0
  445. {sourcecode-5.9.9 → sourcecode-5.9.10}/supabase/functions/README.md +0 -0
  446. {sourcecode-5.9.9 → sourcecode-5.9.10}/supabase/functions/get-license/index.ts +0 -0
  447. {sourcecode-5.9.9 → sourcecode-5.9.10}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
  448. {sourcecode-5.9.9 → sourcecode-5.9.10}/supabase/functions/telemetry/index.ts +0 -0
  449. {sourcecode-5.9.9 → sourcecode-5.9.10}/supabase/sql/license_event_ordering.sql +0 -0
  450. {sourcecode-5.9.9 → sourcecode-5.9.10}/supabase/sql/licensing_schema.sql +0 -0
  451. {sourcecode-5.9.9 → sourcecode-5.9.10}/supabase/sql/telemetry_events.sql +0 -0
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.9.10] — 2026-08-27
4
+
5
+ *Release-alignment patch release.*
6
+
7
+ **Release**
8
+
9
+ - Synchronizes package metadata, CLI runtime, README and user-guide version surfaces at `5.9.10`.
10
+ - Carries forward the `5.9.9` documentation and availability guidance.
11
+ - Keeps the `AUD-615` reliability limits explicit pending their independent closure.
12
+
3
13
  ## [5.9.9] — 2026-08-27
4
14
 
5
15
  *Release-alignment patch release.*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 5.9.9
3
+ Version: 5.9.10
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.9-blue)
62
+ ![Version](https://img.shields.io/badge/version-5.9.10-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
@@ -196,14 +196,16 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
196
196
  answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
197
197
  unset, or set it to `0`, to disable the ceiling explicitly.
198
198
 
199
- **Current performance status.** Release 5.9.9 retains the shared Canonical IR
199
+ **Current performance status.** Release 5.9.10 retains the shared Canonical IR
200
200
  path used by `validation` and now passes that same CIR into labelled `data-exposure`
201
201
  runs; the no-label path remains parse-free. These are implementation properties,
202
- not duration promises. A controlled external warm-path audit has opened performance
203
- and bounded-output regressions for this release; use `ask cache model <repo>` and
204
- `--progress stderr` for supervised runs, and consult the
205
- [latest external audit intake](docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md) before
206
- treating a historical timing or bounded flag as a current guarantee.
202
+ not duration promises. The current external audit records two open availability
203
+ limits: `audit-report --format markdown` is not reliable under contention, and
204
+ the root compact flow is not suitable for strict timeouts on very large monorepos.
205
+ Use `ask cache model <repo>`, `--progress stderr`, `audit-report --from-risk` and
206
+ JSON/YAML output for supervised runs; consult the
207
+ [current reliability queue](docs/DEVELOPMENT-ROADMAP.md#aud-615-re-audit-release-599)
208
+ before treating a historical timing or bounded flag as a current guarantee.
207
209
 
208
210
  **CI delivery and workspace licensing.** `migrate-check --format sarif` emits
209
211
  ASK-owned migration findings with source locations and provenance; it does not
@@ -218,7 +220,7 @@ in `overlapping_paths`; a missing or non-directory path is rejected as structure
218
220
  invalid input rather than treated as an empty repository. This prevents silent
219
221
  entitlement errors in CI and does not change per-repository gates or billing.
220
222
 
221
- Release 5.9.9 also carries the boundary-contract hardening: missing consumer repositories,
223
+ Release 5.9.10 also carries the boundary-contract hardening: missing consumer repositories,
222
224
  malformed CVE feeds and unresolved `pack gate --since` refs fail as structured
223
225
  input errors; duplicate same-commit baselines are never overwritten. `posture
224
226
  --diff` validates unknown profiles when the repository declares profiles. In
@@ -251,7 +253,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
251
253
  # pip / pipx
252
254
  pipx install sourcecode # or: pip install sourcecode
253
255
 
254
- ask version # ask 5.9.9 — and, on a build that has aged,
256
+ ask version # ask 5.9.10 — and, on a build that has aged,
255
257
  # how many releases have probably shipped since
256
258
  ```
257
259
 
@@ -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.9-blue)
13
+ ![Version](https://img.shields.io/badge/version-5.9.10-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
@@ -147,14 +147,16 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
147
147
  answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
148
148
  unset, or set it to `0`, to disable the ceiling explicitly.
149
149
 
150
- **Current performance status.** Release 5.9.9 retains the shared Canonical IR
150
+ **Current performance status.** Release 5.9.10 retains the shared Canonical IR
151
151
  path used by `validation` and now passes that same CIR into labelled `data-exposure`
152
152
  runs; the no-label path remains parse-free. These are implementation properties,
153
- not duration promises. A controlled external warm-path audit has opened performance
154
- and bounded-output regressions for this release; use `ask cache model <repo>` and
155
- `--progress stderr` for supervised runs, and consult the
156
- [latest external audit intake](docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md) before
157
- treating a historical timing or bounded flag as a current guarantee.
153
+ not duration promises. The current external audit records two open availability
154
+ limits: `audit-report --format markdown` is not reliable under contention, and
155
+ the root compact flow is not suitable for strict timeouts on very large monorepos.
156
+ Use `ask cache model <repo>`, `--progress stderr`, `audit-report --from-risk` and
157
+ JSON/YAML output for supervised runs; consult the
158
+ [current reliability queue](docs/DEVELOPMENT-ROADMAP.md#aud-615-re-audit-release-599)
159
+ before treating a historical timing or bounded flag as a current guarantee.
158
160
 
159
161
  **CI delivery and workspace licensing.** `migrate-check --format sarif` emits
160
162
  ASK-owned migration findings with source locations and provenance; it does not
@@ -169,7 +171,7 @@ in `overlapping_paths`; a missing or non-directory path is rejected as structure
169
171
  invalid input rather than treated as an empty repository. This prevents silent
170
172
  entitlement errors in CI and does not change per-repository gates or billing.
171
173
 
172
- Release 5.9.9 also carries the boundary-contract hardening: missing consumer repositories,
174
+ Release 5.9.10 also carries the boundary-contract hardening: missing consumer repositories,
173
175
  malformed CVE feeds and unresolved `pack gate --since` refs fail as structured
174
176
  input errors; duplicate same-commit baselines are never overwritten. `posture
175
177
  --diff` validates unknown profiles when the repository declares profiles. In
@@ -202,7 +204,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
202
204
  # pip / pipx
203
205
  pipx install sourcecode # or: pip install sourcecode
204
206
 
205
- ask version # ask 5.9.9 — and, on a build that has aged,
207
+ ask version # ask 5.9.10 — and, on a build that has aged,
206
208
  # how many releases have probably shipped since
207
209
  ```
208
210
 
@@ -112,11 +112,37 @@ are the current release blockers and contract gaps:
112
112
  | AUD-614-SELFTEST-TIMEOUT | High / contract regression | closed 5.9.8 | `selftest --timeout` is now an overall deadline; each child receives the remaining budget, interrupted/unstarted rows are structured as `error`, and the command returns code 75. The real TeaVM flow and dedicated regression pass. The separate fourth-run hang remains mixed evidence. |
113
113
  | AUD-614-WIN-PROC | Medium | open | Windows/MSYS timeout or SIGTERM can leave `ask.exe` descendants alive, with MSYS PIDs unusable by native `taskkill`. Validate signal handling and Windows Job Objects from native Windows and Git Bash. |
114
114
  | AUD-614-G | Medium | closed 5.9.8 | The shared error authority normalizes legacy producer spellings to canonical uppercase codes (`NO_DIFF_SOURCE`, `INVALID_LICENSE`). TeaVM `review-pr` and activation contract tests pass. |
115
- | AUD-614-E | Low | open | Impact commands now agree on unresolved exit status, but their `risk_level` values still diverge (`unknown`/`low`/`unknown`). Define one not-found payload semantics and enforce parity. |
115
+ | AUD-614-E | Low | closed 5.9.9 | Event topology now publishes `risk_level: unknown` for `not_found`, matching `impact` and normal `impact-chain`; `low` remains a resolved no-risk result. Focused TeaVM coverage protects the parity. |
116
116
  | AUD-614-I | Medium | closed 5.9.8 | The user manual and internal compacting comment no longer promise `~10K`; they state that `cold-start --compact` is snapshot-dependent, expose `estimated_tokens`, and require size validation before direct AI injection. The CLI help and payload already used this contract. A hard ceiling remains optional future scope. |
117
- | AUD-614-INTENT-TIE | Medium | open | Exact lexical ties at score `2.8284` still resolve differently for `endpoint security` and `security surface`. Define deterministic tie/margin semantics and add a real-repository regression. |
117
+ | AUD-614-INTENT-TIE | Medium | closed 5.9.9 (reclassified) | The equal score belongs to different questions, not competing candidates. `endpoint security` selects a target-required intent and correctly refuses without a route; `security surface` is repository-wide and resolves. A focused regression locks the distinction. |
118
118
  | AUD-614-07 | Low | closed 5.9.8 (reverified) | The installed `ask spring-audi` entry point returns `Did you mean: spring-audit?`; the TeaVM path/typo regression battery passes. The external wording report is not reproducible in the current checkout. |
119
- | AUD-614-JUNIT4 | Medium | open | JUnit4 projects remain `project_type: unknown`; add evidence-backed classification without broad heuristic false positives. |
119
+ | AUD-614-JUNIT4 | Medium | closed 5.9.9 | JUnit4 test-only repositories classify as `test` only with the `junit:junit` coordinate and test-only Java sources; ordinary applications/libraries retain their structural type. |
120
+
121
+ **External audit intake `AUD-615`, re-audit of release 5.9.9 — 2026-08-27.** The
122
+ auditor exercised only repositories under `testing/` and added three robustness subjects.
123
+ The report contains conflicting headline scores (8.0 and 8.4), and shared fork scratch
124
+ state invalidated the definitive output capture for the long `audit-report` retest. The
125
+ ledger records the evidence and closure boundaries, not either headline score.
126
+
127
+ | ID | Severity | Status | Evidence / closure boundary |
128
+ |---|---:|---|---|
129
+ | AUD-615-F | Critical | closed 5.9.9 (reverified) | Windows/Git Bash verification confirms 11/11 reproductions: stdout `/dev/null` preserves exit 1 and byte-identical structured stderr, including `INVALID_USAGE` as well as `INVALID_INPUT`. Keep release-artifact coverage. |
130
+ | AUD-615-RISK-L0 | High / regression | closed 5.9.9 (reverified) | `risk --limit 0` completes in about 0.8–1.5 s as `zero_row_view`, with `analysis_skipped: true` and null totals; full analysis is not built for a view that requests no rows. |
131
+ | AUD-615-SELFTEST-TIMEOUT | High / contract regression | closed 5.9.9 (reverified) | `selftest --timeout 5` returns exit 75 and a non-empty structured diagnostic payload, including the fourth attempt in this sample. The independent hang history remains mixed evidence. |
132
+ | AUD-615-L | Critical / regression | open | The defect is isolated to `audit-report --format markdown`: identical `thingsboard` runs measured 200 s timeout versus 137.98 s success, with an isolated 114 s run. JSON/YAML correctly returned structured `OUTPUT_TOO_LARGE`; they are not defective here. The 700 s fork lost output to shared scratch interference. |
133
+ | AUD-615-TUTORIALS | High / availability trend | open | Root compact on `tutorials` increased monotonically from 4m00.1s in 5.9.6 to 6m20.1s in 5.9.9, exit 124 with zero stdout. Attribute and bound the cost before large-monorepo claims. |
134
+ | AUD-615-WIN-PROC | Medium | open | Seven `ask.exe` processes remained after successful Windows runs. Validate descendant cleanup for successful and timed-out runs with native Windows/Git Bash process controls. |
135
+ | AUD-615-INTENT-TIE | Medium | closed 5.9.9 (reclassified) | Equal score across distinct questions is not a tie. The target-required endpoint intent refuses without a route while the global surface intent resolves; a focused regression protects that contract. |
136
+ | AUD-615-E | Low | closed 5.9.9 | All impact-family not-found paths publish `risk_level: unknown`; focused TeaVM coverage protects the former event-topology outlier. |
137
+ | AUD-615-07 | Low / evidence conflict | closed 5.9.9 (reverified) | Isolated TeaVM verification returns `Did you mean: spring-audit?` with exit 2, matching the installed-entry-point regression. The contrary report wording is not reproducible. |
138
+ | AUD-615-JUNIT4 | Medium | closed 5.9.9 | JUnit4 test-only repositories classify as `test` from dependency and source-location evidence, without a broad naming heuristic. |
139
+ | AUD-615-DRIFT | Low / investigation | closed 5.9.9 | Spring's explicit `default` profile is normalized to the implicit empty active-profile set at the access-snapshot boundary. An implicit capture and explicit `--profile default` now read one series; focused and TeaVM regression flows pass. |
140
+ | AUD-615-COLD-COMPACT | Low / product decision | closed 5.9.9 (accepted contract) | A repeated 88,265-byte result is compatible with the documented snapshot-dependent contract. ASK exposes `estimated_tokens`; no hard ceiling is claimed or introduced. |
141
+
142
+ **Audit-method control:** each parallel fork must use a unique scratch directory; shared
143
+ `~/askaudit_599` caused cross-fork file deletion/interleaving and blocked a definitive L
144
+ result. **Commercially**, conflicting `$25-40` and `$50-65` estimates are not evidence for
145
+ a price increase; retain the conservative band until the availability trend is closed.
120
146
 
121
147
  The audit also confirms root cache reuse, stdin contracts, pack progress, explain and
122
148
  impact error routing, self-audit population disclosure, endpoint compact disclosure,
@@ -3,15 +3,15 @@
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 QUEUE — release `5.9.9`; external re-audit `AUD-614` remains the reliability gate.**
6
+ > **CURRENT QUEUE — release `5.9.10`; external re-audit `AUD-615` remains the reliability gate.**
7
7
  > The latest external pass confirms the cache, stdin, progress, error-channel and
8
8
  > population fixes, but reports a serious availability regression: `audit-report`
9
9
  > is contention-sensitive on a normal large repository. The `/dev/null` report is
10
10
  > reverified as fixed in the current checkout; native Windows/MSYS release-artifact
11
11
  > confirmation remains. `risk --limit 0` and the `selftest --timeout` contract are now
12
12
  > closed in this cycle; Windows process-tree cleanup remains separately open.
13
- > `AUD-612` remains the preceding audit record; `AUD-614` is the governing queue
14
- > for the current `5.9.9` state, carrying forward the `5.9.8` fixes.
13
+ > `AUD-612` and `AUD-614` remain preceding audit records; `AUD-615` is the governing
14
+ > queue for the current `5.9.10` state, carrying forward the `5.9.8` and `5.9.9` fixes.
15
15
  > The 2026-08-27 external review adds `AUD-610-B01` through `AUD-610-B10`, led by
16
16
  > silent `selftest` nondeterminism, silent root/audit-report failures, a legal-zero
17
17
  > `risk --limit 0` crash, an unvalidated consumer path and contradictory Spring
@@ -266,11 +266,47 @@ reported as broken, but availability and contract reliability regressed.
266
266
  | AUD-614-SELFTEST-TIMEOUT | High / contract regression | **Closed in this fix.** `selftest` now treats `--timeout` as an overall execution deadline, bounds each child by the remaining budget, emits structured errors for the interrupted and unstarted rows, and returns code 75. The real TeaVM flow and dedicated regression pass. The separate fourth-run hang remains mixed evidence. | Keep the parent/child deadline and code-75 contract green on the installed entry point and TeaVM. |
267
267
  | AUD-614-WIN-PROC | Medium | On Windows/MSYS, timeout or SIGTERM can leave `ask.exe` descendants alive; the MSYS PID cannot be cleaned with native `taskkill`. The audit observed low-memory orphan processes after a timed-out run. | Implement signal/CTRL_BREAK cleanup and Windows Job Objects or document a verified equivalent; test parent and descendant termination from native Windows and Git Bash. |
268
268
  | AUD-614-G | Medium | **Closed in this fix.** The shared error authority now normalizes legacy producer spellings to canonical uppercase codes: `NO_DIFF_SOURCE` and `INVALID_LICENSE`. The TeaVM `review-pr` flow and activation contract tests pass. | Keep all public error producers on the canonical code authority. |
269
- | AUD-614-E | Low / semantic parity | The impact family now returns consistent `exit 1` for unresolved symbols, but `risk_level` still differs cosmetically (`unknown`/`low`/`unknown`) across the three commands. | Decide one not-found semantic shape and generate all impact-family payloads from it. |
269
+ | AUD-614-E | Low / semantic parity | **Closed in this fix.** The event topology branch now publishes `risk_level: unknown` for `not_found`, matching `impact` and normal `impact-chain`; `low` remains reserved for a resolved topology with no measured risk. | Keep not-found payloads generated from the shared unknown-risk semantics. |
270
270
  | AUD-614-I | Medium / contract | **Closed in this fix.** The user manual no longer promises `~10K` for `cold-start --compact`; it now states that the orientation subset depends on the stored snapshot, exposes `estimated_tokens`, and recommends checking the measured size before direct AI injection. The CLI help and payload already carried the same non-fixed-size contract. | Keep the manual, help and payload wording derived from the snapshot-size contract; a hard ceiling remains a separate product decision. |
271
- | AUD-614-INTENT-TIE | Medium | Equal lexical scores (`2.8284`) still produce different verdicts: `endpoint security` is refused while `security surface` resolves. This has remained unchanged for two rounds and exposes unstable tie semantics. | Define deterministic tie handling, publish the competing intents and margin, and add a real-repository regression for exact-score collisions. |
271
+ | AUD-614-INTENT-TIE | Medium | **Closed as a false tie.** Both questions score `2.8284`, but they are different declared queries: `endpoint security` selects a target-required intent and correctly refuses without a route, while `security surface` selects a repository-wide intent. Equal scores across different inputs are not competing candidates. A focused regression locks the distinction. | Keep target-required admission separate from repository-wide intent selection. |
272
272
  | AUD-614-07 | Low / UX regression | **Closed in this verification.** The installed `ask spring-audi` entry point returns the command-admission error with `Did you mean: spring-audit?`; the TeaVM path/typo regression battery passes. The external wording report is not reproducible in the current checkout. | Keep command admission, error wording and help aligned in the installed-CLI test. |
273
- | AUD-614-JUNIT4 | Medium / classification | JUnit4 repositories remain classified as `unknown`; no change from the previous audit. | Add evidence-backed JUnit4 detection without weakening confidence or introducing Kotlin/Java false positives. |
273
+ | AUD-614-JUNIT4 | Medium / classification | **Closed in this fix.** A repository is classified as `test` only when it has the `junit:junit` coordinate and all Java sources are test sources; applications and libraries that merely use JUnit retain their structural type. | Keep the dependency-plus-source-population regression green. |
274
+
275
+ ### External Audit Intake — `AUD-615` re-audit, release 5.9.9
276
+
277
+ The external re-audit covered only repositories under `Documents/workspace/testing/`,
278
+ with additional robustness passes over `micronaut-guides`, `jhipster-sample-app` and
279
+ `mall` (including a non-English README). The report contains two headline scores (**8.0/10**
280
+ and **8.4/10**) and a methodological limitation: forks shared `~/askaudit_599`, so output
281
+ files were deleted or interleaved during the critical `audit-report` retest. The detailed
282
+ findings below take precedence over either headline score. No target-repository mutation
283
+ was reported.
284
+
285
+ | ID | Severity | Finding | Required future closure |
286
+ |---|---:|---|---|
287
+ | AUD-615-F | Critical | **Confirmed fixed on Windows/Git Bash.** Two independent forks report 11/11 successful reproductions: redirecting stdout to `/dev/null` preserves `exit 1` and the byte-identical structured stderr envelope. The fix also covers `INVALID_USAGE` (`--depth 0`), not only `INVALID_INPUT`. | Preserve the cross-platform redirection matrix and repeat it against release artefacts. |
288
+ | AUD-615-RISK-L0 | High / regression | **Confirmed fixed.** `risk --limit 0` returns in about 0.8–1.5 s with `status: zero_row_view`, `analysis_skipped: true`, empty requested rows and null totals; it avoids constructing the discarded full analysis. | Keep the semantic zero-row contract and test non-zero limits through the normal analysis path. |
289
+ | AUD-615-SELFTEST-TIMEOUT | High / contract regression | **Confirmed fixed in this sample.** `selftest --timeout 5` returns exit 75 with 8,365 bytes of structured diagnostics, including the fourth attempt. This improves the mixed evidence from previous rounds but does not prove the separate hang impossible. | Keep the overall deadline, child budget propagation and code-75 envelope under repeated installed-CLI runs. |
290
+ | AUD-615-L | Critical / regression | **Open, scope corrected.** `audit-report --format markdown` remains non-deterministic under contention: identical `thingsboard` runs measured 200 s timeout versus 137.98 s success; an isolated run took 114 s. The 700 s fork lost its output to shared scratch interference. JSON/YAML returned honest `OUTPUT_TOO_LARGE`, so they are not part of this bug. | Isolate per-run artefacts, profile contention/cache/worker scheduling, add stage visibility and a bounded timeout with structured failure/partial output. Define the supported size/load envelope. |
291
+ | AUD-615-TUTORIALS | High / availability trend | Root compact on `tutorials` increased monotonically from 4m00.1s in 5.9.6 to 6m20.1s in 5.9.9, exit 124 with zero stdout. | Attribute and bound the cost before large-monorepo claims. |
292
+ | AUD-615-WIN-PROC | Medium | **Still open.** Seven `ask.exe` processes remained after successful Windows runs; the footprint was small, but descendant cleanup appears incomplete. | Validate process-tree cleanup for successful and timed-out runs with native Windows/Git Bash controls and Job Objects or a verified equivalent. |
293
+ | AUD-615-INTENT-TIE | Medium / semantic | **Closed as a false tie.** The equal score belongs to different questions, not two candidates for one question. `endpoint security` requires an endpoint anchor and refuses without one; `security surface` is repository-wide and resolves. | Keep the focused regression and do not collapse target-required intent into a global query. |
294
+ | AUD-615-E | Low / semantic parity | **Closed in this fix.** All three impact-family not-found paths publish `risk_level: unknown`; a focused TeaVM regression covers the events outlier. | Keep not-found payloads generated from the shared unknown-risk semantics. |
295
+ | AUD-615-07 | Low / evidence conflict | **Closed by isolated verification.** TeaVM's installed-compatible entry point returns `Did you mean: spring-audit?` with exit 2; the report's detailed-table wording is contradicted by both direct evidence and the existing admission regression. | Keep the installed-entry-point assertion green. |
296
+ | AUD-615-JUNIT4 | Medium / classification | **Closed in this fix.** JUnit4 test-only repositories now classify as `test` from dependency and source-location evidence, without a broad name heuristic. | Keep the dependency-plus-source-population regression green. |
297
+ | AUD-615-DRIFT | Low / investigation | **Closed in this fix.** Spring's explicit `default` profile now normalizes to the implicit empty active-profile set in the access-snapshot authority, so implicit capture and explicit `--profile default` read the same series. TeaVM capture/query and a focused store regression pass. | Keep profile normalization at the snapshot boundary. |
298
+ | AUD-615-COLD-COMPACT | Low / product decision | **Closed as an accepted contract.** A byte-identical 88,265-byte result does not contradict the snapshot-dependent compact contract. The product deliberately exposes `estimated_tokens` rather than claiming a hard size ceiling. | Reopen only with evidence that help, payload or manual promise a fixed bound. |
299
+
300
+ **Methodology control.** Future parallel audits must allocate a unique UUID/timestamp
301
+ scratch directory per fork. Shared `~/askaudit_599` caused cross-fork interference and
302
+ prevented definitive output capture for `AUD-615-L`.
303
+
304
+ **Commercial interpretation.** The report contains conflicting price bands (`$25-40` and
305
+ `$50-65` per developer/month). Until `AUD-615-L` and the large-repository trend are closed,
306
+ retain the conservative `$25-40` band and do not market `audit-report --format markdown`,
307
+ the root command, or production CI gating for repositories above roughly 3,000 files.
308
+ The additional repositories showed correct Spring/full-stack detection and Chinese README
309
+ encoding handling, with no new false-positive or false-negative finding.
274
310
 
275
311
  **Confirmed stable in this round.** Root cache reuse (cold 267 s to warm 1-2 s),
276
312
  `pr-impact`/`pr-risk --files -`, progress propagation through `pack gate --since`,
@@ -5,7 +5,7 @@
5
5
  > `pack assessment` and `pack gate`, and make evidence and safe change the
6
6
  > product surface. This roadmap must not introduce a competing product thesis.
7
7
 
8
- > **CURRENT UPDATE — release `5.9.9`, following the external `5.9.3` reconciliation.**
8
+ > **CURRENT UPDATE — release `5.9.10`, following the external `5.9.3` reconciliation.**
9
9
  > The commercial increment adds stateless context budgets, a reproducible context-cost harness,
10
10
  > source-level migration SARIF and an opt-in workspace entitlement pilot. Advisory behaviour remains
11
11
  > the default; named-buyer validation is still required before broad enforcement.
@@ -20,17 +20,18 @@
20
20
  > in [`AUDIT-2026-08-26-EXTERNAL-5.9.0.md`](AUDIT-2026-08-26-EXTERNAL-5.9.0.md).
21
21
 
22
22
  > **RE-AUDIT — 5.9.9, received 2026-08-27.** The external re-audit confirms the
23
- > cache, stdin, progress, error-channel and population corrections, but the corrected
24
- > score is **7.5/10** after confirming a serious availability regression. `audit-report`
25
- > is sensitive to contention and can exceed five minutes even on a 3,714-file repository;
26
- > `risk . --limit 0` and `selftest --timeout` were also investigated and are now
27
- > bounded by explicit contracts. The long-standing `/dev/null` false-success is
28
- > reverified as fixed in the current checkout, with native Windows/MSYS artifact
29
- > confirmation still pending; `audit-report` remains sensitive to contention. Do not position ASK
23
+ > cache, stdin, progress, error-channel and population corrections, and raises the
24
+ > assessment to the **8.0-8.4/10** range. It does not clear the availability gate:
25
+ > `audit-report --format markdown`
26
+ > remains non-deterministic under contention, while the root compact flow on `tutorials`
27
+ > has worsened across five versions to 6m20.1s with no stdout. `risk . --limit 0` and
28
+ > `selftest --timeout` are now bounded by explicit contracts. The former `/dev/null`
29
+ > false-success is confirmed fixed on Windows/Git Bash in 11/11 reproductions. Do not position ASK
30
30
  > for enterprise-scale repositories or production CI gating above roughly 3,000 files
31
- > until these remaining bounded reliability contracts are independently closed. The corrected commercial estimate is
32
- > `$25-40/developer/month`, superseding the preliminary `$45-58` headline. Full detail
33
- > is recorded as `AUD-614` in the development roadmap and defect ledger.
31
+ > until the availability contracts are independently closed. The report contains conflicting
32
+ > commercial bands (`$25-40` and `$50-65`); retain the conservative `$25-40/developer/month`
33
+ > position pending independent closure. Full detail is recorded as `AUD-615` in the
34
+ > development roadmap and defect ledger.
34
35
 
35
36
  > **RE-AUDIT — 5.9.7, received 2026-08-27.** Three independent forks added roughly
36
37
  > 130 invocations and retested the AUD-611 queue. The score rose to **7.8/10** and
@@ -1,6 +1,6 @@
1
1
  # Manual de usuario — ASK Engine
2
2
 
3
- > Versión de la herramienta: **5.9.9** · El comando que se ejecuta es `ask`.
3
+ > Versión de la herramienta: **5.9.10** · El comando que se ejecuta es `ask`.
4
4
  > (`sourcecode` sigue funcionando como alias en desactivación y reenvía a `ask`.)
5
5
  > Público: personas que van a usar `ask` por primera vez, sin conocimiento previo.
6
6
 
@@ -8,7 +8,14 @@
8
8
 
9
9
  ## 1. ¿Qué es ASK Engine?
10
10
 
11
- ### Contratos de fiabilidad de la versión 5.9.9
11
+ ### Contratos de fiabilidad de la versión 5.9.10
12
+
13
+ **Límites de disponibilidad conocidos.** No sitúes `ask audit-report . --format
14
+ markdown` ni el comando raíz compacto detrás de un timeout estricto en repositorios
15
+ de más de unas 3.000 fichas. La entrega Markdown de `audit-report` sigue siendo
16
+ susceptible a contención. Para CI o ejecución supervisada, guarda primero `risk`,
17
+ usa `audit-report --from-risk`, prefiere JSON/YAML y conserva el progreso. El
18
+ estado de cierre está en la [hoja de ruta de desarrollo](DEVELOPMENT-ROADMAP.md#aud-615-re-audit-release-599).
12
19
 
13
20
  Las entradas inválidas se rechazan antes del análisis costoso mediante el
14
21
  envelope estructurado `INVALID_INPUT`: un `--consumer` inexistente, un feed CVE
@@ -46,16 +46,23 @@ CLI commands — impact, endpoints, spring-audit, explain, … each a pro
46
46
  The key idea: the extraction is **content-addressed**. Commands reuse the parse cache and,
47
47
  where their analysed scope matches, the shared Canonical IR; `ask cache model` names what a
48
48
  warm buys for each command rather than implying that every projection costs the same. In
49
- 5.9.9, `validation` enters through that shared CIR and `data-exposure` reuses one semantic
49
+ 5.9.10, `validation` enters through that shared CIR and `data-exposure` reuses one semantic
50
50
  model across all declared label seeds. (The extraction and consumption contract is fixed in
51
51
  the architecture ADRs 0001–0004 under `docs/architecture/`.)
52
52
 
53
53
  The current external pack audit intake is tracked in
54
54
  [`AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md`](AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md);
55
- the two pack fixes are included in release 5.9.9, with release-artifact verification
55
+ the two pack fixes are included in release 5.9.10, with release-artifact verification
56
56
  remaining for detached execution and pack evidence.
57
57
 
58
- ### Reliability contracts in 5.9.9
58
+ ### Reliability contracts in 5.9.10
59
+
60
+ **Known availability limits.** Do not place `ask audit-report . --format markdown`
61
+ or the root compact command behind a strict timeout on repositories above roughly
62
+ 3,000 files. Markdown audit-report delivery is still contention-sensitive; for a
63
+ supervised or CI workflow, save `risk` first and use `audit-report --from-risk`,
64
+ prefer JSON/YAML, and retain progress output. The current closure status is in the
65
+ [development roadmap](DEVELOPMENT-ROADMAP.md#aud-615-re-audit-release-599).
59
66
 
60
67
  Invalid analysis inputs fail before expensive work and use the structured
61
68
  `INVALID_INPUT` envelope: a missing `--consumer` repository, a malformed CVE
@@ -236,7 +243,7 @@ pipx install sourcecode # isolated install, no venv needed
236
243
 
237
244
  # Verify
238
245
  ask version
239
- # ask 5.9.9
246
+ # ask 5.9.10
240
247
  ```
241
248
 
242
249
  Requires Python 3.9+.
@@ -629,6 +636,11 @@ JSON output includes `evidence_manifest`: stable claim IDs mapped to source span
629
636
  inputs, ASK version, git HEAD and freshness metadata. Signed reports sign this manifest as
630
637
  part of the canonical payload.
631
638
 
639
+ On large repositories, do not use Markdown delivery in a strict-timeout CI path:
640
+ the current reliability queue records contention-sensitive completion. Persist a
641
+ `risk` payload first and use `--from-risk`; JSON/YAML are the safer supervised
642
+ formats while the Markdown issue remains open.
643
+
632
644
  ```bash
633
645
  ask audit-report .
634
646
  ask audit-report . --profile prod --format markdown
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "5.9.9"
7
+ version = "5.9.10"
8
8
  description = "Persistent structural context and ultra-fast repeated analysis for AI coding agents"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -4,4 +4,4 @@ ASK Engine is the product. ``ask`` is the canonical CLI command; ``sourcecode``
4
4
  the legacy compatibility alias and the Python/PyPI package name. See
5
5
  docs/PRODUCT_IDENTITY.md (normative)."""
6
6
 
7
- __version__ = "5.9.9"
7
+ __version__ = "5.9.10"
@@ -44,6 +44,12 @@ UNMATCHED = "no_rule_matched"
44
44
  _NOT_A_CLASS = frozenset({"chains", "summary"})
45
45
 
46
46
 
47
+ def normalise_profiles(profiles: "Optional[set[str]]") -> "set[str]":
48
+ """Map Spring's implicit ``default`` profile to the empty active set."""
49
+ return {str(profile).strip() for profile in (profiles or set())
50
+ if str(profile).strip() and str(profile).strip() != "default"}
51
+
52
+
47
53
  def _utc_now() -> str:
48
54
  return datetime.now(timezone.utc).replace(microsecond=0).isoformat()
49
55
 
@@ -83,10 +89,11 @@ def build_snapshot(
83
89
  """One capture of the effective access under a profile set."""
84
90
  from sourcecode.architectural_baseline import git_commit
85
91
 
92
+ active_profiles = normalise_profiles(profiles)
86
93
  if posture is None:
87
94
  from sourcecode.posture import build_posture
88
95
 
89
- posture = build_posture(Path(root), set(profiles or ()), properties)
96
+ posture = build_posture(Path(root), active_profiles, properties)
90
97
 
91
98
  routes = routes_from_posture(posture)
92
99
  by_class: "dict[str, int]" = {}
@@ -100,7 +107,7 @@ def build_snapshot(
100
107
  "captured_at": _utc_now(),
101
108
  "commit": commit if commit is not None else git_commit(Path(root)),
102
109
  "repo": Path(root).name,
103
- "profiles": sorted(profiles or ()),
110
+ "profiles": sorted(active_profiles),
104
111
  "counts": {
105
112
  "routes": len(routes),
106
113
  "by_access_class": dict(sorted(by_class.items())),
@@ -138,7 +145,7 @@ def load_series(out_dir: Path, *, profiles: "Optional[set]" = None) -> "list[dic
138
145
  if not out_dir.is_dir():
139
146
  return []
140
147
  series: "list[dict]" = []
141
- wanted = sorted(profiles) if profiles is not None else None
148
+ wanted = sorted(normalise_profiles(profiles)) if profiles is not None else None
142
149
  for path in sorted(out_dir.glob(f"{FILENAME_PREFIX}*.json")):
143
150
  try:
144
151
  payload = json.loads(path.read_text(encoding="utf-8"))
@@ -280,6 +280,17 @@ class TypeClassifier:
280
280
  if stack_names & _JVM_STACKS and self._is_multi_module(file_tree):
281
281
  return "library"
282
282
 
283
+ # A JUnit 4-only repository is a test suite, not an unknown application.
284
+ # Require both the dependency and test-only Java sources so an ordinary
285
+ # library that uses JUnit for its own tests keeps its structural type.
286
+ java_paths = [path for path in flat_paths if path.endswith(".java")]
287
+ if (
288
+ "JUnit 4" in framework_names
289
+ and java_paths
290
+ and all("/src/test/" in path or path.startswith("src/test/") for path in java_paths)
291
+ ):
292
+ return "test"
293
+
283
294
  # Weak CLI heuristic: a top-level bin/ directory (only when nothing stronger).
284
295
  if any(path.startswith("bin/") for path in flat_paths):
285
296
  return "cli"
@@ -13861,6 +13861,10 @@ def audit_report_cmd(
13861
13861
  `--sign-key` adds an HMAC-SHA256 signature over the canonical JSON payload.
13862
13862
  The key is local and explicit; no network trust service or new PKI is implied.
13863
13863
 
13864
+ On repositories above roughly 3,000 files, do not put Markdown delivery
13865
+ behind a strict timeout: it remains contention-sensitive. For supervised
13866
+ automation, persist `risk` first, use `--from-risk`, and prefer JSON/YAML.
13867
+
13864
13868
  \b
13865
13869
  Examples:
13866
13870
  ask audit-report .
@@ -38,6 +38,7 @@ _TYPE_LABELS: dict[str, str] = {
38
38
  "cli": "CLI tool",
39
39
  "worker": "Background worker / service",
40
40
  "library": "Library / package",
41
+ "test": "Test suite",
41
42
  "unknown": "Application",
42
43
  }
43
44
 
@@ -492,6 +492,8 @@ class JavaDetector(AbstractDetector):
492
492
  frameworks.append(FrameworkDetection(name="Spring AOP", source=source))
493
493
  if "spring-boot-starter-activemq" in text or "activemq-broker" in text or "activemq-client" in text:
494
494
  frameworks.append(FrameworkDetection(name="ActiveMQ", source=source))
495
+ if "junit:junit" in text:
496
+ frameworks.append(FrameworkDetection(name="JUnit 4", source=source))
495
497
  return frameworks
496
498
 
497
499
  def _collect_entry_points(self, context: DetectionContext) -> list[EntryPoint]:
@@ -254,6 +254,7 @@ class EventTopologyOrchestrator:
254
254
  return EventTopologyResult(
255
255
  event_class=event_class,
256
256
  resolution="not_found",
257
+ risk_level="unknown",
257
258
  limitations=limitations + [f"Event class '{event_class}' not found in CIR."],
258
259
  confidence="low",
259
260
  metadata={"query_time_ms": elapsed},
@@ -134,6 +134,7 @@ class ProjectSummarizer:
134
134
  "webapp": "Web application",
135
135
  "api": "API",
136
136
  "library": "Library",
137
+ "test": "Test suite",
137
138
  "cli": "CLI",
138
139
  "monorepo": "Monorepo",
139
140
  "fullstack": "Full-stack project",
@@ -606,6 +607,7 @@ class ProjectSummarizer:
606
607
  "web_mvc": "Server-side MVC web app",
607
608
  "webapp": "Web application",
608
609
  "library": "Library",
610
+ "test": "Test suite",
609
611
  "monorepo": "Monorepo",
610
612
  "fullstack": "Full-stack project",
611
613
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes