sourcecode 5.9.6__tar.gz → 5.9.7__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.6 → sourcecode-5.9.7}/CHANGELOG.md +10 -0
  2. {sourcecode-5.9.6 → sourcecode-5.9.7}/PKG-INFO +5 -5
  3. {sourcecode-5.9.6 → sourcecode-5.9.7}/README.md +4 -4
  4. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/DEFECT-LEDGER.md +30 -0
  5. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/DEVELOPMENT-ROADMAP.md +42 -1
  6. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/EXECUTIVE-ROADMAP.md +14 -1
  7. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/MANUAL-USUARIO.md +2 -2
  8. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/USER_GUIDE.md +4 -4
  9. {sourcecode-5.9.6 → sourcecode-5.9.7}/pyproject.toml +1 -1
  10. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/__init__.py +1 -1
  11. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/cli.py +16 -26
  12. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/git_checkout.py +1 -1
  13. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/intent_router.py +2 -1
  14. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/prepare_context.py +2 -2
  15. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/progress.py +32 -1
  16. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/spring_impact.py +2 -0
  17. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/timeline.py +1 -1
  18. {sourcecode-5.9.6 → sourcecode-5.9.7}/.github/workflows/build-windows.yml +0 -0
  19. {sourcecode-5.9.6 → sourcecode-5.9.7}/.github/workflows/perf-gate.yml +0 -0
  20. {sourcecode-5.9.6 → sourcecode-5.9.7}/.github/workflows/windows-battery.yml +0 -0
  21. {sourcecode-5.9.6 → sourcecode-5.9.7}/.gitignore +0 -0
  22. {sourcecode-5.9.6 → sourcecode-5.9.7}/.ruff.toml +0 -0
  23. {sourcecode-5.9.6 → sourcecode-5.9.7}/CLAUDE.md +0 -0
  24. {sourcecode-5.9.6 → sourcecode-5.9.7}/CODE_OF_CONDUCT.md +0 -0
  25. {sourcecode-5.9.6 → sourcecode-5.9.7}/CONTRIBUTING.md +0 -0
  26. {sourcecode-5.9.6 → sourcecode-5.9.7}/LICENSE +0 -0
  27. {sourcecode-5.9.6 → sourcecode-5.9.7}/NOTICE +0 -0
  28. {sourcecode-5.9.6 → sourcecode-5.9.7}/SECURITY.md +0 -0
  29. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
  30. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
  31. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
  32. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
  33. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
  34. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
  35. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
  36. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
  37. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
  38. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
  39. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
  40. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
  41. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
  42. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
  43. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
  44. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +0 -0
  45. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-2026-08-27-EXTERNAL-5.9.3.md +0 -0
  46. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
  47. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/CACHE.md +0 -0
  48. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/COMMERCIAL-OFFER.md +0 -0
  49. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/CUSTOMER-VALIDATION.md +0 -0
  50. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/DEMO-5MIN.md +0 -0
  51. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
  52. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/EXECUTION-PLAN-12MO.md +0 -0
  53. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/MODERNIZATION.md +0 -0
  54. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/PRODUCT-ROUTE.md +0 -0
  55. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/PRODUCT_AUDIT.md +0 -0
  56. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/PRODUCT_IDENTITY.md +0 -0
  57. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/PRODUCT_TIERS.md +0 -0
  58. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/RC1-CHECKLIST.md +0 -0
  59. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/RELEASE-CHECKLIST.md +0 -0
  60. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
  61. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
  62. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
  63. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/DESIGN-assessment-report.md +0 -0
  64. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
  65. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
  66. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
  67. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
  68. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
  69. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
  70. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
  71. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
  72. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/DESIGN-pack-manifest.md +0 -0
  73. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
  74. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
  75. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
  76. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/EPV-p6-class-typeref.md +0 -0
  77. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
  78. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
  79. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
  80. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
  81. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/adr/0001-semantic-ir.md +0 -0
  82. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
  83. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
  84. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
  85. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
  86. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/adr/0006-performance-harness.md +0 -0
  87. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/adr/0007-composition-semantics.md +0 -0
  88. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/adr/0008-answer-coherence.md +0 -0
  89. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/consumer-disposition-inventory.md +0 -0
  90. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/overview.md +0 -0
  91. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/product-architecture-review.md +0 -0
  92. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/product-strategy-layering.md +0 -0
  93. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
  94. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/architecture/semantic-ir-roadmap.md +0 -0
  95. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/baseline-ci.yml +0 -0
  96. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/commercial-pipeline-audit.md +0 -0
  97. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/contracts-ci.yml +0 -0
  98. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/contracts.md +0 -0
  99. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
  100. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
  101. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
  102. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
  103. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
  104. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
  105. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
  106. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
  107. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/licensing-schema.md +0 -0
  108. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/migrate-check.md +0 -0
  109. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/pack-gate-github-actions.yml +0 -0
  110. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/pack-gate-gitlab.yml +0 -0
  111. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/README.md +0 -0
  112. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/REGRESSION-GATE.md +0 -0
  113. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
  114. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
  115. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
  116. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
  117. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
  118. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
  119. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
  120. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
  121. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
  122. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
  123. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
  124. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
  125. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
  126. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
  127. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
  128. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
  129. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
  130. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
  131. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
  132. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
  133. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
  134. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
  135. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
  136. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
  137. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
  138. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
  139. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
  140. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
  141. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
  142. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
  143. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
  144. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
  145. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
  146. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
  147. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
  148. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
  149. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
  150. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
  151. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
  152. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
  153. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
  154. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
  155. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/gate-latest/README.md +0 -0
  156. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
  157. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
  158. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
  159. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
  160. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
  161. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
  162. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/baselines/reference-best/README.md +0 -0
  163. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/perf/corpus-testing-2026-08-22.md +0 -0
  164. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/posture.md +0 -0
  165. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/privacy.md +0 -0
  166. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/pro-experience-audit.md +0 -0
  167. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/schema.md +0 -0
  168. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/spec/envelope-v1.md +0 -0
  169. {sourcecode-5.9.6 → sourcecode-5.9.7}/docs/spring-audit-ci.yml +0 -0
  170. {sourcecode-5.9.6 → sourcecode-5.9.7}/hatch_build.py +0 -0
  171. {sourcecode-5.9.6 → sourcecode-5.9.7}/scripts/compare_integration_engines.py +0 -0
  172. {sourcecode-5.9.6 → sourcecode-5.9.7}/scripts/context_cost_harness.py +0 -0
  173. {sourcecode-5.9.6 → sourcecode-5.9.7}/scripts/customer_smoke_test.sh +0 -0
  174. {sourcecode-5.9.6 → sourcecode-5.9.7}/scripts/generate_jdk_exports.py +0 -0
  175. {sourcecode-5.9.6 → sourcecode-5.9.7}/scripts/perf_gate.py +0 -0
  176. {sourcecode-5.9.6 → sourcecode-5.9.7}/scripts/perf_harness.py +0 -0
  177. {sourcecode-5.9.6 → sourcecode-5.9.7}/scripts/sync_gate_anchors.py +0 -0
  178. {sourcecode-5.9.6 → sourcecode-5.9.7}/scripts/test_fast.sh +0 -0
  179. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/__main__.py +0 -0
  180. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/access_drift.py +0 -0
  181. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/adaptive_scanner.py +0 -0
  182. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/analysis_budget.py +0 -0
  183. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/answer_bounds.py +0 -0
  184. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/archetype.py +0 -0
  185. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/architectural_baseline.py +0 -0
  186. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/architectural_delta.py +0 -0
  187. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/architecture_analyzer.py +0 -0
  188. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/architecture_summary.py +0 -0
  189. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/ast_extractor.py +0 -0
  190. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/audit_clusters.py +0 -0
  191. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/audit_recipe.py +0 -0
  192. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/audit_report.py +0 -0
  193. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/audit_since.py +0 -0
  194. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/audit_verify.py +0 -0
  195. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/baseline_attestation.py +0 -0
  196. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/baseline_autocapture.py +0 -0
  197. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/breaking_changes.py +0 -0
  198. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/build_modules.py +0 -0
  199. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/build_stamp.py +0 -0
  200. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/bundled_docs.py +0 -0
  201. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/c4_render.py +0 -0
  202. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/cache.py +0 -0
  203. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/cache_model.py +0 -0
  204. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/cache_observation.py +0 -0
  205. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/call_surface.py +0 -0
  206. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/caller_metrics.py +0 -0
  207. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/caller_reach.py +0 -0
  208. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/canonical_ir.py +0 -0
  209. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/chain_rules.py +0 -0
  210. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/change_plan.py +0 -0
  211. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/ci_output.py +0 -0
  212. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/cir_graphs.py +0 -0
  213. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/classifier.py +0 -0
  214. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/client_calls.py +0 -0
  215. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/code_notes_analyzer.py +0 -0
  216. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/compare.py +0 -0
  217. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/confidence_analyzer.py +0 -0
  218. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/constraint_diff.py +0 -0
  219. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/consumer_join.py +0 -0
  220. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/container_wiring.py +0 -0
  221. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/context_cache.py +0 -0
  222. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/context_graph.py +0 -0
  223. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/context_scorer.py +0 -0
  224. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/context_summarizer.py +0 -0
  225. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/contract_diff.py +0 -0
  226. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/contract_init.py +0 -0
  227. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/contract_model.py +0 -0
  228. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/contract_pipeline.py +0 -0
  229. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/coverage_parser.py +0 -0
  230. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/cve_feed.py +0 -0
  231. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/cve_reachability.py +0 -0
  232. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/data_exposure.py +0 -0
  233. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/data_labels.py +0 -0
  234. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/declarations.py +0 -0
  235. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/defect_classes/__init__.py +0 -0
  236. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/defect_classes/registry.json +0 -0
  237. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/defect_identity.py +0 -0
  238. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/degradation.py +0 -0
  239. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/dependency_analyzer.py +0 -0
  240. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/deployment_prefix.py +0 -0
  241. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detach.py +0 -0
  242. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/__init__.py +0 -0
  243. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/base.py +0 -0
  244. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/csproj_parser.py +0 -0
  245. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/dart.py +0 -0
  246. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/dotnet.py +0 -0
  247. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/elixir.py +0 -0
  248. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/go.py +0 -0
  249. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/heuristic.py +0 -0
  250. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/hybrid.py +0 -0
  251. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/java.py +0 -0
  252. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/jvm_ext.py +0 -0
  253. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/nodejs.py +0 -0
  254. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/parsers.py +0 -0
  255. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/php.py +0 -0
  256. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/project.py +0 -0
  257. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/python.py +0 -0
  258. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/ruby.py +0 -0
  259. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/rust.py +0 -0
  260. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/systems.py +0 -0
  261. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/terraform.py +0 -0
  262. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/detectors/tooling.py +0 -0
  263. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/doc_analyzer.py +0 -0
  264. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/dynamic_argument_surface.py +0 -0
  265. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/empty_reach.py +0 -0
  266. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/endpoint_disposition.py +0 -0
  267. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/endpoint_literals.py +0 -0
  268. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/endpoint_metrics.py +0 -0
  269. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/entrypoint_classifier.py +0 -0
  270. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/env_analyzer.py +0 -0
  271. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/envelope.py +0 -0
  272. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/environment_resolution.py +0 -0
  273. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/error_schema.py +0 -0
  274. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/evidence_provider.py +0 -0
  275. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/execution_plan.py +0 -0
  276. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/explain.py +0 -0
  277. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/explain_endpoint.py +0 -0
  278. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/facts/__init__.py +0 -0
  279. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/facts/registry.json +0 -0
  280. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/field_deprecations.py +0 -0
  281. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/file_chunker.py +0 -0
  282. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/file_classifier.py +0 -0
  283. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/filter_surface.py +0 -0
  284. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/findings_baseline.py +0 -0
  285. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/format_contract.py +0 -0
  286. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/fqn_utils.py +0 -0
  287. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/functional_routes.py +0 -0
  288. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/gate_anchors.py +0 -0
  289. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/git_analyzer.py +0 -0
  290. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/github_diff.py +0 -0
  291. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/graph_analyzer.py +0 -0
  292. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/graph_evidence.py +0 -0
  293. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/hibernate_strat.py +0 -0
  294. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/identity_fallback.py +0 -0
  295. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/integration_coordinates.py +0 -0
  296. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/jdk_exports.py +0 -0
  297. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/license.py +0 -0
  298. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/manifest_cache.py +0 -0
  299. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/mcp/__init__.py +0 -0
  300. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/mcp/dependency_import.py +0 -0
  301. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  302. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  303. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  304. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  305. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  306. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/mcp/orchestrator.py +0 -0
  307. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/mcp/registry.py +0 -0
  308. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/mcp/runner.py +0 -0
  309. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/mcp/server.py +0 -0
  310. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/mcp_nudge.py +0 -0
  311. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/metrics_analyzer.py +0 -0
  312. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/migrate_check.py +0 -0
  313. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/migration_apply.py +0 -0
  314. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/migration_blast.py +0 -0
  315. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/non_coverage.py +0 -0
  316. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/openapi_surface.py +0 -0
  317. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/openrewrite_recipe.py +0 -0
  318. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/output_bounds.py +0 -0
  319. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/output_budget.py +0 -0
  320. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/output_ceiling.py +0 -0
  321. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/output_encoding.py +0 -0
  322. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/output_sink.py +0 -0
  323. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/pack_manifest.py +0 -0
  324. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/packs.py +0 -0
  325. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/parallel.py +0 -0
  326. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/parse_cache.py +0 -0
  327. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/partial_contract.py +0 -0
  328. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/path_admission.py +0 -0
  329. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/path_display.py +0 -0
  330. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/path_filters.py +0 -0
  331. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/perf.py +0 -0
  332. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/phased_run.py +0 -0
  333. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/pipe_contract.py +0 -0
  334. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/posture.py +0 -0
  335. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/pr_comment_renderer.py +0 -0
  336. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/pr_impact.py +0 -0
  337. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/pr_risk.py +0 -0
  338. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/product_info.py +0 -0
  339. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/provenance.py +0 -0
  340. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/ranking_engine.py +0 -0
  341. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/readiness_timeline.py +0 -0
  342. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/readonly.py +0 -0
  343. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/reconciliation.py +0 -0
  344. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/redactor.py +0 -0
  345. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/reference_facts.py +0 -0
  346. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/regress.py +0 -0
  347. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/regulatory_pack.py +0 -0
  348. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/release_info.py +0 -0
  349. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/relevance_scorer.py +0 -0
  350. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/remediation_diff.py +0 -0
  351. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/remediation_flow.py +0 -0
  352. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/remediation_report.py +0 -0
  353. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/remedies.py +0 -0
  354. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/rename_refactor.py +0 -0
  355. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/repo_classifier.py +0 -0
  356. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/repository_ir.py +0 -0
  357. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/resource_budget.py +0 -0
  358. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/__init__.py +0 -0
  359. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/context.py +0 -0
  360. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/errors.py +0 -0
  361. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/executor.py +0 -0
  362. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/planner.py +0 -0
  363. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/query.py +0 -0
  364. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/request.py +0 -0
  365. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/resolution.py +0 -0
  366. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/result.py +0 -0
  367. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/retriever.py +0 -0
  368. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/runtime.py +0 -0
  369. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/steps.py +0 -0
  370. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
  371. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/steps_graph.py +0 -0
  372. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/steps_impact.py +0 -0
  373. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/steps_intf.py +0 -0
  374. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/steps_struct.py +0 -0
  375. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/retrieval/steps_txsec.py +0 -0
  376. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/ris.py +0 -0
  377. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/risk.py +0 -0
  378. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/risk_model.py +0 -0
  379. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/rule_catalog.py +0 -0
  380. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/rule_pass.py +0 -0
  381. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/runs.py +0 -0
  382. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/runtime_classifier.py +0 -0
  383. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/sarif.py +0 -0
  384. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/sarif_emit.py +0 -0
  385. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/scanner.py +0 -0
  386. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/schema.py +0 -0
  387. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/schema_producers.py +0 -0
  388. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/schema_registry.py +0 -0
  389. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
  390. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
  391. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
  392. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
  393. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
  394. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
  395. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
  396. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/security_chain.py +0 -0
  397. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/security_config.py +0 -0
  398. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/security_config_scan.py +0 -0
  399. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/security_posture.py +0 -0
  400. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/selection_contract.py +0 -0
  401. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/self_audit.py +0 -0
  402. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/selftest.py +0 -0
  403. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/semantic_analyzer.py +0 -0
  404. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/semantic_impact_engine.py +0 -0
  405. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/semantic_integration_engine.py +0 -0
  406. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/semantic_services.py +0 -0
  407. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/serializer.py +0 -0
  408. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/servlet_surface.py +0 -0
  409. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/source_text.py +0 -0
  410. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/spring_event_topology.py +0 -0
  411. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/spring_findings.py +0 -0
  412. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/spring_model.py +0 -0
  413. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/spring_profiles.py +0 -0
  414. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/spring_properties.py +0 -0
  415. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/spring_security_audit.py +0 -0
  416. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/spring_semantic.py +0 -0
  417. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/spring_tx_analyzer.py +0 -0
  418. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/sql_taint.py +0 -0
  419. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/summarizer.py +0 -0
  420. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/target_admission.py +0 -0
  421. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/telemetry/__init__.py +0 -0
  422. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/telemetry/config.py +0 -0
  423. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/telemetry/consent.py +0 -0
  424. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/telemetry/events.py +0 -0
  425. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/telemetry/filters.py +0 -0
  426. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/telemetry/transport.py +0 -0
  427. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/test_gap_ranking.py +0 -0
  428. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/test_sources.py +0 -0
  429. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/text_input.py +0 -0
  430. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/timeline_cache.py +0 -0
  431. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/token_estimate.py +0 -0
  432. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/tree_utils.py +0 -0
  433. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/type_usage_surface.py +0 -0
  434. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/validation_inference.py +0 -0
  435. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/validation_surface.py +0 -0
  436. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/verify_edit.py +0 -0
  437. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/verify_repo.py +0 -0
  438. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/verify_rules.py +0 -0
  439. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/version_check.py +0 -0
  440. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/vex.py +0 -0
  441. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/waivers.py +0 -0
  442. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/watch_loop.py +0 -0
  443. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/wired_surface.py +0 -0
  444. {sourcecode-5.9.6 → sourcecode-5.9.7}/src/sourcecode/workspace.py +0 -0
  445. {sourcecode-5.9.6 → sourcecode-5.9.7}/supabase/functions/README.md +0 -0
  446. {sourcecode-5.9.6 → sourcecode-5.9.7}/supabase/functions/get-license/index.ts +0 -0
  447. {sourcecode-5.9.6 → sourcecode-5.9.7}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
  448. {sourcecode-5.9.6 → sourcecode-5.9.7}/supabase/functions/telemetry/index.ts +0 -0
  449. {sourcecode-5.9.6 → sourcecode-5.9.7}/supabase/sql/license_event_ordering.sql +0 -0
  450. {sourcecode-5.9.6 → sourcecode-5.9.7}/supabase/sql/licensing_schema.sql +0 -0
  451. {sourcecode-5.9.6 → sourcecode-5.9.7}/supabase/sql/telemetry_events.sql +0 -0
@@ -9217,3 +9217,13 @@ implementors.
9217
9217
  - 3 `--slim` tests verifying the option is absent from help and CLI surface.
9218
9218
  - 6 `angular_version` parsing tests covering `dependencies`, `devDependencies`,
9219
9219
  `peerDependencies`, `null` JSON values, and version prefix stripping.
9220
+ ## [5.9.7] — 2026-08-27
9221
+
9222
+ ### Fixed
9223
+ - Exposed functional root options in `ask --help` and aligned help discoverability tests.
9224
+ - Unified empty `--files -` handling for `pr-impact` and `pr-risk`.
9225
+ - Normalized Git reference failures to `GIT_REF_NOT_FOUND`.
9226
+ - Corrected the `cold-start --compact` size contract and endpoint omission disclosure.
9227
+ - Added delayed liveness warnings for long non-interactive runs.
9228
+ - Improved natural-language routing for unsecured endpoint questions.
9229
+ - Kept unresolved impact symbols explicitly unscored.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 5.9.6
3
+ Version: 5.9.7
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.6-blue)
62
+ ![Version](https://img.shields.io/badge/version-5.9.7-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,7 +196,7 @@ 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.6 retains the shared Canonical IR
199
+ **Current performance status.** Release 5.9.7 retains the shared Canonical IR
200
200
  path used by `validation` and now passes that same CIR into labelled `data-exposure`
201
201
  runs; the no-label path remains parse-free. These are implementation properties,
202
202
  not duration promises. A controlled external warm-path audit has opened performance
@@ -218,7 +218,7 @@ in `overlapping_paths`; a missing or non-directory path is rejected as structure
218
218
  invalid input rather than treated as an empty repository. This prevents silent
219
219
  entitlement errors in CI and does not change per-repository gates or billing.
220
220
 
221
- Release 5.9.6 also hardens the boundary contracts: missing consumer repositories,
221
+ Release 5.9.7 also hardens the boundary contracts: missing consumer repositories,
222
222
  malformed CVE feeds and unresolved `pack gate --since` refs fail as structured
223
223
  input errors; duplicate same-commit baselines are never overwritten. `posture
224
224
  --diff` validates unknown profiles when the repository declares profiles. In
@@ -251,7 +251,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
251
251
  # pip / pipx
252
252
  pipx install sourcecode # or: pip install sourcecode
253
253
 
254
- ask version # ask 5.9.6 — and, on a build that has aged,
254
+ ask version # ask 5.9.7 — and, on a build that has aged,
255
255
  # how many releases have probably shipped since
256
256
  ```
257
257
 
@@ -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.6-blue)
13
+ ![Version](https://img.shields.io/badge/version-5.9.7-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,7 +147,7 @@ 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.6 retains the shared Canonical IR
150
+ **Current performance status.** Release 5.9.7 retains the shared Canonical IR
151
151
  path used by `validation` and now passes that same CIR into labelled `data-exposure`
152
152
  runs; the no-label path remains parse-free. These are implementation properties,
153
153
  not duration promises. A controlled external warm-path audit has opened performance
@@ -169,7 +169,7 @@ in `overlapping_paths`; a missing or non-directory path is rejected as structure
169
169
  invalid input rather than treated as an empty repository. This prevents silent
170
170
  entitlement errors in CI and does not change per-repository gates or billing.
171
171
 
172
- Release 5.9.6 also hardens the boundary contracts: missing consumer repositories,
172
+ Release 5.9.7 also hardens the boundary contracts: missing consumer repositories,
173
173
  malformed CVE feeds and unresolved `pack gate --since` refs fail as structured
174
174
  input errors; duplicate same-commit baselines are never overwritten. `posture
175
175
  --diff` validates unknown profiles when the repository declares profiles. In
@@ -202,7 +202,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
202
202
  # pip / pipx
203
203
  pipx install sourcecode # or: pip install sourcecode
204
204
 
205
- ask version # ask 5.9.6 — and, on a build that has aged,
205
+ ask version # ask 5.9.7 — and, on a build that has aged,
206
206
  # how many releases have probably shipped since
207
207
  ```
208
208
 
@@ -41,6 +41,36 @@ polyglot repository. It also did not open zero endpoints, minimum token-budget
41
41
  refusal, unsupported `explain --compact`, or contractless `verify`: each matched
42
42
  the declared contract and non-coverage in the observed run.
43
43
 
44
+ **External audit intake AUD-611, re-audit of release 5.9.6 — 2026-08-27.**
45
+ The external scope was restricted to repositories under Documents/workspace/testing
46
+ and covered about 250 real invocations across seven forks, with 104/104 CLI
47
+ commands exercised. The auditor reports zero target-repository writes, commits
48
+ or dirty worktrees. The final score was 7.4/10; an earlier interim pass recorded
49
+ 8/10, so 7.4/10 is the governing result.
50
+
51
+ The three TeaVM field fixes are confirmed across eight or more control
52
+ repositories with no regressions. The new and still-relevant queue is:
53
+
54
+ | ID | Severity | Status | Evidence / closure boundary |
55
+ |---|---:|---|---|
56
+ | AUD-611-B01 | Critical | open | With stdout redirected to /dev/null, an invalid invocation returned exit 0 and empty stderr in 5/5 runs; normal files, pipes and command substitution retained exit 1. Scope is currently INVALID_INPUT only. Fix error transport and exit status independently, then test every error class and redirection form. |
57
+ | AUD-611-B02 | Critical | open | tutorials has 24,073 Java files; cold root compact ran 240.092 seconds, ended with external timeout exit 124 and zero stdout/stderr. CPU was active, so deadlock versus extreme analysis cost is unresolved. Reproduce on supported Windows/Git Bash and POSIX environments, add progress/deadline/partial diagnostics and define a scale contract. |
58
+ | AUD-611-B03 | High | open | Root compact/agent YAML took 85-380 seconds and reported served_from_cache false on repeated unchanged runs. Add a format/view cache regression and publish latency expectations. |
59
+ | AUD-611-B04 | High | open | One selftest hang occurred in about 16 aggregate runs. Other suspected hangs were retracted after adequate-timeout reruns. Add phase correlation, bounded execution and structured timeout failure. |
60
+ | AUD-611-B05 | High | closed | Root help now exposes all 22 accepted functional flags. Dedicated parity coverage and a real TeaVM execution of `--tree --compact` pass; future internal-only options must be explicitly deprecated or hidden. |
61
+ | AUD-611-B06 | Medium | closed | `pr-risk --files -` now rejects an empty list with the same `INVALID_INPUT` stderr envelope and `exit 1` as `pr-impact`; dedicated TeaVM regression passes. No-diff behavior from implicit Git sources remains separately scoped. |
62
+ | AUD-611-B07 | Medium | closed | Shared Git-ref failures now publish canonical `GIT_REF_NOT_FOUND`; TeaVM regressions cover delta and contract-diff, and existing ref consumers were aligned. |
63
+ | AUD-611-B08 | Medium | closed | `cold-start --compact` now qualifies its size as snapshot-dependent instead of claiming `~10K`; the TeaVM no-RIS path and compact identity regressions pass. A hard ceiling remains an optional future product requirement. |
64
+ | AUD-611-B09 | Medium-high | closed | Non-interactive long runs now emit one delayed stderr warning after 60 seconds by default, configurable with `ASK_PROGRESS_WARNING_SECONDS`; short runs remain silent. TeaVM stdout JSON remains valid under the regression. |
65
+ | AUD-611-B10 | Medium | closed | Added the missing `which endpoints have no security` anchor for `security-surface`; natural TeaVM resolution succeeds without scanning, while equal security-intent questions still refuse deterministically. |
66
+ | AUD-611-B11 | Medium | closed | Missing-symbol `impact-chain` results now use `risk_score: null` and `risk_score_raw: null`, matching `impact`'s unscored semantics; both TeaVM command paths return `not_found`, `unknown`, and `exit 1`. |
67
+ | AUD-611-B12 | Medium | open | Compact endpoint omission now carries explicit `population_total` and an inline measured-population note; the JUnit4 project-type classification half remains open. |
68
+ | AUD-611-B13 | Medium | investigation | retrieve endpoint-security failed silently once in 15 runs (6.7%), exit 1 and zero bytes. Add phase/correlation capture and repeated/concurrent reproduction before closure. |
69
+
70
+ Commercially, the audit supports normal repositories up to several thousand
71
+ files and keeps a provisional $35-50/developer/month range, but B01/B02 block
72
+ annual-grade reliability and enterprise-scale positioning until resolved.
73
+
44
74
  **External audit intake `AUD-610`, release 5.9.3 — 2026-08-27.** The attached
45
75
  report scored the build **7.2/10** after five parallel batches and approximately
46
76
  120 invocations. It verified a clean target repository, no Java-file changes,
@@ -3,7 +3,7 @@
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.6`; external reconciliation `AUD-610` is triaged and the reproducible fixes are implemented.**
6
+ > **CURRENT QUEUE — release `5.9.7`; external reconciliation `AUD-611` adds the next correction queue.**
7
7
  > The 2026-08-27 external review adds `AUD-610-B01` through `AUD-610-B10`, led by
8
8
  > silent `selftest` nondeterminism, silent root/audit-report failures, a legal-zero
9
9
  > `risk --limit 0` crash, an unvalidated consumer path and contradictory Spring
@@ -170,6 +170,47 @@ unsupported flag, and `verify` returning `UNVERIFIED` without contracts all
170
170
  matched their documented contracts. These behaviours must remain in regression
171
171
  coverage, but are not roadmap bugs from this run.
172
172
 
173
+ ### External Audit Intake — `AUD-611` re-audit, release 5.9.6
174
+
175
+ The external re-audit covered only repositories under the testing corpus:
176
+ antlr4, netty, junit4, struts, spring-petclinic, spring-framework-petclinic,
177
+ thingsboard, dropwizard, quarkus-quickstarts, vertx-examples, byte-buddy,
178
+ aspectj, mall, spring-security, openmrs-core and tutorials. It reports
179
+ approximately 250 real invocations across seven forks, 104/104 CLI commands
180
+ exercised, no target-repository writes, no commits and clean Git status
181
+ throughout. The final score is 7.4/10 (an interim pass recorded 8/10); the
182
+ final score is the governing assessment.
183
+
184
+ The audit confirms the previous cache, Spring-presence and README-badge fixes
185
+ across multiple repositories with no regression. It also confirms that
186
+ audit-report, risk --limit 0, timeline, consumer-path admission, CVE validation,
187
+ baseline collision protection, MCP population disclosure and empty baseline
188
+ handling now behave correctly. The following queue captures the new defects and
189
+ the older findings that remain materially relevant:
190
+
191
+ | ID | Severity | Finding | Required future closure |
192
+ |---|---:|---|---|
193
+ | AUD-611-B01 | Critical | Redirecting an invalid invocation with ask <bad-input> >/dev/null suppresses both the structured error and the non-zero exit: 5/5 reproductions returned exit 0 with empty stderr. Pipes and command substitution retained exit 1. Only INVALID_INPUT was tested; other error classes remain unverified. | Make error emission and process status independent of stdout destination. Test /dev/null, regular files, pipes, merged streams and all error codes; require structured stderr and non-zero status. |
194
+ | AUD-611-B02 | Critical | Cold root ask . --compact on tutorials (24,073 Java files) ran for exactly 240 seconds until external timeout, returned exit 124 and produced zero bytes on stdout/stderr. The process consumed CPU; no progress or partial answer was available. Windows/Git Bash signal handling may contribute and must be distinguished from analysis cost. | Reproduce on the supported matrix, publish phase progress/heartbeat, enforce an internal deadline that preserves diagnostics, and establish an explicit scale ceiling or bounded execution mode before enterprise-scale claims. |
195
+ | AUD-611-B03 | High | Three consecutive root --compact/--agent -f yaml runs took 85-380 seconds and reported served_from_cache false every time on the same unchanged repository. Output eventually completed, so this is cache/performance correctness rather than a crash. | Include format/view/mode in the canonical cache key or share the context cache correctly; add a cold/warm multi-process benchmark and document expected latency. |
196
+ | AUD-611-B04 | High | selftest still hung once in approximately 16 aggregate executions across three evaluators. Prior suspected hangs for pr-risk, pack gate and audit-report were retracted after isolated reruns with adequate timeouts. | Instrument phase/correlation IDs, enforce bounded child execution and preserve a structured failure envelope; distinguish tool hangs from auditor timeout artefacts. |
197
+ | AUD-611-B05 | High | **Closed in this fix.** Root --help now exposes the 22 functional root flags accepted by the callback, including architecture, tree, symbol, graph, dependency and docs flags. | Keep the live help/registry parity test green; internal-only options must be explicitly deprecated or hidden rather than silently omitted. |
198
+ | AUD-611-B06 | Medium | **Closed in this fix.** Empty `--files -` now yields the same `INVALID_INPUT` structured stderr envelope and `exit 1` in `pr-impact` and `pr-risk`. | Keep both command contracts covered; no-diff paths not sourced from `--files` remain a separate policy surface. |
199
+ | AUD-611-B07 | Medium | **Closed in this fix.** Shared Git reference failures now publish `GIT_REF_NOT_FOUND` across delta, contract-diff and the other ref-consuming surfaces. | Keep the cross-command error-code vocabulary test green. |
200
+ | AUD-611-B08 | Medium | **Closed in this fix.** `cold-start --compact` no longer promises a fixed `~10K` ceiling; help and command documentation now state that the bounded orientation subset depends on stored snapshot size. No data is silently truncated to satisfy a false bound. | If a hard token ceiling becomes a product requirement, implement it with explicit omission metadata and corpus benchmarks. |
201
+ | AUD-611-B09 | Medium-high | **Closed in this fix.** Non-interactive runs now emit one delayed stderr liveness warning after 60 seconds by default (configurable with `ASK_PROGRESS_WARNING_SECONDS`), while short runs remain byte-silent and stdout stays machine-readable. | Keep the warning opt-out and periodic `--progress` heartbeat contracts covered. |
202
+ | AUD-611-B10 | Medium | **Closed in this fix.** The natural question `which endpoints have no security` now maps deterministically to `security-surface`; equal security intents continue to refuse with both candidates named. | Keep lexical anchors and equal-score refusal tests synchronized with the retrieve registry. |
203
+ | AUD-611-B11 | Medium | **Closed in this fix.** For missing symbols, `impact-chain` now publishes null risk scores instead of the misleading numeric zero and preserves the same `not_found`/`unknown`/`exit 1` policy as `impact`. | Keep the shared not-found risk semantics covered; `impact`'s existing omission of `risk_score_raw` remains a separate schema choice. |
204
+ | AUD-611-B12 | Medium | **Partially closed in this fix.** Compact endpoint output now publishes an explicit `population_total` beside the omitted rows and repeats the measured population in the inline note, so `endpoints: []` cannot be read as “no endpoints”. JUnit4 classification remains open. | Add evidence-backed JUnit4 project classification without heuristic overreach. |
205
+ | AUD-611-B13 | Medium | retrieve endpoint-security failed silently once in 15 consecutive attempts (6.7%), exit 1 and zero bytes, with normal timing and no traceback. | Capture correlation/phase failures and reproduce under repeated/concurrent cache-control tests before claiming deterministic closure. |
206
+
207
+ **Commercial interpretation.** The audit supports adoption for normal repositories up
208
+ to several thousand files and values the product at a provisional $35-50 per
209
+ developer/month, but the final score and the critical /dev/null and extreme-scale
210
+ findings block an annual-grade reliability claim. Pricing and enterprise
211
+ positioning remain hypotheses until AUD-611-B01 and AUD-611-B02 are closed and
212
+ the latency contract is explicit.
213
+
173
214
  ### External Audit Intake — `AUD-610` detail, release 5.9.3
174
215
 
175
216
  The attached external report audited ASK `5.9.3` in five parallel batches
@@ -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.6`, following the external `5.9.3` reconciliation.**
8
+ > **CURRENT UPDATE — release `5.9.7`, 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.
@@ -19,6 +19,19 @@
19
19
  > non-reproduction did not cover the payload shape now identified. Details are
20
20
  > in [`AUDIT-2026-08-26-EXTERNAL-5.9.0.md`](AUDIT-2026-08-26-EXTERNAL-5.9.0.md).
21
21
 
22
+ > **RE-AUDIT — 5.9.6, received 2026-08-27.** Seven independent forks exercised
23
+ > approximately 250 invocations across the testing corpus with no target-repository
24
+ > mutation or regression in the three latest fixes. The final score is **7.4/10**.
25
+ > Commercial adoption remains suitable for normal repositories, provisionally
26
+ > `$35-50/developer/month`, but annual-grade reliability is blocked by two new
27
+ > critical findings: invalid-input errors can be suppressed by redirecting stdout
28
+ > to `/dev/null`, and the root compact scan of a 24,073-Java-file repository timed
29
+ > out after 240 seconds with no output. Additional roadmap debt covers root help
30
+ > parity, cache reuse for YAML/view combinations, default progress signals, intent
31
+ > tie semantics, impact not-found parity, compact sizing and one intermittent
32
+ > retrieve failure. Full engineering detail is recorded in `AUD-611` in the
33
+ > development roadmap and defect ledger.
34
+
22
35
  > **EXTERNAL REVIEW — 5.9.2, received 2026-08-27.** No regression was reported in the
23
36
  > previously closed surface. Two `auth workspace` defects are now open: overlapping
24
37
  > parent/child paths can double-count Java files, and nonexistent paths are accepted as
@@ -1,6 +1,6 @@
1
1
  # Manual de usuario — ASK Engine
2
2
 
3
- > Versión de la herramienta: **5.9.6** · El comando que se ejecuta es `ask`.
3
+ > Versión de la herramienta: **5.9.7** · 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,7 @@
8
8
 
9
9
  ## 1. ¿Qué es ASK Engine?
10
10
 
11
- ### Contratos de fiabilidad de la versión 5.9.6
11
+ ### Contratos de fiabilidad de la versión 5.9.7
12
12
 
13
13
  Las entradas inválidas se rechazan antes del análisis costoso mediante el
14
14
  envelope estructurado `INVALID_INPUT`: un `--consumer` inexistente, un feed CVE
@@ -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.6, `validation` enters through that shared CIR and `data-exposure` reuses one semantic
49
+ 5.9.7, `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.6, with release-artifact verification
55
+ the two pack fixes are included in release 5.9.7, with release-artifact verification
56
56
  remaining for detached execution and pack evidence.
57
57
 
58
- ### Reliability contracts in 5.9.6
58
+ ### Reliability contracts in 5.9.7
59
59
 
60
60
  Invalid analysis inputs fail before expensive work and use the structured
61
61
  `INVALID_INPUT` envelope: a missing `--consumer` repository, a malformed CVE
@@ -236,7 +236,7 @@ pipx install sourcecode # isolated install, no venv needed
236
236
 
237
237
  # Verify
238
238
  ask version
239
- # ask 5.9.6
239
+ # ask 5.9.7
240
240
  ```
241
241
 
242
242
  Requires Python 3.9+.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "5.9.6"
7
+ version = "5.9.7"
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.6"
7
+ __version__ = "5.9.7"
@@ -5008,39 +5008,33 @@ def main(
5008
5008
  dependencies: bool = typer.Option(
5009
5009
  False,
5010
5010
  "--dependencies",
5011
- hidden=True,
5012
5011
  help="Analyze direct dependencies from manifests and lockfiles. " + _IMPLIED_NOTE,
5013
5012
  ),
5014
5013
  graph_modules: bool = typer.Option(
5015
5014
  False,
5016
5015
  "--graph-modules",
5017
- hidden=True,
5018
5016
  help="Include a structural module graph in output.",
5019
5017
  ),
5020
5018
  graph_detail: str = typer.Option(
5021
5019
  "high",
5022
5020
  "--graph-detail",
5023
- hidden=True,
5024
5021
  help="Detail level for --graph-modules: high, medium, full.",
5025
5022
  show_default=True,
5026
5023
  ),
5027
5024
  max_nodes: Optional[int] = typer.Option(
5028
5025
  None,
5029
5026
  "--max-nodes",
5030
- hidden=True,
5031
5027
  help="Maximum nodes in --graph-modules output.",
5032
5028
  min=1,
5033
5029
  ),
5034
5030
  graph_edges: Optional[str] = typer.Option(
5035
5031
  None,
5036
5032
  "--graph-edges",
5037
- hidden=True,
5038
5033
  help="Edge types for --graph-modules, comma-separated: imports,calls,contains,extends.",
5039
5034
  ),
5040
5035
  tree: bool = typer.Option(
5041
5036
  False,
5042
5037
  "--tree",
5043
- hidden=True,
5044
5038
  help="Include the full file_tree and flat file_paths list in output.",
5045
5039
  ),
5046
5040
  no_redact: bool = typer.Option(
@@ -5066,32 +5060,27 @@ def main(
5066
5060
  docs: bool = typer.Option(
5067
5061
  False,
5068
5062
  "--docs",
5069
- hidden=True,
5070
5063
  help="Extract documentation: docstrings, function signatures, and module-level comments.",
5071
5064
  ),
5072
5065
  docs_depth: str = typer.Option(
5073
5066
  "symbols",
5074
5067
  "--docs-depth",
5075
- hidden=True,
5076
5068
  help="Documentation extraction depth: module, symbols, full.",
5077
5069
  show_default=True,
5078
5070
  ),
5079
5071
  full_metrics: bool = typer.Option(
5080
5072
  False,
5081
5073
  "--full-metrics",
5082
- hidden=True,
5083
5074
  help="Technical audit: LOC, complexity, test coverage per file.",
5084
5075
  ),
5085
5076
  semantics: bool = typer.Option(
5086
5077
  False,
5087
5078
  "--semantics",
5088
- hidden=True,
5089
5079
  help="Cross-file symbol resolution and call graph analysis.",
5090
5080
  ),
5091
5081
  architecture: bool = typer.Option(
5092
5082
  False,
5093
5083
  "--architecture",
5094
- hidden=True,
5095
5084
  help="Architectural layer inference (MVC/hexagonal/layered). " + _IMPLIED_NOTE,
5096
5085
  ),
5097
5086
  git_context: bool = typer.Option(
@@ -5103,7 +5092,6 @@ def main(
5103
5092
  git_depth: int = typer.Option(
5104
5093
  20,
5105
5094
  "--git-depth",
5106
- hidden=True,
5107
5095
  help="Number of recent commits to include with --git-context (default: 20).",
5108
5096
  min=1,
5109
5097
  max=100,
@@ -5111,7 +5099,6 @@ def main(
5111
5099
  git_days: int = typer.Option(
5112
5100
  90,
5113
5101
  "--git-days",
5114
- hidden=True,
5115
5102
  help="Time window in days for change hotspot detection (default: 90).",
5116
5103
  min=1,
5117
5104
  max=3650,
@@ -5127,7 +5114,6 @@ def main(
5127
5114
  code_notes: bool = typer.Option(
5128
5115
  False,
5129
5116
  "--code-notes",
5130
- hidden=True,
5131
5117
  help=(
5132
5118
  "Extract inline annotations: TODO, FIXME, HACK, DEPRECATED, ADRs. "
5133
5119
  + _IMPLIED_NOTE
@@ -5153,26 +5139,22 @@ def main(
5153
5139
  trace_pipeline: bool = typer.Option(
5154
5140
  False,
5155
5141
  "--trace-pipeline",
5156
- hidden=True,
5157
5142
  help="Diagnostic: include full pipeline trace in output.",
5158
5143
  ),
5159
5144
  mode: str = typer.Option(
5160
5145
  "contract",
5161
5146
  "--mode",
5162
- hidden=True,
5163
5147
  help="Output mode: contract (default) | standard | raw.",
5164
5148
  ),
5165
5149
  max_symbols: Optional[int] = typer.Option(
5166
5150
  None,
5167
5151
  "--max-symbols",
5168
- hidden=True,
5169
5152
  help="Limit total exported semantic nodes across all file contracts.",
5170
5153
  min=1,
5171
5154
  ),
5172
5155
  entrypoints_only: bool = typer.Option(
5173
5156
  False,
5174
5157
  "--entrypoints-only",
5175
- hidden=True,
5176
5158
  help="Include only files with exported symbols or runtime entrypoints.",
5177
5159
  ),
5178
5160
  changed_only: bool = typer.Option(
@@ -5183,25 +5165,21 @@ def main(
5183
5165
  rank_by: str = typer.Option(
5184
5166
  "relevance",
5185
5167
  "--rank-by",
5186
- hidden=True,
5187
5168
  help="Contract ranking strategy: relevance (default) | centrality | git-churn.",
5188
5169
  ),
5189
5170
  emit_graph: bool = typer.Option(
5190
5171
  False,
5191
5172
  "--emit-graph",
5192
- hidden=True,
5193
5173
  help="Include a compact dependency graph in contract output.",
5194
5174
  ),
5195
5175
  symbol: Optional[str] = typer.Option(
5196
5176
  None,
5197
5177
  "--symbol",
5198
- hidden=True,
5199
5178
  help="Extract context for a specific symbol (Python/TS/JS only — not supported for Java).",
5200
5179
  ),
5201
5180
  max_importers: int = typer.Option(
5202
5181
  50,
5203
5182
  "--max-importers",
5204
- hidden=True,
5205
5183
  help="Maximum importer files returned by --symbol (default: 50).",
5206
5184
  min=1,
5207
5185
  max=10000,
@@ -9156,12 +9134,15 @@ def endpoints_cmd(
9156
9134
  data["endpoints"] = []
9157
9135
  data["endpoints_note"] = (
9158
9136
  f"The endpoints list is intentionally omitted by --compact; "
9159
- f"{_listed} endpoint(s) were measured. An empty `endpoints` list "
9137
+ f"{data.get('total', _listed)} endpoint(s) were measured in the "
9138
+ f"selected population; {_listed} row(s) were present before omission. "
9139
+ "An empty `endpoints` list "
9160
9140
  "does not mean that the repository has no endpoints. Re-run without "
9161
9141
  "--compact or narrow the request to retrieve rows."
9162
9142
  )
9163
9143
  data["endpoints_omitted"] = {
9164
9144
  "total": _listed,
9145
+ "population_total": data.get("total", _listed),
9165
9146
  "shown": 0,
9166
9147
  "omitted": _listed,
9167
9148
  **cap_effect("display_list", limit=0, total=_listed),
@@ -17328,6 +17309,14 @@ def pr_risk_cmd(
17328
17309
  changed: "list[str]" = []
17329
17310
  if files is not None:
17330
17311
  changed, _origin = _resolve_files_option(files, command="pr-risk")
17312
+ if not changed:
17313
+ _emit_error_json(
17314
+ INVALID_INPUT_CODE,
17315
+ f"--files '{_origin}' is empty.",
17316
+ hint="Provide at least one changed file path.",
17317
+ expected="One file path per line, or a comma-separated list.",
17318
+ )
17319
+ raise typer.Exit(code=1)
17331
17320
  else:
17332
17321
  # The same helper `pr-impact` uses, so one diff means one file set.
17333
17322
  changed, _files_desc = _git_changed_files(target, since)
@@ -19335,7 +19324,7 @@ def cold_start_cmd(
19335
19324
  compact: bool = typer.Option(
19336
19325
  False,
19337
19326
  "--compact",
19338
- help="Emit a compact subset (~10K tokens): status, git_head, stacks, entry_points, and key_dependencies only.",
19327
+ help="Emit a bounded orientation subset; size depends on the stored snapshot. It is not a fixed token ceiling.",
19339
19328
  ),
19340
19329
  output_path: Optional[Path] = typer.Option(
19341
19330
  None,
@@ -19357,8 +19346,9 @@ def cold_start_cmd(
19357
19346
 
19358
19347
  \b
19359
19348
  Note: Full output is large (~100K–200K tokens for medium repos).
19360
- Use --compact for a ~10K token subset safe for direct LLM injection.
19361
- Use --output FILE to save the full snapshot for local search tools.
19349
+ Use --compact for a bounded orientation subset; its size depends on the
19350
+ stored snapshot and it is not a fixed token ceiling. Use --output FILE to
19351
+ save the full snapshot for local search tools.
19362
19352
  """
19363
19353
  import json as _json
19364
19354
  from sourcecode.ris import get_cold_start_context as _gcs
@@ -34,7 +34,7 @@ from pathlib import Path
34
34
  from typing import Iterator, Optional
35
35
 
36
36
  #: Error code published when a ref does not resolve in this repository.
37
- REF_NOT_FOUND = "git_ref_not_found"
37
+ REF_NOT_FOUND = "GIT_REF_NOT_FOUND"
38
38
 
39
39
  #: Error code published when the path given is not a git repository at all.
40
40
  NOT_A_REPOSITORY = "not_a_git_repository"
@@ -154,7 +154,8 @@ INTENT_VOCABULARY: "dict[str, tuple[str, ...]]" = {
154
154
  ),
155
155
  "security-surface": (
156
156
  "security surface", "what is exposed", "attack surface",
157
- "which endpoints are unprotected", "unsecured endpoints",
157
+ "which endpoints are unprotected", "which endpoints have no security",
158
+ "unsecured endpoints",
158
159
  ),
159
160
  "validation-points": (
160
161
  "validation points", "where is input validated", "input validation",
@@ -1346,7 +1346,7 @@ class TaskContextBuilder:
1346
1346
  key_dependencies=[], code_notes_summary=None,
1347
1347
  limitations=[], confidence="low",
1348
1348
  since=since,
1349
- error_code="git_ref_not_found",
1349
+ error_code="GIT_REF_NOT_FOUND",
1350
1350
  error_message=f"Base ref '{since}' not found in this repository.",
1351
1351
  error_hints=_pr_hints,
1352
1352
  gaps=[f"Cannot compute PR diff: git ref '{since}' not found."] + _pr_hints,
@@ -1730,7 +1730,7 @@ class TaskContextBuilder:
1730
1730
  limitations=[],
1731
1731
  confidence="low",
1732
1732
  since=since,
1733
- error_code="git_ref_not_found",
1733
+ error_code="GIT_REF_NOT_FOUND",
1734
1734
  error_message=f"Git reference '{since}' does not exist in this repository.",
1735
1735
  error_hints=_hints,
1736
1736
  gaps=[f"Cannot compute delta: git ref '{since}' not found."] + _hints,
@@ -34,6 +34,7 @@ def _duration(seconds: float) -> str:
34
34
 
35
35
  #: Consecutive failed heartbeat writes before the loop gives up on the stream.
36
36
  _MAX_WRITE_FAILURES = 5
37
+ _DEFAULT_SLOW_RUN_WARNING_SECONDS = 60.0
37
38
 
38
39
  # --- Completion registry ----------------------------------------------------
39
40
  # Module state, not per-instance: the emitter of the answer (the CLI output
@@ -152,6 +153,14 @@ class Progress:
152
153
 
153
154
  def __init__(self) -> None:
154
155
  self._enabled = _terminal_capable()
156
+ self._slow_warning = not self._enabled and _progress_setting() not in _PROGRESS_OFF
157
+ try:
158
+ self._slow_warning_after = max(
159
+ 1.0,
160
+ float(os.environ.get("ASK_PROGRESS_WARNING_SECONDS", str(_DEFAULT_SLOW_RUN_WARNING_SECONDS))),
161
+ )
162
+ except ValueError:
163
+ self._slow_warning_after = _DEFAULT_SLOW_RUN_WARNING_SECONDS
155
164
  self._line_mode = self._enabled and (
156
165
  bool(progress_file_path()) or not sys.stderr.isatty()
157
166
  )
@@ -164,6 +173,8 @@ class Progress:
164
173
  self._lock = threading.Lock()
165
174
  self._stop_event = threading.Event()
166
175
  self._thread: Optional[threading.Thread] = None
176
+ self._slow_warning_thread: Optional[threading.Thread] = None
177
+ self._slow_warning_emitted = False
167
178
  self._stopped = False
168
179
  self._done_printed = False
169
180
  self._outputs_at_start = 0
@@ -213,6 +224,11 @@ class Progress:
213
224
  with _registry_lock:
214
225
  self._outputs_at_start = _output_events
215
226
  if not self._enabled:
227
+ if self._slow_warning:
228
+ self._slow_warning_thread = threading.Thread(
229
+ target=self._slow_warning_loop, daemon=True
230
+ )
231
+ self._slow_warning_thread.start()
216
232
  return self
217
233
  self._stop_event.clear()
218
234
  self._thread = threading.Thread(target=self._loop, daemon=True)
@@ -313,9 +329,11 @@ class Progress:
313
329
  if self._stopped:
314
330
  return elapsed
315
331
  self._stopped = True
332
+ self._stop_event.set()
333
+ if self._slow_warning_thread:
334
+ self._slow_warning_thread.join(timeout=1.0)
316
335
  if not self._enabled:
317
336
  return elapsed
318
- self._stop_event.set()
319
337
  if self._thread:
320
338
  self._thread.join(timeout=1.0)
321
339
  if not self._line_mode:
@@ -502,3 +520,16 @@ class Progress:
502
520
  if not self._emit(idx):
503
521
  break
504
522
  idx += 1
523
+
524
+ def _slow_warning_loop(self) -> None:
525
+ """Give non-interactive supervisors a delayed liveness signal only."""
526
+ if self._stop_event.wait(timeout=self._slow_warning_after) or self._stopped:
527
+ return
528
+ try:
529
+ self._write(
530
+ f"[ask] warning: run has exceeded {_duration(self._slow_warning_after)}; "
531
+ "still working (set --progress stderr for periodic heartbeats)\n"
532
+ )
533
+ self._slow_warning_emitted = True
534
+ except Exception:
535
+ pass
@@ -1097,6 +1097,8 @@ class ImpactOrchestrator:
1097
1097
  resolution="not_found",
1098
1098
  analysis_warnings=warnings,
1099
1099
  risk_level="unknown",
1100
+ risk_score=None,
1101
+ risk_score_raw=None,
1100
1102
  confidence="low",
1101
1103
  explanation=f"Symbol {symbol!r} not found in the IR.",
1102
1104
  metadata={"analysis_depth": depth},
@@ -245,7 +245,7 @@ def commit_series(repo: Path, since: str, *, first_parent: bool = True) -> list[
245
245
  result = _git(repo, *args)
246
246
  if result.returncode != 0:
247
247
  raise TimelineError(
248
- "git_ref_not_found",
248
+ "GIT_REF_NOT_FOUND",
249
249
  f"{since!r} does not resolve in this repository, or has no path to HEAD.",
250
250
  ref=since,
251
251
  )
File without changes
File without changes
File without changes
File without changes