sourcecode 5.9.17__tar.gz → 5.9.18__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 (459) hide show
  1. {sourcecode-5.9.17 → sourcecode-5.9.18}/CHANGELOG.md +15 -0
  2. {sourcecode-5.9.17 → sourcecode-5.9.18}/PKG-INFO +3 -3
  3. {sourcecode-5.9.17 → sourcecode-5.9.18}/README.md +2 -2
  4. sourcecode-5.9.18/docs/AUDIT-2026-08-31-EXTERNAL-5.9.17.md +42 -0
  5. sourcecode-5.9.18/docs/AUDIT-2026-08-31-REMEDIATION-5.9.18.md +20 -0
  6. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/DEFECT-LEDGER.md +33 -0
  7. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/DEVELOPMENT-ROADMAP.md +34 -0
  8. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/EXECUTIVE-ROADMAP.md +14 -0
  9. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/USER_GUIDE.md +10 -3
  10. {sourcecode-5.9.17 → sourcecode-5.9.18}/pyproject.toml +1 -1
  11. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/__init__.py +1 -1
  12. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/cli.py +8 -0
  13. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/packs.py +15 -5
  14. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/parallel.py +8 -1
  15. {sourcecode-5.9.17 → sourcecode-5.9.18}/.github/workflows/build-windows.yml +0 -0
  16. {sourcecode-5.9.17 → sourcecode-5.9.18}/.github/workflows/perf-gate.yml +0 -0
  17. {sourcecode-5.9.17 → sourcecode-5.9.18}/.github/workflows/windows-battery.yml +0 -0
  18. {sourcecode-5.9.17 → sourcecode-5.9.18}/.github/workflows/windows-regression.yml +0 -0
  19. {sourcecode-5.9.17 → sourcecode-5.9.18}/.gitignore +0 -0
  20. {sourcecode-5.9.17 → sourcecode-5.9.18}/.ruff.toml +0 -0
  21. {sourcecode-5.9.17 → sourcecode-5.9.18}/CLAUDE.md +0 -0
  22. {sourcecode-5.9.17 → sourcecode-5.9.18}/CODE_OF_CONDUCT.md +0 -0
  23. {sourcecode-5.9.17 → sourcecode-5.9.18}/CONTRIBUTING.md +0 -0
  24. {sourcecode-5.9.17 → sourcecode-5.9.18}/LICENSE +0 -0
  25. {sourcecode-5.9.17 → sourcecode-5.9.18}/NOTICE +0 -0
  26. {sourcecode-5.9.17 → sourcecode-5.9.18}/SECURITY.md +0 -0
  27. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
  28. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
  29. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
  30. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
  31. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
  32. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
  33. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
  34. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
  35. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
  36. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
  37. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
  38. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
  39. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
  40. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
  41. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
  42. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +0 -0
  43. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.3.md +0 -0
  44. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-28-EXTERNAL-5.9.10.md +0 -0
  45. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-2026-08-31-EXTERNAL-5.9.16.md +0 -0
  46. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
  47. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/CACHE.md +0 -0
  48. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/COMMERCIAL-OFFER.md +0 -0
  49. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/CUSTOMER-VALIDATION.md +0 -0
  50. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/DEMO-5MIN.md +0 -0
  51. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
  52. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/EXECUTION-PLAN-12MO.md +0 -0
  53. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/MANUAL-USUARIO.md +0 -0
  54. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/MODERNIZATION.md +0 -0
  55. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/PRODUCT-ROUTE.md +0 -0
  56. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/PRODUCT_AUDIT.md +0 -0
  57. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/PRODUCT_IDENTITY.md +0 -0
  58. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/PRODUCT_TIERS.md +0 -0
  59. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/RC1-CHECKLIST.md +0 -0
  60. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/RELEASE-CHECKLIST.md +0 -0
  61. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/RELEASE-VERIFICATION.md +0 -0
  62. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
  63. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
  64. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
  65. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/DESIGN-assessment-report.md +0 -0
  66. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
  67. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
  68. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
  69. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
  70. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
  71. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
  72. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
  73. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
  74. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/DESIGN-pack-manifest.md +0 -0
  75. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
  76. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
  77. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
  78. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/EPV-p6-class-typeref.md +0 -0
  79. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
  80. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
  81. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
  82. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
  83. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/adr/0001-semantic-ir.md +0 -0
  84. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
  85. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
  86. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
  87. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
  88. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/adr/0006-performance-harness.md +0 -0
  89. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/adr/0007-composition-semantics.md +0 -0
  90. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/adr/0008-answer-coherence.md +0 -0
  91. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/consumer-disposition-inventory.md +0 -0
  92. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/overview.md +0 -0
  93. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/product-architecture-review.md +0 -0
  94. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/product-strategy-layering.md +0 -0
  95. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
  96. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/architecture/semantic-ir-roadmap.md +0 -0
  97. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/baseline-ci.yml +0 -0
  98. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/commercial-pipeline-audit.md +0 -0
  99. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/contracts-ci.yml +0 -0
  100. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/contracts.md +0 -0
  101. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
  102. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
  103. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
  104. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
  105. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
  106. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
  107. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
  108. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
  109. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/licensing-schema.md +0 -0
  110. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/migrate-check.md +0 -0
  111. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/pack-gate-github-actions.yml +0 -0
  112. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/pack-gate-gitlab.yml +0 -0
  113. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/README.md +0 -0
  114. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/REGRESSION-GATE.md +0 -0
  115. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
  116. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
  117. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
  118. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
  119. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
  120. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
  121. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
  122. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
  123. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
  124. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
  125. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
  126. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
  127. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
  128. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
  129. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
  130. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
  131. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
  132. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
  133. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
  134. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
  135. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
  136. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
  137. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
  138. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
  139. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
  140. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
  141. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
  142. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
  143. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
  144. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
  145. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
  146. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
  147. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
  148. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
  149. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
  150. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
  151. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
  152. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
  153. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
  154. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
  155. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
  156. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
  157. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/gate-latest/README.md +0 -0
  158. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
  159. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
  160. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
  161. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
  162. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
  163. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
  164. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/baselines/reference-best/README.md +0 -0
  165. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/perf/corpus-testing-2026-08-22.md +0 -0
  166. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/posture.md +0 -0
  167. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/privacy.md +0 -0
  168. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/pro-experience-audit.md +0 -0
  169. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/schema.md +0 -0
  170. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/spec/envelope-v1.md +0 -0
  171. {sourcecode-5.9.17 → sourcecode-5.9.18}/docs/spring-audit-ci.yml +0 -0
  172. {sourcecode-5.9.17 → sourcecode-5.9.18}/hatch_build.py +0 -0
  173. {sourcecode-5.9.17 → sourcecode-5.9.18}/scripts/compare_integration_engines.py +0 -0
  174. {sourcecode-5.9.17 → sourcecode-5.9.18}/scripts/context_cost_harness.py +0 -0
  175. {sourcecode-5.9.17 → sourcecode-5.9.18}/scripts/customer_smoke_test.sh +0 -0
  176. {sourcecode-5.9.17 → sourcecode-5.9.18}/scripts/generate_jdk_exports.py +0 -0
  177. {sourcecode-5.9.17 → sourcecode-5.9.18}/scripts/perf_gate.py +0 -0
  178. {sourcecode-5.9.17 → sourcecode-5.9.18}/scripts/perf_harness.py +0 -0
  179. {sourcecode-5.9.17 → sourcecode-5.9.18}/scripts/sync_gate_anchors.py +0 -0
  180. {sourcecode-5.9.17 → sourcecode-5.9.18}/scripts/test_fast.sh +0 -0
  181. {sourcecode-5.9.17 → sourcecode-5.9.18}/scripts/windows_reliability_matrix.py +0 -0
  182. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/__main__.py +0 -0
  183. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/access_drift.py +0 -0
  184. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/adaptive_scanner.py +0 -0
  185. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/analysis_budget.py +0 -0
  186. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/answer_bounds.py +0 -0
  187. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/archetype.py +0 -0
  188. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/architectural_baseline.py +0 -0
  189. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/architectural_delta.py +0 -0
  190. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/architecture_analyzer.py +0 -0
  191. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/architecture_summary.py +0 -0
  192. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/ast_extractor.py +0 -0
  193. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/audit_clusters.py +0 -0
  194. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/audit_recipe.py +0 -0
  195. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/audit_report.py +0 -0
  196. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/audit_since.py +0 -0
  197. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/audit_verify.py +0 -0
  198. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/baseline_attestation.py +0 -0
  199. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/baseline_autocapture.py +0 -0
  200. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/breaking_changes.py +0 -0
  201. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/build_modules.py +0 -0
  202. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/build_stamp.py +0 -0
  203. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/bundled_docs.py +0 -0
  204. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/c4_render.py +0 -0
  205. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/cache.py +0 -0
  206. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/cache_model.py +0 -0
  207. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/cache_observation.py +0 -0
  208. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/call_surface.py +0 -0
  209. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/caller_metrics.py +0 -0
  210. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/caller_reach.py +0 -0
  211. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/canonical_ir.py +0 -0
  212. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/chain_rules.py +0 -0
  213. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/change_plan.py +0 -0
  214. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/ci_output.py +0 -0
  215. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/cir_graphs.py +0 -0
  216. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/classifier.py +0 -0
  217. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/click_runtime.py +0 -0
  218. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/client_calls.py +0 -0
  219. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/code_notes_analyzer.py +0 -0
  220. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/compare.py +0 -0
  221. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/confidence_analyzer.py +0 -0
  222. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/constraint_diff.py +0 -0
  223. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/consumer_join.py +0 -0
  224. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/container_wiring.py +0 -0
  225. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/context_cache.py +0 -0
  226. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/context_graph.py +0 -0
  227. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/context_scorer.py +0 -0
  228. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/context_summarizer.py +0 -0
  229. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/contract_diff.py +0 -0
  230. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/contract_init.py +0 -0
  231. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/contract_model.py +0 -0
  232. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/contract_pipeline.py +0 -0
  233. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/coverage_parser.py +0 -0
  234. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/cve_feed.py +0 -0
  235. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/cve_reachability.py +0 -0
  236. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/data_exposure.py +0 -0
  237. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/data_labels.py +0 -0
  238. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/declarations.py +0 -0
  239. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/defect_classes/__init__.py +0 -0
  240. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/defect_classes/registry.json +0 -0
  241. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/defect_identity.py +0 -0
  242. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/degradation.py +0 -0
  243. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/dependency_analyzer.py +0 -0
  244. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/deployment_prefix.py +0 -0
  245. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detach.py +0 -0
  246. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/__init__.py +0 -0
  247. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/base.py +0 -0
  248. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/csproj_parser.py +0 -0
  249. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/dart.py +0 -0
  250. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/dotnet.py +0 -0
  251. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/elixir.py +0 -0
  252. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/go.py +0 -0
  253. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/heuristic.py +0 -0
  254. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/hybrid.py +0 -0
  255. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/java.py +0 -0
  256. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/jvm_ext.py +0 -0
  257. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/nodejs.py +0 -0
  258. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/parsers.py +0 -0
  259. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/php.py +0 -0
  260. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/project.py +0 -0
  261. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/python.py +0 -0
  262. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/ruby.py +0 -0
  263. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/rust.py +0 -0
  264. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/systems.py +0 -0
  265. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/terraform.py +0 -0
  266. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/detectors/tooling.py +0 -0
  267. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/doc_analyzer.py +0 -0
  268. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/dynamic_argument_surface.py +0 -0
  269. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/empty_reach.py +0 -0
  270. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/endpoint_disposition.py +0 -0
  271. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/endpoint_literals.py +0 -0
  272. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/endpoint_metrics.py +0 -0
  273. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/entrypoint_classifier.py +0 -0
  274. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/env_analyzer.py +0 -0
  275. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/envelope.py +0 -0
  276. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/environment_resolution.py +0 -0
  277. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/error_schema.py +0 -0
  278. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/evidence_provider.py +0 -0
  279. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/execution_plan.py +0 -0
  280. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/explain.py +0 -0
  281. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/explain_endpoint.py +0 -0
  282. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/facts/__init__.py +0 -0
  283. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/facts/registry.json +0 -0
  284. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/field_deprecations.py +0 -0
  285. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/file_chunker.py +0 -0
  286. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/file_classifier.py +0 -0
  287. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/filter_surface.py +0 -0
  288. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/findings_baseline.py +0 -0
  289. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/format_contract.py +0 -0
  290. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/fqn_utils.py +0 -0
  291. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/functional_routes.py +0 -0
  292. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/gate_anchors.py +0 -0
  293. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/git_analyzer.py +0 -0
  294. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/git_checkout.py +0 -0
  295. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/github_diff.py +0 -0
  296. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/graph_analyzer.py +0 -0
  297. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/graph_evidence.py +0 -0
  298. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/hibernate_strat.py +0 -0
  299. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/identity_fallback.py +0 -0
  300. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/integration_coordinates.py +0 -0
  301. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/intent_router.py +0 -0
  302. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/jdk_exports.py +0 -0
  303. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/license.py +0 -0
  304. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/manifest_cache.py +0 -0
  305. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/mcp/__init__.py +0 -0
  306. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/mcp/dependency_import.py +0 -0
  307. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  308. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  309. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  310. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  311. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  312. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/mcp/orchestrator.py +0 -0
  313. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/mcp/registry.py +0 -0
  314. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/mcp/runner.py +0 -0
  315. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/mcp/server.py +0 -0
  316. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/mcp_nudge.py +0 -0
  317. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/metrics_analyzer.py +0 -0
  318. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/migrate_check.py +0 -0
  319. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/migration_apply.py +0 -0
  320. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/migration_blast.py +0 -0
  321. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/non_coverage.py +0 -0
  322. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/openapi_surface.py +0 -0
  323. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/openrewrite_recipe.py +0 -0
  324. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/output_bounds.py +0 -0
  325. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/output_budget.py +0 -0
  326. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/output_ceiling.py +0 -0
  327. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/output_encoding.py +0 -0
  328. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/output_sink.py +0 -0
  329. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/pack_manifest.py +0 -0
  330. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/parse_cache.py +0 -0
  331. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/partial_contract.py +0 -0
  332. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/path_admission.py +0 -0
  333. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/path_display.py +0 -0
  334. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/path_filters.py +0 -0
  335. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/perf.py +0 -0
  336. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/phased_run.py +0 -0
  337. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/pipe_contract.py +0 -0
  338. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/posture.py +0 -0
  339. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/pr_comment_renderer.py +0 -0
  340. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/pr_impact.py +0 -0
  341. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/pr_risk.py +0 -0
  342. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/prepare_context.py +0 -0
  343. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/product_info.py +0 -0
  344. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/progress.py +0 -0
  345. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/provenance.py +0 -0
  346. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/ranking_engine.py +0 -0
  347. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/readiness_timeline.py +0 -0
  348. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/readonly.py +0 -0
  349. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/reconciliation.py +0 -0
  350. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/redactor.py +0 -0
  351. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/reference_facts.py +0 -0
  352. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/regress.py +0 -0
  353. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/regulatory_pack.py +0 -0
  354. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/release_info.py +0 -0
  355. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/relevance_scorer.py +0 -0
  356. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/remediation_diff.py +0 -0
  357. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/remediation_flow.py +0 -0
  358. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/remediation_report.py +0 -0
  359. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/remedies.py +0 -0
  360. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/rename_refactor.py +0 -0
  361. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/repo_classifier.py +0 -0
  362. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/repository_ir.py +0 -0
  363. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/resource_budget.py +0 -0
  364. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/__init__.py +0 -0
  365. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/context.py +0 -0
  366. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/errors.py +0 -0
  367. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/executor.py +0 -0
  368. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/planner.py +0 -0
  369. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/query.py +0 -0
  370. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/request.py +0 -0
  371. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/resolution.py +0 -0
  372. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/result.py +0 -0
  373. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/retriever.py +0 -0
  374. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/runtime.py +0 -0
  375. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/steps.py +0 -0
  376. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
  377. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/steps_graph.py +0 -0
  378. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/steps_impact.py +0 -0
  379. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/steps_intf.py +0 -0
  380. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/steps_struct.py +0 -0
  381. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/retrieval/steps_txsec.py +0 -0
  382. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/ris.py +0 -0
  383. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/risk.py +0 -0
  384. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/risk_model.py +0 -0
  385. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/rule_catalog.py +0 -0
  386. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/rule_pass.py +0 -0
  387. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/runs.py +0 -0
  388. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/runtime_classifier.py +0 -0
  389. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/sarif.py +0 -0
  390. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/sarif_emit.py +0 -0
  391. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/scanner.py +0 -0
  392. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/schema.py +0 -0
  393. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/schema_producers.py +0 -0
  394. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/schema_registry.py +0 -0
  395. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
  396. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
  397. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
  398. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
  399. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
  400. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
  401. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
  402. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/security_chain.py +0 -0
  403. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/security_config.py +0 -0
  404. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/security_config_scan.py +0 -0
  405. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/security_posture.py +0 -0
  406. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/selection_contract.py +0 -0
  407. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/self_audit.py +0 -0
  408. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/selftest.py +0 -0
  409. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/semantic_analyzer.py +0 -0
  410. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/semantic_impact_engine.py +0 -0
  411. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/semantic_integration_engine.py +0 -0
  412. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/semantic_services.py +0 -0
  413. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/serializer.py +0 -0
  414. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/servlet_surface.py +0 -0
  415. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/source_text.py +0 -0
  416. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/spring_event_topology.py +0 -0
  417. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/spring_findings.py +0 -0
  418. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/spring_impact.py +0 -0
  419. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/spring_model.py +0 -0
  420. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/spring_profiles.py +0 -0
  421. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/spring_properties.py +0 -0
  422. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/spring_security_audit.py +0 -0
  423. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/spring_semantic.py +0 -0
  424. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/spring_tx_analyzer.py +0 -0
  425. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/sql_taint.py +0 -0
  426. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/summarizer.py +0 -0
  427. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/target_admission.py +0 -0
  428. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/telemetry/__init__.py +0 -0
  429. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/telemetry/config.py +0 -0
  430. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/telemetry/consent.py +0 -0
  431. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/telemetry/events.py +0 -0
  432. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/telemetry/filters.py +0 -0
  433. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/telemetry/transport.py +0 -0
  434. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/test_gap_ranking.py +0 -0
  435. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/test_sources.py +0 -0
  436. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/text_input.py +0 -0
  437. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/timeline.py +0 -0
  438. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/timeline_cache.py +0 -0
  439. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/token_estimate.py +0 -0
  440. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/tree_utils.py +0 -0
  441. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/type_usage_surface.py +0 -0
  442. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/validation_inference.py +0 -0
  443. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/validation_surface.py +0 -0
  444. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/verify_edit.py +0 -0
  445. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/verify_repo.py +0 -0
  446. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/verify_rules.py +0 -0
  447. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/version_check.py +0 -0
  448. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/vex.py +0 -0
  449. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/waivers.py +0 -0
  450. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/watch_loop.py +0 -0
  451. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/wired_surface.py +0 -0
  452. {sourcecode-5.9.17 → sourcecode-5.9.18}/src/sourcecode/workspace.py +0 -0
  453. {sourcecode-5.9.17 → sourcecode-5.9.18}/supabase/functions/README.md +0 -0
  454. {sourcecode-5.9.17 → sourcecode-5.9.18}/supabase/functions/get-license/index.ts +0 -0
  455. {sourcecode-5.9.17 → sourcecode-5.9.18}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
  456. {sourcecode-5.9.17 → sourcecode-5.9.18}/supabase/functions/telemetry/index.ts +0 -0
  457. {sourcecode-5.9.17 → sourcecode-5.9.18}/supabase/sql/license_event_ordering.sql +0 -0
  458. {sourcecode-5.9.17 → sourcecode-5.9.18}/supabase/sql/licensing_schema.sql +0 -0
  459. {sourcecode-5.9.17 → sourcecode-5.9.18}/supabase/sql/telemetry_events.sql +0 -0
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.9.18] — 2026-08-31
4
+
5
+ *Windows reliability remediation follow-up.*
6
+
7
+ ### Fixed
8
+
9
+ - `pack gate` opens child stderr as UTF-8 with replacement behavior, so a Windows code-page mismatch cannot terminate its forwarding thread and block a child on an undrained pipe.
10
+ - The shared parse-worker factory rejects Windows process pools as a second deterministic barrier; repository parsing uses the existing sequential path there instead of risking `DuplicateHandle` during worker startup.
11
+ - Expected CLI validation exits, including invalid `--profile` input, now pass through the analysis-error boundary unchanged as `INVALID_INPUT` / exit 2.
12
+
13
+ ### Verification Boundary
14
+
15
+ - Focused pack, parallel, validation and six-command reliability-matrix tests pass on the engineering host. Native Windows repetition and process-tree evidence remain required before closing `AUD-621-R` and `AUD-621-WIN-PROC`.
16
+ - The 24,073-file context-analysis threshold remains open pending profiling and an intermediate-size benchmark.
17
+
3
18
  ## [5.9.17] — 2026-08-31
4
19
 
5
20
  *Reliability and monorepo performance follow-up after the 5.9.16 external audit.*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 5.9.17
3
+ Version: 5.9.18
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.17-blue)
62
+ ![Version](https://img.shields.io/badge/version-5.9.18-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
@@ -267,7 +267,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
267
267
  # pip / pipx
268
268
  pipx install sourcecode # or: pip install sourcecode
269
269
 
270
- ask version # ask 5.9.17 — and, on a build that has aged,
270
+ ask version # ask 5.9.18 — and, on a build that has aged,
271
271
  # how many releases have probably shipped since
272
272
  ```
273
273
 
@@ -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.17-blue)
13
+ ![Version](https://img.shields.io/badge/version-5.9.18-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
@@ -218,7 +218,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
218
218
  # pip / pipx
219
219
  pipx install sourcecode # or: pip install sourcecode
220
220
 
221
- ask version # ask 5.9.17 — and, on a build that has aged,
221
+ ask version # ask 5.9.18 — and, on a build that has aged,
222
222
  # how many releases have probably shipped since
223
223
  ```
224
224
 
@@ -0,0 +1,42 @@
1
+ # External Audit — 5.9.17 Re-audit
2
+
3
+ **Received:** 2026-08-31
4
+ **Scope:** repositories under `testing/`
5
+ **Evidence status:** four independent Windows samples; conflicting earlier
6
+ success samples are superseded by the multi-session result below.
7
+
8
+ ## Summary
9
+
10
+ The command-surface recovery from `5.9.16` remains confirmed: all nine restored
11
+ commands, Bug F, Bug Q, baseline behavior and endpoint/posture validation are
12
+ healthy in this second independent round. The root compact command is also
13
+ healthy when its target directory is verified before execution.
14
+
15
+ The shared Windows worker defect is not closed. The report records low or zero
16
+ success rates across all affected commands, with substantial variation between
17
+ sessions. This makes single-session success evidence insufficient for closure.
18
+
19
+ ## Governing Findings
20
+
21
+ | ID | Finding | Required closure |
22
+ |---|---|---|
23
+ | `AUD-621-R` | `risk --limit != 0` and Markdown `audit-report` were 0% successful; `verify`, `spring-audit`, `migrate-check` and `migrate-apply` were 0-27% successful across independent samples. The observed mechanism remains Windows `DuplicateHandle` failure during worker spawn. | Fail closed or fall back deterministically to sequential work; validate >=25 repetitions per command in >=2 native Windows sessions, with target identity, exit status and byte counts recorded. |
24
+ | `AUD-621-PACK-STDERR` | `pack gate --since` can deadlock because `_forward_stderr` decodes child UTF-8 output as CP1252, raises `UnicodeDecodeError`, and stops draining stderr. | Use UTF-8 with replacement behavior, keep the forwarding loop alive after decode failures, and cover CP1252 and UTF-8 child output. |
25
+ | `AUD-621-CONTEXT` | `analyzing repository context` completed in seconds through roughly 4,772 Java files but stopped advancing beyond 190 seconds on the 24,073-file corpus. The same phase precedes `cache warm` agent-view exit 143. | Profile the phase and add an intermediate-size fixture or subset benchmark to locate the threshold before optimizing. |
26
+ | `AUD-621-WIN-PROC` | Four descendant `ask.exe` processes remained. | Native Windows/Git Bash process-tree tests for normal completion, timeout and interruption. |
27
+
28
+ ## Confirmed Improvements
29
+
30
+ | Area | External result |
31
+ |---|---|
32
+ | Command surface | All nine commands restored in `5.9.16` remain present and functional. |
33
+ | Manifest parsing | `tutorials` manifest parsing remained improved at 18.8 seconds. |
34
+ | `review-pr` | No recurrence in five further runs. |
35
+ | Kotlin detection | A second real Kotlin repository was classified correctly. |
36
+
37
+ ## Operating Position
38
+
39
+ Use ASK in bounded, supervised workflows only. Do not represent `5.9.17` as
40
+ reliable for production CI-gating or enterprise-scale Windows analysis until the
41
+ worker, stderr-forwarding and process-lifecycle findings close with repeatable
42
+ native evidence.
@@ -0,0 +1,20 @@
1
+ # Release 5.9.18 — AUD-621 Remediation
2
+
3
+ **Date:** 2026-08-31
4
+ **Scope:** fixes applied after the external `5.9.17` audit.
5
+
6
+ ## Implemented Fixes
7
+
8
+ | Finding | Change | Evidence in this checkout |
9
+ |---|---|---|
10
+ | `AUD-621-PACK-STDERR` | Pack child stderr uses UTF-8 with replacement; the forwarding loop cannot terminate on a decode exception. | Pack progress and manifest tests pass; a regression test asserts the subprocess decoding contract. |
11
+ | `AUD-621-R` | Windows parse-worker construction is forbidden, backing up the existing sequential fallback. | Parallel Windows-contract tests pass; the six-command reliability matrix completes on the engineering host. |
12
+ | Validation regression found during verification | Expected `typer.Exit` validation exits bypass the analysis-failure wrapper. | `risk` and `audit-report` invalid-profile regressions pass with `INVALID_INPUT` and exit 2. |
13
+
14
+ ## Unchanged Closure Gates
15
+
16
+ - `AUD-621-R`: at least 25 repetitions per affected command in at least two native Windows sessions.
17
+ - `AUD-621-WIN-PROC`: native Windows/Git Bash process-tree tests for successful, timed-out and interrupted commands.
18
+ - `AUD-621-CONTEXT`: phase profile and intermediate-size benchmark before a performance claim for the 24,073-file corpus.
19
+
20
+ Release `5.9.18` is therefore suitable only for bounded, supervised use until those gates are met.
@@ -14,6 +14,39 @@ Status values: `open` · `in-progress` · `closed <version>` · `by-design` (wit
14
14
  The facts these rows are keyed to are published: `ask schema facts-v1` prints the registry
15
15
  (authority, definition, consumers, parity test) that the release battery enforces.
16
16
 
17
+ ## Current Synchronization — External Audit `AUD-621`
18
+
19
+ **Release `5.9.18` remediation.** `AUD-621-PACK-STDERR` is corrected in code: the child pipe is read as UTF-8 with replacement and the forwarding loop retains a decode-failure guard. `AUD-621-R` has a second Windows barrier at process-pool construction, complementing the sequential fallback. Both findings remain open until their required native Windows evidence is recorded; `AUD-621-CONTEXT` and `AUD-621-WIN-PROC` are unchanged.
20
+
21
+ **Re-audit of release `5.9.17`, received 2026-08-31.** Four independent
22
+ Windows measurements overturn the apparent partial recovery of the shared
23
+ worker failure: `risk` with a non-zero limit and Markdown `audit-report` had
24
+ zero successful runs; `verify`, `spring-audit`, `migrate-check` and
25
+ `migrate-apply` succeeded only intermittently (roughly 0-27% by command and
26
+ session). The known `PermissionError: [WinError 5]` in `DuplicateHandle` remains
27
+ the governing mechanism. A successful run from one session is not closure
28
+ evidence for this race.
29
+
30
+ The audit also isolates a new, high-confidence Windows defect in `pack gate`:
31
+ the `_forward_stderr` thread decodes child output using the active codepage,
32
+ raises `UnicodeDecodeError` on UTF-8 bytes, then stops draining the pipe. The
33
+ child can block once that pipe fills. Two independent forks captured the same
34
+ traceback. The full evidence is
35
+ [`AUDIT-2026-08-31-EXTERNAL-5.9.17.md`](AUDIT-2026-08-31-EXTERNAL-5.9.17.md).
36
+
37
+ | ID | Severity | Status | Evidence and required closure |
38
+ |---|---:|---|---|
39
+ | `AUD-621-R` | Critical maximum | **open, P0** | All direct shared-worker commands remain unreliable on Windows: `risk --limit != 0` and Markdown `audit-report` were 0% successful; `verify`, `spring-audit`, `migrate-check` and plan-mode `migrate-apply` were 0-27%. Detect pool startup failure, fall back to one process or emit structured non-zero failure, and validate >=25 repetitions in >=2 native Windows sessions per command. |
40
+ | `AUD-621-PACK-STDERR` | Critical | **open, P0** | `packs.py:_forward_stderr` uses the Windows default codepage and crashes on UTF-8 progress bytes; the unread stderr pipe then deadlocks `pack gate`. Open the child stream with UTF-8 and `errors="replace"`, keep draining on decode errors, and test CP1252 plus UTF-8 output. |
41
+ | `AUD-621-CONTEXT` | High | **open, P1** | `analyzing repository context` is stable below about 5,000 Java files but ceases to advance on the 24,073-file corpus for more than 190 seconds. It also explains the `cache warm` agent-view exit 143. Profile this one phase and locate its threshold with 8,000-12,000-file subsets or a synthetic fixture. |
42
+ | `AUD-621-WIN-PROC` | Medium | **open, platform-blocked** | Four `ask.exe` descendants remained after the audit run. Native Windows process-tree evidence is still required. |
43
+ | `AUD-621-REVIEW-PR` | Medium | **closed/no-repro** | No recurrence in five further runs; retain the regression test. |
44
+
45
+ The restored command surface, Bug F, Bug Q, baseline behavior and endpoint/posture
46
+ validation are now independently stable across multiple rounds. They remain
47
+ closed. Production CI-gating and enterprise-scale claims remain blocked by
48
+ `AUD-621-R`, `AUD-621-PACK-STDERR` and the Windows lifecycle evidence.
49
+
17
50
  ## Current Synchronization — External Audit `AUD-620`
18
51
 
19
52
  **Re-audit of release `5.9.16`, received 2026-08-31.** This audit confirms that
@@ -1,5 +1,39 @@
1
1
  # ASK — Development Roadmap
2
2
 
3
+ ### Release 5.9.18 — `AUD-621` remediation
4
+
5
+ Release `5.9.18` adds two deterministic Windows safeguards: no shared parse worker can be constructed on Windows, and pack-child stderr is decoded as UTF-8 with replacement so the forwarding pipe remains drained. It also preserves expected validation exits through the structured analysis-error boundary.
6
+
7
+ These code changes do not replace the required native evidence. `AUD-621-R` and `AUD-621-WIN-PROC` remain open until the repetition matrix and process-tree cases pass on native Windows; `AUD-621-CONTEXT` remains profiling work.
8
+
9
+ ### External Audit Intake — `AUD-621` re-audit, release 5.9.17
10
+
11
+ The 2026-08-31 re-audit corrects the optimistic interpretation of the previous
12
+ round. Four independent Windows samples show that the shared `DuplicateHandle`
13
+ worker-start failure is still active: `risk --limit != 0` and Markdown
14
+ `audit-report` had no successful runs, while `verify`, `spring-audit`,
15
+ `migrate-check` and `migrate-apply` were only intermittently successful. The
16
+ current structured-error boundary is useful, but it does not make a failed or
17
+ blocked worker pool reliable.
18
+
19
+ **Engineering decision: fix the pool path before further feature work.** Make
20
+ worker startup fail closed or fall back deterministically to a single process;
21
+ instrument pool creation with process/handle context; then validate each affected
22
+ command in at least 25 repetitions across two or more native Windows sessions.
23
+ One clean session, however large, cannot close this defect.
24
+
25
+ | ID | Priority | Next action and closure boundary |
26
+ |---|---:|---|
27
+ | `AUD-621-R` | P0 | Implement deterministic sequential fallback at every shared-worker entry, with bounded waits and structured failure evidence. Compare direct risk computation with `audit-report --from-risk`, then collect the multi-session Windows matrix. |
28
+ | `AUD-621-PACK-STDERR` | P0 | Open child stderr as UTF-8 with replacement behavior and ensure `_forward_stderr` cannot die without draining the pipe. Add a CP1252/UTF-8 subprocess regression for `pack gate`. |
29
+ | `AUD-621-CONTEXT` | P1 | Profile `analyzing repository context`; it is a threshold failure, not a uniform slowdown, and also causes the agent-view warm timeout. Add an intermediate-size fixture or subset benchmark before optimizing. |
30
+ | `AUD-621-WIN-PROC` | P1 | Measure descendant cleanup around successful, timed-out and interrupted commands on native Windows/Git Bash. |
31
+
32
+ The root compact command itself, the recovered command surface, redirection and
33
+ validation fixes remain healthy. Commercially, limit use to bounded pilots and
34
+ do not claim production CI gating or enterprise-scale reliability. Full evidence
35
+ is in [`AUDIT-2026-08-31-EXTERNAL-5.9.17.md`](AUDIT-2026-08-31-EXTERNAL-5.9.17.md).
36
+
3
37
  ### External Audit Intake — `AUD-620` re-audit, release 5.9.16
4
38
 
5
39
  The external re-audit received 2026-08-31 confirms a major recovery from the
@@ -5,6 +5,20 @@
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.18`, remediation.** Windows parse workers are now forbidden at their construction point and `pack gate` drains UTF-8 child stderr safely. Expected validation exits remain typed input errors. These are code fixes, not native-Windows closure evidence: keep bounded pilots until the required repetition and process-lifecycle measurements complete.
9
+
10
+ > **CURRENT UPDATE — release `5.9.17`, external re-audit.** The restored command
11
+ > surface and prior validation fixes remain stable, but the shared Windows worker
12
+ > failure is confirmed active, not partially closed. `risk --limit != 0` and
13
+ > Markdown `audit-report` failed throughout the independent samples; `verify`,
14
+ > `spring-audit`, `migrate-check` and `migrate-apply` remain highly intermittent.
15
+ > A new `pack gate` deadlock is also traced to CP1252 decoding in its stderr
16
+ > forwarding thread. The immediate engineering focus is deterministic worker
17
+ > fallback, safe stderr decoding, and native Windows evidence. Keep bounded
18
+ > pilots only; the working commercial hypothesis is `$20-28/developer/month` and
19
+ > no production CI-gating or enterprise-scale reliability promise is authorized.
20
+ > See [`AUDIT-2026-08-31-EXTERNAL-5.9.17.md`](AUDIT-2026-08-31-EXTERNAL-5.9.17.md).
21
+
8
22
  > **CURRENT UPDATE — release `5.9.16`, external re-audit.** The defective
9
23
  > `5.9.15` command surface has been recovered: all nine missing commands are
10
24
  > restored and independently invoked, and the prior `/dev/null`, option-parser,
@@ -46,16 +46,16 @@ 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.17, `validation` enters through that shared CIR and `data-exposure` reuses one semantic
49
+ 5.9.18, `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.17, with release-artifact verification
55
+ the two pack fixes are included in release 5.9.18, with release-artifact verification
56
56
  remaining for detached execution and pack evidence.
57
57
 
58
- ### Reliability contracts in 5.9.17
58
+ ### Reliability contracts in 5.9.18
59
59
 
60
60
  **Failures must be visible.** `risk`, `verify`, `audit-report` and
61
61
  `migrate-check` turn unexpected analysis failures into structured
@@ -64,6 +64,13 @@ The release battery includes a repeatable six-command Windows matrix; it records
64
64
  exit codes and output sizes, but native Windows evidence remains required before
65
65
  closing platform-specific findings.
66
66
 
67
+ **Current Windows limitation.** The `5.9.17` external audit reproduced the
68
+ shared worker-start failure in `risk`, `verify`, `audit-report`, `spring-audit`,
69
+ `migrate-check` and `migrate-apply`. Do not use these commands as a production
70
+ CI gate on Windows until the native matrix closes them. `pack gate --since` now
71
+ uses safe UTF-8 stderr forwarding, but still requires native repeat evidence. See the
72
+ [development roadmap](DEVELOPMENT-ROADMAP.md#external-audit-intake--aud-621-re-audit-release-5917).
73
+
67
74
  **A deadline the root analysis honours.** `ASK_MAX_ANALYSIS_SECONDS=<seconds>` now
68
75
  stops `ask <repo>` at a measured phase boundary. A run that spends its budget
69
76
  returns a structured `partial-answer-v1` payload naming the phases that completed,
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "5.9.17"
7
+ version = "5.9.18"
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.17"
7
+ __version__ = "5.9.18"
@@ -13422,6 +13422,8 @@ def verify_cmd(
13422
13422
  hint=f"--fail-on accepts: {' | '.join(_vr.FAIL_ON_CHOICES)}.",
13423
13423
  )
13424
13424
  raise typer.Exit(code=2 if ci else 0)
13425
+ except typer.Exit:
13426
+ raise
13425
13427
  except Exception as exc:
13426
13428
  _prog.stop()
13427
13429
  _analysis_failed("verify", "verifying contracts", exc)
@@ -13691,6 +13693,8 @@ def risk_cmd(
13691
13693
  ci=ci,
13692
13694
  allow_partial=allow_partial,
13693
13695
  )
13696
+ except typer.Exit:
13697
+ raise
13694
13698
  except Exception as exc:
13695
13699
  _analysis_failed("risk", phase, exc)
13696
13700
  finally:
@@ -14194,6 +14198,8 @@ def audit_report_cmd(
14194
14198
  checkpoint=_run.checkpoint,
14195
14199
  partial_status=lambda **cut: _run.status(_WHY_BUDGET, **cut),
14196
14200
  )
14201
+ except typer.Exit:
14202
+ raise
14197
14203
  except Exception as exc:
14198
14204
  _analysis_failed("audit-report", _phase, exc)
14199
14205
  finally:
@@ -15596,6 +15602,8 @@ def migrate_check_cmd(
15596
15602
  timings=_mig_timings,
15597
15603
  )
15598
15604
  report.include_hygiene = include_hygiene
15605
+ except typer.Exit:
15606
+ raise
15599
15607
  except Exception as exc:
15600
15608
  _analysis_failed("migrate-check", phase, exc)
15601
15609
  finally:
@@ -719,17 +719,27 @@ def _run_command(command: str, root: Path, output: Path, extra: list[str]) -> di
719
719
  stdout=subprocess.PIPE,
720
720
  stderr=subprocess.PIPE,
721
721
  text=True,
722
+ # A Windows console often defaults to a legacy code page while ASK emits
723
+ # UTF-8 diagnostics. Decoding strictly lets the forwarding thread die,
724
+ # leaving stderr undrained and the child blocked on a full pipe.
725
+ encoding="utf-8",
726
+ errors="replace",
722
727
  cwd=str(root),
723
728
  )
724
729
  stderr_lines: list[str] = []
725
730
 
726
731
  def _forward_stderr() -> None:
727
732
  assert process.stderr is not None
728
- for line in process.stderr:
729
- stderr_lines.append(line)
730
- # Child diagnostics are operational progress/errors, never pack data.
731
- sys.stderr.write(line)
732
- sys.stderr.flush()
733
+ try:
734
+ for line in process.stderr:
735
+ stderr_lines.append(line)
736
+ # Child diagnostics are operational progress/errors, never pack data.
737
+ sys.stderr.write(line)
738
+ sys.stderr.flush()
739
+ except UnicodeDecodeError:
740
+ # `encoding`/`errors` above prevents this for ASK children. Keep the
741
+ # pack process alive even if a custom stream violates that contract.
742
+ stderr_lines.append("[ask] stderr contained undecodable bytes\n")
733
743
 
734
744
  stderr_thread = threading.Thread(target=_forward_stderr, daemon=True)
735
745
  stderr_thread.start()
@@ -113,7 +113,14 @@ def _reset_for_tests() -> None:
113
113
 
114
114
 
115
115
  def _executor(max_workers: int):
116
- """Construct the process executor through one injectable seam."""
116
+ """Construct the process executor through one injectable seam.
117
+
118
+ Windows uses the sequential parse path. Keep that invariant at the only
119
+ construction point as well as at the caller, so a future caller cannot
120
+ reintroduce a ``DuplicateHandle`` worker-start failure.
121
+ """
122
+ if os.name == "nt":
123
+ raise RuntimeError("Windows process pools are disabled; parse sequentially")
117
124
  from concurrent.futures import ProcessPoolExecutor
118
125
 
119
126
  return ProcessPoolExecutor(max_workers=max_workers)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes