sourcecode 5.8.25__tar.gz → 5.8.27__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 (422) hide show
  1. {sourcecode-5.8.25 → sourcecode-5.8.27}/.github/workflows/windows-battery.yml +21 -0
  2. {sourcecode-5.8.25 → sourcecode-5.8.27}/CHANGELOG.md +28 -12
  3. sourcecode-5.8.27/CODE_OF_CONDUCT.md +27 -0
  4. {sourcecode-5.8.25 → sourcecode-5.8.27}/CONTRIBUTING.md +5 -0
  5. {sourcecode-5.8.25 → sourcecode-5.8.27}/PKG-INFO +19 -22
  6. {sourcecode-5.8.25 → sourcecode-5.8.27}/README.md +16 -20
  7. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/AUDIT-2026-08-22-5.8.22.md +3 -3
  8. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/AUDIT-2026-08-23-5.8.24.md +3 -3
  9. sourcecode-5.8.27/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +63 -0
  10. sourcecode-5.8.27/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +121 -0
  11. sourcecode-5.8.27/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +43 -0
  12. sourcecode-5.8.27/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +173 -0
  13. sourcecode-5.8.27/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +46 -0
  14. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/COMMERCIAL-OFFER.md +1 -1
  15. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/CUSTOMER-VALIDATION.md +1 -1
  16. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/DEFECT-LEDGER.md +196 -94
  17. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/DEVELOPMENT-ROADMAP.md +36 -11
  18. sourcecode-5.8.27/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +38 -0
  19. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/EXECUTIVE-ROADMAP.md +10 -3
  20. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/RC1-CHECKLIST.md +2 -2
  21. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/USER_GUIDE.md +7 -3
  22. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/DESIGN-build-closure-provenance.md +3 -0
  23. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/DESIGN-robustness-security-inference.md +3 -3
  24. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/contracts.md +1 -1
  25. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/REGRESSION-GATE.md +7 -6
  26. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/gate-latest/README.md +1 -1
  27. {sourcecode-5.8.25 → sourcecode-5.8.27}/pyproject.toml +3 -2
  28. {sourcecode-5.8.25 → sourcecode-5.8.27}/scripts/perf_harness.py +18 -4
  29. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/__init__.py +1 -1
  30. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/audit_report.py +43 -0
  31. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/baseline_autocapture.py +9 -4
  32. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/bundled_docs.py +2 -1
  33. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/cache_model.py +3 -4
  34. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/cli.py +166 -17
  35. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/compare.py +1 -1
  36. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/context_cache.py +10 -1
  37. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detach.py +28 -23
  38. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/env_analyzer.py +5 -5
  39. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/envelope.py +7 -2
  40. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/explain.py +43 -1
  41. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/filter_surface.py +1 -1
  42. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/format_contract.py +3 -3
  43. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/mcp/orchestrator.py +1 -1
  44. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/migrate_check.py +25 -3
  45. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/non_coverage.py +46 -1
  46. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/output_bounds.py +5 -0
  47. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/packs.py +85 -1
  48. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/parse_cache.py +16 -0
  49. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/perf.py +11 -2
  50. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/phased_run.py +2 -2
  51. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/posture.py +17 -1
  52. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/prepare_context.py +1 -1
  53. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/product_info.py +28 -2
  54. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/release_info.py +1 -1
  55. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/repository_ir.py +119 -51
  56. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/resource_budget.py +7 -4
  57. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/sarif.py +4 -0
  58. sourcecode-5.8.27/src/sourcecode/sarif_emit.py +156 -0
  59. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/schema_registry.py +5 -0
  60. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/security_config_scan.py +28 -2
  61. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/security_posture.py +12 -0
  62. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/selftest.py +18 -2
  63. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/serializer.py +22 -3
  64. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/spring_impact.py +101 -0
  65. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/spring_profiles.py +3 -3
  66. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/spring_tx_analyzer.py +8 -0
  67. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/test_sources.py +1 -1
  68. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/token_estimate.py +3 -1
  69. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/workspace.py +1 -1
  70. {sourcecode-5.8.25 → sourcecode-5.8.27}/.github/workflows/build-windows.yml +0 -0
  71. {sourcecode-5.8.25 → sourcecode-5.8.27}/.github/workflows/perf-gate.yml +0 -0
  72. {sourcecode-5.8.25 → sourcecode-5.8.27}/.gitignore +0 -0
  73. {sourcecode-5.8.25 → sourcecode-5.8.27}/.ruff.toml +0 -0
  74. {sourcecode-5.8.25 → sourcecode-5.8.27}/CLAUDE.md +0 -0
  75. {sourcecode-5.8.25 → sourcecode-5.8.27}/LICENSE +0 -0
  76. {sourcecode-5.8.25 → sourcecode-5.8.27}/NOTICE +0 -0
  77. {sourcecode-5.8.25 → sourcecode-5.8.27}/SECURITY.md +0 -0
  78. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
  79. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
  80. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/CACHE.md +0 -0
  81. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/DEMO-5MIN.md +0 -0
  82. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/EXECUTION-PLAN-12MO.md +0 -0
  83. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/MANUAL-USUARIO.md +0 -0
  84. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/MODERNIZATION.md +0 -0
  85. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/PRODUCT-ROUTE.md +0 -0
  86. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/PRODUCT_AUDIT.md +0 -0
  87. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/PRODUCT_IDENTITY.md +0 -0
  88. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/PRODUCT_TIERS.md +0 -0
  89. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/RELEASE-CHECKLIST.md +0 -0
  90. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
  91. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
  92. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/DESIGN-assessment-report.md +0 -0
  93. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
  94. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
  95. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
  96. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
  97. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
  98. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
  99. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
  100. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/DESIGN-pack-manifest.md +0 -0
  101. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
  102. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
  103. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/EPV-p6-class-typeref.md +0 -0
  104. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
  105. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
  106. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
  107. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
  108. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/adr/0001-semantic-ir.md +0 -0
  109. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
  110. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
  111. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
  112. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
  113. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/adr/0006-performance-harness.md +0 -0
  114. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/adr/0007-composition-semantics.md +0 -0
  115. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/adr/0008-answer-coherence.md +0 -0
  116. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/consumer-disposition-inventory.md +0 -0
  117. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/overview.md +0 -0
  118. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/product-architecture-review.md +0 -0
  119. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/product-strategy-layering.md +0 -0
  120. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
  121. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/architecture/semantic-ir-roadmap.md +0 -0
  122. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/baseline-ci.yml +0 -0
  123. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/commercial-pipeline-audit.md +0 -0
  124. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/contracts-ci.yml +0 -0
  125. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
  126. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
  127. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
  128. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
  129. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
  130. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
  131. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
  132. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
  133. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/licensing-schema.md +0 -0
  134. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/migrate-check.md +0 -0
  135. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/pack-gate-github-actions.yml +0 -0
  136. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/pack-gate-gitlab.yml +0 -0
  137. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/README.md +0 -0
  138. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
  139. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
  140. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
  141. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
  142. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
  143. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
  144. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
  145. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
  146. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
  147. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
  148. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
  149. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
  150. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
  151. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
  152. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
  153. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
  154. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
  155. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
  156. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
  157. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
  158. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
  159. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
  160. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
  161. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
  162. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
  163. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
  164. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
  165. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
  166. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
  167. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
  168. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
  169. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
  170. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
  171. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
  172. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
  173. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
  174. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
  175. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
  176. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
  177. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
  178. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
  179. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
  180. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
  181. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
  182. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
  183. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
  184. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
  185. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
  186. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/baselines/reference-best/README.md +0 -0
  187. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/perf/corpus-testing-2026-08-22.md +0 -0
  188. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/posture.md +0 -0
  189. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/privacy.md +0 -0
  190. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/pro-experience-audit.md +0 -0
  191. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/schema.md +0 -0
  192. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/spec/envelope-v1.md +0 -0
  193. {sourcecode-5.8.25 → sourcecode-5.8.27}/docs/spring-audit-ci.yml +0 -0
  194. {sourcecode-5.8.25 → sourcecode-5.8.27}/hatch_build.py +0 -0
  195. {sourcecode-5.8.25 → sourcecode-5.8.27}/scripts/compare_integration_engines.py +0 -0
  196. {sourcecode-5.8.25 → sourcecode-5.8.27}/scripts/customer_smoke_test.sh +0 -0
  197. {sourcecode-5.8.25 → sourcecode-5.8.27}/scripts/generate_jdk_exports.py +0 -0
  198. {sourcecode-5.8.25 → sourcecode-5.8.27}/scripts/perf_gate.py +0 -0
  199. {sourcecode-5.8.25 → sourcecode-5.8.27}/scripts/sync_gate_anchors.py +0 -0
  200. {sourcecode-5.8.25 → sourcecode-5.8.27}/scripts/test_fast.sh +0 -0
  201. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/adaptive_scanner.py +0 -0
  202. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/analysis_budget.py +0 -0
  203. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/answer_bounds.py +0 -0
  204. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/archetype.py +0 -0
  205. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/architectural_baseline.py +0 -0
  206. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/architectural_delta.py +0 -0
  207. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/architecture_analyzer.py +0 -0
  208. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/architecture_summary.py +0 -0
  209. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/ast_extractor.py +0 -0
  210. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/audit_clusters.py +0 -0
  211. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/audit_recipe.py +0 -0
  212. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/audit_since.py +0 -0
  213. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/breaking_changes.py +0 -0
  214. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/build_modules.py +0 -0
  215. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/build_stamp.py +0 -0
  216. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/cache.py +0 -0
  217. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/cache_observation.py +0 -0
  218. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/call_surface.py +0 -0
  219. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/caller_metrics.py +0 -0
  220. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/caller_reach.py +0 -0
  221. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/canonical_ir.py +0 -0
  222. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/chain_rules.py +0 -0
  223. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/change_plan.py +0 -0
  224. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/ci_output.py +0 -0
  225. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/cir_graphs.py +0 -0
  226. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/classifier.py +0 -0
  227. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/client_calls.py +0 -0
  228. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/code_notes_analyzer.py +0 -0
  229. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/confidence_analyzer.py +0 -0
  230. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/constraint_diff.py +0 -0
  231. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/consumer_join.py +0 -0
  232. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/container_wiring.py +0 -0
  233. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/context_graph.py +0 -0
  234. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/context_scorer.py +0 -0
  235. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/context_summarizer.py +0 -0
  236. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/contract_diff.py +0 -0
  237. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/contract_init.py +0 -0
  238. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/contract_model.py +0 -0
  239. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/contract_pipeline.py +0 -0
  240. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/coverage_parser.py +0 -0
  241. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/data_exposure.py +0 -0
  242. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/data_labels.py +0 -0
  243. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/declarations.py +0 -0
  244. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/defect_classes/__init__.py +0 -0
  245. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/defect_classes/registry.json +0 -0
  246. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/defect_identity.py +0 -0
  247. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/degradation.py +0 -0
  248. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/dependency_analyzer.py +0 -0
  249. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/deployment_prefix.py +0 -0
  250. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/__init__.py +0 -0
  251. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/base.py +0 -0
  252. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/csproj_parser.py +0 -0
  253. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/dart.py +0 -0
  254. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/dotnet.py +0 -0
  255. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/elixir.py +0 -0
  256. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/go.py +0 -0
  257. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/heuristic.py +0 -0
  258. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/hybrid.py +0 -0
  259. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/java.py +0 -0
  260. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/jvm_ext.py +0 -0
  261. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/nodejs.py +0 -0
  262. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/parsers.py +0 -0
  263. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/php.py +0 -0
  264. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/project.py +0 -0
  265. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/python.py +0 -0
  266. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/ruby.py +0 -0
  267. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/rust.py +0 -0
  268. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/systems.py +0 -0
  269. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/terraform.py +0 -0
  270. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/detectors/tooling.py +0 -0
  271. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/doc_analyzer.py +0 -0
  272. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/dynamic_argument_surface.py +0 -0
  273. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/empty_reach.py +0 -0
  274. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/endpoint_disposition.py +0 -0
  275. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/endpoint_literals.py +0 -0
  276. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/endpoint_metrics.py +0 -0
  277. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/entrypoint_classifier.py +0 -0
  278. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/environment_resolution.py +0 -0
  279. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/error_schema.py +0 -0
  280. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/evidence_provider.py +0 -0
  281. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/execution_plan.py +0 -0
  282. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/explain_endpoint.py +0 -0
  283. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/facts/__init__.py +0 -0
  284. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/facts/registry.json +0 -0
  285. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/field_deprecations.py +0 -0
  286. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/file_chunker.py +0 -0
  287. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/file_classifier.py +0 -0
  288. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/fqn_utils.py +0 -0
  289. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/functional_routes.py +0 -0
  290. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/gate_anchors.py +0 -0
  291. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/git_analyzer.py +0 -0
  292. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/git_checkout.py +0 -0
  293. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/github_diff.py +0 -0
  294. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/graph_analyzer.py +0 -0
  295. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/graph_evidence.py +0 -0
  296. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/hibernate_strat.py +0 -0
  297. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/identity_fallback.py +0 -0
  298. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/integration_coordinates.py +0 -0
  299. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/jdk_exports.py +0 -0
  300. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/license.py +0 -0
  301. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/manifest_cache.py +0 -0
  302. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/mcp/__init__.py +0 -0
  303. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/mcp/dependency_import.py +0 -0
  304. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  305. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  306. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  307. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  308. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  309. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/mcp/registry.py +0 -0
  310. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/mcp/runner.py +0 -0
  311. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/mcp/server.py +0 -0
  312. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/mcp_nudge.py +0 -0
  313. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/metrics_analyzer.py +0 -0
  314. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/migration_apply.py +0 -0
  315. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/migration_blast.py +0 -0
  316. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/openapi_surface.py +0 -0
  317. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/openrewrite_recipe.py +0 -0
  318. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/output_budget.py +0 -0
  319. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/output_ceiling.py +0 -0
  320. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/output_encoding.py +0 -0
  321. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/output_sink.py +0 -0
  322. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/pack_manifest.py +0 -0
  323. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/parallel.py +0 -0
  324. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/partial_contract.py +0 -0
  325. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/path_admission.py +0 -0
  326. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/path_filters.py +0 -0
  327. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/pipe_contract.py +0 -0
  328. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/pr_comment_renderer.py +0 -0
  329. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/pr_impact.py +0 -0
  330. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/progress.py +0 -0
  331. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/provenance.py +0 -0
  332. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/ranking_engine.py +0 -0
  333. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/readiness_timeline.py +0 -0
  334. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/readonly.py +0 -0
  335. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/reconciliation.py +0 -0
  336. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/redactor.py +0 -0
  337. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/reference_facts.py +0 -0
  338. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/regress.py +0 -0
  339. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/relevance_scorer.py +0 -0
  340. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/remediation_diff.py +0 -0
  341. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/remedies.py +0 -0
  342. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/rename_refactor.py +0 -0
  343. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/repo_classifier.py +0 -0
  344. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/__init__.py +0 -0
  345. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/context.py +0 -0
  346. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/errors.py +0 -0
  347. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/executor.py +0 -0
  348. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/planner.py +0 -0
  349. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/query.py +0 -0
  350. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/request.py +0 -0
  351. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/resolution.py +0 -0
  352. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/result.py +0 -0
  353. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/retriever.py +0 -0
  354. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/runtime.py +0 -0
  355. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/steps.py +0 -0
  356. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
  357. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/steps_graph.py +0 -0
  358. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/steps_impact.py +0 -0
  359. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/steps_intf.py +0 -0
  360. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/steps_struct.py +0 -0
  361. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/retrieval/steps_txsec.py +0 -0
  362. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/ris.py +0 -0
  363. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/risk.py +0 -0
  364. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/risk_model.py +0 -0
  365. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/rule_catalog.py +0 -0
  366. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/rule_pass.py +0 -0
  367. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/runs.py +0 -0
  368. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/runtime_classifier.py +0 -0
  369. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/scanner.py +0 -0
  370. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/schema.py +0 -0
  371. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/schema_producers.py +0 -0
  372. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
  373. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
  374. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
  375. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
  376. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
  377. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
  378. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/security_chain.py +0 -0
  379. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/security_config.py +0 -0
  380. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/selection_contract.py +0 -0
  381. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/semantic_analyzer.py +0 -0
  382. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/semantic_impact_engine.py +0 -0
  383. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/semantic_integration_engine.py +0 -0
  384. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/semantic_services.py +0 -0
  385. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/servlet_surface.py +0 -0
  386. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/source_text.py +0 -0
  387. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/spring_event_topology.py +0 -0
  388. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/spring_findings.py +0 -0
  389. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/spring_model.py +0 -0
  390. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/spring_properties.py +0 -0
  391. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/spring_security_audit.py +0 -0
  392. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/spring_semantic.py +0 -0
  393. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/sql_taint.py +0 -0
  394. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/summarizer.py +0 -0
  395. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/target_admission.py +0 -0
  396. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/telemetry/__init__.py +0 -0
  397. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/telemetry/config.py +0 -0
  398. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/telemetry/consent.py +0 -0
  399. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/telemetry/events.py +0 -0
  400. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/telemetry/filters.py +0 -0
  401. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/telemetry/transport.py +0 -0
  402. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/test_gap_ranking.py +0 -0
  403. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/text_input.py +0 -0
  404. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/timeline.py +0 -0
  405. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/timeline_cache.py +0 -0
  406. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/tree_utils.py +0 -0
  407. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/type_usage_surface.py +0 -0
  408. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/validation_inference.py +0 -0
  409. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/validation_surface.py +0 -0
  410. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/verify_edit.py +0 -0
  411. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/verify_repo.py +0 -0
  412. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/verify_rules.py +0 -0
  413. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/version_check.py +0 -0
  414. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/waivers.py +0 -0
  415. {sourcecode-5.8.25 → sourcecode-5.8.27}/src/sourcecode/wired_surface.py +0 -0
  416. {sourcecode-5.8.25 → sourcecode-5.8.27}/supabase/functions/README.md +0 -0
  417. {sourcecode-5.8.25 → sourcecode-5.8.27}/supabase/functions/get-license/index.ts +0 -0
  418. {sourcecode-5.8.25 → sourcecode-5.8.27}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
  419. {sourcecode-5.8.25 → sourcecode-5.8.27}/supabase/functions/telemetry/index.ts +0 -0
  420. {sourcecode-5.8.25 → sourcecode-5.8.27}/supabase/sql/license_event_ordering.sql +0 -0
  421. {sourcecode-5.8.25 → sourcecode-5.8.27}/supabase/sql/licensing_schema.sql +0 -0
  422. {sourcecode-5.8.25 → sourcecode-5.8.27}/supabase/sql/telemetry_events.sql +0 -0
@@ -16,8 +16,18 @@ on:
16
16
  jobs:
17
17
  battery:
18
18
  runs-on: windows-latest
19
+ env:
20
+ NO_COLOR: "1"
21
+ TERM: "dumb"
22
+ # CLI payloads and diagnostics are UTF-8 contracts. Without this Windows
23
+ # decodes child-process output with the active code page, turning a valid
24
+ # JSON answer containing source text into an empty/failed test response.
25
+ PYTHONUTF8: "1"
26
+ PYTHONIOENCODING: "utf-8"
19
27
  steps:
20
28
  - uses: actions/checkout@v4
29
+ with:
30
+ fetch-depth: 0
21
31
 
22
32
  - uses: actions/setup-python@v5
23
33
  with:
@@ -31,11 +41,22 @@ jobs:
31
41
 
32
42
  - name: Suite
33
43
  run: pytest
44
+ # `runner.*` is valid at step scope. Both stores stay outside the
45
+ # checkout so their files never become untracked input to an analysis.
46
+ env:
47
+ SOURCECODE_CACHE_DIR: ${{ runner.temp }}/ask-cache
48
+ SOURCECODE_CONTEXT_CACHE_DIR: ${{ runner.temp }}/ask-context-cache
34
49
 
35
50
  # Named separately so a Windows-only failure is legible in the job list
36
51
  # rather than one dot in nine thousand.
37
52
  - name: The envelope names its command on every entry path
38
53
  run: pytest tests/test_the_envelope_names_its_command_on_every_entry_path_aud601_x01.py -v
54
+ env:
55
+ SOURCECODE_CACHE_DIR: ${{ runner.temp }}/ask-cache
56
+ SOURCECODE_CONTEXT_CACHE_DIR: ${{ runner.temp }}/ask-context-cache
39
57
 
40
58
  - name: A footprint sample is a number or a stated null, never a zero
41
59
  run: pytest tests/test_resource_budget_d10.py -v
60
+ env:
61
+ SOURCECODE_CACHE_DIR: ${{ runner.temp }}/ask-cache
62
+ SOURCECODE_CONTEXT_CACHE_DIR: ${{ runner.temp }}/ask-context-cache
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.8.27] — 2026-08-26
4
+
5
+ *Audit remediation release. Detached workers avoid the Windows console shim,
6
+ security scanning excludes platform and deprecated encoder definitions, and
7
+ non-applicable Boot 3 readiness is represented consistently. `selftest` warns
8
+ when an implicit current-directory run contains nested Git repositories. The
9
+ release also synchronizes the user-facing documentation with these guarantees.*
10
+
11
+ ## [5.8.26] — 2026-08-23
12
+
13
+ *Patch release for the expanded-corpus audit. It preserves endpoint declarations
14
+ whose FQN is reused by separate modules, pairs MyBatis XML against the analysed
15
+ tree rather than a compact display subset, and reports the runtime source commit
16
+ for editable installs. Route inheritance and JAX-RS locator composition were
17
+ revalidated after the module-identity change.*
18
+
3
19
  ## [5.8.25] — 2026-08-23
4
20
 
5
21
  *Version and documentation synchronization release. The audited `5.8.24` tree is
@@ -461,7 +477,7 @@ the evidence for outstanding field reproduction and performance work.*
461
477
 
462
478
  *Performance-mitigation and release-hygiene update. The external cross-version
463
479
  performance regression remains open until it is reproduced under its controlled
464
- `saint-server` protocol; this release does not present local warm-cache results
480
+ `reference-service` protocol; this release does not present local warm-cache results
465
481
  as that closure.*
466
482
 
467
483
  ### Changed
@@ -1217,7 +1233,7 @@ said to name no smaller variant when one exists.*
1217
1233
  - An analysed population does not move between releases without a field that
1218
1234
  explains the move (B17-sv / AS-16). 5.8.0's E-35 fix removed symbols that were
1219
1235
  never declarations — `return unknownHelper("x");` parsed as one — and
1220
- `metadata.symbols_analyzed` fell with them (`saint-server` 43 642 → 43 003,
1236
+ `metadata.symbols_analyzed` fell with them (`reference-service` 43 642 → 43 003,
1221
1237
  −1,46 %, after five constant versions). The correction was right and the
1222
1238
  release said nothing, so the next field re-audit read it as lost coverage and
1223
1239
  filed it P0. Every command that publishes `symbols_analyzed` now publishes
@@ -1600,7 +1616,7 @@ closed here, two refuted with the measurement that contradicts them.*
1600
1616
 
1601
1617
  ## [5.5.5] — 2026-08-13
1602
1618
 
1603
- **MSAS performance-audit corrections and read-only hygiene verification.**
1619
+ **reference corpus performance-audit corrections and read-only hygiene verification.**
1604
1620
 
1605
1621
  ### Fixed
1606
1622
  - `spring-audit` now preserves full default JSON when it fits the stdout
@@ -1619,7 +1635,7 @@ closed here, two refuted with the measurement that contradicts them.*
1619
1635
  explicitly where no semantic model is available.
1620
1636
 
1621
1637
  ### Documentation
1622
- - Recorded the MSAS findings, their reproductions, the resolved commits, and
1638
+ - Recorded the reference corpus findings, their reproductions, the resolved commits, and
1623
1639
  the remaining bounded-output, schema, timeline, benchmark, and Git-basis
1624
1640
  work in the roadmap.
1625
1641
 
@@ -2369,7 +2385,7 @@ product does not model — Keycloak, 8 204 Java files, Quarkus + JAX-RS,
2369
2385
  `spring_detected: false` in all six audited modules, 47 invocations under
2370
2386
  `ASK_READONLY=1` — and it split the product cleanly in two: every structural axis
2371
2387
  worked alone, and the axes that guess produced 86 `high` findings with zero true
2372
- positives. Eval #21 is the seventh measurement of `saint-server`, and its
2388
+ positives. Eval #21 is the seventh measurement of `reference-service`, and its
2373
2389
  contribution is a partition rather than a defect.
2374
2390
 
2375
2391
  **Fixed in this release:**
@@ -3499,7 +3515,7 @@ them.
3499
3515
  ### Documentation
3500
3516
 
3501
3517
  - README and user guide examples now report `4.8.0`.
3502
- - The development roadmap records the saint-server field-evaluation fixes and
3518
+ - The development roadmap records the reference-service field-evaluation fixes and
3503
3519
  future feature queue.
3504
3520
 
3505
3521
  ## [4.7.0] — 2026-08-04
@@ -4245,7 +4261,7 @@ verification against 4.0.1.
4245
4261
 
4246
4262
  - **SEC-007 — a credential stored in a deployment descriptor** (CL-10). The audit
4247
4263
  found `monitor:{SHA-256}dc20b820…` in
4248
- `src/main/options/{DPA,M3,M3DEV}/WEB-INF/web.xml`: unsalted, the same hash in all
4264
+ `src/main/options/{DPA,sample,tenant-dev}/WEB-INF/web.xml`: unsalted, the same hash in all
4249
4265
  three per-environment overlays, and found by hand because *"los overlays
4250
4266
  `src/main/options/**` son punto ciego"*. The gap was admission surface, not
4251
4267
  detection — those descriptors are files `environment_resolution`,
@@ -5669,13 +5685,13 @@ and `registries` in both `ask schema` and `ask version`) are additive.
5669
5685
 
5670
5686
  - **A class was reported as conditional on a profile *and* on its negation, contradicting
5671
5687
  `ask posture` in the same run.** Found in the third field evaluation (3.2.0): a
5672
- configuration class declaring `@Profile("!m3")` — active exactly when `m3` is **absent** —
5673
- appeared in `signals.spring_profiles.profile_conditional_beans` under `m3` as well. Read as
5688
+ configuration class declaring `@Profile("!sample")` — active exactly when `sample` is **absent** —
5689
+ appeared in `signals.spring_profiles.profile_conditional_beans` under `sample` as well. Read as
5674
5690
  a security fact, it inverts the answer.
5675
5691
  - Root cause, reproduced: the source scan attributed every `@Profile` to *the next type
5676
5692
  declaration ahead of it*, falling back to the file name when there was none. A
5677
- `@Profile("m3")` on a `@Bean` **method** inside that class was therefore attributed to the
5678
- class itself, next to the class-level `@Profile("!m3")`.
5693
+ `@Profile("sample")` on a `@Bean` **method** inside that class was therefore attributed to the
5694
+ class itself, next to the class-level `@Profile("!sample")`.
5679
5695
  - Attribution is now the declaration the annotation actually annotates: only annotations
5680
5696
  and modifiers may stand between it and a type declaration; a member-level annotation is
5681
5697
  reported as `Type#member`, and an annotation whose target cannot be read is **not
@@ -8632,7 +8648,7 @@ Dependency audit (`pip-audit`): no known vulnerabilities in runtime dependencies
8632
8648
 
8633
8649
  ### Added
8634
8650
  - **`export --c4` now emits `components.module_roots` — architectural module
8635
- enumeration + DDD/legacy classification.** Field test (saint-server C4 doc pass)
8651
+ enumeration + DDD/legacy classification.** Field test (reference-service C4 doc pass)
8636
8652
  surfaced that the C4 export keyed modules by *leaf source directory*
8637
8653
  (`dirname(source_file)`), so a DDD module split across
8638
8654
  `domain/` / `application/` / `infrastructure/` subdirs fragmented into several
@@ -0,0 +1,27 @@
1
+ # Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We pledge to make participation in this project a harassment-free experience for everyone,
6
+ regardless of age, body size, disability, ethnicity, gender identity and expression, level of
7
+ experience, nationality, personal appearance, race, religion, or sexual identity and
8
+ orientation.
9
+
10
+ ## Expected Behaviour
11
+
12
+ - Use welcoming and inclusive language.
13
+ - Respect differing viewpoints and experiences.
14
+ - Give and accept constructive feedback.
15
+ - Focus on what is best for the community and the project.
16
+
17
+ ## Unacceptable Behaviour
18
+
19
+ Harassment, discriminatory language, personal attacks, publication of private information, or
20
+ other conduct that would be inappropriate in a professional setting is not acceptable.
21
+
22
+ ## Enforcement
23
+
24
+ Report unacceptable behaviour privately to the project maintainers. Maintainers will review
25
+ reports promptly and may remove, edit, or reject contributions, or take other action needed to
26
+ protect participants.
27
+
@@ -189,6 +189,11 @@ Rules:
189
189
  - Docstrings are optional but welcome for non-obvious logic
190
190
  - No inline comments explaining what the code does — names should do that
191
191
  - Comments only for non-obvious constraints or workarounds
192
+ - Do not add customer names, trademarks, private repository identities, or
193
+ licensed third-party material to source, fixtures, examples, documentation,
194
+ benchmark labels, or generated artefacts. Use neutral names such as
195
+ `sample-service`, `example.org`, and `tenant-a`. Required legal notices and
196
+ dependency attributions are the only exception and must remain verbatim.
192
197
 
193
198
  ---
194
199
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 5.8.25
3
+ Version: 5.8.27
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
@@ -22,12 +22,13 @@ Classifier: Programming Language :: Python :: 3.12
22
22
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
23
  Classifier: Topic :: Utilities
24
24
  Requires-Python: >=3.9
25
+ Requires-Dist: click<8.4,>=8.2
25
26
  Requires-Dist: defusedxml>=0.7
26
27
  Requires-Dist: mcp<2,>=1.2
27
28
  Requires-Dist: pathspec>=1.0
28
29
  Requires-Dist: ruamel-yaml>=0.18
29
30
  Requires-Dist: tomli>=2.0; python_version < '3.11'
30
- Requires-Dist: typer>=0.24
31
+ Requires-Dist: typer<0.26,>=0.24
31
32
  Provides-Extra: ast
32
33
  Requires-Dist: tree-sitter-javascript>=0.21; extra == 'ast'
33
34
  Requires-Dist: tree-sitter-typescript>=0.21; extra == 'ast'
@@ -58,7 +59,7 @@ Description-Content-Type: text/markdown
58
59
  > question. All analysis is local and deterministic; see [Privacy](#configuration--privacy)
59
60
  > before inspecting a repository whose telemetry policy you need to control.
60
61
 
61
- ![Version](https://img.shields.io/badge/version-5.8.25-blue)
62
+ ![Version](https://img.shields.io/badge/version-5.8.27-blue)
62
63
  ![Python](https://img.shields.io/badge/python-3.9%2B-green)
63
64
 
64
65
  Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
@@ -176,15 +177,14 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
176
177
  answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
177
178
  unset, or set it to `0`, to disable the ceiling explicitly.
178
179
 
179
- **Current performance status.** Release 5.8.25 retains the shared Canonical IR
180
+ **Current performance status.** Release 5.8.27 retains the shared Canonical IR
180
181
  path used by `validation` and now passes that same CIR into labelled `data-exposure`
181
- runs; the no-label path remains parse-free. The one-model-per-declared-label path is
182
- also retained. These are implementation properties, not duration promises:
183
- run `ask cache model <repo>` to see which command benefits from a warm cache and
184
- use `--progress stderr` for supervised runs. The external `data-exposure --config`
185
- remeasurement and portable cost-anchor calibration remain open because measurements
186
- from different hosts are not interchangeable; see the
187
- [roadmap](docs/DEVELOPMENT-ROADMAP.md).
182
+ runs; the no-label path remains parse-free. These are implementation properties,
183
+ not duration promises. A controlled external warm-path audit has opened performance
184
+ and bounded-output regressions for this release; use `ask cache model <repo>` and
185
+ `--progress stderr` for supervised runs, and consult the
186
+ [active audit intake](docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md) before treating a
187
+ historical timing or bounded flag as a current guarantee.
188
188
 
189
189
  **What a warm actually covers.** `ask cache warm` runs the compact analysis: it rebuilds the
190
190
  shared structural layers (L1/L2 + the Repository Intelligence Snapshot + the shared Canonical
@@ -210,7 +210,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
210
210
  # pip / pipx
211
211
  pipx install sourcecode # or: pip install sourcecode
212
212
 
213
- ask version # ask 5.8.25 — and, on a build that has aged,
213
+ ask version # ask 5.8.27 — and, on a build that has aged,
214
214
  # how many releases have probably shipped since
215
215
  ```
216
216
 
@@ -218,16 +218,13 @@ ask version # ask 5.8.25 — and, on a build that has aged,
218
218
  > (renaming the distribution is a separate, breaking change). Installing it gives you the
219
219
  > canonical **`ask`** command plus the deprecated **`sourcecode`** alias.
220
220
 
221
- > **Platforms.** Developed and tested on macOS and Linux; every release runs its full
222
- > battery there. **Windows/PowerShell is a target we cannot verify:** the CLI is written
223
- > for it — UTF-8 streams are forced at both console entry points, a successful run writes
224
- > nothing to stderr (PowerShell 5.1 raises `NativeCommandError` on any stderr write), and
225
- > the MCP server strips the BOM PowerShell puts on stdin but no Windows runner exists in
226
- > the battery. Three separate field reports of console mojibake (`—` rendering as `â€"`)
227
- > have never reproduced under measurement, and the only variable those reports share is the
228
- > platform we cannot exercise (C3-3, C3-12, C3-38 in the
229
- > [defect ledger](docs/DEFECT-LEDGER.md)). On Windows, prefer `--output <file>` over shell
230
- > redirection, and report a rendering problem rather than assuming it is known.
221
+ > **Platforms.** macOS, Linux and Windows are exercised in CI. The Windows battery runs the
222
+ > full suite on every push, with focused envelope and memory-footprint cases. UTF-8 streams
223
+ > are forced at both console entry points; a successful run writes nothing to stderr
224
+ > (PowerShell 5.1 raises `NativeCommandError` on any stderr write), and the MCP server strips
225
+ > the BOM PowerShell can put on stdin. For PowerShell, prefer `--output <file>` over shell
226
+ > redirection when retaining an artefact. A successful CI run is the portability evidence for
227
+ > a release; report a rendering problem with the command, shell and encoding.
231
228
 
232
229
  ---
233
230
 
@@ -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.8.25-blue)
13
+ ![Version](https://img.shields.io/badge/version-5.8.27-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
@@ -128,15 +128,14 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
128
128
  answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
129
129
  unset, or set it to `0`, to disable the ceiling explicitly.
130
130
 
131
- **Current performance status.** Release 5.8.25 retains the shared Canonical IR
131
+ **Current performance status.** Release 5.8.27 retains the shared Canonical IR
132
132
  path used by `validation` and now passes that same CIR into labelled `data-exposure`
133
- runs; the no-label path remains parse-free. The one-model-per-declared-label path is
134
- also retained. These are implementation properties, not duration promises:
135
- run `ask cache model <repo>` to see which command benefits from a warm cache and
136
- use `--progress stderr` for supervised runs. The external `data-exposure --config`
137
- remeasurement and portable cost-anchor calibration remain open because measurements
138
- from different hosts are not interchangeable; see the
139
- [roadmap](docs/DEVELOPMENT-ROADMAP.md).
133
+ runs; the no-label path remains parse-free. These are implementation properties,
134
+ not duration promises. A controlled external warm-path audit has opened performance
135
+ and bounded-output regressions for this release; use `ask cache model <repo>` and
136
+ `--progress stderr` for supervised runs, and consult the
137
+ [active audit intake](docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md) before treating a
138
+ historical timing or bounded flag as a current guarantee.
140
139
 
141
140
  **What a warm actually covers.** `ask cache warm` runs the compact analysis: it rebuilds the
142
141
  shared structural layers (L1/L2 + the Repository Intelligence Snapshot + the shared Canonical
@@ -162,7 +161,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
162
161
  # pip / pipx
163
162
  pipx install sourcecode # or: pip install sourcecode
164
163
 
165
- ask version # ask 5.8.25 — and, on a build that has aged,
164
+ ask version # ask 5.8.27 — and, on a build that has aged,
166
165
  # how many releases have probably shipped since
167
166
  ```
168
167
 
@@ -170,16 +169,13 @@ ask version # ask 5.8.25 — and, on a build that has aged,
170
169
  > (renaming the distribution is a separate, breaking change). Installing it gives you the
171
170
  > canonical **`ask`** command plus the deprecated **`sourcecode`** alias.
172
171
 
173
- > **Platforms.** Developed and tested on macOS and Linux; every release runs its full
174
- > battery there. **Windows/PowerShell is a target we cannot verify:** the CLI is written
175
- > for it — UTF-8 streams are forced at both console entry points, a successful run writes
176
- > nothing to stderr (PowerShell 5.1 raises `NativeCommandError` on any stderr write), and
177
- > the MCP server strips the BOM PowerShell puts on stdin but no Windows runner exists in
178
- > the battery. Three separate field reports of console mojibake (`—` rendering as `â€"`)
179
- > have never reproduced under measurement, and the only variable those reports share is the
180
- > platform we cannot exercise (C3-3, C3-12, C3-38 in the
181
- > [defect ledger](docs/DEFECT-LEDGER.md)). On Windows, prefer `--output <file>` over shell
182
- > redirection, and report a rendering problem rather than assuming it is known.
172
+ > **Platforms.** macOS, Linux and Windows are exercised in CI. The Windows battery runs the
173
+ > full suite on every push, with focused envelope and memory-footprint cases. UTF-8 streams
174
+ > are forced at both console entry points; a successful run writes nothing to stderr
175
+ > (PowerShell 5.1 raises `NativeCommandError` on any stderr write), and the MCP server strips
176
+ > the BOM PowerShell can put on stdin. For PowerShell, prefer `--output <file>` over shell
177
+ > redirection when retaining an artefact. A successful CI run is the portability evidence for
178
+ > a release; report a rendering problem with the command, shell and encoding.
183
179
 
184
180
  ---
185
181
 
@@ -3,7 +3,7 @@
3
3
  **Fecha:** 2026-08-22
4
4
  **Artefacto auditado:** release `5.8.22`, `build_commit`
5
5
  `583c07c405358d3e76dd20968960f5ab928608fd`
6
- **Sujeto principal:** MSAS / `banyan-v2`, HEAD `3dde0376`, 3.342 ficheros Java
6
+ **Sujeto principal:** reference corpus / `banyan-v2`, HEAD `3dde0376`, 3.342 ficheros Java
7
7
  **Registro relacionado:** [`docs/DEFECT-LEDGER.md`](DEFECT-LEDGER.md), entrada
8
8
  `AUD-598-X01` y filas derivadas
9
9
 
@@ -11,7 +11,7 @@
11
11
 
12
12
  Se consolidan dos rondas independientes sobre la misma release:
13
13
 
14
- - Ronda A: MSAS, 57 invocaciones, 52 cronometradas, 3 `pr-impact` y 5 ayudas,
14
+ - Ronda A: reference corpus, 57 invocaciones, 52 cronometradas, 3 `pr-impact` y 5 ayudas,
15
15
  `ASK_READONLY=1`, presupuesto explícito y 0 escrituras.
16
16
  - Ronda B: banco de 16 repositorios Java/Spring, unas 95 invocaciones, Windows
17
17
  11 Pro, pipx y Git Bash.
@@ -54,7 +54,7 @@ El estado siguiente es el que debe usarse para planificación y release:
54
54
  | `AUD-598-X01` | `open` | El ledger del producto va por delante del wheel: cinco cierres declarados no se observan en el artefacto `583c07c`. |
55
55
  | `AUD-598-B01` / `ASK-META-001` | `open` | La auditoría de wheel no observa `_meta`, `content_id` ni memoria en 9/9 payloads inspeccionados. Debe resolverse dentro de un wheel construido, no sólo en checkout. |
56
56
  | `AUD-598-B02` / `ASK-UX-002` | `open` | `posture --diff` ofrece `--compact` y `--limit`, pero ambos son no-op en el caso medido y los hints forman un ciclo. |
57
- | `AUD-598-B03` / `B-11` | `open` | Persisten 17 anclas de coste con texto `on 5.1.0` dentro de un build 5.8.22; además `risk` no alcanza su ancla publicada en MSAS. |
57
+ | `AUD-598-B03` / `B-11` | `open` | Persisten 17 anclas de coste con texto `on 5.1.0` dentro de un build 5.8.22; además `risk` no alcanza su ancla publicada en reference corpus. |
58
58
  | `AUD-598-B04` / `N-02` | `open` parcial | `1e9` y `1_000` son presupuestos válidos, pero se aceptan sin advertir que no vincularán el proceso. |
59
59
 
60
60
  ## Cierres que el artefacto no confirma
@@ -4,7 +4,7 @@
4
4
  **Artefacto auditado:** release `5.8.24`, `build_commit`
5
5
  `61b9c12b0e354cda157038bc8be6e19384a42368`
6
6
  **Sujetos:** banco de 16 repositorios Java/Spring sobre Windows 11 Pro (ronda A, ~145
7
- invocaciones) · MSAS / `banyan-v2`, HEAD `3dde0376`, 3 342 ficheros Java (ronda B, octava
7
+ invocaciones) · reference corpus / `banyan-v2`, HEAD `3dde0376`, 3 342 ficheros Java (ronda B, octava
8
8
  ronda sobre el mismo árbol bit a bit, ~55 invocaciones, `ASK_READONLY=1` y techo explícito
9
9
  en todas, 0 tracebacks, 0 escrituras)
10
10
  **Registro relacionado:** [`DEFECT-LEDGER.md`](DEFECT-LEDGER.md), *Fourteenth Audit Pass* y
@@ -15,7 +15,7 @@ filas `AUD-601-*`
15
15
  | Ronda | Nota | Anterior | Veredicto del auditor |
16
16
  |---|---:|---:|---|
17
17
  | A — banco de 16 repos | `8,7/10` | 8,3 | Adoptar |
18
- | B — MSAS | `8,88/10` | 8,84 | Comprar y actualizar, con una reserva operativa |
18
+ | B — reference corpus | `8,88/10` | 8,84 | Comprar y actualizar, con una reserva operativa |
19
19
 
20
20
  Ronda B marca **su propio eje de rendimiento como provisional** y nombra el confound. Ronda A
21
21
  **retracta una fila propia** tras cuatro informes. Ambas cosas cuentan a favor del método y
@@ -202,7 +202,7 @@ byte-idéntico a 156 902 B en dos corridas donde antes oscilaba ±1–3 B por re
202
202
 
203
203
  **De rendimiento: las dos rondas se contradicen, y no se declara regresión.**
204
204
 
205
- | | Ronda A (banco, protocolo con `cache warm` explícito, intercalado ×4, mediana, primera descartada) | Ronda B (MSAS) |
205
+ | | Ronda A (banco, protocolo con `cache warm` explícito, intercalado ×4, mediana, primera descartada) | Ronda B (reference corpus) |
206
206
  |---|---|---|
207
207
  | Lectura | **8 de 9 anclas mejoran 4–17 %**, y las seis que subieron en `5.8.23` vuelven todas a su banda o por debajo. `ask --help` a 1,74 s, bajo el ×1,25 de vigilancia | `posture` +55 %, `spring-audit` ×2,1, `migrate-check` ×2,2, `selftest` +45 %, `compare` +39 %, `export --c4` peor — y `ask . --compact` **mejor 1,3×** (94,6 → 74,9 s), `validation` 1,5×, `verify --init` 1,3× |
208
208
  | Estado | firme | **provisional, declarado por su autor** |
@@ -0,0 +1,63 @@
1
+ # Intake de hallazgos — corpus ampliado ASK 5.8.25
2
+
3
+ **Fecha:** 2026-08-23
4
+ **Build externo:** `5.8.25`, `b6e0e0f`
5
+ **Fuente:** [`/Users/user/Documents/workspace/testing/ASK-FINDINGS-CORPUS-AMPLIADO-2026-08-23.md`](/Users/user/Documents/workspace/testing/ASK-FINDINGS-CORPUS-AMPLIADO-2026-08-23.md)
6
+ **Estado:** intake incorporado; sin correcciones de código en esta tarea.
7
+
8
+ ## Criterio de triage
9
+
10
+ El corpus aporta reproducción exacta y contraste manual. Los hallazgos se registran como
11
+ **reportados externamente** hasta reproducirlos contra el checkout o wheel correspondiente.
12
+ No se convierten en vulnerabilidades del repositorio auditado: describen límites, falsos
13
+ negativos, falsos positivos o contratos ambiguos de ASK. Los cuatro P0 deben tener prioridad
14
+ antes de nuevas features comerciales.
15
+
16
+ ## Bugs y regresiones
17
+
18
+ | Severidad | ID | Hallazgo | Acción requerida | Estado |
19
+ |---|---|---|---|---|
20
+ | P0 | `AUD-CA-001` | `posture.security` es Spring-Security-only, pero `stack_fit` trata Spring + Shiro como ausencia de control. | Separar `spring_detected` de `spring_security_detected`; publicar `unknown` y framework no modelado. | Corregido 5.8.25: Shiro queda declarado como no modelado y el acceso como `unknown` |
21
+ | P0 | `AUD-CA-002` | `@RequiresPermissionsDesc` descriptiva suprime un finding al retirar el gate real `@RequiresPermissions`. | Exigir evidencia de enforcement; no inferir gates por nombre; cualquier transición desde roles debe activar `security_delta`. | Reportado, reproducir |
22
+ | P0 | `AUD-CA-003` | Colisión de FQN entre módulos descarta rutas y seguridad sin declaración. | Identidad `(módulo, FQN)` o ruta; declarar descartes si se conserva una sola definición. | Reportado, reproducir |
23
+ | P0 | `AUD-CA-014` | 89 controladores Micronaut no aparecen en `endpoints` y el vocabulario no declara el framework. | Añadir `micronaut` como estilo detectado-no-soportado y gap cuantificado; después implementar soporte. | Parcial 5.8.25: superficie Micronaut declarada y cuantificada; soporte HTTP pendiente |
24
+ | P1 | `AUD-CA-004` | `none_detected` mezcla cadena no modelada con ruta pública por regla URL. | Modelar `ShiroFilterFactoryBean` o separar estados `chain_not_modelled` y `chain_public`. | Reportado, reproducir |
25
+ | P1 | `AUD-CA-005` | Regla por nombre de módulo excluye código real bajo `src/main`. | Basar exclusión en source sets (`src/test`, `src/it`), no en nombre de módulo. | Corregido 5.8.25: `src/main` prevalece; sólo quedan módulos fixture explícitos |
26
+ | P1 | `AUD-CA-006` | `entry_points` alterna objeto/array bajo `schema_version: 1.0`; además duplica `(path, kind)`. | Fijar un schema; separar poblaciones si procede y deduplicar por `(path, kind)`. | Reportado, reproducir |
27
+ | P1 | `AUD-CA-007` | Repositorio políglota sin build file en raíz deja inventario Java vacío pese a `primary: java`. | Descubrir manifests en el reactor; particionar dependencias por stack y declarar contradicciones. | Reportado, reproducir |
28
+ | P1 | `AUD-CA-008` | Índice MyBatis incompleto produce `mapper_interfaces: 0` y 100% de XML huérfanos falsos. | Resolver namespace contra índice completo; si el índice está incompleto, no emitir huérfanos. | Reportado, reproducir |
29
+ | P1 | `AUD-CA-009` | `migrate-check` omite dependencias directas incompatibles con Boot 3 y publica esfuerzo con confianza alta. | Añadir compatibilidad de dependencias declaradas; mientras tanto, publicar `non_coverage` y retirar `point_estimate/high`. | Reportado, reproducir |
30
+ | P1 | `AUD-CA-015` | Titular `7 endpoints` oculta 21.023 rutas excluidas. | Incluir proporción y exclusiones en el titular cuando superen el umbral; mantener detalle en `answer_bounds`. | Reportado, reproducir |
31
+ | P2 | `AUD-CA-010` | `ask --compact` y `endpoints` discrepan en el censo de controladores. | Unificar autoridad y población; publicar unidad y base del censo. | Reportado, reproducir |
32
+ | P2 | `AUD-CA-011` | SEC-008 no cualifica alcanzabilidad; 41% del volumen procede de boilerplate MyBatis Generator. | Filtrar por rutas HTTP alcanzables y agrupar por expresión + fichero. | Reportado, reproducir |
33
+ | P2 | `AUD-CA-012` | `verify-edit` publica `source_file: null` aunque `endpoints` sí tiene ancla `file:line`. | Reutilizar la autoridad de endpoints para anclar el diff. | Reportado, reproducir |
34
+ | P2 | `AUD-CA-016` | `zero_result_reason` termina en una conjunción (`and `) y espacio final. | Construir la enumeración sin elementos vacíos y probar el texto completo. | Reportado, reproducir |
35
+ | P3 | `AUD-CA-013` | `explain.public_methods` colapsa sobrecargas y carece de unidad/población/base. | Publicar firmas o identificadores de método y metadatos de población. | Corregido 5.8.25: `public_methods_detail` conserva firmas y anclas |
36
+ | P3 | `AUD-CA-017` | `excluded_by_module_name_rule.count` es `null` mientras la cifra sólo existe en prosa. | Publicar el contador numérico desde la misma autoridad que genera el gap. | Corregido 5.8.25: `count` y `unit` publicados |
37
+
38
+ ## Prioridad de ejecución
39
+
40
+ 1. Seguridad y superficie: `AUD-CA-001`, `AUD-CA-002`, `AUD-CA-003`, `AUD-CA-004` y
41
+ `AUD-CA-014`.
42
+ 2. Integridad de inventario y contratos: `AUD-CA-005` a `AUD-CA-010` y `AUD-CA-012`.
43
+ 3. Precisión comercial y legibilidad: `AUD-CA-011`, `AUD-CA-015`, `AUD-CA-016`,
44
+ `AUD-CA-013` y `AUD-CA-017`.
45
+
46
+ ## Criterios de cierre
47
+
48
+ - Cada hallazgo reproducido debe tener test de regresión con el repositorio testigo o una
49
+ fixture mínima equivalente.
50
+ - Toda exclusión debe declarar población, motivo, contador y efecto sobre `answer_bounds`.
51
+ - Ningún `none`, `0`, `clean` o `point_estimate/high` puede publicarse cuando el eje o el
52
+ índice necesario no está modelado.
53
+ - Cambios de schema deben conservar una única forma por versión y actualizar consumidores,
54
+ schemas y fixtures.
55
+ - Los P0 no se cierran por texto o mitigación documental: requieren evidencia de código y
56
+ batería verde.
57
+
58
+ ## No clasificado como bug
59
+
60
+ El corpus también confirma determinismo caliente, ausencia de escrituras en los checkouts,
61
+ separación correcta de fuentes de test, `declared_not_served`, varias coberturas Quarkus y
62
+ Micronaut a escala de ejecución. Es evidencia positiva que debe preservarse, no trabajo
63
+ pendiente.
@@ -0,0 +1,121 @@
1
+ # Auditoría externa de regresión — ASK Engine 5.8.25
2
+
3
+ **Fecha de recepción:** 2026-08-23
4
+ **Artefacto auditado:** ASK Engine `5.8.25`, build `b6e0e0f157687a962ce66627afe2e9b388fb2f06`
5
+ **Entornos:** Windows 11 Pro y reference corpus (`3dde0376`)
6
+ **Alcance:** aproximadamente 180 invocaciones, 0 tracebacks, 0 escrituras observadas.
7
+
8
+ ## Estado posterior del checkout
9
+
10
+ **Verificado el 2026-08-23 contra `HEAD 3d56d11`**, posterior al artefacto auditado.
11
+ Este bloque es el estado operativo actual; la evidencia del informe externo que sigue se
12
+ conserva sin alterar.
13
+
14
+ - La versión del repositorio es `5.8.25`.
15
+ - `125e486` corrigió la serialización de rutas en Windows y la detección de `ask.exe` en
16
+ selftest.
17
+ - `735d766` corrigió el fallback de contexto de comando, el bounding de flags en variantes
18
+ Click/Typer, las rutas POSIX del workspace y la configuración de salida del job Windows.
19
+ - `434d0e2` excluyó `_cache` runtime del `content_id` y añadió la regresión frío/caliente.
20
+ - `cd3f8f1` añadió un sweep final del parse cache para no dejar el último intervalo sin
21
+ eviction al terminar una invocación.
22
+ - `e9f5861` definió `--ci` para migraciones como gate de `migration_blocking_count`, y
23
+ `49187f9` etiqueta explícitamente los benchmarks históricos antes de reutilizarlos.
24
+ - `3d56d11` reinició la observabilidad de caché por invocación, evitando que una ejecución
25
+ embebida contamine el tamaño o el estado de la siguiente.
26
+ - La batería completa pasa en verde usando directorios separados para
27
+ `SOURCECODE_CONTEXT_CACHE_DIR` y `SOURCECODE_CACHE_DIR`. Configurar sólo uno produce
28
+ falsos fallos de snapshots/RIS.
29
+ - `ASK-DET-002`, `B-26` y `ASK-GATE-001` tienen fix en el checkout y batería dirigida verde;
30
+ falta validar el wheel/CI Windows para cerrar la evidencia externa.
31
+ - `ASK-UX-001`, `ASK-UX-002` y `ASK-ENV-001` tienen corrección o mitigación en el checkout,
32
+ pero requieren verificación del wheel publicado y un job Windows verde antes de cerrarse.
33
+ - `B-11` tiene mitigación de comunicación en el checkout; la regeneración numérica de
34
+ anclas requiere una captura reproducible posterior. Siguen abiertos `ASK-PERF-003` y la
35
+ reconciliación `B-13`/`B-14`; las filas sin cita y `B-30` permanecen como deuda P3.
36
+
37
+ ### Cola vigente después de `HEAD 3d56d11`
38
+
39
+ | Estado | IDs | Siguiente evidencia requerida |
40
+ |---|---|---|
41
+ | Fix local / validación externa | `ASK-DET-002`, `B-26`, `ASK-GATE-001` | Confirmar wheel publicado y batería Windows/GitHub. |
42
+ | Mitigación local / dato pendiente | `B-11` | Capturar benchmarks con build, commit y protocolo actuales. |
43
+ | Validación | `ASK-UX-001`, `ASK-UX-002`, `ASK-ENV-001` | Repetir contra wheel exacto y confirmar batería Windows en CI. |
44
+ | Investigación | `ASK-PERF-003`, `B-13`/`B-14` | Medición aislada y reproducción con artefacto/par exactos. |
45
+ | Futuro | Gate PR, contexto acotado, migración Boot/Java, provenance HTTP, SARIF | Plan de producto posterior a los contratos de confianza. |
46
+
47
+ ## Veredicto ejecutivo
48
+
49
+ El informe no demuestra una regresión funcional del analizador. Sí demuestra un defecto
50
+ de determinismo/procedencia en el payload raíz, varios contratos de producto incompletos y
51
+ una divergencia de entorno Windows que no puede darse por cerrada desde macOS/Linux.
52
+
53
+ La prioridad de la siguiente iteración no es optimizar todas las cifras de tiempo: es hacer
54
+ que una misma respuesta sea estable, explicable y utilizable en CI. Sin esa base, los
55
+ benchmarks y la procedencia pierden valor comercial.
56
+
57
+ ## Bugs y regresiones prioritarios
58
+
59
+ | Prioridad | ID | Resultado de la auditoría | Decisión |
60
+ |---|---|---|---|
61
+ | P1 | `ASK-DET-002` | `ask . --output raw1.json` produjo dos `content_id` para el mismo árbol: `8e3a1cd54154e2eb` en frío y `f81481e0fea47e02` en caliente. Las 20 diferencias están en `_cache` (`cache_source`, `ris_exists`, `ris_git_head`, `ris_is_stale`). | **Bug confirmado.** El hash de contenido incluye estado de ejecución. Separar respuesta analítica de metadatos de ejecución, o excluir `_cache` del `content_id`; añadir prueba frío/caliente y estabilidad tras repetir. |
62
+ | P1 | `B-26` / `ASK-17` | En la flota de 16 repositorios el parse cache alcanzó aproximadamente 559.48 MB frente a un presupuesto de 512 MB, con 25.560 entradas. | **Problema de capacidad confirmado, no fallo aislado de análisis.** Publicar exceso, política de eviction y estado efectivo; decidir si el límite es por workspace, usuario o flota antes de prometer escala empresarial. |
63
+ | P1/P2 | `ASK-UX-001` / `N-01` | El bloque “Runs now” sigue presentando `posture . --diff dev:prod` y `endpoints .` sin una forma de acotar el resultado. | **Residuo confirmado en el artefacto auditado.** El generador ya se corrigió parcialmente en el checkout; falta verificar el wheel publicado y cubrir la población completa del bloque. |
64
+ | P1/P2 | `ASK-UX-002` | El sistema de sugerencias entra en ciclo: sin flags ofrece `--compact`/`--limit`; con uno ofrece el otro; ambas variantes producen exactamente 71.722 tokens. | **Bug confirmado.** Las sugerencias deben ser conscientes del comando, del camino de renderizado y de `flags_already_passed`; nunca recomendar una transformación que no reduzca el payload. |
65
+ | P1/P2 | `ASK-ENV-001` | En Windows, 9/9 payloads llegaron con `envelope_status=degraded`, `command=unknown` y razón “the running command could not be named”. | **Regresión ambiental pendiente de reproducir.** No contradice la prueba local, pero sí invalida declarar el caso cerrado. El pipeline Windows debe fallar si el contrato se degrada sin base explícita. |
66
+ | P2 | `ASK-GATE-001` | `spring-audit --ci` y `risk --ci` devuelven el contrato de gate; `migrate-check --ci` y `migrate-apply --ci` rechazan la opción. | **Contrato inconsistente confirmado.** Definir por comando si `--ci` es gate de completitud, gate de findings o no aplica; después alinear help, exit code, schema y pruebas. No añadir la bandera por simetría sin definir su semántica. |
67
+ | P2 | `B-11` | 16 de 19 anclas de coste siguen referenciando `5.1.0`; una referencia `5.8.23`. | **Deuda de credibilidad.** No rompe el análisis, pero debilita cualquier benchmark comercial. Regenerar anclas o marcarlas explícitamente como históricas y exigir versión/build en cada cifra. |
68
+ | P2 | `ASK-PERF-003` | Varios comandos parecen más lentos que en `5.8.24`, mientras `export --c4` mejora y `ask --compact` también. | **No es regresión confirmada.** El auditor identifica contaminación por ejecuciones concurrentes y estados de caché. Repetir en aislamiento, con protocolo frío/sembrado/caliente y al menos tres muestras antes de abrir un fix. |
69
+ | P3 | Cierre de auditoría | 25 filas cerradas permanecen sin cita (`uncited`). | **Higiene de procedencia.** Automatizar la cita o etiquetar la ausencia intencionada; no bloquear una release salvo que afecte a una afirmación comercial. |
70
+ | P3 | `B-30` | 20 contratos arquitectónicos aparecen como `forbid_finding` y no utilizan la población “17 endpoints / 39 tipos”. | **Oportunidad futura.** Convertirlo en producto sólo cuando existan contratos positivos, tipos útiles y una explicación de por qué una regla no aplica. |
71
+ | Reconciliación | `B-13` / `B-14` | El informe externo observa identidad ausente y una negativa byte-identical; el re-audit del checkout documenta identidad y no reproduce el caso `mall`/`nacos`. | **No reabrir automáticamente.** Reproducir contra el wheel exacto y el par exacto del informe. Si reproduce, prevalece el test de población; si no, registrar discrepancia de artefacto, no un bug nuevo. |
72
+
73
+ ## Qué no se clasifica como regresión
74
+
75
+ - No hay regresión funcional demostrada, crash, traceback, escritura o mutación del repositorio auditado.
76
+ - Las diferencias de tiempos no son atribuibles todavía a una versión: faltan ejecuciones aisladas y control de caché.
77
+ - El resultado de “clean repo no encuentra riesgo” no es un bug; es el límite correcto del análisis. Debe expresarse como no-cobertura, no maquillarse como finding.
78
+ - `data-exposure` sin labels/configuración suficiente es una limitación de entrada y onboarding, no una vulnerabilidad del motor.
79
+
80
+ ## Recomendaciones del auditor, validadas como CTO
81
+
82
+ | Recomendación | Validación | Acción de producto |
83
+ |---|---|---|
84
+ | Priorizar un gate semántico de PR | **Alta.** Es la demostración más directa de valor: cambio concreto, finding accionable, evidencia `file:line` y exit code. | Convertir `pack gate --since <ref>` en workflow de referencia y medir findings por PR, severidad y bugs evitados. |
85
+ | Entregar contexto acotado para agentes | **Alta.** Reduce tokens y tiempo de integración; ya hay evidencia de payloads bajo techo. | Consolidar `--compact`, `--agent` y `prepare-context` con límites verificables y KPI de tokens/call y éxito de tarea. |
86
+ | Inventario Boot 2→3 / Java LTS | **Alta.** Tiene comprador, urgencia y unidad de trabajo clara: archivo, línea, bloqueo y esfuerzo. | Hacer de `migrate-check` + recipe el segundo caso comercial, con blockers/lines/days como métricas. |
87
+ | HTTP exposure con provenance | **Alta.** Es defendible ante seguridad si cada ruta lleva fuente, declaración, postura y límites. | Completar `endpoints` + `posture` + `explain-endpoint`, incluyendo negativas y población. |
88
+ | Enriquecimiento SARIF de Semgrep/CodeQL | **Media-alta, después de lo anterior.** Amplía distribución sin competir construyendo otro SAST. | Mantenerlo como integración: anclar, componer y explicar findings externos; medir porcentaje alcanzable por request no autenticada. |
89
+ | Mejorar hints, CI y envelope | **Imprescindible, aunque no sea una feature vendible por sí sola.** Son prerequisitos de confianza y adopción. | Tratar `ASK-DET-002`, UX-001/002, ENV-001 y GATE-001 como condición de calidad de la siguiente iteración. |
90
+ | Resolver primero el cache de flota | **Válida con matiz.** Es capacidad y coste operativo, no el “holy shit” comercial. | Añadir límites observables y eviction; no convertirlo en iniciativa principal hasta fijar el modelo de workspace/flota. |
91
+
92
+ ### Recomendación propia
93
+
94
+ La próxima demo debe ser un flujo completo de cambio, no un catálogo de comandos:
95
+
96
+ ```text
97
+ PR con cambio Spring -> pack gate -> findings file:line -> impacto transitivo
98
+ -> endpoints/posture -> decisión CI -> contexto compacto para remediación
99
+ ```
100
+
101
+ El entregable comercial debe responder tres preguntas en una página: **qué cambió, qué
102
+ riesgo nuevo introduce y qué queda explícitamente fuera del alcance**. El KPI principal no
103
+ debe ser el número de findings, sino el tiempo hasta una decisión defendible y la proporción
104
+ de resultados con unidad, población, evidencia y exclusión negativa.
105
+
106
+ ## Criterios de aceptación para próximas iteraciones
107
+
108
+ 1. Dos ejecuciones frío/caliente del mismo árbol producen el mismo `content_id`; cualquier diferencia de ejecución vive bajo `_meta` y se declara como tal.
109
+ 2. El bloque de inicio sólo recomienda comandos que pueden ejecutarse dentro del techo con la bandera que realmente los acota.
110
+ 3. Ningún hint propone un flag ya usado o semánticamente ineficaz; la batería cubre todas las combinaciones publicadas.
111
+ 4. Cada comando que anuncie `--ci` documenta su gate, exit code, base y comportamiento ante resultado parcial; los demás lo rechazan de forma explícita y coherente.
112
+ 5. Windows ejecuta la batería de envelope y no permite publicar `command=unknown` como éxito silencioso.
113
+ 6. Cada benchmark comercial incluye build, commit, tamaño de población, estado de caché, número de muestras y protocolo de aislamiento.
114
+ 7. La demo PR/migración genera evidencia de fuente, población, límites y exclusiones negativas; sin esos campos el resultado se marca no concluyente.
115
+
116
+ ## Estado documental
117
+
118
+ Este documento registra el informe externo y su evaluación independiente. El estado maestro
119
+ de cada fila continúa en [`DEFECT-LEDGER.md`](DEFECT-LEDGER.md). Las diferencias entre wheel
120
+ auditado y checkout deben resolverse mediante reproducción contra el artefacto exacto, no
121
+ mediante una actualización manual del estado.