attocode-code-intel 0.1.21__tar.gz → 0.1.23__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 (763) hide show
  1. attocode_code_intel-0.1.23/.gitignore +59 -0
  2. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/PKG-INFO +26 -2
  3. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/README.md +25 -1
  4. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/pyproject.toml +3 -3
  5. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/__init__.py +1 -1
  6. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/codebase_context.py +40 -57
  7. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/semantic_search.py +1 -3
  8. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/systemone_ranker.py +11 -1
  9. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/confidence/llm.py +47 -15
  10. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/synthesis.py +5 -21
  11. attocode_code_intel-0.1.23/tests/fixtures/sample_project/.attocode/.gitignore +2 -0
  12. attocode_code_intel-0.1.23/tests/fixtures/sample_project/main.py +34 -0
  13. attocode_code_intel-0.1.23/tests/fixtures/sample_project/models.py +25 -0
  14. attocode_code_intel-0.1.23/tests/fixtures/sample_project/utils.py +26 -0
  15. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_capacity_experiment.py +29 -0
  16. attocode_code_intel-0.1.23/tests/test_discovery_ceiling.py +120 -0
  17. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_product.py +39 -0
  18. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_systemone_ranker.py +27 -4
  19. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_rule_synthesis.py +9 -15
  20. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_mcp_bench.py +1 -1
  21. attocode_code_intel-0.1.23/tests/unit/integrations/utilities/__init__.py +0 -0
  22. attocode_code_intel-0.1.21/.gitignore +0 -88
  23. attocode_code_intel-0.1.21/evals/README.md +0 -377
  24. attocode_code_intel-0.1.21/evals/ast_restart_probe.py +0 -101
  25. attocode_code_intel-0.1.21/evals/body_cost_probe.py +0 -101
  26. attocode_code_intel-0.1.21/evals/broad_candidate_audit.yaml +0 -59
  27. attocode_code_intel-0.1.21/evals/broad_query_cases.yaml +0 -89
  28. attocode_code_intel-0.1.21/evals/broad_query_external_cases.yaml +0 -79
  29. attocode_code_intel-0.1.21/evals/broad_query_final_holdout.yaml +0 -78
  30. attocode_code_intel-0.1.21/evals/client_comparison.py +0 -151
  31. attocode_code_intel-0.1.21/evals/client_responses.py +0 -152
  32. attocode_code_intel-0.1.21/evals/codex_repair_study.py +0 -415
  33. attocode_code_intel-0.1.21/evals/daily.py +0 -77
  34. attocode_code_intel-0.1.21/evals/designs/2026-10-13-codex-repair-diagnostic.md +0 -49
  35. attocode_code_intel-0.1.21/evals/designs/2026-10-13-r7-task-completion-pilot.md +0 -253
  36. attocode_code_intel-0.1.21/evals/designs/2026-10-14-workflow-pilot.md +0 -63
  37. attocode_code_intel-0.1.21/evals/designs/2026-10-15-body-file-trial.md +0 -34
  38. attocode_code_intel-0.1.21/evals/designs/2026-10-15-body-file-validation.json +0 -427
  39. attocode_code_intel-0.1.21/evals/designs/2026-10-15-expansion-ablation.md +0 -33
  40. attocode_code_intel-0.1.21/evals/designs/2026-10-15-expansion-development.json +0 -192
  41. attocode_code_intel-0.1.21/evals/designs/2026-10-15-expansion-validation.json +0 -180
  42. attocode_code_intel-0.1.21/evals/designs/2026-10-15-fresh-navigation-queries.json +0 -90
  43. attocode_code_intel-0.1.21/evals/designs/2026-10-15-headroom-retrieval-questions.json +0 -859
  44. attocode_code_intel-0.1.21/evals/designs/2026-10-15-headroom-retrieval.md +0 -17
  45. attocode_code_intel-0.1.21/evals/designs/2026-10-16-cross-file-questions.json +0 -158
  46. attocode_code_intel-0.1.21/evals/designs/2026-10-16-deep-page-questions.json +0 -160
  47. attocode_code_intel-0.1.21/evals/designs/2026-10-16-kotlin-test-paths.json +0 -106
  48. attocode_code_intel-0.1.21/evals/designs/2026-10-16-navigation-prefix-validation.json +0 -266
  49. attocode_code_intel-0.1.21/evals/designs/2026-10-16-navigation-prefix.json +0 -310
  50. attocode_code_intel-0.1.21/evals/designs/2026-10-16-negation-candidate.patch.gz +0 -0
  51. attocode_code_intel-0.1.21/evals/designs/2026-10-16-negation-development.json +0 -208
  52. attocode_code_intel-0.1.21/evals/designs/2026-10-16-negation-freeze.json +0 -48
  53. attocode_code_intel-0.1.21/evals/designs/2026-10-16-negation-validation.json +0 -208
  54. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/accepted.patch.gz +0 -0
  55. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/boundaries.patch.gz +0 -0
  56. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/combined.patch.gz +0 -0
  57. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/expansion.patch.gz +0 -0
  58. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/identity.patch.gz +0 -0
  59. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/manifest.json +0 -76
  60. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/negation.patch.gz +0 -0
  61. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/owner_only.patch.gz +0 -0
  62. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-candidates/owners.patch.gz +0 -0
  63. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-confirmation-freeze.json +0 -7
  64. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-confirmation.json +0 -206
  65. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-development.json +0 -206
  66. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-freeze.json +0 -348
  67. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-correctness-validation.json +0 -206
  68. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-usefulness-development.json +0 -285
  69. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-usefulness-validation.json +0 -285
  70. attocode_code_intel-0.1.21/evals/designs/2026-10-16-search-usefulness.json +0 -36
  71. attocode_code_intel-0.1.21/evals/designs/2026-10-16-test-intent.json +0 -210
  72. attocode_code_intel-0.1.21/evals/designs/2026-10-17-change-focus-candidate.patch.gz +0 -0
  73. attocode_code_intel-0.1.21/evals/designs/2026-10-17-change-workflow-replays.json +0 -98
  74. attocode_code_intel-0.1.21/evals/designs/2026-10-17-change-workflow-replays.md +0 -61
  75. attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-c2f.patch.gz +0 -0
  76. attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-development.json +0 -409
  77. attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-freeze.json +0 -49
  78. attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-t.patch.gz +0 -0
  79. attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-tcf.patch.gz +0 -0
  80. attocode_code_intel-0.1.21/evals/designs/2026-10-17-file-coverage-validation.json +0 -394
  81. attocode_code_intel-0.1.21/evals/designs/2026-10-17-search-batch-candidate.patch.gz +0 -0
  82. attocode_code_intel-0.1.21/evals/designs/2026-10-17-search-batch-development.json +0 -328
  83. attocode_code_intel-0.1.21/evals/designs/2026-10-17-search-batch-freeze.json +0 -36
  84. attocode_code_intel-0.1.21/evals/designs/2026-10-17-search-batch-validation.json +0 -342
  85. attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-candidate.json +0 -350
  86. attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-development.json +0 -1467
  87. attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-freeze.json +0 -43
  88. attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-t2.patch.gz +0 -0
  89. attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-t3.patch.gz +0 -0
  90. attocode_code_intel-0.1.21/evals/designs/2026-10-17-test-source-slot-validation.json +0 -400
  91. attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-candidate.json +0 -244
  92. attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-development.json +0 -1844
  93. attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-freeze.json +0 -47
  94. attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-p.patch.gz +0 -0
  95. attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-pf.patch.gz +0 -0
  96. attocode_code_intel-0.1.21/evals/designs/2026-10-18-paired-source-validation.json +0 -410
  97. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-candidate.json +0 -422
  98. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-development.json +0 -2220
  99. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-freeze.json +0 -44
  100. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-q1.patch.gz +0 -0
  101. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-q2.patch.gz +0 -0
  102. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-q3.patch.gz +0 -0
  103. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-q5.patch.gz +0 -0
  104. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-s1.patch.gz +0 -0
  105. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-s2-equivalence.json +0 -12
  106. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-s2-freeze.json +0 -51
  107. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-s2-validation.json +0 -536
  108. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-s2.patch.gz +0 -0
  109. attocode_code_intel-0.1.21/evals/designs/2026-10-18-query-source-validation.json +0 -558
  110. attocode_code_intel-0.1.21/evals/designs/2026-10-19-cpu-fn-embed-cost.json +0 -33
  111. attocode_code_intel-0.1.21/evals/designs/2026-10-20-clause-balance-validation.json +0 -499
  112. attocode_code_intel-0.1.21/evals/designs/2026-10-20-search-repair-validation.json +0 -419
  113. attocode_code_intel-0.1.21/evals/designs/2026-10-20-test-support-development.json +0 -294
  114. attocode_code_intel-0.1.21/evals/designs/2026-10-20-test-support-freeze.json +0 -32
  115. attocode_code_intel-0.1.21/evals/designs/2026-10-23-preview-windows.json +0 -512
  116. attocode_code_intel-0.1.21/evals/designs/2026-10-23-restart-fingerprints.json +0 -78
  117. attocode_code_intel-0.1.21/evals/discovery_reuse_probe.py +0 -63
  118. attocode_code_intel-0.1.21/evals/external_benchmarks.py +0 -132
  119. attocode_code_intel-0.1.21/evals/external_study.py +0 -409
  120. attocode_code_intel-0.1.21/evals/graded_blind_pack.yaml +0 -755
  121. attocode_code_intel-0.1.21/evals/lexical_sql_probe.py +0 -171
  122. attocode_code_intel-0.1.21/evals/localize_study.py +0 -743
  123. attocode_code_intel-0.1.21/evals/locbench_title_pack.yaml +0 -300
  124. attocode_code_intel-0.1.21/evals/onboarding_study.py +0 -205
  125. attocode_code_intel-0.1.21/evals/pilot.py +0 -206
  126. attocode_code_intel-0.1.21/evals/quality_scoring.py +0 -286
  127. attocode_code_intel-0.1.21/evals/quality_tasks.py +0 -315
  128. attocode_code_intel-0.1.21/evals/release_gate.py +0 -144
  129. attocode_code_intel-0.1.21/evals/repair_grading.py +0 -142
  130. attocode_code_intel-0.1.21/evals/repair_study.py +0 -513
  131. attocode_code_intel-0.1.21/evals/repair_worker.py +0 -442
  132. attocode_code_intel-0.1.21/evals/responses.py +0 -87
  133. attocode_code_intel-0.1.21/evals/restart_discovery_probe.py +0 -101
  134. attocode_code_intel-0.1.21/evals/search_evidence_audit.py +0 -297
  135. attocode_code_intel-0.1.21/evals/source_view_transfer.yaml +0 -58
  136. attocode_code_intel-0.1.21/evals/structural_write_probe.py +0 -83
  137. attocode_code_intel-0.1.21/evals/study.py +0 -485
  138. attocode_code_intel-0.1.21/evals/study_clients.py +0 -167
  139. attocode_code_intel-0.1.21/evals/study_events.py +0 -257
  140. attocode_code_intel-0.1.21/evals/study_tasks.py +0 -173
  141. attocode_code_intel-0.1.21/evals/token_overhead.py +0 -84
  142. attocode_code_intel-0.1.21/evals/understanding_scoring.py +0 -120
  143. attocode_code_intel-0.1.21/evals/understanding_study.py +0 -387
  144. attocode_code_intel-0.1.21/evals/warm_cache.py +0 -496
  145. attocode_code_intel-0.1.21/evals/workflows.py +0 -143
  146. attocode_code_intel-0.1.21/src/attocode_intel/_internal/tricks/recursive_context.py +0 -357
  147. attocode_code_intel-0.1.21/src/attocode_intel/_internal/types/__init__.py +0 -1
  148. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/LICENSE +0 -0
  149. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/GUIDELINES.md +0 -0
  150. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/__init__.py +0 -0
  151. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/errors/__init__.py +0 -0
  152. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/__init__.py +0 -0
  153. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/__init__.py +0 -0
  154. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/architecture_drift.py +0 -0
  155. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/ast_chunker.py +0 -0
  156. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/ast_service.py +0 -0
  157. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/ast_snapshot.py +0 -0
  158. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/blob_oid.py +0 -0
  159. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/cache_manifest.py +0 -0
  160. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/cas.py +0 -0
  161. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/code_analyzer.py +0 -0
  162. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/codebase_ast.py +0 -0
  163. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/cross_mode.py +0 -0
  164. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/cross_references.py +0 -0
  165. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/discovery_snapshot.py +0 -0
  166. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/embedding_rotation.py +0 -0
  167. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/embeddings.py +0 -0
  168. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/frecency.py +0 -0
  169. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/fuzzy.py +0 -0
  170. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/hierarchical_explorer.py +0 -0
  171. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/hydration.py +0 -0
  172. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/index_probe.py +0 -0
  173. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/index_repair.py +0 -0
  174. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/index_store.py +0 -0
  175. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/language_registry.py +0 -0
  176. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/memory_store.py +0 -0
  177. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/module_resolution.py +0 -0
  178. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/parse_diagnostics.py +0 -0
  179. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/query_constraints.py +0 -0
  180. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/query_history.py +0 -0
  181. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/reranker.py +0 -0
  182. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/syntax_evidence.py +0 -0
  183. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/temporal_coupling.py +0 -0
  184. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/trigram_index.py +0 -0
  185. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/trigram_regex.py +0 -0
  186. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/ts_parser.py +0 -0
  187. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/context/vector_store.py +0 -0
  188. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/feature_flags/__init__.py +0 -0
  189. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/lsp/__init__.py +0 -0
  190. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/lsp/client.py +0 -0
  191. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/mcp/__init__.py +0 -0
  192. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/mcp/client.py +0 -0
  193. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/security/__init__.py +0 -0
  194. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/security/custom_rules.py +0 -0
  195. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/security/dataflow.py +0 -0
  196. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/security/dependency_audit.py +0 -0
  197. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/security/matcher.py +0 -0
  198. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/security/patterns.py +0 -0
  199. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/security/scanner.py +0 -0
  200. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/utilities/__init__.py +0 -0
  201. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/utilities/ignore.py +0 -0
  202. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/integrations/utilities/token_estimate.py +0 -0
  203. {attocode_code_intel-0.1.21/src/attocode_intel/_internal/tricks → attocode_code_intel-0.1.23/src/attocode_intel/_internal/types}/__init__.py +0 -0
  204. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/types/events.py +0 -0
  205. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_internal/types/severity.py +0 -0
  206. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/_shared.py +0 -0
  207. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/analysis_coverage.py +0 -0
  208. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/__init__.py +0 -0
  209. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/access.py +0 -0
  210. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/app.py +0 -0
  211. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/auth/__init__.py +0 -0
  212. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/auth/api_keys.py +0 -0
  213. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/auth/context.py +0 -0
  214. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/auth/jwt.py +0 -0
  215. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/auth/oauth.py +0 -0
  216. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/auth/passwords.py +0 -0
  217. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/deps.py +0 -0
  218. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/knowledge_bridge.py +0 -0
  219. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/mcp_transport.py +0 -0
  220. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/middleware.py +0 -0
  221. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/models.py +0 -0
  222. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/providers/__init__.py +0 -0
  223. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/providers/db_provider.py +0 -0
  224. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/providers/local_provider.py +0 -0
  225. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/providers/remote_provider.py +0 -0
  226. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/repository_source.py +0 -0
  227. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/__init__.py +0 -0
  228. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/_pin_helper.py +0 -0
  229. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/activity.py +0 -0
  230. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/adr.py +0 -0
  231. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/analysis.py +0 -0
  232. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/api_keys.py +0 -0
  233. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/auth.py +0 -0
  234. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/branches.py +0 -0
  235. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/cross_repo_search.py +0 -0
  236. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/embeddings.py +0 -0
  237. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/files.py +0 -0
  238. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/files_v2.py +0 -0
  239. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/gc.py +0 -0
  240. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/git_v2.py +0 -0
  241. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/graph.py +0 -0
  242. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/graph_viz.py +0 -0
  243. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/health.py +0 -0
  244. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/history.py +0 -0
  245. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/jobs.py +0 -0
  246. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/learning.py +0 -0
  247. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/lsp.py +0 -0
  248. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/notify.py +0 -0
  249. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/operations.py +0 -0
  250. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/orgs.py +0 -0
  251. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/preferences.py +0 -0
  252. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/presence.py +0 -0
  253. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/projects.py +0 -0
  254. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/repos.py +0 -0
  255. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/search.py +0 -0
  256. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/snapshots.py +0 -0
  257. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/webhooks.py +0 -0
  258. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/routes/websocket.py +0 -0
  259. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/static/graph.html +0 -0
  260. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/api/utils.py +0 -0
  261. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/artifacts/__init__.py +0 -0
  262. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/artifacts/hashing.py +0 -0
  263. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/artifacts/provenance.py +0 -0
  264. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/artifacts/retrieval_pin.py +0 -0
  265. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/audit.py +0 -0
  266. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/bug_finder.py +0 -0
  267. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/bundle.py +0 -0
  268. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/catalog.py +0 -0
  269. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/change_evidence.py +0 -0
  270. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/change_investigation.py +0 -0
  271. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/change_review.py +0 -0
  272. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/cli.py +0 -0
  273. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/community.py +0 -0
  274. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/confidence/__init__.py +0 -0
  275. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/confidence/jev.py +0 -0
  276. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/confidence/redact.py +0 -0
  277. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/confidence/settings.py +0 -0
  278. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/config.py +0 -0
  279. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/crypto.py +0 -0
  280. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/db/__init__.py +0 -0
  281. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/db/base.py +0 -0
  282. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/db/engine.py +0 -0
  283. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/db/models.py +0 -0
  284. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/entrypoint.py +0 -0
  285. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/focused_evidence.py +0 -0
  286. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/freshness.py +0 -0
  287. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/gateway.py +0 -0
  288. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/git/__init__.py +0 -0
  289. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/git/credentials.py +0 -0
  290. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/git/manager.py +0 -0
  291. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/git/models.py +0 -0
  292. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/git/storage.py +0 -0
  293. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/graph_query_parser.py +0 -0
  294. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/helpers.py +0 -0
  295. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/indexing/__init__.py +0 -0
  296. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/indexing/debouncer.py +0 -0
  297. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/indexing/delta_indexer.py +0 -0
  298. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/indexing/full_indexer.py +0 -0
  299. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/indexing/incremental.py +0 -0
  300. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/indexing/parser.py +0 -0
  301. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/indexing/summarizer.py +0 -0
  302. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/installer.py +0 -0
  303. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/investigation_cli.py +0 -0
  304. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/knowledge.py +0 -0
  305. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/local_knowledge.py +0 -0
  306. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/alembic.ini +0 -0
  307. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/env.py +0 -0
  308. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/script.py.mako +0 -0
  309. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/001_initial_schema.py +0 -0
  310. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/002_branch_version_and_embeddings.py +0 -0
  311. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/003_embedding_uniqueness_and_cascade.py +0 -0
  312. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/004_audit_events.py +0 -0
  313. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/005_user_preferences.py +0 -0
  314. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/006_google_oauth.py +0 -0
  315. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/007_pgvector_embeddings.py +0 -0
  316. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/008_symbol_references.py +0 -0
  317. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/009_webhook_secret_encryption.py +0 -0
  318. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/010_add_commits_table.py +0 -0
  319. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/011_commit_changed_files.py +0 -0
  320. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/012_branch_merged_at.py +0 -0
  321. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/013_revoked_tokens.py +0 -0
  322. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/014_blame_hunks.py +0 -0
  323. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/015_commit_file_stats.py +0 -0
  324. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/016_embedding_provenance_columns.py +0 -0
  325. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/017_provenance_table.py +0 -0
  326. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/018_repo_snapshots.py +0 -0
  327. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/019_symref_caller.py +0 -0
  328. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/migrations/versions/020_shared_knowledge.py +0 -0
  329. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/onboarding.py +0 -0
  330. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/output.py +0 -0
  331. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/precision.py +0 -0
  332. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/presence.py +0 -0
  333. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/probe.py +0 -0
  334. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/project_dir.py +0 -0
  335. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/pubsub.py +0 -0
  336. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/query_ranking.py +0 -0
  337. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/readiness.py +0 -0
  338. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/redis.py +0 -0
  339. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/reference_pages.py +0 -0
  340. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/remote.py +0 -0
  341. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/repo_ranker.py +0 -0
  342. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/request_context.py +0 -0
  343. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/__init__.py +0 -0
  344. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/ci.py +0 -0
  345. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/combinators.py +0 -0
  346. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/enricher.py +0 -0
  347. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/evolution.py +0 -0
  348. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/executor.py +0 -0
  349. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/filters/__init__.py +0 -0
  350. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/filters/pipeline.py +0 -0
  351. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/formatter.py +0 -0
  352. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/hygiene.py +0 -0
  353. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/importers/__init__.py +0 -0
  354. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/importers/semgrep.py +0 -0
  355. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/loader.py +0 -0
  356. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/marketplace.py +0 -0
  357. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/metavar.py +0 -0
  358. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/model.py +0 -0
  359. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/__init__.py +0 -0
  360. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/_license_templates/Apache-2.0.txt +0 -0
  361. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/_license_templates/MIT.txt +0 -0
  362. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/LICENSE +0 -0
  363. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/NOTICE +0 -0
  364. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/PORTING.md +0 -0
  365. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/manifest.yaml +0 -0
  366. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B105-hardcoded-password.yaml +0 -0
  367. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B303-weak-md5.yaml +0 -0
  368. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B304-weak-des.yaml +0 -0
  369. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B307-use-of-eval.yaml +0 -0
  370. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B324-weak-sha1.yaml +0 -0
  371. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B501-no-cert-validation.yaml +0 -0
  372. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B602-shell-true.yaml +0 -0
  373. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/bandit-python/rules/B608-sqli.yaml +0 -0
  374. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/LICENSE +0 -0
  375. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/NOTICE +0 -0
  376. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/PORTING.md +0 -0
  377. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/manifest.yaml +0 -0
  378. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/eqeqeq.yaml +0 -0
  379. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-eval.yaml +0 -0
  380. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-implied-eval.yaml +0 -0
  381. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-new-func.yaml +0 -0
  382. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-throw-literal.yaml +0 -0
  383. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-var.yaml +0 -0
  384. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-with.yaml +0 -0
  385. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/LICENSE +0 -0
  386. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/NOTICE +0 -0
  387. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/PORTING.md +0 -0
  388. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/manifest.yaml +0 -0
  389. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G101-hardcoded-credentials.yaml +0 -0
  390. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G102-bind-all-interfaces.yaml +0 -0
  391. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G103-unsafe-block.yaml +0 -0
  392. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G201-sql-format.yaml +0 -0
  393. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G304-file-inclusion.yaml +0 -0
  394. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G401-weak-cipher.yaml +0 -0
  395. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G402-tls-min-version.yaml +0 -0
  396. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/community/gosec-go/rules/G501-md5-import.yaml +0 -0
  397. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/cpp/manifest.yaml +0 -0
  398. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/cpp/rules/security.yaml +0 -0
  399. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/cpp/rules/structural.yaml +0 -0
  400. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/csharp/manifest.yaml +0 -0
  401. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/csharp/rules/security.yaml +0 -0
  402. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/csharp/rules/structural.yaml +0 -0
  403. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/go/manifest.yaml +0 -0
  404. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/go/rules/performance.yaml +0 -0
  405. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/go/rules/security.yaml +0 -0
  406. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/go/rules/structural.yaml +0 -0
  407. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/go/taint/sanitizers.yaml +0 -0
  408. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/go/taint/sinks.yaml +0 -0
  409. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/go/taint/sources.yaml +0 -0
  410. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/java/manifest.yaml +0 -0
  411. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/java/rules/correctness.yaml +0 -0
  412. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/java/rules/structural.yaml +0 -0
  413. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/java/taint/sinks.yaml +0 -0
  414. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/java/taint/sources.yaml +0 -0
  415. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/kotlin/manifest.yaml +0 -0
  416. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/kotlin/rules/correctness.yaml +0 -0
  417. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/kotlin/rules/structural.yaml +0 -0
  418. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/php/manifest.yaml +0 -0
  419. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/php/rules/security.yaml +0 -0
  420. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/php/rules/structural.yaml +0 -0
  421. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/python/manifest.yaml +0 -0
  422. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/python/rules/performance.yaml +0 -0
  423. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/python/rules/structural.yaml +0 -0
  424. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/ruby/manifest.yaml +0 -0
  425. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/ruby/rules/security.yaml +0 -0
  426. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/ruby/rules/structural.yaml +0 -0
  427. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/rust/manifest.yaml +0 -0
  428. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/rust/rules/correctness.yaml +0 -0
  429. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/rust/rules/structural.yaml +0 -0
  430. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/typescript/manifest.yaml +0 -0
  431. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/typescript/rules/performance.yaml +0 -0
  432. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/examples/typescript/rules/structural.yaml +0 -0
  433. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/packs/pack_loader.py +0 -0
  434. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/plugins/__init__.py +0 -0
  435. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/plugins/plugin_loader.py +0 -0
  436. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/profiling.py +0 -0
  437. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/registry.py +0 -0
  438. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/sarif.py +0 -0
  439. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/rules/testing.py +0 -0
  440. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/search_evidence.py +0 -0
  441. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/server.py +0 -0
  442. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/service.py +0 -0
  443. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/sharing.py +0 -0
  444. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/__init__.py +0 -0
  445. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/branch_overlay.py +0 -0
  446. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/content_store.py +0 -0
  447. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/dependency_store.py +0 -0
  448. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/diff_engine.py +0 -0
  449. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/embedding_store.py +0 -0
  450. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/provenance_store.py +0 -0
  451. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/security_scanner_db.py +0 -0
  452. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/storage/symbol_store.py +0 -0
  453. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/structural_evidence.py +0 -0
  454. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/symbol_inspection.py +0 -0
  455. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/symbol_links.py +0 -0
  456. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/telemetry.py +0 -0
  457. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/test_ranking.py +0 -0
  458. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/testing/__init__.py +0 -0
  459. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/testing/fixtures.py +0 -0
  460. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/testing/helpers.py +0 -0
  461. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/testing/mocks.py +0 -0
  462. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/__init__.py +0 -0
  463. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/adr_tools.py +0 -0
  464. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/analysis_tools.py +0 -0
  465. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/composite_tools.py +0 -0
  466. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/cross_mode_tools.py +0 -0
  467. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/dead_code_tools.py +0 -0
  468. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/distill_tools.py +0 -0
  469. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/frecency_tools.py +0 -0
  470. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/fuzzy_tools.py +0 -0
  471. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/history_tools.py +0 -0
  472. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/learning_tools.py +0 -0
  473. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/lsp_tools.py +0 -0
  474. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/maintenance_tools.py +0 -0
  475. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/navigation_tools.py +0 -0
  476. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/overlay_tools.py +0 -0
  477. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/pin_store.py +0 -0
  478. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/pin_tools.py +0 -0
  479. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/query_constraints_tools.py +0 -0
  480. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/query_history_tools.py +0 -0
  481. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/readiness_tools.py +0 -0
  482. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/rule_tools.py +0 -0
  483. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/search_tools.py +0 -0
  484. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/tools/snapshot_tools.py +0 -0
  485. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/workers/__init__.py +0 -0
  486. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/workers/job_utils.py +0 -0
  487. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/workers/jobs.py +0 -0
  488. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/workers/run.py +0 -0
  489. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/src/attocode_intel/workers/settings.py +0 -0
  490. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/fixtures/rule_violations/.attocode/rules/team-preferences.yaml +0 -0
  491. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/fixtures/rule_violations/go/bad_patterns.go +0 -0
  492. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/fixtures/rule_violations/java/BadPatterns.java +0 -0
  493. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/fixtures/rule_violations/python/bad_patterns.py +0 -0
  494. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/fixtures/rule_violations/rust/bad_patterns.rs +0 -0
  495. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/fixtures/rule_violations/typescript/bad_patterns.ts +0 -0
  496. {attocode_code_intel-0.1.21/tests/integration → attocode_code_intel-0.1.23/tests/fixtures/sample_project}/__init__.py +0 -0
  497. {attocode_code_intel-0.1.21/tests/integration/code_intel → attocode_code_intel-0.1.23/tests/integration}/__init__.py +0 -0
  498. {attocode_code_intel-0.1.21/tests/unit → attocode_code_intel-0.1.23/tests/integration/code_intel}/__init__.py +0 -0
  499. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/integration/code_intel/conftest.py +0 -0
  500. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/integration/code_intel/test_http_smoke.py +0 -0
  501. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/integration/code_intel/test_mcp_tools_audit.py +0 -0
  502. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/integration/code_intel/test_remote_mcp_http_integration.py +0 -0
  503. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/integration/code_intel/test_service_integration.py +0 -0
  504. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/integration/test_rule_bench_floor_e2e.py +0 -0
  505. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_ast_snapshot.py +0 -0
  506. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_behavioral_negation.py +0 -0
  507. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_change_focus.py +0 -0
  508. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_change_investigation.py +0 -0
  509. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_chunk_identity.py +0 -0
  510. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_codex_repair_study.py +0 -0
  511. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_cold_discovery.py +0 -0
  512. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_cold_index_cost.py +0 -0
  513. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_compact_inspection.py +0 -0
  514. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_corpus_capture.py +0 -0
  515. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_daily_workflows.py +0 -0
  516. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_db_navigation_http.py +0 -0
  517. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_discovery_reuse.py +0 -0
  518. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_doctor.py +0 -0
  519. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_doctor_runtime.py +0 -0
  520. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_edit_restart.py +0 -0
  521. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_experiment_dispatch.py +0 -0
  522. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_experiment_evidence.py +0 -0
  523. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_experiment_readiness.py +0 -0
  524. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_external_study.py +0 -0
  525. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_fallback_lexical.py +0 -0
  526. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_file_symbol_scope.py +0 -0
  527. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_fixture_source_alias.py +0 -0
  528. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_focused_inspection.py +0 -0
  529. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_image_budget.py +0 -0
  530. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_importance_publication.py +0 -0
  531. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_index_probe.py +0 -0
  532. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_index_processes.py +0 -0
  533. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_index_reuse.py +0 -0
  534. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_index_sequences.py +0 -0
  535. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_kotlin_test_paths.py +0 -0
  536. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_language_capabilities.py +0 -0
  537. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_lean_profile.py +0 -0
  538. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_lexical_sql_cost.py +0 -0
  539. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_local_reranker.py +0 -0
  540. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_local_workflow_evidence.py +0 -0
  541. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_localize_study.py +0 -0
  542. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_lsp_diagnostics.py +0 -0
  543. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_lsp_document_lifecycle.py +0 -0
  544. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_lsp_stderr_lifecycle.py +0 -0
  545. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_mcp_search_evaluation.py +0 -0
  546. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_mixed_workspace.py +0 -0
  547. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_module_ownership.py +0 -0
  548. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_native_capture.py +0 -0
  549. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_native_experiment.py +0 -0
  550. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_navigation_evidence.py +0 -0
  551. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_navigation_prefix_trial.py +0 -0
  552. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_ocaml_parser_routing.py +0 -0
  553. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_onboarding_study.py +0 -0
  554. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_operation_contracts.py +0 -0
  555. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_optional_grammar_admission.py +0 -0
  556. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_optional_language_depth.py +0 -0
  557. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_parse_recovery.py +0 -0
  558. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_parser_thread_isolation.py +0 -0
  559. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_pilot.py +0 -0
  560. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_precision_protocol.py +0 -0
  561. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_precision_recovery.py +0 -0
  562. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_preview_admission.py +0 -0
  563. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_preview_experiment.py +0 -0
  564. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_preview_sources.py +0 -0
  565. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_preview_windows.py +0 -0
  566. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_quality_cloud.py +0 -0
  567. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_quality_evaluation.py +0 -0
  568. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_quality_evidence.py +0 -0
  569. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_quality_lifecycle.py +0 -0
  570. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_quality_runner.py +0 -0
  571. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_query_ranking.py +0 -0
  572. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_query_requirements.py +0 -0
  573. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_ranking_intent.py +0 -0
  574. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_real_language_server.py +0 -0
  575. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_recovery_readiness.py +0 -0
  576. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_release_verification.py +0 -0
  577. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_remote.py +0 -0
  578. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_repair_study.py +0 -0
  579. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_restart_experiment.py +0 -0
  580. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_retrieval_ablation.py +0 -0
  581. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_retrieval_audit.py +0 -0
  582. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_retrieval_body_trial.py +0 -0
  583. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_retrieval_cycle.py +0 -0
  584. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_search_budget_repair.py +0 -0
  585. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_search_coverage.py +0 -0
  586. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_search_coverage_scale.py +0 -0
  587. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_search_evidence.py +0 -0
  588. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_search_evidence_audit.py +0 -0
  589. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_search_usefulness.py +0 -0
  590. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_snippet_budget.py +0 -0
  591. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_source_exclusions.py +0 -0
  592. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_structural_evidence.py +0 -0
  593. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_structural_write_cost.py +0 -0
  594. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_study.py +0 -0
  595. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_symbol_order.py +0 -0
  596. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_test_intent_trial.py +0 -0
  597. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_token_overhead.py +0 -0
  598. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_trigram_workspace.py +0 -0
  599. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_understanding_evaluation.py +0 -0
  600. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_walk_order.py +0 -0
  601. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_warm_cache.py +0 -0
  602. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/test_workflow_sequences.py +0 -0
  603. {attocode_code_intel-0.1.21/tests/unit/code_intel → attocode_code_intel-0.1.23/tests/unit}/__init__.py +0 -0
  604. {attocode_code_intel-0.1.21/tests/unit/context → attocode_code_intel-0.1.23/tests/unit/code_intel}/__init__.py +0 -0
  605. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/conftest.py +0 -0
  606. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_advisory_lock.py +0 -0
  607. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_api.py +0 -0
  608. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_api_phase3a.py +0 -0
  609. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_api_v2.py +0 -0
  610. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_auth.py +0 -0
  611. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_branch_versioning.py +0 -0
  612. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_bug_finder.py +0 -0
  613. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_call_graph_tool.py +0 -0
  614. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_ci_runner.py +0 -0
  615. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_cli_lifecycle.py +0 -0
  616. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_cli_maintenance_local.py +0 -0
  617. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_cli_ops.py +0 -0
  618. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_cli_query_commands.py +0 -0
  619. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_cli_remote.py +0 -0
  620. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_codex_rereview_polish.py +0 -0
  621. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_combinators.py +0 -0
  622. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_confidence.py +0 -0
  623. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_confidence_adoption.py +0 -0
  624. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_config.py +0 -0
  625. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_config_remote.py +0 -0
  626. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_cross_mode.py +0 -0
  627. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_db_security_scan.py +0 -0
  628. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_deps.py +0 -0
  629. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_diff_engine.py +0 -0
  630. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_edge_cases.py +0 -0
  631. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_frecency.py +0 -0
  632. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_fuzzy.py +0 -0
  633. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_index_store_migration.py +0 -0
  634. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_kw_index_status.py +0 -0
  635. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_lsp_call_graph.py +0 -0
  636. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_lsp_enrichment.py +0 -0
  637. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_lsp_extended_models.py +0 -0
  638. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_marketplace.py +0 -0
  639. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_metavar.py +0 -0
  640. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_middleware.py +0 -0
  641. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_notify_enhanced.py +0 -0
  642. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_org_isolation.py +0 -0
  643. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_pack_autoload.py +0 -0
  644. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_profiling.py +0 -0
  645. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_project_discovery.py +0 -0
  646. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_provenance_store.py +0 -0
  647. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_pubsub_streams.py +0 -0
  648. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_query_constraints.py +0 -0
  649. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_query_history.py +0 -0
  650. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_readiness.py +0 -0
  651. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_reindex_embeddings.py +0 -0
  652. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_remote_local_fallback.py +0 -0
  653. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_remote_provider.py +0 -0
  654. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_remote_reliability.py +0 -0
  655. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_repo_ranker.py +0 -0
  656. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_rule_evolution.py +0 -0
  657. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_rule_hygiene.py +0 -0
  658. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_rule_tools.py +0 -0
  659. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_rule_violations.py +0 -0
  660. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_rules_engine.py +0 -0
  661. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_rules_integration.py +0 -0
  662. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_sarif.py +0 -0
  663. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_search_tools.py +0 -0
  664. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_server_startup.py +0 -0
  665. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_service.py +0 -0
  666. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_service_mode.py +0 -0
  667. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_status_health.py +0 -0
  668. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_structural_executor.py +0 -0
  669. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_supply_chain_rules.py +0 -0
  670. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_testing_framework.py +0 -0
  671. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/test_webhook_encryption.py +0 -0
  672. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/__init__.py +0 -0
  673. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/conftest.py +0 -0
  674. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_adr_tools.py +0 -0
  675. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_analysis_tools.py +0 -0
  676. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_dead_code_tools.py +0 -0
  677. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_distill_tools.py +0 -0
  678. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_history_tools.py +0 -0
  679. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_learning_tools.py +0 -0
  680. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_lsp_tools.py +0 -0
  681. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_maintenance_tools_phase2.py +0 -0
  682. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_navigation_tools.py +0 -0
  683. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_phase2c_anchors_and_overlays.py +0 -0
  684. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_readiness_tools.py +0 -0
  685. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_search_status_mismatch.py +0 -0
  686. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_search_tools.py +0 -0
  687. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/code_intel/tools/test_server_tools.py +0 -0
  688. {attocode_code_intel-0.1.21/tests/unit/eval → attocode_code_intel-0.1.23/tests/unit/context}/__init__.py +0 -0
  689. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_action_hash.py +0 -0
  690. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_ast_service_adapter.py +0 -0
  691. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_blob_oid.py +0 -0
  692. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_cache_manifest.py +0 -0
  693. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_cas.py +0 -0
  694. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_embedding_rotation.py +0 -0
  695. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_pagerank_restoration.py +0 -0
  696. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_provenance.py +0 -0
  697. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_retrieval_pin.py +0 -0
  698. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/context/test_vector_store_dim_safety.py +0 -0
  699. {attocode_code_intel-0.1.21/tests/unit/integrations → attocode_code_intel-0.1.23/tests/unit/eval}/__init__.py +0 -0
  700. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/conftest.py +0 -0
  701. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_acc_at_k.py +0 -0
  702. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_broad_candidate_audit.py +0 -0
  703. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_calibration_demo.py +0 -0
  704. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_harness.py +0 -0
  705. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_agents.py +0 -0
  706. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_ci.py +0 -0
  707. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_datasets.py +0 -0
  708. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_dense.py +0 -0
  709. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_function_bm25.py +0 -0
  710. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_function_dense.py +0 -0
  711. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_rerank.py +0 -0
  712. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_retrieve.py +0 -0
  713. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_run.py +0 -0
  714. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_matrix_stats.py +0 -0
  715. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_accuracy.py +0 -0
  716. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_bench_config.py +0 -0
  717. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_bench_corpus.py +0 -0
  718. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_bench_evaluator.py +0 -0
  719. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_bench_predicate.py +0 -0
  720. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_bench_scoring.py +0 -0
  721. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_bench_template_engine.py +0 -0
  722. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_rule_harness_import.py +0 -0
  723. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_search_quality_reporting.py +0 -0
  724. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_search_readiness.py +0 -0
  725. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/eval/test_seed_attocode_fixtures.py +0 -0
  726. {attocode_code_intel-0.1.21/tests/unit/integrations/context → attocode_code_intel-0.1.23/tests/unit/integrations}/__init__.py +0 -0
  727. {attocode_code_intel-0.1.21/tests/unit/integrations/utilities → attocode_code_intel-0.1.23/tests/unit/integrations/context}/__init__.py +0 -0
  728. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_architecture_drift.py +0 -0
  729. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_ast_service_hydration.py +0 -0
  730. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_body_chunking.py +0 -0
  731. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_call_graph.py +0 -0
  732. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_code_analyzer.py +0 -0
  733. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_codebase_ast.py +0 -0
  734. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_codebase_context.py +0 -0
  735. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_context_stores_closed.py +0 -0
  736. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_cross_ref_search.py +0 -0
  737. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_embedder_default.py +0 -0
  738. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_embeddings.py +0 -0
  739. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_embeddings_query.py +0 -0
  740. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_go_symbols.py +0 -0
  741. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_hydration.py +0 -0
  742. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_index_store.py +0 -0
  743. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_model_mismatch.py +0 -0
  744. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_path_downweight.py +0 -0
  745. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_query_routing.py +0 -0
  746. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_semantic_search.py +0 -0
  747. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_supported_languages.py +0 -0
  748. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_temporal_coupling.py +0 -0
  749. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_trigram_index.py +0 -0
  750. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_trigram_regex.py +0 -0
  751. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/context/test_ts_parser.py +0 -0
  752. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/test_dataflow.py +0 -0
  753. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/test_feature_flags.py +0 -0
  754. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/test_new_security_rules.py +0 -0
  755. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/test_security_autofix.py +0 -0
  756. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/test_security_matcher.py +0 -0
  757. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/test_streaming_lsp.py +0 -0
  758. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/utilities/test_ignore.py +0 -0
  759. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/integrations/utilities/test_token_estimate.py +0 -0
  760. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/test_code_intel.py +0 -0
  761. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/test_code_intel_hydration.py +0 -0
  762. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/test_errors.py +0 -0
  763. {attocode_code_intel-0.1.21 → attocode_code_intel-0.1.23}/tests/unit/test_memory_store.py +0 -0
@@ -0,0 +1,59 @@
1
+ # Python
2
+ dist/
3
+ __pycache__/
4
+ .venv/
5
+ *.egg-info/
6
+ *.db
7
+ *.db-shm
8
+ *.db-wal
9
+ *.jsonl
10
+ .mypy_cache/
11
+ .pytest_cache/
12
+ .ruff_cache/
13
+
14
+ # Node
15
+ node_modules/
16
+ *.tsbuildinfo
17
+
18
+ # Environment
19
+ .env
20
+
21
+ # Claude/Agent
22
+ .claude/
23
+ .agent/
24
+ .traces/
25
+ .production-agent-sessions/
26
+ .test-sandbox/
27
+
28
+ # Attocode index, caches and private quality runs
29
+ /.attocode/
30
+
31
+ docs/superpowers/
32
+ eval/charts/
33
+ eval/*.md
34
+ eval/*.log
35
+ eval/*.json
36
+
37
+ # Build outputs
38
+ *.vsix
39
+ site/
40
+ snapshot_report.html
41
+ .internal
42
+
43
+ # scripts
44
+ scripts/*
45
+ !scripts/check_pack_licenses.py
46
+ .DS_Store
47
+
48
+ #playwright
49
+ .playwright-mcp
50
+
51
+ #gsd
52
+ .gsd/
53
+ .bg-shell/
54
+
55
+ #cursor
56
+ .cursor/
57
+
58
+ # search-quality sweep scratch output
59
+ eval/sweep_out/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: attocode-code-intel
3
- Version: 0.1.21
3
+ Version: 0.1.23
4
4
  Summary: Local code search and navigation for coding agents and people
5
5
  Project-URL: Homepage, https://github.com/eren23/attocode
6
6
  Project-URL: Repository, https://github.com/eren23/attocode
@@ -111,6 +111,8 @@ Provides-Extra: tree-sitter-all
111
111
  Requires-Dist: tree-sitter-language-pack>=0.6; extra == 'tree-sitter-all'
112
112
  Description-Content-Type: text/markdown
113
113
 
114
+ <!-- mcp-name: io.github.eren23/attocode-code-intel -->
115
+
114
116
  # attocode-code-intel
115
117
 
116
118
  Local code search and navigation for coding agents and for people. It runs as an MCP server for Codex, Claude Code, Cursor and other MCP clients, and as a command in your terminal. It needs no model, no API key and no network.
@@ -135,10 +137,32 @@ that new probe. An already running client session must be checked separately.
135
137
 
136
138
  For other clients (VS Code, Zed, Windsurf, Claude Desktop and more), run `attocode-code-intel install <target>`. `attocode-code-intel commands` lists the targets.
137
139
 
140
+ To run the server without an installation, use `uvx`. This is a configuration for any MCP client that starts a local command:
141
+
142
+ ```json
143
+ {
144
+ "mcpServers": {
145
+ "attocode-code-intel": {
146
+ "command": "uvx",
147
+ "args": ["attocode-code-intel", "--project", "/absolute/path/to/your/project"]
148
+ }
149
+ }
150
+ }
151
+ ```
152
+
153
+ You can omit `--project` if the client sends one workspace root. Otherwise the server looks for a repository marker such as `.git` in the working folder and its parents, but never selects your home folder. If it finds no repository, it stops with an error.
154
+
138
155
  To use the latest source, install from a clone of this repository: `uv tool install /path/to/attocode/packages/code-intel`.
139
156
 
140
157
  ## What your agent gets
141
158
 
159
+ Version 0.1.23 is listed in the official MCP Registry and documents a `uvx` quick start. The opt-in hosted rerank now accepts the dated model ID that OpenRouter returns; see [Hosted rerank](https://github.com/eren23/attocode/blob/main/docs/intelligence-search.md#hosted-rerank-experimental). Rerank stays off by default.
160
+
161
+ Version 0.1.22 adds an opt-in discovery budget of up to 100,000 files
162
+ (`ATTOCODE_INTEL_DISCOVERY_MAX_FILES`; the default stays 50,000). It also packages
163
+ the LLM client, so `ATTOCODE_FLAG_CONFIDENCE=llm` and LLM rule synthesis work from
164
+ a PyPI install when an OpenRouter or Anthropic key is set.
165
+
142
166
  Version 0.1.21 includes configured search-discovery coverage, OCaml interface
143
167
  parsing and more conservative Go/Rust fallback evidence. The existing 100 ms native
144
168
  budget and 50,000-file discovery safety ceiling remain; bounded fallback is heuristic.
@@ -233,7 +257,7 @@ failed the frozen protocol. It provides no quality, cost or time benefit evidenc
233
257
 
234
258
  - **First search.** The first tool call starts the index build. A search waits up to 15 seconds for the index. On a large repository, a search can report that the index is warming. Then search again. An empty result during warm-up does not prove that the code is absent.
235
259
  - **Index location.** The index is in `.attocode/` in your project. When the server makes that folder, it adds a `.gitignore`, so the index stays out of commits.
236
- - **What the index reads.** The server reads at most 50,000 files and skips files over 1 MB. It skips files that `.gitignore` ignores, and folders that start with a dot. It also skips folders named `dist`, `build`, `out`, `output`, `target`, `env`, `tmp`, `vendor` or `coverage`, and binary, media and lock files. If a build-named folder contains real source, explicitly re-include it with a root `.gitignore` entry such as `!dist/`; discovery and edit refresh honor that override.
260
+ - **What the index reads.** By default the server discovers at most 50,000 eligible files and skips files over 1 MB. From 0.1.22, the [discovery budget setting](https://github.com/eren23/attocode/blob/main/docs/intelligence-discovery.md) allows an explicit limit up to 100,000; the selected index can be smaller under its independent file limit. It skips files that `.gitignore` ignores, and folders that start with a dot. It also skips folders named `dist`, `build`, `out`, `output`, `target`, `env`, `tmp`, `vendor` or `coverage`, and binary, media and lock files. If a build-named folder contains real source, explicitly re-include it with a root `.gitignore` entry such as `!dist/`; discovery and edit refresh honor that override.
237
261
  - **Languages.** The base install parses Bash, C, C#, C++, CSS, Elixir, Go, HCL, HTML, Java, JavaScript, JSON, Kotlin, Lua, PHP, Python, Ruby, Rust, Scala, Swift, TOML, TypeScript, YAML and Zig. Optional grammars are loaded only when already installed or cached; installing the `tree-sitter-all` extra does not trigger grammar downloads during navigation. A slow grammar falls back after a 100 ms parse budget. Static imports and references are partial evidence, not compiler/type resolution.
238
262
  - **Degraded parsing (development builds).** Selecting a missing definition in
239
263
  a file with a recorded native parse failure permits one bounded retry for
@@ -1,3 +1,5 @@
1
+ <!-- mcp-name: io.github.eren23/attocode-code-intel -->
2
+
1
3
  # attocode-code-intel
2
4
 
3
5
  Local code search and navigation for coding agents and for people. It runs as an MCP server for Codex, Claude Code, Cursor and other MCP clients, and as a command in your terminal. It needs no model, no API key and no network.
@@ -22,10 +24,32 @@ that new probe. An already running client session must be checked separately.
22
24
 
23
25
  For other clients (VS Code, Zed, Windsurf, Claude Desktop and more), run `attocode-code-intel install <target>`. `attocode-code-intel commands` lists the targets.
24
26
 
27
+ To run the server without an installation, use `uvx`. This is a configuration for any MCP client that starts a local command:
28
+
29
+ ```json
30
+ {
31
+ "mcpServers": {
32
+ "attocode-code-intel": {
33
+ "command": "uvx",
34
+ "args": ["attocode-code-intel", "--project", "/absolute/path/to/your/project"]
35
+ }
36
+ }
37
+ }
38
+ ```
39
+
40
+ You can omit `--project` if the client sends one workspace root. Otherwise the server looks for a repository marker such as `.git` in the working folder and its parents, but never selects your home folder. If it finds no repository, it stops with an error.
41
+
25
42
  To use the latest source, install from a clone of this repository: `uv tool install /path/to/attocode/packages/code-intel`.
26
43
 
27
44
  ## What your agent gets
28
45
 
46
+ Version 0.1.23 is listed in the official MCP Registry and documents a `uvx` quick start. The opt-in hosted rerank now accepts the dated model ID that OpenRouter returns; see [Hosted rerank](https://github.com/eren23/attocode/blob/main/docs/intelligence-search.md#hosted-rerank-experimental). Rerank stays off by default.
47
+
48
+ Version 0.1.22 adds an opt-in discovery budget of up to 100,000 files
49
+ (`ATTOCODE_INTEL_DISCOVERY_MAX_FILES`; the default stays 50,000). It also packages
50
+ the LLM client, so `ATTOCODE_FLAG_CONFIDENCE=llm` and LLM rule synthesis work from
51
+ a PyPI install when an OpenRouter or Anthropic key is set.
52
+
29
53
  Version 0.1.21 includes configured search-discovery coverage, OCaml interface
30
54
  parsing and more conservative Go/Rust fallback evidence. The existing 100 ms native
31
55
  budget and 50,000-file discovery safety ceiling remain; bounded fallback is heuristic.
@@ -120,7 +144,7 @@ failed the frozen protocol. It provides no quality, cost or time benefit evidenc
120
144
 
121
145
  - **First search.** The first tool call starts the index build. A search waits up to 15 seconds for the index. On a large repository, a search can report that the index is warming. Then search again. An empty result during warm-up does not prove that the code is absent.
122
146
  - **Index location.** The index is in `.attocode/` in your project. When the server makes that folder, it adds a `.gitignore`, so the index stays out of commits.
123
- - **What the index reads.** The server reads at most 50,000 files and skips files over 1 MB. It skips files that `.gitignore` ignores, and folders that start with a dot. It also skips folders named `dist`, `build`, `out`, `output`, `target`, `env`, `tmp`, `vendor` or `coverage`, and binary, media and lock files. If a build-named folder contains real source, explicitly re-include it with a root `.gitignore` entry such as `!dist/`; discovery and edit refresh honor that override.
147
+ - **What the index reads.** By default the server discovers at most 50,000 eligible files and skips files over 1 MB. From 0.1.22, the [discovery budget setting](https://github.com/eren23/attocode/blob/main/docs/intelligence-discovery.md) allows an explicit limit up to 100,000; the selected index can be smaller under its independent file limit. It skips files that `.gitignore` ignores, and folders that start with a dot. It also skips folders named `dist`, `build`, `out`, `output`, `target`, `env`, `tmp`, `vendor` or `coverage`, and binary, media and lock files. If a build-named folder contains real source, explicitly re-include it with a root `.gitignore` entry such as `!dist/`; discovery and edit refresh honor that override.
124
148
  - **Languages.** The base install parses Bash, C, C#, C++, CSS, Elixir, Go, HCL, HTML, Java, JavaScript, JSON, Kotlin, Lua, PHP, Python, Ruby, Rust, Scala, Swift, TOML, TypeScript, YAML and Zig. Optional grammars are loaded only when already installed or cached; installing the `tree-sitter-all` extra does not trigger grammar downloads during navigation. A slow grammar falls back after a 100 ms parse budget. Static imports and references are partial evidence, not compiler/type resolution.
125
149
  - **Degraded parsing (development builds).** Selecting a missing definition in
126
150
  a file with a recorded native parse failure permits one bounded retry for
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
6
6
 
7
7
  [project]
8
8
  name = "attocode-code-intel"
9
- version = "0.1.21"
9
+ version = "0.1.23"
10
10
  description = "Local code search and navigation for coding agents and people"
11
11
  readme = "README.md"
12
12
  requires-python = ">=3.12"
@@ -142,8 +142,8 @@ packages = [
142
142
  ]
143
143
 
144
144
  [tool.hatch.build.targets.sdist]
145
- # Frozen experiment results remain available in the tagged Git repository.
146
- exclude = ["/evals/results/"]
145
+ # Frozen study designs and results remain available in the tagged Git repository.
146
+ exclude = ["/evals/"]
147
147
 
148
148
  [tool.pytest.ini_options]
149
149
  asyncio_mode = "auto"
@@ -49,4 +49,4 @@ def __getattr__(name: str) -> Any:
49
49
  raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
50
50
 
51
51
  # The other copy is packages/code-intel/pyproject.toml. A test checks that both match.
52
- __version__ = "0.1.21"
52
+ __version__ = "0.1.23"
@@ -821,6 +821,27 @@ def build_dependency_graph(
821
821
  return graph
822
822
 
823
823
 
824
+ _DISCOVERY_ENV = "ATTOCODE_INTEL_DISCOVERY_MAX_FILES"
825
+ _DEFAULT_DISCOVERY_MAX_FILES = 50_000
826
+ _HARD_DISCOVERY_MAX_FILES = 100_000
827
+
828
+
829
+ def _validate_discovery_max_files(value: int) -> int:
830
+ if type(value) is not int or not 1 <= value <= _HARD_DISCOVERY_MAX_FILES:
831
+ raise ValueError(f"discovery_max_files must be an integer from 1 to {_HARD_DISCOVERY_MAX_FILES}")
832
+ return value
833
+
834
+
835
+ def _discovery_max_files_from_env() -> int:
836
+ raw = os.environ.get(_DISCOVERY_ENV)
837
+ if raw is None:
838
+ return _DEFAULT_DISCOVERY_MAX_FILES
839
+ try:
840
+ return _validate_discovery_max_files(int(raw))
841
+ except ValueError as exc:
842
+ raise ValueError(f"{_DISCOVERY_ENV} must be an integer from 1 to {_HARD_DISCOVERY_MAX_FILES}") from exc
843
+
844
+
824
845
  @dataclass
825
846
  class CodebaseContextManager:
826
847
  """Manages codebase context for intelligent code understanding.
@@ -853,6 +874,12 @@ class CodebaseContextManager:
853
874
  _ignored_checkout_dirs_capped: bool = field(default=False, repr=False)
854
875
  cancelled: Callable[[], bool] | None = field(default=None, repr=False, compare=False)
855
876
  _discovery_snapshot: Any = field(default=None, repr=False, compare=False)
877
+ # Separate from max_files, which caps selection after importance scoring.
878
+ # Capture the environment per instance; preserve existing positional fields.
879
+ discovery_max_files: int = field(default_factory=_discovery_max_files_from_env, kw_only=True)
880
+
881
+ def __post_init__(self) -> None:
882
+ _validate_discovery_max_files(self.discovery_max_files)
856
883
 
857
884
  def _check_cancelled(self) -> None:
858
885
  if self.cancelled is not None and self.cancelled():
@@ -906,7 +933,8 @@ class CodebaseContextManager:
906
933
  directory/file and the ignore-file identity must still match. A failed
907
934
  validation leaves this context empty so its normal fresh discovery runs.
908
935
  """
909
- if snapshot is None or not snapshot.valid_for(self):
936
+ scan_limit = _validate_discovery_max_files(self.discovery_max_files)
937
+ if snapshot is None or len(snapshot.files) > scan_limit or not snapshot.valid_for(self):
910
938
  return False
911
939
  files = [FileInfo(*row) for row in snapshot.files]
912
940
  cap = _compute_dynamic_cap(files, self.max_files)
@@ -927,6 +955,7 @@ class CodebaseContextManager:
927
955
  Returns:
928
956
  List of FileInfo objects for discovered files.
929
957
  """
958
+ scan_limit = _validate_discovery_max_files(self.discovery_max_files)
930
959
  root = Path(self.root_dir)
931
960
  resolved_root = root.resolve()
932
961
  from attocode_intel._internal.integrations.context.discovery_snapshot import (
@@ -962,7 +991,7 @@ class CodebaseContextManager:
962
991
  guard(root / ".gitignore", missing_ok=True)
963
992
  ignore = IgnoreManager(root, default_dirs=self.ignore_patterns)
964
993
  files: list[FileInfo] = []
965
- _SAFETY_CEILING = 50_000 # noqa: N806 # OOM guard for massive repos
994
+ scan_truncated = False
966
995
  self._ignored_checkout_dirs = []
967
996
  self._ignored_checkout_dirs_capped = False
968
997
 
@@ -1028,6 +1057,12 @@ class CodebaseContextManager:
1028
1057
  if size > 1_000_000: # 1MB
1029
1058
  continue
1030
1059
 
1060
+ # One further eligible file proves overflow. Excluded files do
1061
+ # not, and no descriptor/content is allocated for this lookahead.
1062
+ if len(files) >= scan_limit:
1063
+ scan_truncated = True
1064
+ break
1065
+
1031
1066
  is_test = any(p in rel_path.lower() for p in TEST_PATTERNS)
1032
1067
  is_config = any(p in rel_path.lower() for p in CONFIG_PATTERNS)
1033
1068
 
@@ -1050,10 +1085,7 @@ class CodebaseContextManager:
1050
1085
  line_count=line_count,
1051
1086
  ))
1052
1087
 
1053
- if len(files) >= _SAFETY_CEILING:
1054
- break
1055
-
1056
- if len(files) >= _SAFETY_CEILING:
1088
+ if scan_truncated:
1057
1089
  break
1058
1090
 
1059
1091
  # Score importance
@@ -1084,14 +1116,14 @@ class CodebaseContextManager:
1084
1116
  # Truncate to dynamic cap AFTER scoring (smart truncation)
1085
1117
  cap = _compute_dynamic_cap(files, self.max_files)
1086
1118
  self.discovered_file_count = len(files)
1087
- self.discovery_truncated = len(files) > cap
1119
+ self.discovery_truncated = scan_truncated or len(files) > cap
1088
1120
  if len(files) > cap:
1089
1121
  files = files[:cap]
1090
1122
 
1091
1123
  self._files = files
1092
1124
  self.refresh_excluded_checkout_roots()
1093
1125
  self._last_refresh_time = time.monotonic()
1094
- if snapshot_safe and not self.discovery_truncated and self.discovered_file_count < _SAFETY_CEILING:
1126
+ if snapshot_safe and not self.discovery_truncated and self.discovered_file_count < scan_limit:
1095
1127
  self._discovery_snapshot = DiscoverySnapshot(
1096
1128
  os.path.abspath(self.root_dir), frozenset(self.ignore_patterns),
1097
1129
  self._last_refresh_time,
@@ -1375,55 +1407,6 @@ class CodebaseContextManager:
1375
1407
 
1376
1408
  return result
1377
1409
 
1378
- # --- Recursive context retrieval ---
1379
-
1380
- def get_recursive_context(
1381
- self,
1382
- seed_files: list[str],
1383
- token_budget: int = 20_000,
1384
- max_depth: int = 3,
1385
- max_files: int = 15,
1386
- ) -> str:
1387
- """Gather context by recursively following imports from seed files.
1388
-
1389
- Uses the RecursiveContextRetriever to mechanically follow Python/JS
1390
- imports starting from seed files, gathering content up to a depth
1391
- and token budget. Zero LLM cost.
1392
-
1393
- Args:
1394
- seed_files: Files to start traversal from.
1395
- token_budget: Maximum tokens to gather.
1396
- max_depth: Maximum import-following depth.
1397
- max_files: Maximum files to visit.
1398
-
1399
- Returns:
1400
- Combined content from all gathered files.
1401
- """
1402
- from attocode_intel._internal.tricks.recursive_context import RecursiveContextRetriever
1403
-
1404
- class _FileProvider:
1405
- def __init__(self, root: str) -> None:
1406
- self._root = os.path.realpath(root)
1407
-
1408
- def get_content(self, path: str) -> str | None:
1409
- candidate = os.path.normpath(os.path.join(self._root, path))
1410
- if not candidate.startswith(self._root):
1411
- return None # Path traversal rejected
1412
- try:
1413
- with open(candidate, encoding="utf-8", errors="replace") as f:
1414
- return f.read()
1415
- except (OSError, UnicodeDecodeError):
1416
- return None
1417
-
1418
- retriever = RecursiveContextRetriever(
1419
- _FileProvider(self.root_dir),
1420
- max_depth=max_depth,
1421
- token_budget=token_budget,
1422
- max_files=max_files,
1423
- )
1424
- result = retriever.retrieve(seed_files)
1425
- return result.content
1426
-
1427
1410
  # --- Incremental update API ---
1428
1411
 
1429
1412
  def mark_file_dirty(self, file_path: str) -> None:
@@ -2598,9 +2598,7 @@ class SemanticSearchManager:
2598
2598
  "discovery_max_files": discovery_limit,
2599
2599
  "discovery_discovered_files": discovered,
2600
2600
  "discovery_selected_files": selected,
2601
- # Discovery stops enumerating at50k. Counts at that boundary are
2602
- # lower bounds, even when the later composition cap keeps them all.
2603
- "discovery_truncated": bool(getattr(ctx, "discovery_truncated", False)) or discovered >= 50_000,
2601
+ "discovery_truncated": bool(getattr(ctx, "discovery_truncated", False)),
2604
2602
  })
2605
2603
  self._kw_index_built = True
2606
2604
 
@@ -214,7 +214,17 @@ class SystemOneChoiceReranker:
214
214
  def predict() -> None:
215
215
  try:
216
216
  response = self._post(body, headers)
217
- if self.model and response.get("model") not in {None, self.model}:
217
+ # Hosted routers answer with a dated snapshot of the pinned model,
218
+ # for example typesafe/jev-1.13-20260917 for typesafe/jev-1.13.
219
+ returned = response.get("model")
220
+ if (
221
+ self.model
222
+ and returned is not None
223
+ and not (
224
+ isinstance(returned, str)
225
+ and re.fullmatch(re.escape(self.model) + r"(?:-\d{8})?", returned)
226
+ )
227
+ ):
218
228
  raise ValueError("unexpected ranking model")
219
229
  output.append(("ok", self._scores(response, len(bounded))))
220
230
  except ValueError:
@@ -36,16 +36,50 @@ _ANTHROPIC_MODEL = "claude-haiku-4-5-20251001"
36
36
  _WORKERS = 32
37
37
 
38
38
 
39
- def _default_llm_caller() -> LLMCaller:
40
- """The project's shared client. Only importable inside this repo."""
41
- try:
42
- from eval.meta_harness._llm_client import call_llm
43
- except ModuleNotFoundError as exc: # pragma: no cover - depends on checkout
44
- raise RuntimeError(
45
- "No LLM caller available. Pass llm_caller=..., or run inside the "
46
- "attocode repo where eval.meta_harness is importable."
47
- ) from exc
39
+ def call_llm(prompt: str, model: str = "", max_tokens: int = 4096) -> str:
40
+ """Send one prompt through OpenRouter or Anthropic and return the text.
41
+
42
+ OpenRouter is used when ``OPENROUTER_API_KEY`` is set, otherwise
43
+ ``ANTHROPIC_API_KEY``. The SDKs are optional and imported on demand.
44
+ """
45
+ import os
46
+
47
+ or_key = os.environ.get("OPENROUTER_API_KEY", "")
48
+ anthropic_key = os.environ.get("ANTHROPIC_API_KEY", "")
49
+
50
+ if or_key:
51
+ import openai
52
+
53
+ client = openai.OpenAI(base_url="https://openrouter.ai/api/v1", api_key=or_key)
54
+ response = client.chat.completions.create(
55
+ model=model or "anthropic/claude-sonnet-5",
56
+ max_tokens=max_tokens,
57
+ messages=[{"role": "user", "content": prompt}],
58
+ )
59
+ return response.choices[0].message.content or ""
60
+
61
+ if anthropic_key:
62
+ import anthropic
48
63
 
64
+ model = model or "claude-sonnet-5"
65
+ # Sonnet 5 and Opus 5 think when `thinking` is omitted; keep thinking off.
66
+ extra = {"thinking": {"type": "disabled"}} if model in ("claude-sonnet-5", "claude-opus-5") else {}
67
+ response = anthropic.Anthropic(api_key=anthropic_key).messages.create(
68
+ model=model,
69
+ max_tokens=max_tokens,
70
+ messages=[{"role": "user", "content": prompt}],
71
+ **extra,
72
+ )
73
+ # Thinking blocks can come first, so read the first text block.
74
+ return next((b.text for b in response.content if b.type == "text"), "")
75
+
76
+ raise RuntimeError(
77
+ "No API key found. Set OPENROUTER_API_KEY or ANTHROPIC_API_KEY "
78
+ "in environment or .env file."
79
+ )
80
+
81
+
82
+ def _default_llm_caller() -> LLMCaller:
49
83
  def call(prompt: str, model: str, max_tokens: int) -> str:
50
84
  return call_llm(prompt, model=model, max_tokens=max_tokens)
51
85
 
@@ -53,12 +87,10 @@ def _default_llm_caller() -> LLMCaller:
53
87
 
54
88
 
55
89
  def _load_env() -> None:
56
- """Populate keys from the project .env when running inside the repo."""
57
- try:
58
- from eval.meta_harness._llm_client import load_env
59
- except ModuleNotFoundError: # pragma: no cover - depends on checkout
60
- return
61
- load_env()
90
+ """Populate keys from .env and ~/.jev/env (same loader as the jev scorer)."""
91
+ from attocode_intel.confidence.jev import _load_env as load
92
+
93
+ load()
62
94
 
63
95
 
64
96
  def _cheap_model() -> str:
@@ -307,27 +307,11 @@ def _validate_llm_yaml(
307
307
 
308
308
 
309
309
  def _default_llm_caller(prompt: str) -> str:
310
- """Resolve the project's shared LLM client lazily — keeps the
311
- optional ``openai``/``anthropic`` import out of the import path for
312
- callers that only want the deterministic synthesizer.
313
-
314
- The default client lives under the dev-only ``eval/meta_harness/``
315
- tree, which isn't bundled with the installed wheel. When that path
316
- is unavailable we surface a clear error so the synthesizer's
317
- ``except`` arm can attach it as a diagnostic, instead of letting an
318
- opaque ``ModuleNotFoundError`` bubble out of the MCP tool.
319
- """
320
- try:
321
- from eval.meta_harness._llm_client import call_llm, load_env
322
- except ModuleNotFoundError as exc:
323
- raise RuntimeError(
324
- "LLM synthesis requested but no llm_caller was configured "
325
- "and the dev meta-harness client is not importable from this "
326
- "process. Pass llm_caller=... explicitly when calling "
327
- "synthesize_rule(mode='llm' or 'auto') from production."
328
- ) from exc
329
-
330
- load_env()
310
+ """Call the packaged LLM client. A missing key or SDK raises, and the
311
+ synthesizer's ``except`` arm reports it as a diagnostic."""
312
+ from attocode_intel.confidence.llm import _load_env, call_llm
313
+
314
+ _load_env()
331
315
  return call_llm(prompt, max_tokens=2048)
332
316
 
333
317
 
@@ -0,0 +1,2 @@
1
+ # Local index data of attocode-code-intel
2
+ *
@@ -0,0 +1,34 @@
1
+ """Sample application entry point for integration tests."""
2
+
3
+ from utils import parse_config, validate_input
4
+ from models import User, Config
5
+
6
+
7
+ class App:
8
+ """Main application class."""
9
+
10
+ def __init__(self, config: Config) -> None:
11
+ self.config = config
12
+ self.users: list[User] = []
13
+
14
+ def add_user(self, name: str, email: str) -> User:
15
+ """Create and register a new user."""
16
+ validate_input(name)
17
+ user = User(name=name, email=email)
18
+ self.users.append(user)
19
+ return user
20
+
21
+ def run(self) -> None:
22
+ """Start the application."""
23
+ settings = parse_config(self.config.path)
24
+ print(f"Running with {len(settings)} settings")
25
+
26
+
27
+ def main() -> None:
28
+ config = Config(path="config.yaml", debug=True)
29
+ app = App(config)
30
+ app.run()
31
+
32
+
33
+ if __name__ == "__main__":
34
+ main()
@@ -0,0 +1,25 @@
1
+ """Data models for the sample project."""
2
+
3
+ from dataclasses import dataclass, field
4
+
5
+
6
+ @dataclass
7
+ class User:
8
+ """Represents an application user."""
9
+
10
+ name: str
11
+ email: str
12
+ active: bool = True
13
+
14
+ def deactivate(self) -> None:
15
+ self.active = False
16
+
17
+
18
+ @dataclass
19
+ class Config:
20
+ """Application configuration."""
21
+
22
+ path: str
23
+ debug: bool = False
24
+ max_retries: int = 3
25
+ tags: list[str] = field(default_factory=list)
@@ -0,0 +1,26 @@
1
+ """Utility functions for the sample project."""
2
+
3
+ import os
4
+ import json
5
+
6
+
7
+ def parse_config(path: str) -> dict:
8
+ """Parse a configuration file and return settings."""
9
+ if not os.path.exists(path):
10
+ return {"default": True}
11
+ with open(path) as f:
12
+ return json.load(f)
13
+
14
+
15
+ def validate_input(value: str) -> bool:
16
+ """Validate that input is non-empty and reasonable length."""
17
+ if not value or not value.strip():
18
+ raise ValueError("Input cannot be empty")
19
+ if len(value) > 255:
20
+ raise ValueError("Input too long")
21
+ return True
22
+
23
+
24
+ def format_output(data: dict) -> str:
25
+ """Format data dictionary as a readable string."""
26
+ return "\n".join(f"{k}: {v}" for k, v in sorted(data.items()))
@@ -41,3 +41,32 @@ async def test_capacity_phase_validates_actual_delivered_search_sources(tmp_path
41
41
  source_rows = [row for value in validations for row in value if row.get('kind') == 'source']
42
42
  assert len(source_rows) >= 3
43
43
  assert any(row.get('policy', {}).get('producer') for row in source_rows)
44
+
45
+
46
+ async def test_capacity_phase_expands_same_persisted_index_under_new_scan_policy(tmp_path, monkeypatch):
47
+ monkeypatch.setenv('ATTOCODE_INTEL_MAX_FILES', '100000')
48
+ monkeypatch.setenv('ATTOCODE_INTEL_RANKING_PROVIDER', 'off')
49
+ tree = tmp_path / 'project'
50
+ generate(tree, 3)
51
+ previous = None
52
+ for name, budget, selected, truncated in [('default', '2', 2, True),
53
+ ('expanded', '3', 3, False),
54
+ ('restart', '3', 3, False)]:
55
+ monkeypatch.setenv('ATTOCODE_INTEL_DISCOVERY_MAX_FILES', budget)
56
+ output = tmp_path / name
57
+ spec = {'tree': str(tree), 'size': 3, 'phase': name, 'seconds': 40,
58
+ 'discovery_env': budget, 'expected_selected': selected,
59
+ 'expected_truncated': truncated,
60
+ 'expected_outcome': 'limited' if truncated else 'passed',
61
+ 'persisted_before': previous is not None}
62
+ result = await phase(spec, output)
63
+ assert result['complete'] and result['closed']
64
+ assert result['expected_selected_files'] == selected
65
+ assert result['discovery_truncated'] is truncated
66
+ assert result['discovery_env'] == budget and result['outcome'] == spec['expected_outcome']
67
+ if previous is not None:
68
+ assert result['databases_before'] == previous['databases_after']
69
+ identities = json.loads((output / 'candidate-identities.json').read_bytes())
70
+ expected = [f'module_{n:06d}.py' for n in range(selected)]
71
+ assert identities['keyword_paths'] == identities['body_paths'] == expected
72
+ previous = result