sourcecode 5.8.27__tar.gz → 5.8.28__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 (424) hide show
  1. {sourcecode-5.8.27 → sourcecode-5.8.28}/CHANGELOG.md +8 -0
  2. {sourcecode-5.8.27 → sourcecode-5.8.28}/PKG-INFO +5 -5
  3. {sourcecode-5.8.27 → sourcecode-5.8.28}/README.md +4 -4
  4. sourcecode-5.8.28/docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md +52 -0
  5. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/DEFECT-LEDGER.md +8 -0
  6. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/DEVELOPMENT-ROADMAP.md +19 -0
  7. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/RC1-CHECKLIST.md +1 -1
  8. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/USER_GUIDE.md +6 -2
  9. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/REGRESSION-GATE.md +8 -1
  10. {sourcecode-5.8.27 → sourcecode-5.8.28}/pyproject.toml +1 -1
  11. {sourcecode-5.8.27 → sourcecode-5.8.28}/scripts/perf_harness.py +4 -1
  12. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/__init__.py +1 -1
  13. sourcecode-5.8.28/src/sourcecode/__main__.py +7 -0
  14. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/cache_model.py +2 -1
  15. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/cli.py +9 -3
  16. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detach.py +5 -6
  17. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/security_config_scan.py +23 -0
  18. {sourcecode-5.8.27 → sourcecode-5.8.28}/.github/workflows/build-windows.yml +0 -0
  19. {sourcecode-5.8.27 → sourcecode-5.8.28}/.github/workflows/perf-gate.yml +0 -0
  20. {sourcecode-5.8.27 → sourcecode-5.8.28}/.github/workflows/windows-battery.yml +0 -0
  21. {sourcecode-5.8.27 → sourcecode-5.8.28}/.gitignore +0 -0
  22. {sourcecode-5.8.27 → sourcecode-5.8.28}/.ruff.toml +0 -0
  23. {sourcecode-5.8.27 → sourcecode-5.8.28}/CLAUDE.md +0 -0
  24. {sourcecode-5.8.27 → sourcecode-5.8.28}/CODE_OF_CONDUCT.md +0 -0
  25. {sourcecode-5.8.27 → sourcecode-5.8.28}/CONTRIBUTING.md +0 -0
  26. {sourcecode-5.8.27 → sourcecode-5.8.28}/LICENSE +0 -0
  27. {sourcecode-5.8.27 → sourcecode-5.8.28}/NOTICE +0 -0
  28. {sourcecode-5.8.27 → sourcecode-5.8.28}/SECURITY.md +0 -0
  29. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/AUDIT-2026-08-22-5.8.22.md +0 -0
  30. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/AUDIT-2026-08-23-5.8.24.md +0 -0
  31. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/AUDIT-2026-08-23-COMMERCIAL.md +0 -0
  32. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/AUDIT-2026-08-23-CORPUS-AMPLIADO.md +0 -0
  33. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.25.md +0 -0
  34. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/AUDIT-2026-08-23-EXTERNAL-5.8.26.md +0 -0
  35. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/AUDIT-2026-08-23-THINGSBOARD-FINDINGS.md +0 -0
  36. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/AUDIT-2026-08-26-EXTERNAL-5.8.26.md +0 -0
  37. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/AUDIT-TESTING-CORPUS-2026-08-22.md +0 -0
  38. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/CACHE.md +0 -0
  39. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/COMMERCIAL-OFFER.md +0 -0
  40. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/CUSTOMER-VALIDATION.md +0 -0
  41. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/DEMO-5MIN.md +0 -0
  42. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/DOCUMENTATION-HYGIENE-2026-08-23.md +0 -0
  43. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/EXECUTION-PLAN-12MO.md +0 -0
  44. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/EXECUTIVE-ROADMAP.md +0 -0
  45. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/MANUAL-USUARIO.md +0 -0
  46. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/MODERNIZATION.md +0 -0
  47. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/PRODUCT-ROUTE.md +0 -0
  48. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/PRODUCT_AUDIT.md +0 -0
  49. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/PRODUCT_IDENTITY.md +0 -0
  50. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/PRODUCT_TIERS.md +0 -0
  51. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/RELEASE-CHECKLIST.md +0 -0
  52. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
  53. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/DESIGN-assessment-deployment-evidence.md +0 -0
  54. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/DESIGN-assessment-report.md +0 -0
  55. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/DESIGN-build-closure-provenance.md +0 -0
  56. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
  57. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
  58. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
  59. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
  60. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
  61. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
  62. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/DESIGN-pack-gate-ci.md +0 -0
  63. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/DESIGN-pack-manifest.md +0 -0
  64. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/DESIGN-pack-mcp-api.md +0 -0
  65. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
  66. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
  67. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/EPV-p6-class-typeref.md +0 -0
  68. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
  69. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
  70. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
  71. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
  72. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/adr/0001-semantic-ir.md +0 -0
  73. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
  74. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
  75. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
  76. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
  77. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/adr/0006-performance-harness.md +0 -0
  78. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/adr/0007-composition-semantics.md +0 -0
  79. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/adr/0008-answer-coherence.md +0 -0
  80. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/consumer-disposition-inventory.md +0 -0
  81. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/overview.md +0 -0
  82. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/product-architecture-review.md +0 -0
  83. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/product-strategy-layering.md +0 -0
  84. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
  85. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/architecture/semantic-ir-roadmap.md +0 -0
  86. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/baseline-ci.yml +0 -0
  87. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/commercial-pipeline-audit.md +0 -0
  88. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/contracts-ci.yml +0 -0
  89. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/contracts.md +0 -0
  90. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
  91. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
  92. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
  93. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
  94. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
  95. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
  96. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
  97. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
  98. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/licensing-schema.md +0 -0
  99. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/migrate-check.md +0 -0
  100. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/pack-gate-github-actions.yml +0 -0
  101. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/pack-gate-gitlab.yml +0 -0
  102. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/README.md +0 -0
  103. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
  104. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
  105. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
  106. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
  107. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
  108. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
  109. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
  110. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
  111. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
  112. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
  113. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
  114. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
  115. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
  116. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
  117. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
  118. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
  119. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
  120. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
  121. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
  122. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
  123. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
  124. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
  125. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
  126. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
  127. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
  128. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
  129. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
  130. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
  131. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
  132. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
  133. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
  134. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
  135. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
  136. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
  137. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
  138. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
  139. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
  140. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
  141. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
  142. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
  143. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
  144. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
  145. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/gate-latest/README.md +0 -0
  146. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
  147. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
  148. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
  149. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
  150. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
  151. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
  152. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/baselines/reference-best/README.md +0 -0
  153. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/perf/corpus-testing-2026-08-22.md +0 -0
  154. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/posture.md +0 -0
  155. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/privacy.md +0 -0
  156. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/pro-experience-audit.md +0 -0
  157. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/schema.md +0 -0
  158. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/spec/envelope-v1.md +0 -0
  159. {sourcecode-5.8.27 → sourcecode-5.8.28}/docs/spring-audit-ci.yml +0 -0
  160. {sourcecode-5.8.27 → sourcecode-5.8.28}/hatch_build.py +0 -0
  161. {sourcecode-5.8.27 → sourcecode-5.8.28}/scripts/compare_integration_engines.py +0 -0
  162. {sourcecode-5.8.27 → sourcecode-5.8.28}/scripts/customer_smoke_test.sh +0 -0
  163. {sourcecode-5.8.27 → sourcecode-5.8.28}/scripts/generate_jdk_exports.py +0 -0
  164. {sourcecode-5.8.27 → sourcecode-5.8.28}/scripts/perf_gate.py +0 -0
  165. {sourcecode-5.8.27 → sourcecode-5.8.28}/scripts/sync_gate_anchors.py +0 -0
  166. {sourcecode-5.8.27 → sourcecode-5.8.28}/scripts/test_fast.sh +0 -0
  167. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/adaptive_scanner.py +0 -0
  168. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/analysis_budget.py +0 -0
  169. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/answer_bounds.py +0 -0
  170. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/archetype.py +0 -0
  171. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/architectural_baseline.py +0 -0
  172. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/architectural_delta.py +0 -0
  173. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/architecture_analyzer.py +0 -0
  174. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/architecture_summary.py +0 -0
  175. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/ast_extractor.py +0 -0
  176. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/audit_clusters.py +0 -0
  177. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/audit_recipe.py +0 -0
  178. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/audit_report.py +0 -0
  179. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/audit_since.py +0 -0
  180. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/baseline_autocapture.py +0 -0
  181. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/breaking_changes.py +0 -0
  182. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/build_modules.py +0 -0
  183. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/build_stamp.py +0 -0
  184. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/bundled_docs.py +0 -0
  185. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/cache.py +0 -0
  186. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/cache_observation.py +0 -0
  187. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/call_surface.py +0 -0
  188. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/caller_metrics.py +0 -0
  189. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/caller_reach.py +0 -0
  190. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/canonical_ir.py +0 -0
  191. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/chain_rules.py +0 -0
  192. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/change_plan.py +0 -0
  193. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/ci_output.py +0 -0
  194. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/cir_graphs.py +0 -0
  195. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/classifier.py +0 -0
  196. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/client_calls.py +0 -0
  197. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/code_notes_analyzer.py +0 -0
  198. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/compare.py +0 -0
  199. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/confidence_analyzer.py +0 -0
  200. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/constraint_diff.py +0 -0
  201. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/consumer_join.py +0 -0
  202. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/container_wiring.py +0 -0
  203. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/context_cache.py +0 -0
  204. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/context_graph.py +0 -0
  205. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/context_scorer.py +0 -0
  206. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/context_summarizer.py +0 -0
  207. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/contract_diff.py +0 -0
  208. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/contract_init.py +0 -0
  209. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/contract_model.py +0 -0
  210. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/contract_pipeline.py +0 -0
  211. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/coverage_parser.py +0 -0
  212. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/data_exposure.py +0 -0
  213. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/data_labels.py +0 -0
  214. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/declarations.py +0 -0
  215. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/defect_classes/__init__.py +0 -0
  216. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/defect_classes/registry.json +0 -0
  217. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/defect_identity.py +0 -0
  218. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/degradation.py +0 -0
  219. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/dependency_analyzer.py +0 -0
  220. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/deployment_prefix.py +0 -0
  221. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/__init__.py +0 -0
  222. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/base.py +0 -0
  223. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/csproj_parser.py +0 -0
  224. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/dart.py +0 -0
  225. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/dotnet.py +0 -0
  226. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/elixir.py +0 -0
  227. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/go.py +0 -0
  228. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/heuristic.py +0 -0
  229. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/hybrid.py +0 -0
  230. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/java.py +0 -0
  231. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/jvm_ext.py +0 -0
  232. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/nodejs.py +0 -0
  233. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/parsers.py +0 -0
  234. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/php.py +0 -0
  235. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/project.py +0 -0
  236. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/python.py +0 -0
  237. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/ruby.py +0 -0
  238. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/rust.py +0 -0
  239. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/systems.py +0 -0
  240. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/terraform.py +0 -0
  241. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/detectors/tooling.py +0 -0
  242. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/doc_analyzer.py +0 -0
  243. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/dynamic_argument_surface.py +0 -0
  244. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/empty_reach.py +0 -0
  245. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/endpoint_disposition.py +0 -0
  246. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/endpoint_literals.py +0 -0
  247. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/endpoint_metrics.py +0 -0
  248. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/entrypoint_classifier.py +0 -0
  249. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/env_analyzer.py +0 -0
  250. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/envelope.py +0 -0
  251. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/environment_resolution.py +0 -0
  252. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/error_schema.py +0 -0
  253. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/evidence_provider.py +0 -0
  254. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/execution_plan.py +0 -0
  255. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/explain.py +0 -0
  256. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/explain_endpoint.py +0 -0
  257. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/facts/__init__.py +0 -0
  258. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/facts/registry.json +0 -0
  259. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/field_deprecations.py +0 -0
  260. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/file_chunker.py +0 -0
  261. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/file_classifier.py +0 -0
  262. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/filter_surface.py +0 -0
  263. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/format_contract.py +0 -0
  264. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/fqn_utils.py +0 -0
  265. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/functional_routes.py +0 -0
  266. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/gate_anchors.py +0 -0
  267. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/git_analyzer.py +0 -0
  268. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/git_checkout.py +0 -0
  269. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/github_diff.py +0 -0
  270. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/graph_analyzer.py +0 -0
  271. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/graph_evidence.py +0 -0
  272. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/hibernate_strat.py +0 -0
  273. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/identity_fallback.py +0 -0
  274. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/integration_coordinates.py +0 -0
  275. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/jdk_exports.py +0 -0
  276. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/license.py +0 -0
  277. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/manifest_cache.py +0 -0
  278. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/mcp/__init__.py +0 -0
  279. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/mcp/dependency_import.py +0 -0
  280. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  281. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  282. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  283. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  284. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  285. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/mcp/orchestrator.py +0 -0
  286. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/mcp/registry.py +0 -0
  287. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/mcp/runner.py +0 -0
  288. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/mcp/server.py +0 -0
  289. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/mcp_nudge.py +0 -0
  290. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/metrics_analyzer.py +0 -0
  291. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/migrate_check.py +0 -0
  292. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/migration_apply.py +0 -0
  293. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/migration_blast.py +0 -0
  294. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/non_coverage.py +0 -0
  295. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/openapi_surface.py +0 -0
  296. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/openrewrite_recipe.py +0 -0
  297. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/output_bounds.py +0 -0
  298. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/output_budget.py +0 -0
  299. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/output_ceiling.py +0 -0
  300. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/output_encoding.py +0 -0
  301. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/output_sink.py +0 -0
  302. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/pack_manifest.py +0 -0
  303. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/packs.py +0 -0
  304. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/parallel.py +0 -0
  305. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/parse_cache.py +0 -0
  306. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/partial_contract.py +0 -0
  307. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/path_admission.py +0 -0
  308. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/path_filters.py +0 -0
  309. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/perf.py +0 -0
  310. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/phased_run.py +0 -0
  311. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/pipe_contract.py +0 -0
  312. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/posture.py +0 -0
  313. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/pr_comment_renderer.py +0 -0
  314. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/pr_impact.py +0 -0
  315. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/prepare_context.py +0 -0
  316. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/product_info.py +0 -0
  317. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/progress.py +0 -0
  318. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/provenance.py +0 -0
  319. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/ranking_engine.py +0 -0
  320. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/readiness_timeline.py +0 -0
  321. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/readonly.py +0 -0
  322. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/reconciliation.py +0 -0
  323. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/redactor.py +0 -0
  324. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/reference_facts.py +0 -0
  325. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/regress.py +0 -0
  326. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/release_info.py +0 -0
  327. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/relevance_scorer.py +0 -0
  328. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/remediation_diff.py +0 -0
  329. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/remedies.py +0 -0
  330. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/rename_refactor.py +0 -0
  331. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/repo_classifier.py +0 -0
  332. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/repository_ir.py +0 -0
  333. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/resource_budget.py +0 -0
  334. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/__init__.py +0 -0
  335. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/context.py +0 -0
  336. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/errors.py +0 -0
  337. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/executor.py +0 -0
  338. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/planner.py +0 -0
  339. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/query.py +0 -0
  340. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/request.py +0 -0
  341. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/resolution.py +0 -0
  342. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/result.py +0 -0
  343. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/retriever.py +0 -0
  344. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/runtime.py +0 -0
  345. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/steps.py +0 -0
  346. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
  347. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/steps_graph.py +0 -0
  348. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/steps_impact.py +0 -0
  349. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/steps_intf.py +0 -0
  350. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/steps_struct.py +0 -0
  351. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/retrieval/steps_txsec.py +0 -0
  352. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/ris.py +0 -0
  353. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/risk.py +0 -0
  354. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/risk_model.py +0 -0
  355. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/rule_catalog.py +0 -0
  356. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/rule_pass.py +0 -0
  357. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/runs.py +0 -0
  358. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/runtime_classifier.py +0 -0
  359. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/sarif.py +0 -0
  360. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/sarif_emit.py +0 -0
  361. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/scanner.py +0 -0
  362. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/schema.py +0 -0
  363. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/schema_producers.py +0 -0
  364. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/schema_registry.py +0 -0
  365. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/schemas/core-analysis-v1.schema.json +0 -0
  366. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/schemas/endpoints-v1.schema.json +0 -0
  367. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
  368. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/schemas/pr-impact-v1.schema.json +0 -0
  369. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/schemas/verify-edit-v1.schema.json +0 -0
  370. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/schemas/verify-v1.schema.json +0 -0
  371. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/security_chain.py +0 -0
  372. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/security_config.py +0 -0
  373. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/security_posture.py +0 -0
  374. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/selection_contract.py +0 -0
  375. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/selftest.py +0 -0
  376. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/semantic_analyzer.py +0 -0
  377. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/semantic_impact_engine.py +0 -0
  378. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/semantic_integration_engine.py +0 -0
  379. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/semantic_services.py +0 -0
  380. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/serializer.py +0 -0
  381. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/servlet_surface.py +0 -0
  382. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/source_text.py +0 -0
  383. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/spring_event_topology.py +0 -0
  384. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/spring_findings.py +0 -0
  385. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/spring_impact.py +0 -0
  386. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/spring_model.py +0 -0
  387. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/spring_profiles.py +0 -0
  388. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/spring_properties.py +0 -0
  389. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/spring_security_audit.py +0 -0
  390. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/spring_semantic.py +0 -0
  391. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/spring_tx_analyzer.py +0 -0
  392. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/sql_taint.py +0 -0
  393. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/summarizer.py +0 -0
  394. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/target_admission.py +0 -0
  395. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/telemetry/__init__.py +0 -0
  396. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/telemetry/config.py +0 -0
  397. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/telemetry/consent.py +0 -0
  398. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/telemetry/events.py +0 -0
  399. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/telemetry/filters.py +0 -0
  400. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/telemetry/transport.py +0 -0
  401. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/test_gap_ranking.py +0 -0
  402. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/test_sources.py +0 -0
  403. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/text_input.py +0 -0
  404. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/timeline.py +0 -0
  405. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/timeline_cache.py +0 -0
  406. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/token_estimate.py +0 -0
  407. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/tree_utils.py +0 -0
  408. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/type_usage_surface.py +0 -0
  409. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/validation_inference.py +0 -0
  410. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/validation_surface.py +0 -0
  411. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/verify_edit.py +0 -0
  412. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/verify_repo.py +0 -0
  413. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/verify_rules.py +0 -0
  414. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/version_check.py +0 -0
  415. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/waivers.py +0 -0
  416. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/wired_surface.py +0 -0
  417. {sourcecode-5.8.27 → sourcecode-5.8.28}/src/sourcecode/workspace.py +0 -0
  418. {sourcecode-5.8.27 → sourcecode-5.8.28}/supabase/functions/README.md +0 -0
  419. {sourcecode-5.8.27 → sourcecode-5.8.28}/supabase/functions/get-license/index.ts +0 -0
  420. {sourcecode-5.8.27 → sourcecode-5.8.28}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
  421. {sourcecode-5.8.27 → sourcecode-5.8.28}/supabase/functions/telemetry/index.ts +0 -0
  422. {sourcecode-5.8.27 → sourcecode-5.8.28}/supabase/sql/license_event_ordering.sql +0 -0
  423. {sourcecode-5.8.27 → sourcecode-5.8.28}/supabase/sql/licensing_schema.sql +0 -0
  424. {sourcecode-5.8.27 → sourcecode-5.8.28}/supabase/sql/telemetry_events.sql +0 -0
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.8.28] — 2026-08-26
4
+
5
+ *Audit remediation release. Detached workers now use an executable package entry
6
+ point; DEAD-001 ignores explanatory annotation prose; posture diffs honour the
7
+ compact size contract; and non-interactive selftest runs publish nested-scope
8
+ warnings. Help and audit documentation are synchronized with the remaining
9
+ performance investigation.*
10
+
3
11
  ## [5.8.27] — 2026-08-26
4
12
 
5
13
  *Audit remediation release. Detached workers avoid the Windows console shim,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 5.8.27
3
+ Version: 5.8.28
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.8.27-blue)
62
+ ![Version](https://img.shields.io/badge/version-5.8.28-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
@@ -177,13 +177,13 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
177
177
  answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
178
178
  unset, or set it to `0`, to disable the ceiling explicitly.
179
179
 
180
- **Current performance status.** Release 5.8.27 retains the shared Canonical IR
180
+ **Current performance status.** Release 5.8.28 retains the shared Canonical IR
181
181
  path used by `validation` and now passes that same CIR into labelled `data-exposure`
182
182
  runs; the no-label path remains parse-free. These are implementation properties,
183
183
  not duration promises. A controlled external warm-path audit has opened performance
184
184
  and bounded-output regressions for this release; use `ask cache model <repo>` and
185
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
186
+ [active audit intake](docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md) before treating a
187
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
@@ -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.27 — and, on a build that has aged,
213
+ ask version # ask 5.8.28 — and, on a build that has aged,
214
214
  # how many releases have probably shipped since
215
215
  ```
216
216
 
@@ -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.27-blue)
13
+ ![Version](https://img.shields.io/badge/version-5.8.28-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,13 +128,13 @@ 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.27 retains the shared Canonical IR
131
+ **Current performance status.** Release 5.8.28 retains the shared Canonical IR
132
132
  path used by `validation` and now passes that same CIR into labelled `data-exposure`
133
133
  runs; the no-label path remains parse-free. These are implementation properties,
134
134
  not duration promises. A controlled external warm-path audit has opened performance
135
135
  and bounded-output regressions for this release; use `ask cache model <repo>` and
136
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
137
+ [active audit intake](docs/AUDIT-2026-08-26-EXTERNAL-5.8.27.md) before treating a
138
138
  historical timing or bounded flag as a current guarantee.
139
139
 
140
140
  **What a warm actually covers.** `ask cache warm` runs the compact analysis: it rebuilds the
@@ -161,7 +161,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
161
161
  # pip / pipx
162
162
  pipx install sourcecode # or: pip install sourcecode
163
163
 
164
- ask version # ask 5.8.27 — and, on a build that has aged,
164
+ ask version # ask 5.8.28 — and, on a build that has aged,
165
165
  # how many releases have probably shipped since
166
166
  ```
167
167
 
@@ -0,0 +1,52 @@
1
+ # ASK Engine 5.8.27 - External Audit Intake
2
+
3
+ **Received:** 2026-08-26
4
+ **Audited artefact:** `5.8.27`, Windows 11, Git Bash/MSYS and native PowerShell
5
+ **Comparison:** the prior `5.8.26` audit and the current release artefact
6
+
7
+ This audit contains two assessments. The first confirms the semantic fixes; the
8
+ technical follow-up supplies a reproducible root cause for detached execution
9
+ and adds a bounded-output defect. The follow-up is the authoritative state for
10
+ those rows.
11
+
12
+ ## Findings
13
+
14
+ | ID | Priority | Status | Finding and acceptance criterion |
15
+ |---|---:|---|---|
16
+ | `AUD-603-R01` | P1 | implemented, pending Windows verification | `--detach` now uses executable `sourcecode/__main__.py` through `python -m sourcecode`, rather than the inert `sourcecode.cli` module. Focused worker and package-entry tests pass; MSYS, PowerShell and parent-lifetime verification remains release evidence. |
17
+ | `AUD-603-S01` | P1 | implemented | `DEAD-001` now requires a Java comment to have annotation-directive shape before reporting it. Prose mentioning an annotation is ignored; true line/block commented annotations and existing security controls pass the focused battery. |
18
+ | `AUD-603-O01` | P2 | implemented | `posture --compact` now applies registered cuts without the monotone optimisation that could revert them on large diffs. Nested endpoint/security lists remain bounded and the diff battery passes. |
19
+ | `AUD-603-P01` | P2 | confirmed regression, investigation open | Two cold `5.8.27` measurements were about 174s and 184s versus one historical `5.8.26` measurement around 116s. `parsing manifests` consumed about 113s in one run despite one `pom.xml`. Reproduce with three controlled runs per release and profile before attributing or optimizing. |
20
+ | `AUD-603-U01` | P3 | implemented | Root help now labels the `31s @ 5.1.0` figure as a historical field anchor before presenting it. No current timing is claimed until a controlled benchmark exists. |
21
+ | `AUD-603-U02` | P3 | implemented, pending field verification | `selftest` now emits the nested-repository scope warning directly to stderr even when non-interactive, while leaving JSON stdout unchanged. The local ledger battery passes; field verification remains release evidence. |
22
+
23
+ ## Confirmed closures and exclusions
24
+
25
+ - `AUD-602-S01` / `AUD-602-D01` are confirmed closed by the external re-test: SEC-004
26
+ has zero findings for the five Spring Security library shapes, and Boot 3 readiness is
27
+ `null` in all four non-applicable witnesses.
28
+ - `AUD-602-R01` is **not closed**. The previous direct-module fix is invalid because
29
+ `sourcecode.cli` has no module entry invocation. `AUD-603-R01` supersedes its status.
30
+ - `AUD-602-UX01` is **not closed**. Its communication residue is superseded by
31
+ `AUD-603-U01`, whose explicit headline label addresses the defect without inventing a
32
+ current benchmark.
33
+ - `AUD-602-UX02` is **not closed**. The warning is gated on TTY output, so it is absent in
34
+ the non-interactive case the audit cares about. It is superseded by `AUD-603-U02`.
35
+ - The Micronaut WebScripts message remains unconfirmed and requires no action.
36
+ - Root-only `--compact` on subcommands remains by design with a correct typed refusal.
37
+
38
+ ## Scope notes
39
+
40
+ The performance comparison is directionally concerning but not a release-to-release
41
+ experiment: it has two current cold samples and one historical sample, with no parallel
42
+ `5.8.26` environment. Treat it as a regression signal requiring controlled measurement,
43
+ not as proof of a particular parser bottleneck. No prompt-injection, path-traversal,
44
+ traceback, write-leakage or process-zombie issue was reported in this round.
45
+
46
+ ## Order
47
+
48
+ 1. `AUD-603-R01` - restore an actually executable detached worker entry point.
49
+ 2. `AUD-603-S01` - make DEAD-001 context-sensitive and add positive/negative controls.
50
+ 3. `AUD-603-O01` - resolve the posture diff compact/ceiling contract.
51
+ 4. `AUD-603-P01` - run the controlled cold benchmark and profile manifest parsing.
52
+ 5. `AUD-603-U01` / `AUD-603-U02` - align help and non-interactive scope communication.
@@ -16,6 +16,14 @@ The facts these rows are keyed to are published: `ask schema facts-v1` prints th
16
16
 
17
17
  ## Current Synchronization
18
18
 
19
+ **External `5.8.27` audit received, 2026-08-26 — `AUD-603`.** [`AUDIT-2026-08-26-EXTERNAL-5.8.27.md`](AUDIT-2026-08-26-EXTERNAL-5.8.27.md) confirms the SEC-004 and Boot 3 fixes, but reopens detached execution because the direct `python -m sourcecode.cli` worker exits without invoking `main_entry`. It adds a DEAD-001 comment-prose false positive, a `posture --diff --compact` output-ceiling contract defect, and a cold-performance regression signal requiring controlled profiling. The stale timing headline and non-interactive selftest scope warning remain open. WebScripts remains unconfirmed and root-only subcommand `--compact` remains by design.
20
+
21
+ **Current `5.8.27` queue:** `AUD-603-R01` · `AUD-603-S01` · `AUD-603-O01` · `AUD-603-P01` · `AUD-603-U01` · `AUD-603-U02`. This supersedes the earlier AUD-602 implementation-status note for the reopened rows; its historical commits remain evidence, not closure.
22
+
23
+ Implementation status on this branch: `R01`, `S01`, `O01`, `U01` and `U02` have isolated
24
+ fix commits and affected local batteries pass. Native Windows verification remains pending
25
+ for detached execution and field scope warnings; `P01` remains profiling-only.
26
+
19
27
  **External `5.8.26` audit received, 2026-08-26 — `AUD-602`.** [`AUDIT-2026-08-26-EXTERNAL-5.8.26.md`](AUDIT-2026-08-26-EXTERNAL-5.8.26.md) adds six actionable items: detached execution on Git Bash/MSYS, `SEC-004` false positives in Spring Security library code, inconsistent non-applicable `boot3_readiness`, manifest-parsing cost requiring profiling, stale root-help timing guidance, and an unguarded multi-repository `selftest` path. The initial root-command hang diagnosis is retracted after a controlled cold/warm retest; it is recorded as slow cold analysis plus insufficient progress communication, not a deadlock. The Micronaut WebScripts message remains unconfirmed, and root-only `--compact` on subcommands is a design choice with a correct `INVALID_USAGE` response, not a defect.
20
28
 
21
29
  **`AUD-602` attack order:** `AUD-602-R01` · `AUD-602-S01` · `AUD-602-D01` · `AUD-602-M01` · `AUD-602-UX01` · `AUD-602-UX02`. No item is closed from the report alone; Windows shell variants, original witness repositories and controlled profiling are required where stated.
@@ -3,6 +3,25 @@
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 — external audit of `5.8.27`, received 2026-08-26.** `AUD-603-R01` (P1,
7
+ > detached worker exits because the module entry point is not invoked) -> `AUD-603-S01`
8
+ > (P1, DEAD-001 comment-prose false positive) -> `AUD-603-O01` (P2, posture diff compact
9
+ > exceeds the output ceiling) -> `AUD-603-P01` (P2, cold-cost regression signal requiring
10
+ > controlled profiling) -> `AUD-603-U01` / `AUD-603-U02` (P3, stale timing headline and
11
+ > non-interactive selftest scope warning). Full evidence is in
12
+ > [`AUDIT-2026-08-26-EXTERNAL-5.8.27.md`](AUDIT-2026-08-26-EXTERNAL-5.8.27.md).
13
+
14
+ > **STATE CORRECTION — AUD-602.** The external re-test confirms `S01` and `D01`, but reopens
15
+ > detached execution and the two UX rows: `--detach` used a non-executable module form,
16
+ > historical-anchor labelling did not refresh the headline, and the selftest notice is
17
+ > suppressed in non-TTY runs. The prior implementation-status note is retained below as
18
+ > history; it is superseded by the `AUD-603` queue.
19
+
20
+ > **IMPLEMENTATION STATUS — AUD-603.** `R01`, `S01`, `O01`, `U01` and `U02` are implemented
21
+ > in isolated commits and pass the affected local batteries. `R01` and `U02` still require
22
+ > native Windows/field verification. `P01` remains investigation-only: no parser change is
23
+ > accepted until three controlled cold runs per release and an attributable profile exist.
24
+
6
25
  > **CURRENT QUEUE — external audit of `5.8.26`, received 2026-08-26.** `AUD-602-R01` (P1,
7
26
  > detached execution dies under Git Bash/MSYS) -> `AUD-602-S01` (P1, `SEC-004` false
8
27
  > positives in Spring Security library code) -> `AUD-602-D01` (P2, inconsistent non-applicable
@@ -8,7 +8,7 @@ tests, and the commercial story. RC-1 is ready when every box below is checked.
8
8
  ## 1. Documentation
9
9
  - [x] Single public brand — **ASK Engine** (CLI: `ask`) across README, `--help`,
10
10
  welcome, docs (Increment #2.3).
11
- - [x] Version drift removed; current docs align to `5.8.27`; `ask version` is authoritative.
11
+ - [x] Version drift removed; current docs align to `5.8.28`; `ask version` is authoritative.
12
12
  - [x] Offer defined — [`COMMERCIAL-OFFER.md`](COMMERCIAL-OFFER.md) (Free/Pro per capability).
13
13
  - [x] Flagship packaged — [`MODERNIZATION.md`](MODERNIZATION.md) (one product, one flow).
14
14
  - [x] Tiering doc current — [`PRODUCT_TIERS.md`](PRODUCT_TIERS.md) (incl. `migrate-check` freemium).
@@ -46,10 +46,14 @@ 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.8.27, `validation` enters through that shared CIR and `data-exposure` reuses one semantic
49
+ 5.8.28, `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
+ The current external audit intake is tracked in
54
+ [`AUDIT-2026-08-26-EXTERNAL-5.8.27.md`](AUDIT-2026-08-26-EXTERNAL-5.8.27.md); in
55
+ particular, detached execution and bounded output remain under verification.
56
+
53
57
  ---
54
58
 
55
59
  ## The semantic engine
@@ -178,7 +182,7 @@ pipx install sourcecode # isolated install, no venv needed
178
182
 
179
183
  # Verify
180
184
  ask version
181
- # ask 5.8.27
185
+ # ask 5.8.28
182
186
  ```
183
187
 
184
188
  Requires Python 3.9+.
@@ -47,9 +47,16 @@ threshold that lives in code cannot drift apart here, because there is only one.
47
47
  "posture",
48
48
  "risk",
49
49
  "modernize",
50
- "repo-ir"
50
+ "repo-ir",
51
+ "endpoints --servlets",
52
+ "validation --compact",
53
+ "posture --resolve-environments",
54
+ "verify --init --no-write"
51
55
  ],
52
56
  "command_args": {
57
+ "endpoints --servlets": [
58
+ "--compact"
59
+ ],
53
60
  "migrate-check": [
54
61
  "--compact"
55
62
  ],
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "5.8.27"
7
+ version = "5.8.28"
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"
@@ -131,7 +131,10 @@ def build_argv(command: str, repo_path: Path, cold: bool) -> list[str]:
131
131
  argv += shlex.split(command)
132
132
  if command == perf.CONTROL_COMMAND:
133
133
  argv += list(perf.STEADY_CONTROL_POSITIONAL_ARGS)
134
- argv.append(str(repo_path))
134
+ # Keep the gate identity stable across runners. Windows' `str(Path("/tmp/repo"))`
135
+ # becomes `\\tmp\\repo`, while the same synthetic repository is published as
136
+ # `/tmp/repo` in the gate contract and in baseline keys.
137
+ argv.append(repo_path.as_posix())
135
138
  argv += ["--format", "json"]
136
139
  # C3-110: some commands need an argument to be measurable at all, and the one
137
140
  # authority for which is `perf`, not this script and not a workflow.
@@ -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.8.27"
7
+ __version__ = "5.8.28"
@@ -0,0 +1,7 @@
1
+ """Module entry point used by detached workers and ``python -m sourcecode``."""
2
+
3
+ from sourcecode.cli import main_entry
4
+
5
+
6
+ if __name__ == "__main__":
7
+ main_entry()
@@ -830,7 +830,8 @@ def cost_sentence() -> str:
830
830
  f"({_gate_cell['cache_state']} cache, {_gate_cell['host_class']})."
831
831
  )
832
832
  return (
833
- f"Cost tracks the command class and the build, not the file count: "
833
+ f"Historical field anchor only: cost tracks the command class and the build, "
834
+ f"not the file count: "
834
835
  f"per-symbol queries are the fast path, inventory commands scale with "
835
836
  f"files, and a repository-wide audit measured {seconds:g} s on a "
836
837
  f"{_thousands(FIELD_ANCHOR_JAVA_FILES)}-file repository "
@@ -14182,7 +14182,12 @@ def posture_cmd(
14182
14182
  _posture_limit = 1 if data.get("summary", {}).get("unresolved", 0) else 0
14183
14183
  bound_lists(
14184
14184
  data, POSTURE_BOUNDED_LISTS, _posture_limit,
14185
- monotone=(limit is None and compact),
14185
+ # `--compact` is a size contract for agent output. The monotone
14186
+ # optimisation may keep a list whole when its disclosure costs more
14187
+ # than that individual cut, leaving a large diff above the ceiling.
14188
+ # An explicit --limit remains a precise shape request; compact must
14189
+ # actually remove every registered body.
14190
+ monotone=False,
14186
14191
  )
14187
14192
 
14188
14193
  _emit_command_output(
@@ -16421,10 +16426,11 @@ def selftest_cmd(
16421
16426
 
16422
16427
  nested = nested_repository_count(target)
16423
16428
  if nested:
16424
- _notice(
16429
+ typer.echo(
16425
16430
  f"selftest is scanning {nested} nested Git repository(s) under the "
16426
16431
  "implicit current-directory path; pass an explicit repository path "
16427
- "to scope the ledger run"
16432
+ "to scope the ledger run",
16433
+ err=True,
16428
16434
  )
16429
16435
  _enforce_format("selftest", format)
16430
16436
  selected = tuple(part.strip() for part in (rows or "").split(",") if part.strip())
@@ -156,12 +156,11 @@ def run_detached(args: "list[str]", *, root: Path) -> dict:
156
156
  """Start `args` (already free of the flag) detached; return the envelope."""
157
157
  stamp = f"{int(time.time())}-{os.getpid()}"
158
158
  log_path = logs_dir(root) / f"{stamp}.log"
159
- # Invoke Python directly instead of re-entering an installed console
160
- # launcher (ask.exe -> shim -> worker). The shorter process tree is what
161
- # makes Windows job-object breakaway reliable under MSYS/Git Bash.
162
- argv = [sys.executable, "-m", "sourcecode.cli", *args]
163
- if sys.argv[0].endswith(".py"):
164
- argv = [sys.executable, sys.argv[0], *args]
159
+ # Invoke the package's executable module instead of re-entering an
160
+ # installed console launcher (ask.exe -> shim -> worker). The shorter
161
+ # process tree is what makes Windows job-object breakaway reliable under
162
+ # MSYS/Git Bash, and __main__.py guarantees this actually runs the CLI.
163
+ argv = [sys.executable, "-m", "sourcecode", *args]
165
164
  pid, broke_away = _spawn(argv, log_path)
166
165
  return {
167
166
  "schema_version": SCHEMA_VERSION,
@@ -548,6 +548,23 @@ def _control_is_live_below(live_source: str, end: int, pattern: "re.Pattern") ->
548
548
  return bool(pattern.search(window[:stop]))
549
549
 
550
550
 
551
+ def _is_commented_annotation_directive(text: str) -> bool:
552
+ """Distinguish a commented annotation from prose that mentions one."""
553
+ for line in text.splitlines():
554
+ candidate = line.strip()
555
+ if candidate.startswith("//"):
556
+ candidate = candidate[2:].lstrip()
557
+ elif candidate.startswith("/*"):
558
+ candidate = candidate[2:].lstrip("* ")
559
+ elif candidate.startswith("*"):
560
+ candidate = candidate[1:].lstrip()
561
+ else:
562
+ continue
563
+ if candidate.startswith("@"):
564
+ return True
565
+ return False
566
+
567
+
551
568
  def _scan_commented_controls(
552
569
  source: str,
553
570
  rel: str,
@@ -586,6 +603,12 @@ def _scan_commented_controls(
586
603
  for pattern, symbol, detail in rules:
587
604
  if not pattern.search(text):
588
605
  continue
606
+ if (
607
+ not xml
608
+ and symbol == "commented_security_annotation"
609
+ and not _is_commented_annotation_directive(text)
610
+ ):
611
+ continue
589
612
  if not xml and _control_is_live_below(live_source or "", end, pattern):
590
613
  continue
591
614
  line = _line_of(source, start)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes