sourcecode 5.9.2__tar.gz → 5.9.3__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.

Potentially problematic release.


This version of sourcecode might be problematic. Click here for more details.

Files changed (450) hide show
  1. {sourcecode-5.9.2 → sourcecode-5.9.3}/CHANGELOG.md +20 -0
  2. {sourcecode-5.9.2 → sourcecode-5.9.3}/PKG-INFO +10 -4
  3. {sourcecode-5.9.2 → sourcecode-5.9.3}/README.md +9 -3
  4. sourcecode-5.9.3/docs/AUDIT-2026-08-27-EXTERNAL-5.9.2.md +68 -0
  5. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/DEVELOPMENT-ROADMAP.md +20 -1
  6. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/EXECUTIVE-ROADMAP.md +16 -1
  7. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/PRODUCT-ROUTE.md +16 -0
  8. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/USER_GUIDE.md +9 -3
  9. {sourcecode-5.9.2 → sourcecode-5.9.3}/pyproject.toml +1 -1
  10. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/__init__.py +1 -1
  11. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/cli.py +9 -3
  12. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/license.py +28 -1
  13. {sourcecode-5.9.2 → sourcecode-5.9.3}/.github/workflows/build-windows.yml +0 -0
  14. {sourcecode-5.9.2 → sourcecode-5.9.3}/.github/workflows/perf-gate.yml +0 -0
  15. {sourcecode-5.9.2 → sourcecode-5.9.3}/.github/workflows/windows-battery.yml +0 -0
  16. {sourcecode-5.9.2 → sourcecode-5.9.3}/.gitignore +0 -0
  17. {sourcecode-5.9.2 → sourcecode-5.9.3}/.ruff.toml +0 -0
  18. {sourcecode-5.9.2 → sourcecode-5.9.3}/CLAUDE.md +0 -0
  19. {sourcecode-5.9.2 → sourcecode-5.9.3}/CODE_OF_CONDUCT.md +0 -0
  20. {sourcecode-5.9.2 → sourcecode-5.9.3}/CONTRIBUTING.md +0 -0
  21. {sourcecode-5.9.2 → sourcecode-5.9.3}/LICENSE +0 -0
  22. {sourcecode-5.9.2 → sourcecode-5.9.3}/NOTICE +0 -0
  23. {sourcecode-5.9.2 → sourcecode-5.9.3}/SECURITY.md +0 -0
  24. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
  25. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
  26. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
  27. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
  28. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
  29. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
  30. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
  31. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
  32. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +0 -0
  33. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md +0 -0
  34. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.28.md +0 -0
  35. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.31.md +0 -0
  36. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.32.md +0 -0
  37. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-2026-08-26-EXTERNAL-5.9.0.md +0 -0
  38. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-2026-08-26-MONETIZATION.md +0 -0
  39. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
  40. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/CACHE.md +0 -0
  41. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/COMMERCIAL-OFFER.md +0 -0
  42. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/CUSTOMER-VALIDATION.md +0 -0
  43. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/DEFECT-LEDGER.md +0 -0
  44. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/DEMO-5MIN.md +0 -0
  45. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
  46. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/EXECUTION-PLAN-12MO.md +0 -0
  47. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/MANUAL-USUARIO.md +0 -0
  48. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/MODERNIZATION.md +0 -0
  49. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/PRODUCT_AUDIT.md +0 -0
  50. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/PRODUCT_IDENTITY.md +0 -0
  51. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/PRODUCT_TIERS.md +0 -0
  52. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/RC1-CHECKLIST.md +0 -0
  53. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/RELEASE-CHECKLIST.md +0 -0
  54. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/STRATEGY-2026-08-26-AGENT-CONTEXT.md +0 -0
  55. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
  56. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
  57. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/DESIGN-assessment-report.md +0 -0
  58. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
  59. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
  60. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
  61. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
  62. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
  63. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
  64. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
  65. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
  66. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/DESIGN-pack-manifest.md +0 -0
  67. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
  68. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
  69. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
  70. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/EPV-p6-class-typeref.md +0 -0
  71. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
  72. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
  73. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
  74. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
  75. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/adr/0001-semantic-ir.md +0 -0
  76. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
  77. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
  78. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
  79. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
  80. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/adr/0006-performance-harness.md +0 -0
  81. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/adr/0007-composition-semantics.md +0 -0
  82. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/adr/0008-answer-coherence.md +0 -0
  83. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/consumer-disposition-inventory.md +0 -0
  84. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/overview.md +0 -0
  85. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/product-architecture-review.md +0 -0
  86. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/product-strategy-layering.md +0 -0
  87. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
  88. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/architecture/semantic-ir-roadmap.md +0 -0
  89. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/baseline-ci.yml +0 -0
  90. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/commercial-pipeline-audit.md +0 -0
  91. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/contracts-ci.yml +0 -0
  92. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/contracts.md +0 -0
  93. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
  94. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
  95. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
  96. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
  97. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
  98. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
  99. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
  100. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
  101. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/licensing-schema.md +0 -0
  102. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/migrate-check.md +0 -0
  103. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/pack-gate-github-actions.yml +0 -0
  104. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/pack-gate-gitlab.yml +0 -0
  105. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/README.md +0 -0
  106. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/REGRESSION-GATE.md +0 -0
  107. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
  108. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
  109. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
  110. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
  111. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
  112. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
  113. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
  114. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
  115. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
  116. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
  117. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
  118. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
  119. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
  120. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
  121. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
  122. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
  123. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
  124. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
  125. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
  126. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
  127. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
  128. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
  129. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
  130. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
  131. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
  132. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
  133. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
  134. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
  135. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
  136. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
  137. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
  138. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
  139. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
  140. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
  141. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
  142. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
  143. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
  144. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
  145. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
  146. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
  147. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
  148. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
  149. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/gate-latest/README.md +0 -0
  150. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
  151. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
  152. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
  153. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
  154. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
  155. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
  156. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/baselines/reference-best/README.md +0 -0
  157. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/perf/corpus-testing-2026-08-22.md +0 -0
  158. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/posture.md +0 -0
  159. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/privacy.md +0 -0
  160. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/pro-experience-audit.md +0 -0
  161. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/schema.md +0 -0
  162. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/spec/envelope-v1.md +0 -0
  163. {sourcecode-5.9.2 → sourcecode-5.9.3}/docs/spring-audit-ci.yml +0 -0
  164. {sourcecode-5.9.2 → sourcecode-5.9.3}/hatch_build.py +0 -0
  165. {sourcecode-5.9.2 → sourcecode-5.9.3}/scripts/compare_integration_engines.py +0 -0
  166. {sourcecode-5.9.2 → sourcecode-5.9.3}/scripts/context_cost_harness.py +0 -0
  167. {sourcecode-5.9.2 → sourcecode-5.9.3}/scripts/customer_smoke_test.sh +0 -0
  168. {sourcecode-5.9.2 → sourcecode-5.9.3}/scripts/generate_jdk_exports.py +0 -0
  169. {sourcecode-5.9.2 → sourcecode-5.9.3}/scripts/perf_gate.py +0 -0
  170. {sourcecode-5.9.2 → sourcecode-5.9.3}/scripts/perf_harness.py +0 -0
  171. {sourcecode-5.9.2 → sourcecode-5.9.3}/scripts/sync_gate_anchors.py +0 -0
  172. {sourcecode-5.9.2 → sourcecode-5.9.3}/scripts/test_fast.sh +0 -0
  173. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/__main__.py +0 -0
  174. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/access_drift.py +0 -0
  175. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/adaptive_scanner.py +0 -0
  176. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/analysis_budget.py +0 -0
  177. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/answer_bounds.py +0 -0
  178. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/archetype.py +0 -0
  179. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/architectural_baseline.py +0 -0
  180. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/architectural_delta.py +0 -0
  181. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/architecture_analyzer.py +0 -0
  182. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/architecture_summary.py +0 -0
  183. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/ast_extractor.py +0 -0
  184. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/audit_clusters.py +0 -0
  185. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/audit_recipe.py +0 -0
  186. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/audit_report.py +0 -0
  187. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/audit_since.py +0 -0
  188. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/audit_verify.py +0 -0
  189. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/baseline_attestation.py +0 -0
  190. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/baseline_autocapture.py +0 -0
  191. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/breaking_changes.py +0 -0
  192. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/build_modules.py +0 -0
  193. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/build_stamp.py +0 -0
  194. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/bundled_docs.py +0 -0
  195. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/c4_render.py +0 -0
  196. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/cache.py +0 -0
  197. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/cache_model.py +0 -0
  198. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/cache_observation.py +0 -0
  199. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/call_surface.py +0 -0
  200. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/caller_metrics.py +0 -0
  201. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/caller_reach.py +0 -0
  202. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/canonical_ir.py +0 -0
  203. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/chain_rules.py +0 -0
  204. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/change_plan.py +0 -0
  205. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/ci_output.py +0 -0
  206. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/cir_graphs.py +0 -0
  207. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/classifier.py +0 -0
  208. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/client_calls.py +0 -0
  209. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/code_notes_analyzer.py +0 -0
  210. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/compare.py +0 -0
  211. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/confidence_analyzer.py +0 -0
  212. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/constraint_diff.py +0 -0
  213. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/consumer_join.py +0 -0
  214. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/container_wiring.py +0 -0
  215. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/context_cache.py +0 -0
  216. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/context_graph.py +0 -0
  217. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/context_scorer.py +0 -0
  218. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/context_summarizer.py +0 -0
  219. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/contract_diff.py +0 -0
  220. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/contract_init.py +0 -0
  221. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/contract_model.py +0 -0
  222. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/contract_pipeline.py +0 -0
  223. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/coverage_parser.py +0 -0
  224. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/cve_feed.py +0 -0
  225. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/cve_reachability.py +0 -0
  226. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/data_exposure.py +0 -0
  227. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/data_labels.py +0 -0
  228. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/declarations.py +0 -0
  229. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/defect_classes/__init__.py +0 -0
  230. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/defect_classes/registry.json +0 -0
  231. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/defect_identity.py +0 -0
  232. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/degradation.py +0 -0
  233. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/dependency_analyzer.py +0 -0
  234. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/deployment_prefix.py +0 -0
  235. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detach.py +0 -0
  236. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/__init__.py +0 -0
  237. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/base.py +0 -0
  238. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/csproj_parser.py +0 -0
  239. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/dart.py +0 -0
  240. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/dotnet.py +0 -0
  241. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/elixir.py +0 -0
  242. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/go.py +0 -0
  243. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/heuristic.py +0 -0
  244. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/hybrid.py +0 -0
  245. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/java.py +0 -0
  246. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/jvm_ext.py +0 -0
  247. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/nodejs.py +0 -0
  248. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/parsers.py +0 -0
  249. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/php.py +0 -0
  250. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/project.py +0 -0
  251. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/python.py +0 -0
  252. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/ruby.py +0 -0
  253. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/rust.py +0 -0
  254. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/systems.py +0 -0
  255. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/terraform.py +0 -0
  256. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/detectors/tooling.py +0 -0
  257. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/doc_analyzer.py +0 -0
  258. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/dynamic_argument_surface.py +0 -0
  259. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/empty_reach.py +0 -0
  260. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/endpoint_disposition.py +0 -0
  261. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/endpoint_literals.py +0 -0
  262. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/endpoint_metrics.py +0 -0
  263. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/entrypoint_classifier.py +0 -0
  264. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/env_analyzer.py +0 -0
  265. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/envelope.py +0 -0
  266. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/environment_resolution.py +0 -0
  267. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/error_schema.py +0 -0
  268. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/evidence_provider.py +0 -0
  269. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/execution_plan.py +0 -0
  270. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/explain.py +0 -0
  271. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/explain_endpoint.py +0 -0
  272. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/facts/__init__.py +0 -0
  273. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/facts/registry.json +0 -0
  274. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/field_deprecations.py +0 -0
  275. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/file_chunker.py +0 -0
  276. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/file_classifier.py +0 -0
  277. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/filter_surface.py +0 -0
  278. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/findings_baseline.py +0 -0
  279. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/format_contract.py +0 -0
  280. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/fqn_utils.py +0 -0
  281. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/functional_routes.py +0 -0
  282. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/gate_anchors.py +0 -0
  283. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/git_analyzer.py +0 -0
  284. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/git_checkout.py +0 -0
  285. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/github_diff.py +0 -0
  286. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/graph_analyzer.py +0 -0
  287. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/graph_evidence.py +0 -0
  288. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/hibernate_strat.py +0 -0
  289. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/identity_fallback.py +0 -0
  290. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/integration_coordinates.py +0 -0
  291. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/intent_router.py +0 -0
  292. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/jdk_exports.py +0 -0
  293. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/manifest_cache.py +0 -0
  294. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/mcp/__init__.py +0 -0
  295. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/mcp/dependency_import.py +0 -0
  296. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  297. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  298. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  299. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  300. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  301. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/mcp/orchestrator.py +0 -0
  302. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/mcp/registry.py +0 -0
  303. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/mcp/runner.py +0 -0
  304. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/mcp/server.py +0 -0
  305. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/mcp_nudge.py +0 -0
  306. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/metrics_analyzer.py +0 -0
  307. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/migrate_check.py +0 -0
  308. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/migration_apply.py +0 -0
  309. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/migration_blast.py +0 -0
  310. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/non_coverage.py +0 -0
  311. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/openapi_surface.py +0 -0
  312. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/openrewrite_recipe.py +0 -0
  313. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/output_bounds.py +0 -0
  314. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/output_budget.py +0 -0
  315. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/output_ceiling.py +0 -0
  316. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/output_encoding.py +0 -0
  317. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/output_sink.py +0 -0
  318. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/pack_manifest.py +0 -0
  319. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/packs.py +0 -0
  320. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/parallel.py +0 -0
  321. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/parse_cache.py +0 -0
  322. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/partial_contract.py +0 -0
  323. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/path_admission.py +0 -0
  324. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/path_display.py +0 -0
  325. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/path_filters.py +0 -0
  326. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/perf.py +0 -0
  327. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/phased_run.py +0 -0
  328. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/pipe_contract.py +0 -0
  329. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/posture.py +0 -0
  330. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/pr_comment_renderer.py +0 -0
  331. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/pr_impact.py +0 -0
  332. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/pr_risk.py +0 -0
  333. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/prepare_context.py +0 -0
  334. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/product_info.py +0 -0
  335. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/progress.py +0 -0
  336. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/provenance.py +0 -0
  337. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/ranking_engine.py +0 -0
  338. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/readiness_timeline.py +0 -0
  339. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/readonly.py +0 -0
  340. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/reconciliation.py +0 -0
  341. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/redactor.py +0 -0
  342. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/reference_facts.py +0 -0
  343. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/regress.py +0 -0
  344. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/regulatory_pack.py +0 -0
  345. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/release_info.py +0 -0
  346. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/relevance_scorer.py +0 -0
  347. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/remediation_diff.py +0 -0
  348. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/remediation_flow.py +0 -0
  349. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/remediation_report.py +0 -0
  350. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/remedies.py +0 -0
  351. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/rename_refactor.py +0 -0
  352. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/repo_classifier.py +0 -0
  353. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/repository_ir.py +0 -0
  354. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/resource_budget.py +0 -0
  355. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/__init__.py +0 -0
  356. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/context.py +0 -0
  357. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/errors.py +0 -0
  358. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/executor.py +0 -0
  359. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/planner.py +0 -0
  360. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/query.py +0 -0
  361. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/request.py +0 -0
  362. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/resolution.py +0 -0
  363. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/result.py +0 -0
  364. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/retriever.py +0 -0
  365. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/runtime.py +0 -0
  366. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/steps.py +0 -0
  367. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
  368. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/steps_graph.py +0 -0
  369. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/steps_impact.py +0 -0
  370. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/steps_intf.py +0 -0
  371. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/steps_struct.py +0 -0
  372. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/retrieval/steps_txsec.py +0 -0
  373. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/ris.py +0 -0
  374. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/risk.py +0 -0
  375. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/risk_model.py +0 -0
  376. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/rule_catalog.py +0 -0
  377. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/rule_pass.py +0 -0
  378. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/runs.py +0 -0
  379. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/runtime_classifier.py +0 -0
  380. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/sarif.py +0 -0
  381. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/sarif_emit.py +0 -0
  382. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/scanner.py +0 -0
  383. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/schema.py +0 -0
  384. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/schema_producers.py +0 -0
  385. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/schema_registry.py +0 -0
  386. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
  387. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/schemas/cve-reachability-v1.schema.json +0 -0
  388. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
  389. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
  390. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
  391. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
  392. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
  393. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/security_chain.py +0 -0
  394. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/security_config.py +0 -0
  395. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/security_config_scan.py +0 -0
  396. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/security_posture.py +0 -0
  397. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/selection_contract.py +0 -0
  398. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/self_audit.py +0 -0
  399. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/selftest.py +0 -0
  400. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/semantic_analyzer.py +0 -0
  401. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/semantic_impact_engine.py +0 -0
  402. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/semantic_integration_engine.py +0 -0
  403. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/semantic_services.py +0 -0
  404. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/serializer.py +0 -0
  405. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/servlet_surface.py +0 -0
  406. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/source_text.py +0 -0
  407. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/spring_event_topology.py +0 -0
  408. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/spring_findings.py +0 -0
  409. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/spring_impact.py +0 -0
  410. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/spring_model.py +0 -0
  411. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/spring_profiles.py +0 -0
  412. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/spring_properties.py +0 -0
  413. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/spring_security_audit.py +0 -0
  414. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/spring_semantic.py +0 -0
  415. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/spring_tx_analyzer.py +0 -0
  416. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/sql_taint.py +0 -0
  417. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/summarizer.py +0 -0
  418. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/target_admission.py +0 -0
  419. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/telemetry/__init__.py +0 -0
  420. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/telemetry/config.py +0 -0
  421. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/telemetry/consent.py +0 -0
  422. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/telemetry/events.py +0 -0
  423. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/telemetry/filters.py +0 -0
  424. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/telemetry/transport.py +0 -0
  425. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/test_gap_ranking.py +0 -0
  426. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/test_sources.py +0 -0
  427. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/text_input.py +0 -0
  428. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/timeline.py +0 -0
  429. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/timeline_cache.py +0 -0
  430. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/token_estimate.py +0 -0
  431. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/tree_utils.py +0 -0
  432. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/type_usage_surface.py +0 -0
  433. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/validation_inference.py +0 -0
  434. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/validation_surface.py +0 -0
  435. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/verify_edit.py +0 -0
  436. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/verify_repo.py +0 -0
  437. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/verify_rules.py +0 -0
  438. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/version_check.py +0 -0
  439. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/vex.py +0 -0
  440. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/waivers.py +0 -0
  441. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/watch_loop.py +0 -0
  442. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/wired_surface.py +0 -0
  443. {sourcecode-5.9.2 → sourcecode-5.9.3}/src/sourcecode/workspace.py +0 -0
  444. {sourcecode-5.9.2 → sourcecode-5.9.3}/supabase/functions/README.md +0 -0
  445. {sourcecode-5.9.2 → sourcecode-5.9.3}/supabase/functions/get-license/index.ts +0 -0
  446. {sourcecode-5.9.2 → sourcecode-5.9.3}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
  447. {sourcecode-5.9.2 → sourcecode-5.9.3}/supabase/functions/telemetry/index.ts +0 -0
  448. {sourcecode-5.9.2 → sourcecode-5.9.3}/supabase/sql/license_event_ordering.sql +0 -0
  449. {sourcecode-5.9.2 → sourcecode-5.9.3}/supabase/sql/licensing_schema.sql +0 -0
  450. {sourcecode-5.9.2 → sourcecode-5.9.3}/supabase/sql/telemetry_events.sql +0 -0
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.9.3] — 2026-08-27
4
+
5
+ *Workspace entitlement correctness patch release.*
6
+
7
+ **Fixed**
8
+
9
+ - `auth workspace` collapses overlapping parent/child repository paths and
10
+ publishes `overlapping_paths`, preventing physical Java files from being
11
+ counted twice.
12
+ - `auth workspace` rejects nonexistent or non-directory paths through the
13
+ standard structured `INVALID_INPUT` / `missing` contract instead of treating
14
+ them as empty repositories.
15
+
16
+ **Validation**
17
+
18
+ - Added regression coverage for duplicate, overlapping, invalid and mixed
19
+ workspace inputs.
20
+ - Rechecked the contract against representative repositories under
21
+ `Documents/workspace/testing`.
22
+
3
23
  ## [5.9.2] — 2026-08-27
4
24
 
5
25
  *Commercial positioning increment: bounded agent context, reproducible cost
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 5.9.2
3
+ Version: 5.9.3
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.2-blue)
62
+ ![Version](https://img.shields.io/badge/version-5.9.3-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.2 retains the shared Canonical IR
199
+ **Current performance status.** Release 5.9.3 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
@@ -212,6 +212,12 @@ aggregate Java entitlement. `--enforce` is an opt-in named-buyer pilot that reus
212
212
  the existing Pro gate; advisory mode remains the default and no billing is
213
213
  performed by the CLI.
214
214
 
215
+ `auth workspace` normalizes its repository arguments before counting. If one
216
+ path contains another, the parent is counted once and the overlap is published
217
+ in `overlapping_paths`; a missing or non-directory path is rejected as structured
218
+ invalid input rather than treated as an empty repository. This prevents silent
219
+ entitlement errors in CI and does not change per-repository gates or billing.
220
+
215
221
  **What a warm actually covers.** `ask cache warm` rebuilds the declared root views and their
216
222
  shared structural layers (L1/L2 + the Repository Intelligence Snapshot + the shared Canonical
217
223
  IR). Pass `--views compact` or `--views compact,agent` to warm only selected views; without
@@ -237,7 +243,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
237
243
  # pip / pipx
238
244
  pipx install sourcecode # or: pip install sourcecode
239
245
 
240
- ask version # ask 5.9.2 — and, on a build that has aged,
246
+ ask version # ask 5.9.3 — and, on a build that has aged,
241
247
  # how many releases have probably shipped since
242
248
  ```
243
249
 
@@ -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.2-blue)
13
+ ![Version](https://img.shields.io/badge/version-5.9.3-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.2 retains the shared Canonical IR
150
+ **Current performance status.** Release 5.9.3 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
@@ -163,6 +163,12 @@ aggregate Java entitlement. `--enforce` is an opt-in named-buyer pilot that reus
163
163
  the existing Pro gate; advisory mode remains the default and no billing is
164
164
  performed by the CLI.
165
165
 
166
+ `auth workspace` normalizes its repository arguments before counting. If one
167
+ path contains another, the parent is counted once and the overlap is published
168
+ in `overlapping_paths`; a missing or non-directory path is rejected as structured
169
+ invalid input rather than treated as an empty repository. This prevents silent
170
+ entitlement errors in CI and does not change per-repository gates or billing.
171
+
166
172
  **What a warm actually covers.** `ask cache warm` rebuilds the declared root views and their
167
173
  shared structural layers (L1/L2 + the Repository Intelligence Snapshot + the shared Canonical
168
174
  IR). Pass `--views compact` or `--views compact,agent` to warm only selected views; without
@@ -188,7 +194,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
188
194
  # pip / pipx
189
195
  pipx install sourcecode # or: pip install sourcecode
190
196
 
191
- ask version # ask 5.9.2 — and, on a build that has aged,
197
+ ask version # ask 5.9.3 — and, on a build that has aged,
192
198
  # how many releases have probably shipped since
193
199
  ```
194
200
 
@@ -0,0 +1,68 @@
1
+ # External Audit Intake — ASK 5.9.2
2
+
3
+ **Received:** 2026-08-27
4
+ **Scope:** regression battery and commercial-positioning review against 5.9.1
5
+ **Source:** external audit supplied in the Codex task attachment
6
+
7
+ ## Executive disposition
8
+
9
+ The report uses two different scoring lenses: **9.8/10** for the regression and
10
+ functional battery, and **9/10** for the strategic comparison against 5.9.1.
11
+ They are retained as separate assessments, not averaged into a product KPI.
12
+
13
+ The audit reports no critical defect and no regression in the previously closed
14
+ surface. It confirms stable behaviour for `SEC-004` / `DEAD-001`, `boot3_readiness`,
15
+ the `selftest` scope warning, pack-gate test-file poisoning, JAX-RS explainability,
16
+ CVE inventory scope, `pr-risk` error handling, `posture --diff --limit`, cache,
17
+ telemetry, baseline and pack flows.
18
+
19
+ Two new `auth workspace` defects are accepted into the engineering queue:
20
+
21
+ - **AUD-609-B01, medium:** overlapping repository arguments can double-count the
22
+ same physical Java files when a parent path and one of its descendants are both
23
+ supplied. This can make entitlement aggregation inaccurate and can produce a
24
+ false threshold crossing near the limit.
25
+ - **AUD-609-B02, low-medium:** a nonexistent repository path is treated as a valid
26
+ empty repository. A typo can therefore produce a successful but misleading
27
+ entitlement result in automation.
28
+
29
+ The audit's reproduction is accepted as a defect report, not as proof of the
30
+ suspected implementation mechanism. The fix must establish the invariant through
31
+ tests: overlapping inputs are explicit and deterministic, and invalid paths cannot
32
+ silently become empty repositories.
33
+
34
+ ## Confirmed capabilities
35
+
36
+ - `audit-report --sign-key` and `audit-verify` perform an offline HMAC-SHA256
37
+ roundtrip: correct key and untouched content validate; an incorrect key or one-byte
38
+ content mutation fails with the appropriate result and exit code.
39
+ - `audit-report --pack ens` is evidence mapping only. It publishes `legal_claim: false`
40
+ and distinguishes present from missing control evidence; it is not ENS certification.
41
+ - `baseline attest` is deterministic, read-only and explicit about non-coverage, but
42
+ it does **not** sign or hash the attestation for independent integrity verification.
43
+ - `remediation-report` is a redacted JSON projection of ASK's own defect ledger, not
44
+ a remediation report for the user's analysed repository.
45
+ - `auth workspace --enforce` remains an opt-in named-buyer pilot and was not exercised
46
+ in this round.
47
+ - `schema` includes `ens-evidence-pack-v1`; `ask version` publishes closure coverage
48
+ and release cadence provenance.
49
+
50
+ ## Commercial reading
51
+
52
+ The signed audit bundle materially strengthens the evidence-bundle thesis and is a
53
+ credible compliance-workflow input. It must be described as **tamper-evident integrity
54
+ evidence**, not a certificate: HMAC is symmetric, requires key sharing, and is not
55
+ public PKI. ENS/CRA mappings remain evidence mapping, not legal or regulatory advice.
56
+
57
+ The commercial route is therefore positive but not fully validated. The missing proof
58
+ is a signed historical attestation, concrete ENS/CRA control translation and a real
59
+ customer reference. The external price indication ($40-60 per developer/month) and
60
+ the "strong buy" verdict are market hypotheses, not pricing evidence; no price change
61
+ is authorized without buyer interviews, usage data or a paid reference.
62
+
63
+ ## Regression and non-regression record
64
+
65
+ The reported cold-cache measurement (130.2 seconds) is within the supplied historical
66
+ range and is not a regression claim. The seven commands not yet composed into the
67
+ assessment/gate packs are a product opportunity, not a bug. All other re-checks in the
68
+ report are recorded as stable unless contradicted by the two defects above.
@@ -3,7 +3,12 @@
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.2`; external reconciliation `AUD-608` is implemented.**
6
+ > **CURRENT QUEUE — release `5.9.3`; external reconciliation `AUD-608` is implemented.**
7
+ > The 2026-08-27 external review adds `AUD-609-B01` (overlapping workspace paths
8
+ > double-count Java files) and `AUD-609-B02` (missing workspace paths accepted as
9
+ > empty repositories); both are fixed in `5.9.3`. It reports no regression in the
10
+ > prior closure set. Evidence and the commercial interpretation are in
11
+ > [`AUDIT-2026-08-27-EXTERNAL-5.9.2.md`](AUDIT-2026-08-27-EXTERNAL-5.9.2.md).
7
12
  > `AUD-608-C01` is closed in `fe1f624`: `cve` declares static
8
13
  > dependency-inventory coverage and non-coverage. `AUD-608-P01` is closed in
9
14
  > `b479465`: `pr-risk --since` constructs its base context and surfaces failures
@@ -100,6 +105,20 @@ aspirations: each is asserted by that row's tests.
100
105
  | `AUD-607-X09` | P3 | `self-audit` — run ASK against its own build. | `ask self-audit` (`self-audit-v1`) | **Implemented (`f1fa913`), with its "not recommended" reason shipped inside the payload.** The semantic engine does not apply to Python source, so those figures are absent and declared rather than reported as zeros. What it does check — cache model, format contract, schema registry and output affordances over the INSTALLED build — found a real drift on its first run. |
101
106
  | `ASK-COM-01` | P1 | Continuous evidence attestation over persisted baseline history. | `ask baseline attest` (`baseline-attestation-v1`) | **Implemented.** Read-only projection of architecture or findings trend; publishes capture boundaries, latest commit, comparability and explicit non-coverage. It never claims legal compliance, improvement, or a clean zero without history. |
102
107
 
108
+ ### Feature Intake — external review of 5.9.2, 2026-08-27
109
+
110
+ The supplied regression and market review reports no regression in the prior closure
111
+ set. Its two reproducible `auth workspace` defects are opened below; the report's
112
+ commercial recommendations are recorded as hypotheses, not product claims. Full
113
+ triage is in [`AUDIT-2026-08-27-EXTERNAL-5.9.2.md`](AUDIT-2026-08-27-EXTERNAL-5.9.2.md).
114
+
115
+ | ID | Priority | Feature / defect | Acceptance criteria | Status/order |
116
+ |---|---:|---|---|---|
117
+ | `AUD-609-B01` | P2 | `auth workspace` double-counts overlapping repository paths. | Normalize paths, detect parent/descendant overlap and prevent silent double-counting; publish an explicit overlap decision or reject the ambiguous input. Preserve deterministic per-repository evidence and add fixtures for parent-only, child-only and overlapping inputs. | **Fixed in `5.9.3`.** Parent/descendant inputs collapse to one counted tree and publish `overlapping_paths`. |
118
+ | `AUD-609-B02` | P2 | `auth workspace` accepts a nonexistent path as an empty repository. | Validate every input path before counting; return the repository's standard structured path error, or an explicit invalid entry that cannot yield a successful entitlement decision. Add a regression fixture for typos and mixed valid/invalid inputs. | **Fixed in `5.9.3`.** Invalid paths fail with structured `INVALID_INPUT` / `missing`. |
119
+ | `AUD-609-C01` | P2 | Signed evidence and historical attestation use different integrity contracts. | Decide whether `baseline attest` gains the existing signing mechanism or clearly publishes that it is unsigned; document the choice in help, schema and buyer-facing material. Do not call unsigned output a certificate or compliance proof. | **Queued, commercial validation.** No implementation claim until the signing boundary and key model are explicit. |
120
+ | `AUD-609-C02` | P3 | Translate technical evidence into concrete ENS/CRA controls. | Define a named control mapping with source evidence, missing evidence and `legal_claim: false`; validate it with a named compliance buyer or auditor before presenting it as a market capability. | **Queued, buyer-gated.** `audit-report --pack ens` remains evidence mapping only. |
121
+
103
122
  ### Explicitly Rejected
104
123
 
105
124
  These are not roadmap work: `--format` and `--compact` remain separate contracts;
@@ -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.2`, following the external `5.9.0` reconciliation (`AUD-608`).**
8
+ > **CURRENT UPDATE — release `5.9.3`, following the external `5.9.0` reconciliation (`AUD-608`).**
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,21 @@
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
+ > **EXTERNAL REVIEW — 5.9.2, received 2026-08-27.** No regression was reported in the
23
+ > previously closed surface. Two `auth workspace` defects are now open: overlapping
24
+ > parent/child paths can double-count Java files, and nonexistent paths are accepted as
25
+ > empty repositories. Both affect entitlement accuracy and must close before pricing or
26
+ > enforcement decisions rely on workspace aggregation. `audit-report --sign-key` plus
27
+ > `audit-verify` is confirmed as working offline HMAC-SHA256 integrity evidence.
28
+ > `baseline attest` remains unsigned and must not be sold as a tamper-verifiable
29
+ > certificate. ENS output is evidence mapping only (`legal_claim: false`); no customer
30
+ > reference or buyer validation exists yet. Full triage: [`AUDIT-2026-08-27-EXTERNAL-5.9.2.md`](AUDIT-2026-08-27-EXTERNAL-5.9.2.md).
31
+
32
+ > **5.9.3 correction.** `auth workspace` now counts overlapping parent/child paths once
33
+ > and rejects missing or non-directory paths with the standard structured input error.
34
+ > Workspace entitlement is therefore safer to measure, but remains advisory by default;
35
+ > no pricing or enforcement decision is authorized by this fix alone.
36
+
22
37
  > **HISTORICAL STATUS — release `5.9.0`, following two external audits of `5.8.32`, 2026-08-26.** Two
23
38
  > independent rounds scored the release **9.7/10** (reverification) and **8/10** (comparison against
24
39
  > `5.8.31`). **Neither round reported a regression**, and both maintained the same commercial
@@ -33,6 +33,22 @@ The public trust layer, if activated, must be a generated and redacted
33
33
  projection, never the raw defect ledger. Its acceptance rules must exclude
34
34
  maintainer paths, third-party evaluation subjects and unsupported claims.
35
35
 
36
+ ### Evidence and commercial validation boundary
37
+
38
+ The 5.9.2 external review confirms that `audit-report --sign-key` and
39
+ `audit-verify` provide offline HMAC-SHA256 integrity verification for an evidence
40
+ bundle. The route may describe this as tamper-evident bundle integrity, not as a
41
+ certificate or public-PKI trust: HMAC is symmetric and requires controlled key
42
+ sharing. `audit-report --pack ens` remains an evidence mapping with
43
+ `legal_claim: false`, not ENS/CRA certification or legal advice.
44
+
45
+ `baseline attest` is a deterministic, read-only continuity projection, but it is
46
+ currently unsigned. Until its integrity contract is decided and validated, it
47
+ must not be positioned as independently verifiable historical evidence. A real
48
+ customer reference, concrete control translation and buyer evidence are still
49
+ required before changing the price, activating workspace enforcement or claiming
50
+ compliance-market fit. External price opinions are hypotheses, not pricing data.
51
+
36
52
  ## Individual commands and packs
37
53
 
38
54
  Every existing command remains supported for users who want a precise answer:
@@ -46,13 +46,13 @@ 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.2, `validation` enters through that shared CIR and `data-exposure` reuses one semantic
49
+ 5.9.3, `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.2, with release-artifact verification
55
+ the two pack fixes are included in release 5.9.3, with release-artifact verification
56
56
  remaining for detached execution and pack evidence.
57
57
 
58
58
  ---
@@ -221,7 +221,7 @@ pipx install sourcecode # isolated install, no venv needed
221
221
 
222
222
  # Verify
223
223
  ask version
224
- # ask 5.9.2
224
+ # ask 5.9.3
225
225
  ```
226
226
 
227
227
  Requires Python 3.9+.
@@ -1180,6 +1180,8 @@ the stored architecture or findings series (`--kind findings`) and publishes its
1180
1180
  boundaries, latest commit, comparability and explicit limits as `baseline-attestation-v1`.
1181
1181
  It is evidence continuity, not a legal or regulatory compliance verdict, and it returns
1182
1182
  `status: no_history` instead of manufacturing a clean zero when no capture exists.
1183
+ Unlike `audit-report --sign-key`, `baseline attest` is currently unsigned: its
1184
+ `content_id` supports deterministic comparison, not third-party tamper verification.
1183
1185
 
1184
1186
  For a multi-repository buyer, `ask auth workspace <repo>...` previews the aggregate Java
1185
1187
  population that a workspace-sized entitlement would see. The preview is advisory only: it
@@ -1187,6 +1189,10 @@ does not change the current per-repository gate or charge the workspace.
1187
1189
  For a named-buyer pilot, add `--enforce`: crossing the aggregate threshold then requires
1188
1190
  the existing Pro entitlement and exits with the standard license-required contract; below
1189
1191
  the threshold it passes. This flag is opt-in and does not change per-repository gates.
1192
+ Repository arguments are normalized before counting. If a parent and descendant are both
1193
+ supplied, the parent is counted once and the overlap is listed in `overlapping_paths`.
1194
+ Missing or non-directory paths fail with the standard structured `INVALID_INPUT` / `missing`
1195
+ contract; they are never treated as empty repositories.
1190
1196
 
1191
1197
  ---
1192
1198
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "5.9.2"
7
+ version = "5.9.3"
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.2"
7
+ __version__ = "5.9.3"
@@ -17919,7 +17919,8 @@ def auth_workspace_cmd(
17919
17919
  "--enforce",
17920
17920
  help=(
17921
17921
  "Pilot gate: require the existing Pro entitlement when the aggregate "
17922
- "workspace threshold is exceeded. Advisory by default."
17922
+ "workspace threshold is exceeded. Advisory by default. Overlapping "
17923
+ "paths are counted once; missing paths are rejected."
17923
17924
  ),
17924
17925
  ),
17925
17926
  ) -> None:
@@ -17927,12 +17928,17 @@ def auth_workspace_cmd(
17927
17928
 
17928
17929
  Advisory mode is the default. Use ``--enforce`` only for the named-buyer
17929
17930
  pilot: it reuses the existing Pro gate when the aggregate threshold is
17930
- crossed and performs no billing.
17931
+ crossed and performs no billing. Repository paths are normalized, parent /
17932
+ descendant overlaps are counted once, and missing paths are rejected.
17931
17933
  """
17932
17934
  _enforce_format("auth-workspace", format)
17933
17935
  from sourcecode.license import require_pro, workspace_entitlement
17934
17936
 
17935
- data = workspace_entitlement([str(repo) for repo in repos], enforce=enforce)
17937
+ validated_repos = [
17938
+ _admit_path(repo, usage="auth workspace")
17939
+ for repo in repos
17940
+ ]
17941
+ data = workspace_entitlement([str(repo) for repo in validated_repos], enforce=enforce)
17936
17942
  if data["enforcement_decision"] == "pro_required":
17937
17943
  require_pro("workspace entitlement")
17938
17944
  _emit_command_output(
@@ -550,7 +550,33 @@ def workspace_entitlement(
550
550
  aggregate crosses the threshold. This function only publishes the decision;
551
551
  it never changes the per-repository rule or performs billing.
552
552
  """
553
- unique = sorted({str(Path(path).resolve()) for path in repo_paths})
553
+ normalized = sorted({str(Path(path).resolve()) for path in repo_paths})
554
+ invalid = [path for path in normalized if not Path(path).is_dir()]
555
+ if invalid:
556
+ raise FileNotFoundError(
557
+ "Workspace repository path does not exist or is not a directory: "
558
+ + invalid[0]
559
+ )
560
+ unique: list[str] = []
561
+ overlapping_paths: list[dict[str, str]] = []
562
+ for candidate in normalized:
563
+ parent = next(
564
+ (existing for existing in unique if Path(candidate) == Path(existing)
565
+ or Path(existing) in Path(candidate).parents),
566
+ None,
567
+ )
568
+ if parent is not None:
569
+ overlapping_paths.append({"parent": parent, "child": candidate})
570
+ continue
571
+ descendants = [
572
+ existing for existing in unique
573
+ if Path(candidate) in Path(existing).parents
574
+ ]
575
+ for descendant in descendants:
576
+ unique.remove(descendant)
577
+ overlapping_paths.append({"parent": candidate, "child": descendant})
578
+ unique.append(candidate)
579
+ unique.sort()
554
580
  repositories = [
555
581
  {"path": path, "java_files": count_java_files(path)}
556
582
  for path in unique
@@ -561,6 +587,7 @@ def workspace_entitlement(
561
587
  "status": "ok" if repositories else "no_repositories",
562
588
  "repository_count": len(repositories),
563
589
  "repositories": repositories,
590
+ "overlapping_paths": overlapping_paths,
564
591
  "workspace_java_files": total,
565
592
  "workspace_java_file_limit": _FREE_REPO_JAVA_FILE_LIMIT,
566
593
  "workspace_threshold_exceeded": total > _FREE_REPO_JAVA_FILE_LIMIT,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes