sourcecode 5.5.5__tar.gz → 5.5.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. {sourcecode-5.5.5 → sourcecode-5.5.6}/CHANGELOG.md +14 -0
  2. {sourcecode-5.5.5 → sourcecode-5.5.6}/PKG-INFO +3 -3
  3. {sourcecode-5.5.5 → sourcecode-5.5.6}/README.md +2 -2
  4. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/USER_GUIDE.md +1 -1
  5. {sourcecode-5.5.5 → sourcecode-5.5.6}/pyproject.toml +1 -1
  6. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/__init__.py +1 -1
  7. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/cli.py +12 -6
  8. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/repository_ir.py +0 -2
  9. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/servlet_surface.py +40 -27
  10. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/timeline.py +6 -1
  11. {sourcecode-5.5.5 → sourcecode-5.5.6}/.github/workflows/build-windows.yml +0 -0
  12. {sourcecode-5.5.5 → sourcecode-5.5.6}/.github/workflows/perf-gate.yml +0 -0
  13. {sourcecode-5.5.5 → sourcecode-5.5.6}/.gitignore +0 -0
  14. {sourcecode-5.5.5 → sourcecode-5.5.6}/.ruff.toml +0 -0
  15. {sourcecode-5.5.5 → sourcecode-5.5.6}/CLAUDE.md +0 -0
  16. {sourcecode-5.5.5 → sourcecode-5.5.6}/CONTRIBUTING.md +0 -0
  17. {sourcecode-5.5.5 → sourcecode-5.5.6}/LICENSE +0 -0
  18. {sourcecode-5.5.5 → sourcecode-5.5.6}/SECURITY.md +0 -0
  19. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/CACHE.md +0 -0
  20. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/COMMERCIAL-OFFER.md +0 -0
  21. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/CUSTOMER-VALIDATION.md +0 -0
  22. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/DEFECT-LEDGER.md +0 -0
  23. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/DEMO-5MIN.md +0 -0
  24. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/DEVELOPMENT-ROADMAP.md +0 -0
  25. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/EXECUTION-PLAN-12MO.md +0 -0
  26. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/EXECUTIVE-ROADMAP.md +0 -0
  27. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/MANUAL-USUARIO.md +0 -0
  28. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/MODERNIZATION.md +0 -0
  29. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/PRODUCT_AUDIT.md +0 -0
  30. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/PRODUCT_IDENTITY.md +0 -0
  31. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/PRODUCT_TIERS.md +0 -0
  32. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/RC1-CHECKLIST.md +0 -0
  33. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/RELEASE-CHECKLIST.md +0 -0
  34. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/CATALOG-retrieval-intents.md +0 -0
  35. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/DESIGN-knowledge-provider-integration.md +0 -0
  36. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/DESIGN-p5.3b-statement-surface.md +0 -0
  37. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/DESIGN-p5.5-span-index.md +0 -0
  38. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/DESIGN-p6-semantic-impact-engine.md +0 -0
  39. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/DESIGN-p6-semantic-integration-engine.md +0 -0
  40. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/DESIGN-p7-semantic-services.md +0 -0
  41. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/DESIGN-robustness-security-inference.md +0 -0
  42. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/DESIGN-semantic-retrieval.md +0 -0
  43. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/EPV-p6-class-typeref.md +0 -0
  44. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/REPORT-p6-flow-analyzer-comparison.md +0 -0
  45. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/REPORT-p6-integration-detector-comparison.md +0 -0
  46. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/REPORT-p8-flow-analyzer-migration.md +0 -0
  47. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/REPORT-p9-integration-detector-migration.md +0 -0
  48. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/adr/0001-semantic-ir.md +0 -0
  49. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/adr/0002-source-evidence-boundary.md +0 -0
  50. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/adr/0003-architectural-characterization.md +0 -0
  51. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/adr/0004-semantic-retrieval.md +0 -0
  52. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/adr/0005-evidence-reconciliation.md +0 -0
  53. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/adr/0006-performance-harness.md +0 -0
  54. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/adr/0007-composition-semantics.md +0 -0
  55. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/adr/0008-answer-coherence.md +0 -0
  56. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/consumer-disposition-inventory.md +0 -0
  57. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/overview.md +0 -0
  58. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/product-architecture-review.md +0 -0
  59. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/product-strategy-layering.md +0 -0
  60. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/semantic-ir-consumer-matrix.md +0 -0
  61. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/architecture/semantic-ir-roadmap.md +0 -0
  62. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/baseline-ci.yml +0 -0
  63. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/commercial-pipeline-audit.md +0 -0
  64. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/contracts-ci.yml +0 -0
  65. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/contracts.md +0 -0
  66. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/eval/2026-06-15-petclinic-rest-issue11-vets-pagination.md +0 -0
  67. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/eval/2026-06-15-petclinic-rest-issue147-validation.md +0 -0
  68. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/eval/2026-06-15-petclinic-rest-workflow.md +0 -0
  69. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/eval/2026-06-15-phase18-openapi-surface.md +0 -0
  70. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/eval/2026-06-15-phase20-validation-surface.md +0 -0
  71. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/eval/2026-06-16-broadleaf-checkout-impact-fieldtest.md +0 -0
  72. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/eval/2026-06-16-petclinic-rest-issue11-weakness2-closed.md +0 -0
  73. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/eval/2026-06-16-spring-petclinic-issue2333-dead-vets.md +0 -0
  74. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/licensing-schema.md +0 -0
  75. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/migrate-check.md +0 -0
  76. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/README.md +0 -0
  77. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/REGRESSION-GATE.md +0 -0
  78. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/SUMMARY.md +0 -0
  79. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/alfresco__ask__cold.json +0 -0
  80. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/alfresco__ask__warm.json +0 -0
  81. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/broadleaf__ask__cold.json +0 -0
  82. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/broadleaf__ask__warm.json +0 -0
  83. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/eureka__ask__cold.json +0 -0
  84. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/eureka__ask__warm.json +0 -0
  85. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/jenkins__ask__cold.json +0 -0
  86. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/jenkins__ask__warm.json +0 -0
  87. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/jobrunr__ask__cold.json +0 -0
  88. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/jobrunr__ask__warm.json +0 -0
  89. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/keycloak__ask__cold.json +0 -0
  90. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/keycloak__ask__warm.json +0 -0
  91. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/neo4j__ask__cold.json +0 -0
  92. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/neo4j__ask__warm.json +0 -0
  93. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/ofbiz__ask__cold.json +0 -0
  94. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/ofbiz__ask__warm.json +0 -0
  95. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/openmrs__ask__cold.json +0 -0
  96. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/openmrs__ask__warm.json +0 -0
  97. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/petclinic__ask__cold.json +0 -0
  98. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.15/petclinic__ask__warm.json +0 -0
  99. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/SUMMARY.md +0 -0
  100. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/alfresco__ask__cold.json +0 -0
  101. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/alfresco__ask__warm.json +0 -0
  102. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/broadleaf__ask__cold.json +0 -0
  103. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/broadleaf__ask__warm.json +0 -0
  104. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/eureka__ask__cold.json +0 -0
  105. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/eureka__ask__warm.json +0 -0
  106. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/jenkins__ask__cold.json +0 -0
  107. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/jenkins__ask__warm.json +0 -0
  108. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/jobrunr__ask__cold.json +0 -0
  109. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/jobrunr__ask__warm.json +0 -0
  110. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/keycloak__ask__cold.json +0 -0
  111. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/keycloak__ask__warm.json +0 -0
  112. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/neo4j__ask__cold.json +0 -0
  113. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/neo4j__ask__warm.json +0 -0
  114. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/ofbiz__ask__cold.json +0 -0
  115. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/ofbiz__ask__warm.json +0 -0
  116. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/openmrs__ask__cold.json +0 -0
  117. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/openmrs__ask__warm.json +0 -0
  118. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/petclinic__ask__cold.json +0 -0
  119. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/2.5.16/petclinic__ask__warm.json +0 -0
  120. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/gate-latest/README.md +0 -0
  121. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/gate-latest/broadleaf__ask__warm.json +0 -0
  122. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/gate-latest/broadleaf__endpoints__warm.json +0 -0
  123. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/gate-latest/broadleaf__migrate-check__warm.json +0 -0
  124. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/gate-latest/broadleaf__posture__warm.json +0 -0
  125. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/gate-latest/broadleaf__spring-audit__warm.json +0 -0
  126. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/gate-latest/broadleaf__validation__warm.json +0 -0
  127. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/perf/baselines/reference-best/README.md +0 -0
  128. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/posture.md +0 -0
  129. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/privacy.md +0 -0
  130. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/pro-experience-audit.md +0 -0
  131. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/schema.md +0 -0
  132. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/spec/envelope-v1.md +0 -0
  133. {sourcecode-5.5.5 → sourcecode-5.5.6}/docs/spring-audit-ci.yml +0 -0
  134. {sourcecode-5.5.5 → sourcecode-5.5.6}/raw +0 -0
  135. {sourcecode-5.5.5 → sourcecode-5.5.6}/scripts/compare_integration_engines.py +0 -0
  136. {sourcecode-5.5.5 → sourcecode-5.5.6}/scripts/customer_smoke_test.sh +0 -0
  137. {sourcecode-5.5.5 → sourcecode-5.5.6}/scripts/generate_jdk_exports.py +0 -0
  138. {sourcecode-5.5.5 → sourcecode-5.5.6}/scripts/perf_gate.py +0 -0
  139. {sourcecode-5.5.5 → sourcecode-5.5.6}/scripts/perf_harness.py +0 -0
  140. {sourcecode-5.5.5 → sourcecode-5.5.6}/scripts/sync_gate_anchors.py +0 -0
  141. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/adaptive_scanner.py +0 -0
  142. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/archetype.py +0 -0
  143. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/architectural_baseline.py +0 -0
  144. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/architectural_delta.py +0 -0
  145. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/architecture_analyzer.py +0 -0
  146. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/architecture_summary.py +0 -0
  147. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/ast_extractor.py +0 -0
  148. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/audit_report.py +0 -0
  149. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/baseline_autocapture.py +0 -0
  150. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/bundled_docs.py +0 -0
  151. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/cache.py +0 -0
  152. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/cache_model.py +0 -0
  153. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/call_surface.py +0 -0
  154. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/caller_metrics.py +0 -0
  155. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/caller_reach.py +0 -0
  156. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/canonical_ir.py +0 -0
  157. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/chain_rules.py +0 -0
  158. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/change_plan.py +0 -0
  159. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/cir_graphs.py +0 -0
  160. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/classifier.py +0 -0
  161. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/client_calls.py +0 -0
  162. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/code_notes_analyzer.py +0 -0
  163. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/compare.py +0 -0
  164. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/confidence_analyzer.py +0 -0
  165. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/constraint_diff.py +0 -0
  166. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/consumer_join.py +0 -0
  167. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/container_wiring.py +0 -0
  168. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/context_cache.py +0 -0
  169. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/context_graph.py +0 -0
  170. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/context_scorer.py +0 -0
  171. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/context_summarizer.py +0 -0
  172. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/contract_diff.py +0 -0
  173. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/contract_init.py +0 -0
  174. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/contract_model.py +0 -0
  175. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/contract_pipeline.py +0 -0
  176. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/coverage_parser.py +0 -0
  177. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/data_exposure.py +0 -0
  178. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/data_labels.py +0 -0
  179. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/declarations.py +0 -0
  180. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/defect_identity.py +0 -0
  181. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/degradation.py +0 -0
  182. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/dependency_analyzer.py +0 -0
  183. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/deployment_prefix.py +0 -0
  184. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detach.py +0 -0
  185. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/__init__.py +0 -0
  186. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/base.py +0 -0
  187. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/csproj_parser.py +0 -0
  188. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/dart.py +0 -0
  189. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/dotnet.py +0 -0
  190. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/elixir.py +0 -0
  191. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/go.py +0 -0
  192. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/heuristic.py +0 -0
  193. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/hybrid.py +0 -0
  194. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/java.py +0 -0
  195. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/jvm_ext.py +0 -0
  196. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/nodejs.py +0 -0
  197. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/parsers.py +0 -0
  198. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/php.py +0 -0
  199. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/project.py +0 -0
  200. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/python.py +0 -0
  201. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/ruby.py +0 -0
  202. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/rust.py +0 -0
  203. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/systems.py +0 -0
  204. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/terraform.py +0 -0
  205. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/detectors/tooling.py +0 -0
  206. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/doc_analyzer.py +0 -0
  207. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/dynamic_argument_surface.py +0 -0
  208. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/endpoint_literals.py +0 -0
  209. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/endpoint_metrics.py +0 -0
  210. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/entrypoint_classifier.py +0 -0
  211. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/env_analyzer.py +0 -0
  212. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/envelope.py +0 -0
  213. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/environment_resolution.py +0 -0
  214. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/error_schema.py +0 -0
  215. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/evidence_provider.py +0 -0
  216. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/execution_plan.py +0 -0
  217. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/explain.py +0 -0
  218. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/facts/__init__.py +0 -0
  219. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/facts/registry.json +0 -0
  220. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/file_chunker.py +0 -0
  221. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/file_classifier.py +0 -0
  222. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/filter_surface.py +0 -0
  223. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/format_contract.py +0 -0
  224. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/fqn_utils.py +0 -0
  225. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/gate_anchors.py +0 -0
  226. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/git_analyzer.py +0 -0
  227. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/git_checkout.py +0 -0
  228. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/graph_analyzer.py +0 -0
  229. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/graph_evidence.py +0 -0
  230. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/hibernate_strat.py +0 -0
  231. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/identity_fallback.py +0 -0
  232. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/integration_coordinates.py +0 -0
  233. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/jdk_exports.py +0 -0
  234. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/license.py +0 -0
  235. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/manifest_cache.py +0 -0
  236. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/mcp/__init__.py +0 -0
  237. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/mcp/dependency_import.py +0 -0
  238. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/mcp/onboarding/__init__.py +0 -0
  239. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/mcp/onboarding/applier.py +0 -0
  240. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/mcp/onboarding/backup.py +0 -0
  241. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/mcp/onboarding/detector.py +0 -0
  242. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/mcp/onboarding/planner.py +0 -0
  243. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/mcp/orchestrator.py +0 -0
  244. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/mcp/registry.py +0 -0
  245. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/mcp/runner.py +0 -0
  246. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/mcp/server.py +0 -0
  247. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/mcp_nudge.py +0 -0
  248. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/metrics_analyzer.py +0 -0
  249. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/migrate_check.py +0 -0
  250. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/migration_blast.py +0 -0
  251. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/non_coverage.py +0 -0
  252. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/openapi_surface.py +0 -0
  253. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/openrewrite_recipe.py +0 -0
  254. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/output_budget.py +0 -0
  255. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/output_encoding.py +0 -0
  256. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/parallel.py +0 -0
  257. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/parse_cache.py +0 -0
  258. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/partial_contract.py +0 -0
  259. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/path_admission.py +0 -0
  260. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/path_filters.py +0 -0
  261. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/perf.py +0 -0
  262. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/phased_run.py +0 -0
  263. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/pipe_contract.py +0 -0
  264. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/posture.py +0 -0
  265. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/pr_comment_renderer.py +0 -0
  266. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/pr_impact.py +0 -0
  267. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/prepare_context.py +0 -0
  268. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/progress.py +0 -0
  269. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/provenance.py +0 -0
  270. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/ranking_engine.py +0 -0
  271. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/readiness_timeline.py +0 -0
  272. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/readonly.py +0 -0
  273. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/reconciliation.py +0 -0
  274. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/redactor.py +0 -0
  275. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/reference_facts.py +0 -0
  276. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/release_info.py +0 -0
  277. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/relevance_scorer.py +0 -0
  278. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/remedies.py +0 -0
  279. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/rename_refactor.py +0 -0
  280. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/repo_classifier.py +0 -0
  281. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/__init__.py +0 -0
  282. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/context.py +0 -0
  283. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/errors.py +0 -0
  284. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/executor.py +0 -0
  285. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/planner.py +0 -0
  286. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/query.py +0 -0
  287. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/request.py +0 -0
  288. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/resolution.py +0 -0
  289. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/result.py +0 -0
  290. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/retriever.py +0 -0
  291. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/runtime.py +0 -0
  292. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/steps.py +0 -0
  293. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/steps_endpoint.py +0 -0
  294. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/steps_graph.py +0 -0
  295. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/steps_impact.py +0 -0
  296. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/steps_intf.py +0 -0
  297. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/steps_struct.py +0 -0
  298. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/retrieval/steps_txsec.py +0 -0
  299. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/ris.py +0 -0
  300. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/risk.py +0 -0
  301. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/rule_catalog.py +0 -0
  302. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/rule_pass.py +0 -0
  303. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/runs.py +0 -0
  304. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/runtime_classifier.py +0 -0
  305. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/sarif.py +0 -0
  306. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/scanner.py +0 -0
  307. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/schema.py +0 -0
  308. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/schemas/envelope-v1.schema.json +0 -0
  309. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/security_chain.py +0 -0
  310. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/security_config.py +0 -0
  311. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/security_config_scan.py +0 -0
  312. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/security_posture.py +0 -0
  313. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/semantic_analyzer.py +0 -0
  314. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/semantic_impact_engine.py +0 -0
  315. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/semantic_integration_engine.py +0 -0
  316. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/semantic_services.py +0 -0
  317. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/serializer.py +0 -0
  318. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/source_text.py +0 -0
  319. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/spring_event_topology.py +0 -0
  320. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/spring_findings.py +0 -0
  321. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/spring_impact.py +0 -0
  322. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/spring_model.py +0 -0
  323. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/spring_profiles.py +0 -0
  324. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/spring_properties.py +0 -0
  325. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/spring_security_audit.py +0 -0
  326. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/spring_semantic.py +0 -0
  327. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/spring_tx_analyzer.py +0 -0
  328. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/sql_taint.py +0 -0
  329. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/summarizer.py +0 -0
  330. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/target_admission.py +0 -0
  331. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/telemetry/__init__.py +0 -0
  332. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/telemetry/config.py +0 -0
  333. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/telemetry/consent.py +0 -0
  334. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/telemetry/events.py +0 -0
  335. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/telemetry/filters.py +0 -0
  336. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/telemetry/transport.py +0 -0
  337. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/test_gap_ranking.py +0 -0
  338. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/test_sources.py +0 -0
  339. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/text_input.py +0 -0
  340. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/token_estimate.py +0 -0
  341. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/tree_utils.py +0 -0
  342. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/type_usage_surface.py +0 -0
  343. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/validation_inference.py +0 -0
  344. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/validation_surface.py +0 -0
  345. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/verify_edit.py +0 -0
  346. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/verify_repo.py +0 -0
  347. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/verify_rules.py +0 -0
  348. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/version_check.py +0 -0
  349. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/waivers.py +0 -0
  350. {sourcecode-5.5.5 → sourcecode-5.5.6}/src/sourcecode/workspace.py +0 -0
  351. {sourcecode-5.5.5 → sourcecode-5.5.6}/supabase/functions/README.md +0 -0
  352. {sourcecode-5.5.5 → sourcecode-5.5.6}/supabase/functions/get-license/index.ts +0 -0
  353. {sourcecode-5.5.5 → sourcecode-5.5.6}/supabase/functions/lemonsqueezy-webhook/index.ts +0 -0
  354. {sourcecode-5.5.5 → sourcecode-5.5.6}/supabase/functions/telemetry/index.ts +0 -0
  355. {sourcecode-5.5.5 → sourcecode-5.5.6}/supabase/sql/license_event_ordering.sql +0 -0
  356. {sourcecode-5.5.5 → sourcecode-5.5.6}/supabase/sql/licensing_schema.sql +0 -0
  357. {sourcecode-5.5.5 → sourcecode-5.5.6}/supabase/sql/telemetry_events.sql +0 -0
@@ -2,6 +2,20 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [5.5.6] — 2026-08-13
6
+
7
+ ### Fixed
8
+ - `impact` now projects from the canonical IR, restoring typed static-method
9
+ callers without merging unrelated service-locator accessors.
10
+ - Legacy servlet descriptors account for mappings whose servlet declaration is
11
+ unavailable, and timeline Git metadata is decoded as UTF-8.
12
+ - Class FQNs remain class FQNs when used as impact seeds.
13
+
14
+ ### Documentation
15
+ - Recorded the 5.5.5 re-audit balance, cache-measurement retractions, fixes,
16
+ and remaining output-budget, schema, timeline-cost, Git-basis and release
17
+ ledger work.
18
+
5
19
  ## [5.5.5] — 2026-08-13
6
20
 
7
21
  **MSAS performance-audit corrections and read-only hygiene verification.**
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sourcecode
3
- Version: 5.5.5
3
+ Version: 5.5.6
4
4
  Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
5
5
  License-File: LICENSE
6
6
  Keywords: agents,ai,codebase,context,developer-tools,llm
@@ -42,7 +42,7 @@ Description-Content-Type: text/markdown
42
42
 
43
43
  **Context · Impact · Migration · Architecture · Review — everything from one structural model.**
44
44
 
45
- ![Version](https://img.shields.io/badge/version-5.5.5-blue)
45
+ ![Version](https://img.shields.io/badge/version-5.5.6-blue)
46
46
  ![Python](https://img.shields.io/badge/python-3.9%2B-green)
47
47
 
48
48
  > **ASK Engine** is the product. The CLI command is **`ask`**. The legacy **`sourcecode`**
@@ -126,7 +126,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
126
126
  # pip / pipx
127
127
  pipx install sourcecode # or: pip install sourcecode
128
128
 
129
- ask version # ask 5.5.5 — and, on a build that has aged,
129
+ ask version # ask 5.5.6 — and, on a build that has aged,
130
130
  # how many releases have probably shipped since
131
131
  ```
132
132
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  **Context · Impact · Migration · Architecture · Review — everything from one structural model.**
6
6
 
7
- ![Version](https://img.shields.io/badge/version-5.5.5-blue)
7
+ ![Version](https://img.shields.io/badge/version-5.5.6-blue)
8
8
  ![Python](https://img.shields.io/badge/python-3.9%2B-green)
9
9
 
10
10
  > **ASK Engine** is the product. The CLI command is **`ask`**. The legacy **`sourcecode`**
@@ -88,7 +88,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
88
88
  # pip / pipx
89
89
  pipx install sourcecode # or: pip install sourcecode
90
90
 
91
- ask version # ask 5.5.5 — and, on a build that has aged,
91
+ ask version # ask 5.5.6 — and, on a build that has aged,
92
92
  # how many releases have probably shipped since
93
93
  ```
94
94
 
@@ -136,7 +136,7 @@ pipx install sourcecode # isolated install, no venv needed
136
136
 
137
137
  # Verify
138
138
  ask version
139
- # ask 5.5.5
139
+ # ask 5.5.6
140
140
  ```
141
141
 
142
142
  Requires Python 3.9+.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "sourcecode"
7
- version = "5.5.5"
7
+ version = "5.5.6"
8
8
  description = "Persistent structural context and ultra-fast repeated analysis for AI coding agents"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -4,4 +4,4 @@ ASK Engine is the product. ``ask`` is the canonical CLI command; ``sourcecode``
4
4
  the legacy compatibility alias and the Python/PyPI package name. See
5
5
  docs/PRODUCT_IDENTITY.md (normative)."""
6
6
 
7
- __version__ = "5.5.5"
7
+ __version__ = "5.5.6"
@@ -6311,9 +6311,8 @@ def impact_cmd(
6311
6311
 
6312
6312
  _enforce_format("impact", format)
6313
6313
 
6314
- from sourcecode.repository_ir import (
6315
- build_repo_ir, find_java_files, compute_blast_radius,
6316
- )
6314
+ from sourcecode.repository_ir import find_java_files, compute_blast_radius
6315
+ from sourcecode.context_graph import ContextGraph
6317
6316
  from sourcecode.output_budget import BUDGET_IMPACT
6318
6317
 
6319
6318
  # Legacy-compat: old syntax was `impact <path> <target>`.
@@ -6366,9 +6365,16 @@ def impact_cmd(
6366
6365
  return
6367
6366
 
6368
6367
  _prog = Progress()
6369
- _prog.start(f"building IR ({len(file_list)} files) for impact analysis")
6368
+ _prog.start(f"building CIR ({len(file_list)} files) for impact analysis")
6370
6369
  try:
6371
- ir = build_repo_ir(file_list, root)
6370
+ # `impact-chain` resolves callers from the canonical IR, whose typed body
6371
+ # facts contribute method-level call edges. Reading the legacy parse-only
6372
+ # IR here made `impact` miss static calls (including locator accessors).
6373
+ from sourcecode import context_cache as _ctxcache
6374
+ try:
6375
+ cir = _ctxcache.shared_cir(root, file_list, progress=_work_sink(_prog))
6376
+ except Exception:
6377
+ cir = ContextGraph.build(file_list, root, progress=_work_sink(_prog)).cir
6372
6378
  finally:
6373
6379
  _prog.finish()
6374
6380
 
@@ -6379,7 +6385,7 @@ def impact_cmd(
6379
6385
  # skipped the budget when writing to a file (C2-2).
6380
6386
  _to_file = output_path is not None
6381
6387
  result = compute_blast_radius(
6382
- ir, target, max_depth=depth, list_limit=0 if _to_file else None, root=root
6388
+ cir._raw_ir, target, max_depth=depth, list_limit=0 if _to_file else None, root=root
6383
6389
  )
6384
6390
  result = _apply_budget(result, BUDGET_IMPACT, label="impact", output_path=output_path)
6385
6391
  if _misread and result.get("resolution") == "not_found":
@@ -3833,8 +3833,6 @@ def _route_annotation_name(sym: SymbolRecord) -> str:
3833
3833
  def _enclosing_class(fqn: str) -> str:
3834
3834
  if "#" in fqn:
3835
3835
  return fqn.split("#")[0]
3836
- if "." in fqn:
3837
- return fqn.rsplit(".", 1)[0]
3838
3836
  return fqn
3839
3837
 
3840
3838
 
@@ -88,42 +88,53 @@ def _from_web_xml(xml_path: Path, relative: str) -> "tuple[list[ServletMapping],
88
88
  text = xml_path.read_text(encoding="utf-8", errors="replace")
89
89
  root = ET.fromstring(text)
90
90
  except Exception:
91
- return [], 0
91
+ # Legacy descriptors can contain constructs ElementTree rejects. Keep the
92
+ # lexical fallback below, including its omission census; returning here
93
+ # made an undeclared live mapping look as though it had never existed.
94
+ root = None
92
95
  classes: "dict[str, str]" = {}
93
- for elem in root.iter():
94
- if _local(elem.tag) != "servlet":
95
- continue
96
- name = _child_text(elem, "servlet-name")
97
- klass = _child_text(elem, "servlet-class")
98
- if name:
99
- classes[name] = klass
96
+ if root is not None:
97
+ for elem in root.iter():
98
+ if _local(elem.tag) != "servlet":
99
+ continue
100
+ name = _child_text(elem, "servlet-name")
101
+ klass = _child_text(elem, "servlet-class")
102
+ if name:
103
+ classes[name] = klass
100
104
  out: "list[ServletMapping]" = []
101
105
  undeclared_servlet_mappings = 0
102
- for elem in root.iter():
103
- if _local(elem.tag) != "servlet-mapping":
104
- continue
105
- name = _child_text(elem, "servlet-name")
106
- if not name or name not in classes:
107
- undeclared_servlet_mappings += sum(
108
- 1 for child in elem.iter()
109
- if _local(child.tag) == "url-pattern" and (child.text or "").strip()
110
- )
111
- continue
112
- for child in elem.iter():
113
- if _local(child.tag) != "url-pattern" or not (child.text or "").strip():
106
+ if root is not None:
107
+ for elem in root.iter():
108
+ if _local(elem.tag) != "servlet-mapping":
114
109
  continue
115
- out.append(ServletMapping(
116
- url_pattern=child.text.strip(),
117
- servlet_name=name,
118
- servlet_class=classes.get(name, ""),
119
- source_file=relative,
120
- source="web.xml",
121
- ))
110
+ name = _child_text(elem, "servlet-name")
111
+ if not name or name not in classes:
112
+ undeclared_servlet_mappings += sum(
113
+ 1 for child in elem.iter()
114
+ if _local(child.tag) == "url-pattern" and (child.text or "").strip()
115
+ )
116
+ continue
117
+ for child in elem.iter():
118
+ if _local(child.tag) != "url-pattern" or not (child.text or "").strip():
119
+ continue
120
+ out.append(ServletMapping(
121
+ url_pattern=child.text.strip(),
122
+ servlet_name=name,
123
+ servlet_class=classes.get(name, ""),
124
+ source_file=relative,
125
+ source="web.xml",
126
+ ))
122
127
  # Keep a tolerant lexical fallback for descriptors containing legacy XML
123
128
  # constructs that ElementTree rejects or partially normalizes. Comments are
124
129
  # removed first so commented deployment examples never become live routes.
125
130
  try:
126
131
  active = re.sub(r"<!--.*?-->", "", text, flags=re.DOTALL)
132
+ if root is None:
133
+ for block in re.findall(r"<servlet\b[^>]*>(.*?)</servlet>", active, re.DOTALL | re.IGNORECASE):
134
+ name_match = re.search(r"<servlet-name\b[^>]*>\s*([^<]+?)\s*</servlet-name>", block, re.DOTALL | re.IGNORECASE)
135
+ class_match = re.search(r"<servlet-class\b[^>]*>\s*([^<]+?)\s*</servlet-class>", block, re.DOTALL | re.IGNORECASE)
136
+ if name_match:
137
+ classes[name_match.group(1).strip()] = class_match.group(1).strip() if class_match else ""
127
138
  for block in re.findall(r"<servlet-mapping\b[^>]*>(.*?)</servlet-mapping>", active, re.DOTALL | re.IGNORECASE):
128
139
  name_match = re.search(r"<servlet-name\b[^>]*>\s*([^<]+?)\s*</servlet-name>", block, re.DOTALL | re.IGNORECASE)
129
140
  pattern_match = re.search(r"<url-pattern\b[^>]*>\s*([^<]+?)\s*</url-pattern>", block, re.DOTALL | re.IGNORECASE)
@@ -131,6 +142,8 @@ def _from_web_xml(xml_path: Path, relative: str) -> "tuple[list[ServletMapping],
131
142
  continue
132
143
  servlet_name = name_match.group(1).strip() if name_match else ""
133
144
  if not servlet_name or servlet_name not in classes:
145
+ if root is None:
146
+ undeclared_servlet_mappings += 1
134
147
  continue
135
148
  candidate = ServletMapping(
136
149
  url_pattern=pattern_match.group(1).strip(),
@@ -211,7 +211,12 @@ class Sample:
211
211
 
212
212
  def _git(repo: Path, *args: str) -> subprocess.CompletedProcess:
213
213
  return subprocess.run(
214
- ["git", "-C", str(repo), *args], capture_output=True, text=True, check=False,
214
+ ["git", "-C", str(repo), "-c", "i18n.logOutputEncoding=utf-8", *args],
215
+ capture_output=True,
216
+ text=True,
217
+ encoding="utf-8",
218
+ errors="replace",
219
+ check=False,
215
220
  )
216
221
 
217
222
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes