attocode-code-intel 0.1.4__tar.gz → 0.1.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (518) hide show
  1. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/.gitignore +3 -0
  2. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/PKG-INFO +21 -4
  3. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/README.md +20 -3
  4. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/README.md +80 -0
  5. attocode_code_intel-0.1.6/evals/ast_restart_probe.py +101 -0
  6. attocode_code_intel-0.1.6/evals/body_cost_probe.py +101 -0
  7. attocode_code_intel-0.1.6/evals/codex_repair_study.py +415 -0
  8. attocode_code_intel-0.1.6/evals/designs/2026-10-13-codex-repair-diagnostic.md +49 -0
  9. attocode_code_intel-0.1.6/evals/designs/2026-10-13-r7-task-completion-pilot.md +253 -0
  10. attocode_code_intel-0.1.6/evals/designs/2026-10-14-workflow-pilot.md +63 -0
  11. attocode_code_intel-0.1.6/evals/discovery_reuse_probe.py +63 -0
  12. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/external_benchmarks.py +2 -0
  13. attocode_code_intel-0.1.6/evals/lexical_sql_probe.py +171 -0
  14. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/localize_study.py +132 -45
  15. attocode_code_intel-0.1.6/evals/repair_grading.py +142 -0
  16. attocode_code_intel-0.1.6/evals/repair_study.py +513 -0
  17. attocode_code_intel-0.1.6/evals/repair_worker.py +442 -0
  18. attocode_code_intel-0.1.6/evals/restart_discovery_probe.py +101 -0
  19. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/results/2026-10-11-agent-r4-stage0.md +8 -0
  20. attocode_code_intel-0.1.6/evals/results/2026-10-12-r4-stage1-review-agents.md +184 -0
  21. attocode_code_intel-0.1.6/evals/results/2026-10-12-r5-test-suggestions.md +178 -0
  22. attocode_code_intel-0.1.6/evals/results/2026-10-13-codex-repair-diagnostic.md +96 -0
  23. attocode_code_intel-0.1.6/evals/results/2026-10-13-r6-review-test-note.md +170 -0
  24. attocode_code_intel-0.1.6/evals/results/2026-10-13-r7-preparation.md +90 -0
  25. attocode_code_intel-0.1.6/evals/results/2026-10-13-r7-wiring.md +54 -0
  26. attocode_code_intel-0.1.6/evals/results/2026-10-14-bounded-quality/broad-report.json +170 -0
  27. attocode_code_intel-0.1.6/evals/results/2026-10-14-bounded-quality/lifecycle.json +190 -0
  28. attocode_code_intel-0.1.6/evals/results/2026-10-14-bounded-quality/manifest.json +16 -0
  29. attocode_code_intel-0.1.6/evals/results/2026-10-14-bounded-quality/quick-report.json +83 -0
  30. attocode_code_intel-0.1.6/evals/results/2026-10-14-bounded-quality/ranking.json +9 -0
  31. attocode_code_intel-0.1.6/evals/results/2026-10-14-bounded-quality/ranking.log +39 -0
  32. attocode_code_intel-0.1.6/evals/results/2026-10-14-bounded-quality/scale.json +134 -0
  33. attocode_code_intel-0.1.6/evals/results/2026-10-14-bounded-quality/storage.json +40 -0
  34. attocode_code_intel-0.1.6/evals/results/2026-10-14-bounded-quality/workflows.json +7884 -0
  35. attocode_code_intel-0.1.6/evals/results/2026-10-14-bounded-quality.md +79 -0
  36. attocode_code_intel-0.1.6/evals/results/2026-10-14-breadth-cloud-first.json +585 -0
  37. attocode_code_intel-0.1.6/evals/results/2026-10-14-breadth-development.json +10355 -0
  38. attocode_code_intel-0.1.6/evals/results/2026-10-14-breadth-development.md +113 -0
  39. attocode_code_intel-0.1.6/evals/results/2026-10-14-r7-completion-pilot.md +138 -0
  40. attocode_code_intel-0.1.6/evals/results/2026-10-14-search-evidence-audit/fixture-replay.json +429 -0
  41. attocode_code_intel-0.1.6/evals/results/2026-10-14-search-evidence-audit/ledger.json +14332 -0
  42. attocode_code_intel-0.1.6/evals/results/2026-10-14-search-evidence-audit/report.md +48 -0
  43. attocode_code_intel-0.1.6/evals/results/2026-10-14-search-evidence.md +92 -0
  44. attocode_code_intel-0.1.6/evals/results/2026-10-14-search-followup/README.md +92 -0
  45. attocode_code_intel-0.1.6/evals/results/2026-10-14-search-followup/artifact-hashes.json +8 -0
  46. attocode_code_intel-0.1.6/evals/results/2026-10-14-search-followup/chunk-analysis.json +1037 -0
  47. attocode_code_intel-0.1.6/evals/results/2026-10-14-search-followup/chunk-audit-script.txt +75 -0
  48. attocode_code_intel-0.1.6/evals/results/2026-10-14-search-followup/chunk-pools.json +7745 -0
  49. attocode_code_intel-0.1.6/evals/results/2026-10-14-search-followup/mcp-smoke-script.txt +54 -0
  50. attocode_code_intel-0.1.6/evals/results/2026-10-14-search-followup/mcp-smoke.json +590 -0
  51. attocode_code_intel-0.1.6/evals/results/2026-10-14-search-followup/metadata-source-probe.json +103 -0
  52. attocode_code_intel-0.1.6/evals/results/2026-10-15-ast-restart.json +183 -0
  53. attocode_code_intel-0.1.6/evals/results/2026-10-15-ast-restart.md +87 -0
  54. attocode_code_intel-0.1.6/evals/results/2026-10-15-body-index-profile.json +83 -0
  55. attocode_code_intel-0.1.6/evals/results/2026-10-15-body-index-profile.md +40 -0
  56. attocode_code_intel-0.1.6/evals/results/2026-10-15-breadth-cloud.json +3962 -0
  57. attocode_code_intel-0.1.6/evals/results/2026-10-15-breadth-cloud.md +67 -0
  58. attocode_code_intel-0.1.6/evals/results/2026-10-15-cloud-bootstrap.json +62 -0
  59. attocode_code_intel-0.1.6/evals/results/2026-10-15-cloud-bootstrap.md +23 -0
  60. attocode_code_intel-0.1.6/evals/results/2026-10-15-cloud-setup-lock.json +45 -0
  61. attocode_code_intel-0.1.6/evals/results/2026-10-15-cloud-setup-lock.md +28 -0
  62. attocode_code_intel-0.1.6/evals/results/2026-10-15-cockroach-index-probe.json +2107 -0
  63. attocode_code_intel-0.1.6/evals/results/2026-10-15-cockroach-index-probe.md +123 -0
  64. attocode_code_intel-0.1.6/evals/results/2026-10-15-cold-followup.json +6958 -0
  65. attocode_code_intel-0.1.6/evals/results/2026-10-15-cold-followup.md +110 -0
  66. attocode_code_intel-0.1.6/evals/results/2026-10-15-cold-repair-cycle.json +2350 -0
  67. attocode_code_intel-0.1.6/evals/results/2026-10-15-cold-repair-cycle.md +80 -0
  68. attocode_code_intel-0.1.6/evals/results/2026-10-15-discovery-body-repair.json +2257 -0
  69. attocode_code_intel-0.1.6/evals/results/2026-10-15-discovery-body-repair.md +115 -0
  70. attocode_code_intel-0.1.6/evals/results/2026-10-15-discovery-validation.json +851 -0
  71. attocode_code_intel-0.1.6/evals/results/2026-10-15-discovery-validation.md +85 -0
  72. attocode_code_intel-0.1.6/evals/results/2026-10-15-index-probe-readiness.json +2766 -0
  73. attocode_code_intel-0.1.6/evals/results/2026-10-15-index-probe-readiness.md +91 -0
  74. attocode_code_intel-0.1.6/evals/results/2026-10-15-lexical-sql-contention.json +220 -0
  75. attocode_code_intel-0.1.6/evals/results/2026-10-15-lexical-sql-contention.md +38 -0
  76. attocode_code_intel-0.1.6/evals/results/2026-10-15-restart-discovery-repair.json +287 -0
  77. attocode_code_intel-0.1.6/evals/results/2026-10-15-restart-discovery-repair.md +55 -0
  78. attocode_code_intel-0.1.6/evals/results/2026-10-15-structural-write-contention.json +151 -0
  79. attocode_code_intel-0.1.6/evals/results/2026-10-15-structural-write-contention.md +51 -0
  80. attocode_code_intel-0.1.6/evals/search_evidence_audit.py +297 -0
  81. attocode_code_intel-0.1.6/evals/structural_write_probe.py +83 -0
  82. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/study.py +13 -8
  83. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/study_clients.py +6 -3
  84. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/study_events.py +25 -0
  85. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/pyproject.toml +1 -1
  86. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/__init__.py +1 -1
  87. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/ast_service.py +59 -17
  88. attocode_code_intel-0.1.6/src/attocode_intel/_internal/integrations/context/ast_snapshot.py +164 -0
  89. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/codebase_ast.py +15 -61
  90. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/codebase_context.py +189 -118
  91. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/cross_references.py +34 -5
  92. attocode_code_intel-0.1.6/src/attocode_intel/_internal/integrations/context/discovery_snapshot.py +57 -0
  93. attocode_code_intel-0.1.6/src/attocode_intel/_internal/integrations/context/index_probe.py +197 -0
  94. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/index_repair.py +3 -0
  95. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/index_store.py +67 -56
  96. attocode_code_intel-0.1.6/src/attocode_intel/_internal/integrations/context/language_registry.py +75 -0
  97. attocode_code_intel-0.1.6/src/attocode_intel/_internal/integrations/context/module_resolution.py +306 -0
  98. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/semantic_search.py +576 -308
  99. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/syntax_evidence.py +13 -4
  100. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/ts_parser.py +345 -38
  101. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/lsp/client.py +7 -3
  102. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/utilities/ignore.py +34 -4
  103. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/catalog.py +27 -3
  104. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/entrypoint.py +6 -3
  105. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/freshness.py +8 -1
  106. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/gateway.py +34 -10
  107. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/onboarding.py +11 -5
  108. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/output.py +21 -0
  109. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/precision.py +9 -4
  110. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/query_ranking.py +2 -1
  111. attocode_code_intel-0.1.6/src/attocode_intel/search_evidence.py +170 -0
  112. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/service.py +13 -1
  113. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/symbol_links.py +55 -9
  114. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/composite_tools.py +15 -4
  115. attocode_code_intel-0.1.6/tests/test_ast_snapshot.py +307 -0
  116. attocode_code_intel-0.1.6/tests/test_codex_repair_study.py +94 -0
  117. attocode_code_intel-0.1.6/tests/test_cold_index_cost.py +249 -0
  118. attocode_code_intel-0.1.6/tests/test_discovery_reuse.py +237 -0
  119. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_doctor.py +1 -1
  120. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_focused_inspection.py +21 -0
  121. attocode_code_intel-0.1.6/tests/test_index_probe.py +229 -0
  122. attocode_code_intel-0.1.6/tests/test_index_processes.py +155 -0
  123. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_index_reuse.py +123 -0
  124. attocode_code_intel-0.1.6/tests/test_index_sequences.py +74 -0
  125. attocode_code_intel-0.1.6/tests/test_language_capabilities.py +249 -0
  126. attocode_code_intel-0.1.6/tests/test_lean_profile.py +72 -0
  127. attocode_code_intel-0.1.6/tests/test_lexical_sql_cost.py +164 -0
  128. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_localize_study.py +79 -7
  129. attocode_code_intel-0.1.6/tests/test_mixed_workspace.py +106 -0
  130. attocode_code_intel-0.1.6/tests/test_module_ownership.py +314 -0
  131. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_navigation_evidence.py +4 -0
  132. attocode_code_intel-0.1.6/tests/test_operation_contracts.py +51 -0
  133. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_precision_protocol.py +15 -2
  134. attocode_code_intel-0.1.6/tests/test_quality_cloud.py +535 -0
  135. attocode_code_intel-0.1.6/tests/test_quality_evidence.py +279 -0
  136. attocode_code_intel-0.1.6/tests/test_quality_lifecycle.py +205 -0
  137. attocode_code_intel-0.1.6/tests/test_quality_runner.py +151 -0
  138. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_ranking_intent.py +4 -2
  139. attocode_code_intel-0.1.6/tests/test_real_language_server.py +148 -0
  140. attocode_code_intel-0.1.6/tests/test_repair_study.py +266 -0
  141. attocode_code_intel-0.1.6/tests/test_search_evidence.py +348 -0
  142. attocode_code_intel-0.1.6/tests/test_search_evidence_audit.py +127 -0
  143. attocode_code_intel-0.1.6/tests/test_source_exclusions.py +29 -0
  144. attocode_code_intel-0.1.6/tests/test_structural_write_cost.py +88 -0
  145. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_study.py +16 -0
  146. attocode_code_intel-0.1.4/src/attocode_intel/_internal/integrations/context/module_resolution.py +0 -52
  147. attocode_code_intel-0.1.4/tests/test_language_capabilities.py +0 -37
  148. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/LICENSE +0 -0
  149. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/broad_candidate_audit.yaml +0 -0
  150. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/broad_query_cases.yaml +0 -0
  151. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/broad_query_external_cases.yaml +0 -0
  152. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/broad_query_final_holdout.yaml +0 -0
  153. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/client_comparison.py +0 -0
  154. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/client_responses.py +0 -0
  155. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/daily.py +0 -0
  156. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/external_study.py +0 -0
  157. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/graded_blind_pack.yaml +0 -0
  158. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/locbench_title_pack.yaml +0 -0
  159. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/onboarding_study.py +0 -0
  160. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/pilot.py +0 -0
  161. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/quality_scoring.py +0 -0
  162. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/quality_tasks.py +0 -0
  163. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/release_gate.py +0 -0
  164. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/responses.py +0 -0
  165. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/results/2026-09-05-macos.json +0 -0
  166. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/results/2026-10-04-broad-query-ranking.md +0 -0
  167. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/results/2026-10-04-decision-reranker-trial.md +0 -0
  168. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/results/2026-10-04-systemone-http-local-trial.md +0 -0
  169. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/results/2026-10-05-broad-candidate-audit.md +0 -0
  170. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/results/2026-10-05-source-view-transfer.md +0 -0
  171. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/results/2026-10-08-blind-graded-rerank.md +0 -0
  172. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/results/2026-10-08-locbench-560.md +0 -0
  173. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/results/2026-10-09-locbench-560-first-stage.md +0 -0
  174. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/results/2026-10-10-agent-pilot.md +0 -0
  175. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/results/2026-10-10-agent-r3.md +0 -0
  176. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/results/2026-10-10-matrix-r1.md +0 -0
  177. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/results/README.md +0 -0
  178. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/source_view_transfer.yaml +0 -0
  179. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/study_tasks.py +0 -0
  180. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/token_overhead.py +0 -0
  181. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/understanding_scoring.py +0 -0
  182. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/understanding_study.py +0 -0
  183. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/warm_cache.py +0 -0
  184. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/evals/workflows.py +0 -0
  185. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/GUIDELINES.md +0 -0
  186. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/__init__.py +0 -0
  187. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/errors/__init__.py +0 -0
  188. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/__init__.py +0 -0
  189. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/__init__.py +0 -0
  190. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/architecture_drift.py +0 -0
  191. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/ast_chunker.py +0 -0
  192. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/blob_oid.py +0 -0
  193. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/cache_manifest.py +0 -0
  194. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/cas.py +0 -0
  195. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/code_analyzer.py +0 -0
  196. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/cross_mode.py +0 -0
  197. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/embedding_rotation.py +0 -0
  198. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/embeddings.py +0 -0
  199. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/frecency.py +0 -0
  200. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/fuzzy.py +0 -0
  201. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/hierarchical_explorer.py +0 -0
  202. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/hydration.py +0 -0
  203. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/memory_store.py +0 -0
  204. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/query_constraints.py +0 -0
  205. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/query_history.py +0 -0
  206. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/reranker.py +0 -0
  207. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/systemone_ranker.py +0 -0
  208. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/temporal_coupling.py +0 -0
  209. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/trigram_index.py +0 -0
  210. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/trigram_regex.py +0 -0
  211. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/context/vector_store.py +0 -0
  212. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/feature_flags/__init__.py +0 -0
  213. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/lsp/__init__.py +0 -0
  214. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/mcp/__init__.py +0 -0
  215. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/mcp/client.py +0 -0
  216. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/security/__init__.py +0 -0
  217. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/security/custom_rules.py +0 -0
  218. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/security/dataflow.py +0 -0
  219. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/security/dependency_audit.py +0 -0
  220. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/security/matcher.py +0 -0
  221. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/security/patterns.py +0 -0
  222. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/security/scanner.py +0 -0
  223. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/utilities/__init__.py +0 -0
  224. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/integrations/utilities/token_estimate.py +0 -0
  225. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/tricks/__init__.py +0 -0
  226. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/tricks/recursive_context.py +0 -0
  227. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/types/__init__.py +0 -0
  228. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/types/events.py +0 -0
  229. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_internal/types/severity.py +0 -0
  230. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/_shared.py +0 -0
  231. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/analysis_coverage.py +0 -0
  232. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/__init__.py +0 -0
  233. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/access.py +0 -0
  234. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/app.py +0 -0
  235. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/auth/__init__.py +0 -0
  236. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/auth/api_keys.py +0 -0
  237. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/auth/context.py +0 -0
  238. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/auth/jwt.py +0 -0
  239. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/auth/oauth.py +0 -0
  240. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/auth/passwords.py +0 -0
  241. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/deps.py +0 -0
  242. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/knowledge_bridge.py +0 -0
  243. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/mcp_transport.py +0 -0
  244. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/middleware.py +0 -0
  245. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/models.py +0 -0
  246. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/providers/__init__.py +0 -0
  247. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/providers/db_provider.py +0 -0
  248. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/providers/local_provider.py +0 -0
  249. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/providers/remote_provider.py +0 -0
  250. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/repository_source.py +0 -0
  251. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/__init__.py +0 -0
  252. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/_pin_helper.py +0 -0
  253. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/activity.py +0 -0
  254. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/adr.py +0 -0
  255. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/analysis.py +0 -0
  256. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/api_keys.py +0 -0
  257. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/auth.py +0 -0
  258. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/branches.py +0 -0
  259. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/cross_repo_search.py +0 -0
  260. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/embeddings.py +0 -0
  261. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/files.py +0 -0
  262. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/files_v2.py +0 -0
  263. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/gc.py +0 -0
  264. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/git_v2.py +0 -0
  265. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/graph.py +0 -0
  266. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/graph_viz.py +0 -0
  267. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/health.py +0 -0
  268. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/history.py +0 -0
  269. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/jobs.py +0 -0
  270. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/learning.py +0 -0
  271. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/lsp.py +0 -0
  272. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/notify.py +0 -0
  273. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/operations.py +0 -0
  274. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/orgs.py +0 -0
  275. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/preferences.py +0 -0
  276. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/presence.py +0 -0
  277. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/projects.py +0 -0
  278. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/repos.py +0 -0
  279. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/search.py +0 -0
  280. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/snapshots.py +0 -0
  281. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/webhooks.py +0 -0
  282. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/routes/websocket.py +0 -0
  283. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/static/graph.html +0 -0
  284. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/api/utils.py +0 -0
  285. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/artifacts/__init__.py +0 -0
  286. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/artifacts/hashing.py +0 -0
  287. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/artifacts/provenance.py +0 -0
  288. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/artifacts/retrieval_pin.py +0 -0
  289. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/audit.py +0 -0
  290. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/bug_finder.py +0 -0
  291. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/bundle.py +0 -0
  292. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/change_review.py +0 -0
  293. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/cli.py +0 -0
  294. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/community.py +0 -0
  295. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/confidence/__init__.py +0 -0
  296. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/confidence/jev.py +0 -0
  297. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/confidence/llm.py +0 -0
  298. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/confidence/redact.py +0 -0
  299. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/confidence/settings.py +0 -0
  300. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/config.py +0 -0
  301. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/crypto.py +0 -0
  302. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/db/__init__.py +0 -0
  303. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/db/base.py +0 -0
  304. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/db/engine.py +0 -0
  305. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/db/models.py +0 -0
  306. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/focused_evidence.py +0 -0
  307. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/git/__init__.py +0 -0
  308. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/git/credentials.py +0 -0
  309. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/git/manager.py +0 -0
  310. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/git/models.py +0 -0
  311. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/git/storage.py +0 -0
  312. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/graph_query_parser.py +0 -0
  313. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/helpers.py +0 -0
  314. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/indexing/__init__.py +0 -0
  315. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/indexing/debouncer.py +0 -0
  316. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/indexing/delta_indexer.py +0 -0
  317. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/indexing/full_indexer.py +0 -0
  318. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/indexing/incremental.py +0 -0
  319. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/indexing/parser.py +0 -0
  320. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/indexing/summarizer.py +0 -0
  321. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/installer.py +0 -0
  322. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/knowledge.py +0 -0
  323. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/local_knowledge.py +0 -0
  324. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/alembic.ini +0 -0
  325. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/env.py +0 -0
  326. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/script.py.mako +0 -0
  327. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/001_initial_schema.py +0 -0
  328. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/002_branch_version_and_embeddings.py +0 -0
  329. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/003_embedding_uniqueness_and_cascade.py +0 -0
  330. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/004_audit_events.py +0 -0
  331. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/005_user_preferences.py +0 -0
  332. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/006_google_oauth.py +0 -0
  333. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/007_pgvector_embeddings.py +0 -0
  334. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/008_symbol_references.py +0 -0
  335. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/009_webhook_secret_encryption.py +0 -0
  336. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/010_add_commits_table.py +0 -0
  337. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/011_commit_changed_files.py +0 -0
  338. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/012_branch_merged_at.py +0 -0
  339. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/013_revoked_tokens.py +0 -0
  340. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/014_blame_hunks.py +0 -0
  341. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/015_commit_file_stats.py +0 -0
  342. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/016_embedding_provenance_columns.py +0 -0
  343. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/017_provenance_table.py +0 -0
  344. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/018_repo_snapshots.py +0 -0
  345. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/019_symref_caller.py +0 -0
  346. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/migrations/versions/020_shared_knowledge.py +0 -0
  347. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/presence.py +0 -0
  348. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/probe.py +0 -0
  349. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/project_dir.py +0 -0
  350. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/pubsub.py +0 -0
  351. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/readiness.py +0 -0
  352. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/redis.py +0 -0
  353. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/reference_pages.py +0 -0
  354. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/remote.py +0 -0
  355. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/repo_ranker.py +0 -0
  356. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/request_context.py +0 -0
  357. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/__init__.py +0 -0
  358. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/ci.py +0 -0
  359. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/combinators.py +0 -0
  360. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/enricher.py +0 -0
  361. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/evolution.py +0 -0
  362. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/executor.py +0 -0
  363. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/filters/__init__.py +0 -0
  364. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/filters/pipeline.py +0 -0
  365. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/formatter.py +0 -0
  366. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/hygiene.py +0 -0
  367. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/importers/__init__.py +0 -0
  368. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/importers/semgrep.py +0 -0
  369. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/loader.py +0 -0
  370. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/marketplace.py +0 -0
  371. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/metavar.py +0 -0
  372. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/model.py +0 -0
  373. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/__init__.py +0 -0
  374. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/_license_templates/Apache-2.0.txt +0 -0
  375. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/_license_templates/MIT.txt +0 -0
  376. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/bandit-python/LICENSE +0 -0
  377. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/bandit-python/NOTICE +0 -0
  378. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/bandit-python/PORTING.md +0 -0
  379. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/bandit-python/manifest.yaml +0 -0
  380. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/bandit-python/rules/B105-hardcoded-password.yaml +0 -0
  381. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/bandit-python/rules/B303-weak-md5.yaml +0 -0
  382. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/bandit-python/rules/B304-weak-des.yaml +0 -0
  383. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/bandit-python/rules/B307-use-of-eval.yaml +0 -0
  384. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/bandit-python/rules/B324-weak-sha1.yaml +0 -0
  385. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/bandit-python/rules/B501-no-cert-validation.yaml +0 -0
  386. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/bandit-python/rules/B602-shell-true.yaml +0 -0
  387. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/bandit-python/rules/B608-sqli.yaml +0 -0
  388. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/eslint-typescript/LICENSE +0 -0
  389. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/eslint-typescript/NOTICE +0 -0
  390. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/eslint-typescript/PORTING.md +0 -0
  391. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/eslint-typescript/manifest.yaml +0 -0
  392. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/eqeqeq.yaml +0 -0
  393. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-eval.yaml +0 -0
  394. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-implied-eval.yaml +0 -0
  395. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-new-func.yaml +0 -0
  396. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-throw-literal.yaml +0 -0
  397. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-var.yaml +0 -0
  398. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/eslint-typescript/rules/no-with.yaml +0 -0
  399. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/gosec-go/LICENSE +0 -0
  400. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/gosec-go/NOTICE +0 -0
  401. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/gosec-go/PORTING.md +0 -0
  402. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/gosec-go/manifest.yaml +0 -0
  403. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/gosec-go/rules/G101-hardcoded-credentials.yaml +0 -0
  404. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/gosec-go/rules/G102-bind-all-interfaces.yaml +0 -0
  405. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/gosec-go/rules/G103-unsafe-block.yaml +0 -0
  406. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/gosec-go/rules/G201-sql-format.yaml +0 -0
  407. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/gosec-go/rules/G304-file-inclusion.yaml +0 -0
  408. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/gosec-go/rules/G401-weak-cipher.yaml +0 -0
  409. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/gosec-go/rules/G402-tls-min-version.yaml +0 -0
  410. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/community/gosec-go/rules/G501-md5-import.yaml +0 -0
  411. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/cpp/manifest.yaml +0 -0
  412. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/cpp/rules/security.yaml +0 -0
  413. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/cpp/rules/structural.yaml +0 -0
  414. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/csharp/manifest.yaml +0 -0
  415. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/csharp/rules/security.yaml +0 -0
  416. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/csharp/rules/structural.yaml +0 -0
  417. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/go/manifest.yaml +0 -0
  418. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/go/rules/performance.yaml +0 -0
  419. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/go/rules/security.yaml +0 -0
  420. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/go/rules/structural.yaml +0 -0
  421. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/go/taint/sanitizers.yaml +0 -0
  422. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/go/taint/sinks.yaml +0 -0
  423. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/go/taint/sources.yaml +0 -0
  424. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/java/manifest.yaml +0 -0
  425. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/java/rules/correctness.yaml +0 -0
  426. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/java/rules/structural.yaml +0 -0
  427. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/java/taint/sinks.yaml +0 -0
  428. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/java/taint/sources.yaml +0 -0
  429. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/kotlin/manifest.yaml +0 -0
  430. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/kotlin/rules/correctness.yaml +0 -0
  431. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/kotlin/rules/structural.yaml +0 -0
  432. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/php/manifest.yaml +0 -0
  433. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/php/rules/security.yaml +0 -0
  434. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/php/rules/structural.yaml +0 -0
  435. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/python/manifest.yaml +0 -0
  436. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/python/rules/performance.yaml +0 -0
  437. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/python/rules/structural.yaml +0 -0
  438. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/ruby/manifest.yaml +0 -0
  439. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/ruby/rules/security.yaml +0 -0
  440. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/ruby/rules/structural.yaml +0 -0
  441. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/rust/manifest.yaml +0 -0
  442. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/rust/rules/correctness.yaml +0 -0
  443. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/rust/rules/structural.yaml +0 -0
  444. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/typescript/manifest.yaml +0 -0
  445. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/typescript/rules/performance.yaml +0 -0
  446. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/examples/typescript/rules/structural.yaml +0 -0
  447. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/packs/pack_loader.py +0 -0
  448. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/plugins/__init__.py +0 -0
  449. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/plugins/plugin_loader.py +0 -0
  450. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/profiling.py +0 -0
  451. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/registry.py +0 -0
  452. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/sarif.py +0 -0
  453. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/synthesis.py +0 -0
  454. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/rules/testing.py +0 -0
  455. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/server.py +0 -0
  456. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/sharing.py +0 -0
  457. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/storage/__init__.py +0 -0
  458. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/storage/branch_overlay.py +0 -0
  459. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/storage/content_store.py +0 -0
  460. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/storage/dependency_store.py +0 -0
  461. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/storage/diff_engine.py +0 -0
  462. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/storage/embedding_store.py +0 -0
  463. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/storage/provenance_store.py +0 -0
  464. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/storage/security_scanner_db.py +0 -0
  465. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/storage/symbol_store.py +0 -0
  466. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/structural_evidence.py +0 -0
  467. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/symbol_inspection.py +0 -0
  468. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/telemetry.py +0 -0
  469. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/test_ranking.py +0 -0
  470. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/testing/__init__.py +0 -0
  471. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/testing/fixtures.py +0 -0
  472. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/testing/helpers.py +0 -0
  473. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/testing/mocks.py +0 -0
  474. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/__init__.py +0 -0
  475. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/adr_tools.py +0 -0
  476. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/analysis_tools.py +0 -0
  477. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/cross_mode_tools.py +0 -0
  478. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/dead_code_tools.py +0 -0
  479. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/distill_tools.py +0 -0
  480. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/frecency_tools.py +0 -0
  481. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/fuzzy_tools.py +0 -0
  482. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/history_tools.py +0 -0
  483. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/learning_tools.py +0 -0
  484. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/lsp_tools.py +0 -0
  485. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/maintenance_tools.py +0 -0
  486. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/navigation_tools.py +0 -0
  487. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/overlay_tools.py +0 -0
  488. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/pin_store.py +0 -0
  489. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/pin_tools.py +0 -0
  490. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/query_constraints_tools.py +0 -0
  491. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/query_history_tools.py +0 -0
  492. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/readiness_tools.py +0 -0
  493. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/rule_tools.py +0 -0
  494. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/search_tools.py +0 -0
  495. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/tools/snapshot_tools.py +0 -0
  496. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/workers/__init__.py +0 -0
  497. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/workers/job_utils.py +0 -0
  498. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/workers/jobs.py +0 -0
  499. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/workers/run.py +0 -0
  500. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/src/attocode_intel/workers/settings.py +0 -0
  501. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_cold_discovery.py +0 -0
  502. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_compact_inspection.py +0 -0
  503. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_daily_workflows.py +0 -0
  504. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_edit_restart.py +0 -0
  505. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_external_study.py +0 -0
  506. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_local_reranker.py +0 -0
  507. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_onboarding_study.py +0 -0
  508. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_pilot.py +0 -0
  509. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_product.py +0 -0
  510. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_quality_evaluation.py +0 -0
  511. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_query_ranking.py +0 -0
  512. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_remote.py +0 -0
  513. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_structural_evidence.py +0 -0
  514. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_systemone_ranker.py +0 -0
  515. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_token_overhead.py +0 -0
  516. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_understanding_evaluation.py +0 -0
  517. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_walk_order.py +0 -0
  518. {attocode_code_intel-0.1.4 → attocode_code_intel-0.1.6}/tests/test_warm_cache.py +0 -0
@@ -80,3 +80,6 @@ scripts/*
80
80
 
81
81
  # search-quality sweep scratch output
82
82
  eval/sweep_out/
83
+
84
+ # Bounded validation workspaces, reports and cloud ledger
85
+ .attocode/quality/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: attocode-code-intel
3
- Version: 0.1.4
3
+ Version: 0.1.6
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
@@ -152,6 +152,15 @@ The agent sees 16 tools (the `daily` profile):
152
152
 
153
153
  For all tools (about 140: rules, security scans, history, snapshots and more), add `--profile full` to `init`. The [tool catalog](https://github.com/eren23/attocode/blob/main/docs/intelligence-tools.md) lists them. The [search details](https://github.com/eren23/attocode/blob/main/docs/intelligence-search.md) page describes ranking, the response format and the experimental rerankers.
154
154
 
155
+ For an experimental local seven-tool surface (0.1.5 or later), use
156
+ `init --profile lean` and restart your client. It advertises `bootstrap`,
157
+ `search_symbols`, `inspect_symbol`, `semantic_search`, `impact_analysis`,
158
+ `suggest_tests` and `capabilities`, with conditional routing instructions
159
+ and 2,000-token responses. Without file watching, `notify_file_changed`
160
+ is an eighth tool. Advanced tools require a full-profile session.
161
+ This opt-in profile has no demonstrated completion benefit; see the
162
+ [completed pilot](https://github.com/eren23/attocode/blob/main/packages/code-intel/evals/results/2026-10-14-r7-completion-pilot.md).
163
+
155
164
  ## Commands for people
156
165
 
157
166
  Run these in your project:
@@ -172,14 +181,16 @@ Search matches the words of the code and its paths. It does not use embeddings u
172
181
  - **Search.** We ran the 560 issues of Loc-Bench V1, with the full issue as the query. For 53.2% of them, the first five files held all files of the fix (file Acc@5 0.532). On a mix of 10 public benchmarks, file Acc@5 was 0.425. See the [first-stage results](https://github.com/eren23/attocode/blob/main/packages/code-intel/evals/results/2026-10-09-locbench-560-first-stage.md) and the [matrix results](https://github.com/eren23/attocode/blob/main/packages/code-intel/evals/results/2026-10-10-matrix-r1.md).
173
182
  - **Agents.** In four studies, Claude Code (Sonnet 5.5) named the files to edit for an issue. The server did not raise file Acc@5. Each run with the server cost 1.4 to 2.1 times as much. When the agent could choose, it seldom called the server. See the [agent pilot](https://github.com/eren23/attocode/blob/main/packages/code-intel/evals/results/2026-10-10-agent-pilot.md) and [study R3](https://github.com/eren23/attocode/blob/main/packages/code-intel/evals/results/2026-10-10-agent-r3.md).
174
183
 
175
- We have not tested longer agent tasks, such as edits or reviews.
184
+ The [R6 review study](https://github.com/eren23/attocode/blob/main/packages/code-intel/evals/results/2026-10-13-r6-review-test-note.md)
185
+ found no demonstrated review benefit. The [completed R7 repair pilot](https://github.com/eren23/attocode/blob/main/packages/code-intel/evals/results/2026-10-14-r7-completion-pilot.md)
186
+ also found no demonstrated benefit; its reviewed decision is to stop expansion.
176
187
 
177
188
  ## Limits and troubleshooting
178
189
 
179
190
  - **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.
180
191
  - **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.
181
- - **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 `build`, `out`, `output`, `target`, `env`, `tmp`, `vendor` or `coverage`, and binary, media and lock files.
182
- - **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. The `tree-sitter-all` extra adds about 170 more.
192
+ - **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.
193
+ - **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.
183
194
  - **Remove the setup.** Run `attocode-code-intel init --remove`. It restores an entry that existed before `init`.
184
195
  - **Server does not answer.** Run `attocode-code-intel doctor`. If a client shows "not configured", run `init` for it. After a change, restart the agent. In Claude Code, `/mcp` shows the server state.
185
196
  - **HTTP server.** `attocode-code-intel --transport http` needs the `http` extra. It serves only this computer unless you set `ATTOCODE_API_KEY`.
@@ -216,6 +227,12 @@ uv run pytest -c packages/code-intel/pyproject.toml --confcutdir=packages/code-i
216
227
  uv build --package attocode-code-intel
217
228
  ```
218
229
 
230
+ For routine work, use `.venv/bin/python -m eval.quality quick` (two minutes)
231
+ or `local` (ten minutes). They isolate scratch and caches in a monitored 5 GiB
232
+ workspace and report incomplete runs separately from passes. The
233
+ [quality guide](https://github.com/eren23/attocode/blob/main/docs/intelligence-quality.md) covers pinned multi-language
234
+ workflow checks, storage inventory, cleanup and optional CPU cloud batches.
235
+
219
236
  Releases use `intel-v*` tags ([release guide](https://github.com/eren23/attocode/blob/main/docs/intelligence-release.md)).
220
237
 
221
238
  [Product and operations guide](https://github.com/eren23/attocode/blob/main/docs/intelligence.md) · [Tool catalog](https://github.com/eren23/attocode/blob/main/docs/intelligence-tools.md) · [Search details](https://github.com/eren23/attocode/blob/main/docs/intelligence-search.md) · [Changelog](https://github.com/eren23/attocode/blob/main/CHANGELOG.md) · [MIT license](https://github.com/eren23/attocode/blob/main/packages/code-intel/LICENSE)
@@ -40,6 +40,15 @@ The agent sees 16 tools (the `daily` profile):
40
40
 
41
41
  For all tools (about 140: rules, security scans, history, snapshots and more), add `--profile full` to `init`. The [tool catalog](https://github.com/eren23/attocode/blob/main/docs/intelligence-tools.md) lists them. The [search details](https://github.com/eren23/attocode/blob/main/docs/intelligence-search.md) page describes ranking, the response format and the experimental rerankers.
42
42
 
43
+ For an experimental local seven-tool surface (0.1.5 or later), use
44
+ `init --profile lean` and restart your client. It advertises `bootstrap`,
45
+ `search_symbols`, `inspect_symbol`, `semantic_search`, `impact_analysis`,
46
+ `suggest_tests` and `capabilities`, with conditional routing instructions
47
+ and 2,000-token responses. Without file watching, `notify_file_changed`
48
+ is an eighth tool. Advanced tools require a full-profile session.
49
+ This opt-in profile has no demonstrated completion benefit; see the
50
+ [completed pilot](https://github.com/eren23/attocode/blob/main/packages/code-intel/evals/results/2026-10-14-r7-completion-pilot.md).
51
+
43
52
  ## Commands for people
44
53
 
45
54
  Run these in your project:
@@ -60,14 +69,16 @@ Search matches the words of the code and its paths. It does not use embeddings u
60
69
  - **Search.** We ran the 560 issues of Loc-Bench V1, with the full issue as the query. For 53.2% of them, the first five files held all files of the fix (file Acc@5 0.532). On a mix of 10 public benchmarks, file Acc@5 was 0.425. See the [first-stage results](https://github.com/eren23/attocode/blob/main/packages/code-intel/evals/results/2026-10-09-locbench-560-first-stage.md) and the [matrix results](https://github.com/eren23/attocode/blob/main/packages/code-intel/evals/results/2026-10-10-matrix-r1.md).
61
70
  - **Agents.** In four studies, Claude Code (Sonnet 5.5) named the files to edit for an issue. The server did not raise file Acc@5. Each run with the server cost 1.4 to 2.1 times as much. When the agent could choose, it seldom called the server. See the [agent pilot](https://github.com/eren23/attocode/blob/main/packages/code-intel/evals/results/2026-10-10-agent-pilot.md) and [study R3](https://github.com/eren23/attocode/blob/main/packages/code-intel/evals/results/2026-10-10-agent-r3.md).
62
71
 
63
- We have not tested longer agent tasks, such as edits or reviews.
72
+ The [R6 review study](https://github.com/eren23/attocode/blob/main/packages/code-intel/evals/results/2026-10-13-r6-review-test-note.md)
73
+ found no demonstrated review benefit. The [completed R7 repair pilot](https://github.com/eren23/attocode/blob/main/packages/code-intel/evals/results/2026-10-14-r7-completion-pilot.md)
74
+ also found no demonstrated benefit; its reviewed decision is to stop expansion.
64
75
 
65
76
  ## Limits and troubleshooting
66
77
 
67
78
  - **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.
68
79
  - **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.
69
- - **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 `build`, `out`, `output`, `target`, `env`, `tmp`, `vendor` or `coverage`, and binary, media and lock files.
70
- - **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. The `tree-sitter-all` extra adds about 170 more.
80
+ - **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.
81
+ - **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.
71
82
  - **Remove the setup.** Run `attocode-code-intel init --remove`. It restores an entry that existed before `init`.
72
83
  - **Server does not answer.** Run `attocode-code-intel doctor`. If a client shows "not configured", run `init` for it. After a change, restart the agent. In Claude Code, `/mcp` shows the server state.
73
84
  - **HTTP server.** `attocode-code-intel --transport http` needs the `http` extra. It serves only this computer unless you set `ATTOCODE_API_KEY`.
@@ -104,6 +115,12 @@ uv run pytest -c packages/code-intel/pyproject.toml --confcutdir=packages/code-i
104
115
  uv build --package attocode-code-intel
105
116
  ```
106
117
 
118
+ For routine work, use `.venv/bin/python -m eval.quality quick` (two minutes)
119
+ or `local` (ten minutes). They isolate scratch and caches in a monitored 5 GiB
120
+ workspace and report incomplete runs separately from passes. The
121
+ [quality guide](https://github.com/eren23/attocode/blob/main/docs/intelligence-quality.md) covers pinned multi-language
122
+ workflow checks, storage inventory, cleanup and optional CPU cloud batches.
123
+
107
124
  Releases use `intel-v*` tags ([release guide](https://github.com/eren23/attocode/blob/main/docs/intelligence-release.md)).
108
125
 
109
126
  [Product and operations guide](https://github.com/eren23/attocode/blob/main/docs/intelligence.md) · [Tool catalog](https://github.com/eren23/attocode/blob/main/docs/intelligence-tools.md) · [Search details](https://github.com/eren23/attocode/blob/main/docs/intelligence-search.md) · [Changelog](https://github.com/eren23/attocode/blob/main/CHANGELOG.md) · [MIT license](https://github.com/eren23/attocode/blob/main/packages/code-intel/LICENSE)
@@ -204,6 +204,14 @@ The primary comparisons are ΔAcc@5 and the geometric mean cost ratio. The repor
204
204
 
205
205
  With `--matrix OUT`, the report reads the rows of one offline cell (`--offline-cell`, default `product`) at variant `full` in `OUT/results.jsonl`. For each setup, it correlates the offline reciprocal rank of the first gold file with the agent Acc@5 (Spearman). It also gives a 2×2 table of offline hit@5 and agent hit. An agent hit is a task mean Acc@5 of 0.5 or more. The report counts the tasks without an offline row and does not score them.
206
206
 
207
+ ## Agent review study
208
+
209
+ `study.py freeze --mode review` freezes a change-review study (R4 Stage 1). It uses the harness and the commands of the localization study. Each line of `--instances` has `id` (`dataset/native`), `repo`, `base_commit`, `patch` and `gold`. The gold files are the existing test files that the fix changed. `prepare` applies the patch to the one-commit snapshot without a commit. New files are intent-to-add, so `git diff` shows them. A review study has no `issue_only` setup.
210
+
211
+ The frozen prompt `REVIEW_PROMPT_V2` asks for the existing test files that check the change. The answer is `{"tests": [...]}`: at most 10 paths, best first. All setups get `Read`, `Grep`, `Glob` and `Bash` (`Bash(git diff:*)` with `--permission-mode dontAsk`). Claude Code runs read-only commands, such as `git diff` and `ls`, without a rule. It denies other commands, for example a test run or a file write. A denied call does not fail the run, and `summary` counts the denied calls. `intel_first` asks the agent to run `git diff --name-only` and then to call `suggest_tests` once with those files. The wiring check also proves that `git diff` runs and that `touch` is denied.
212
+
213
+ `summary` scores test Recall@5 and Hit@5. For each run, `gold_shown_not_named` lists the gold tests that an MCP result named. The answer did not name them.
214
+
207
215
  ## Ranking gate
208
216
 
209
217
  `python -m eval.matrix.run ci` is a regression gate for search ranking. The Ranking gate workflow runs it when a pull request changes `packages/code-intel/src/`, `eval/matrix/` or `uv.lock`. The engine hash of the matrix covers all of `packages/code-intel/src/`, so a change in any of these files can move the ranking.
@@ -295,3 +303,75 @@ The table gives the core mix on the full query. The metric is Acc@5, but gNDCG@5
295
303
  No difference on the core mix passes the Holm test. The datasets are small.
296
304
 
297
305
  The earlier result (v1, also on 2026-10-09) ranked all stored files. It embedded at most 40 windows (1,600 lines) of a file and cut the query at 512 tokens. Markdown, reStructuredText, YAML and text files were about a fifth of the first ten files of `dense`. On the full issue of Loc-Bench 560, `dense` gave Acc@5 0.541 and `rrf(product+dense)` 0.664, against 0.532 for `product`. With only the Python files, `dense` gave 0.609. That pod embedded 1.99 million windows for about $1.7.
306
+
307
+
308
+ ## Repair completion pilot
309
+
310
+ R7 compares optional local lean MCP with native tools on eight public
311
+ SWE-bench Lite tasks from eight repositories, two trials per arm. The
312
+ [protocol](designs/2026-10-13-r7-task-completion-pilot.md) fixes the outcome-first
313
+ continuation gate. Adoption is descriptive. Host reads and edits use trace
314
+ audit; Docker execution and independent grading have no network. This is
315
+ not an OS sandbox for the host client.
316
+
317
+ Use a separate Python 3.12 environment with PyArrow and SWE-bench pinned to
318
+ `726c5461e2ef52d83cf1ea2107870a8bb3328d57`. The worker checks its installed
319
+ commit and records dependency versions. Keep every pack/study outside this
320
+ repository. A pack contains private reference patches, official tests and
321
+ complete test lists; never mount it into an agent workspace.
322
+
323
+ ```sh
324
+ # Preparation only: no Claude requests or quota check.
325
+ EVALUATOR=/path/to/isolated-evaluator/bin/python
326
+ PACK=/path/to/new-private-pack
327
+ STUDY=/path/to/new-study
328
+ DATASET=/path/to/lite@97f9af8814fe7eb15dcd9b2abaa9010e1eadda63/data/test-00000-of-00001.parquet
329
+ "$EVALUATOR" packages/code-intel/evals/repair_worker.py prepare-pack --dataset "$DATASET" --pack "$PACK"
330
+ .venv/bin/python packages/code-intel/evals/study.py freeze --mode repair --model claude-sonnet-5-5 --trials 2 --benchmark-pack "$PACK" --evaluator-python "$EVALUATOR" --study "$STUDY"
331
+ PYTHONPATH="$STUDY/engine" .venv/bin/python "$STUDY/harness/study.py" prepare --study "$STUDY"
332
+ PYTHONPATH="$STUDY/engine" .venv/bin/python "$STUDY/harness/study.py" wiring --offline --study "$STUDY"
333
+ PYTHONPATH="$STUDY/engine" .venv/bin/python "$STUDY/harness/study.py" summary --study "$STUDY"
334
+ ```
335
+
336
+ Preparation downloads task images and build wheels before offline tests,
337
+ uses deterministic SHA-256 repository/task order, preserves exclusions,
338
+ and requires image-only and mounted-source base/gold controls plus rejection
339
+ of a synthetic regression. The strict grader requires every F2P and P2P
340
+ ID to be observed PASSED and an actual zero test-command exit status.
341
+ Missing, skipped, timed-out and unexecuted tests cannot pass. No regression
342
+ cap is applied. Candidate changes to official test paths are restored
343
+ before the immutable official patch. Submitted patches and logs remain
344
+ available; stale cached verdicts are rejected.
345
+
346
+ `prepare` validates the controls with the frozen harness. Exact-input
347
+ cache reuse requires matching task, image, patch, source, evaluator and
348
+ worker/grader hashes; drift is rejected. `wiring --offline`
349
+ checks Docker command execution, the actual seven MCP tools and visibility
350
+ of a container edit through inspection. It records `model_wiring: pending`.
351
+ Scored `run` refuses to call a model until two separate excluded model
352
+ wiring attempts pass. Those checks and the 32 scored runs are **not part of
353
+ the build-and-prepare authorization**. Future execution requires fresh
354
+ subscription-only quota observations, disabled paid usage, at most two
355
+ workers, 50-minute sessions and a $20 cumulative client-estimate soft cap.
356
+ Preserve failed/interrupted attempts; never change frozen inputs to resume.
357
+
358
+ ## Bounded Codex repair diagnostic
359
+
360
+ `codex_repair_study.py` is a separate, explicitly authorized six-request
361
+ diagnostic: two excluded wiring checks, then four repairs on the first two
362
+ prepared R7 tasks with native/optional lean arms. It leaves Claude R7 frozen.
363
+ Read the [design](designs/2026-10-13-codex-repair-diagnostic.md) before use.
364
+ Freeze to a new external directory, then run the frozen harness's `prepare`,
365
+ `wiring --index 0/1` and `repair --index 0/1/2/3` actions individually.
366
+ Both wiring traces require a clear operator `review.json` before repairs.
367
+ Preserve all attempts; no retries or replacement tasks.
368
+
369
+ It reuses ChatGPT login in a private disposable client home, suppresses
370
+ personal guidance/features per invocation, verifies instruction sources
371
+ without a model turn, and pins `gpt-6.1-sol` at high reasoning. It checks fresh
372
+ included quota before every request and stops if the observed credit balance
373
+ decreases. This is an observational spending guard, not a provider-enforced
374
+ credit prohibition. Strict independent grading is shared with R7; all shell
375
+ commands and file edits still require review. Token usage is reported without
376
+ an invented USD estimate. Four development repairs cannot establish an
377
+ intelligence benefit or support a comparison between models.
@@ -0,0 +1,101 @@
1
+ """Generated Go cold+restart comparison with exact AST/index parity and cleanup."""
2
+ from __future__ import annotations
3
+
4
+ import ast
5
+ import hashlib
6
+ import json
7
+ import platform
8
+ import subprocess
9
+ import tempfile
10
+ import time
11
+ from dataclasses import asdict
12
+ from pathlib import Path
13
+ from unittest.mock import patch
14
+
15
+ from attocode_intel._internal.integrations.context import ast_service, ast_snapshot, codebase_ast
16
+ from attocode_intel._internal.integrations.context.index_store import AST_SNAPSHOT_KEY
17
+
18
+ BASELINE = 'b3501b9d7ae016572d77ceae1289026d23719694'
19
+ SOURCE = 'packages/code-intel/src/attocode_intel/_internal/integrations/context/ast_service.py'
20
+
21
+
22
+ def run():
23
+ source = subprocess.check_output(['git', 'show', f'{BASELINE}:{SOURCE}'], timeout=10)
24
+ cls = next(n for n in ast.parse(source).body if isinstance(n, ast.ClassDef) and n.name == 'ASTService')
25
+ methods, scopes = {}, []
26
+ for name in ('initialize_skeleton', '_save_snapshot', '_restore_snapshot'):
27
+ method = next(n for n in cls.body if isinstance(n, ast.FunctionDef) and n.name == name)
28
+ scope = dict(vars(ast_service))
29
+ exec(compile(ast.Module(body=[method], type_ignores=[]), '<frozen restart>', 'exec'), scope)
30
+ methods[name] = scope[name]
31
+ scopes.append(scope)
32
+ original = {name: getattr(ast_service.ASTService, name) for name in methods}
33
+ observations = []
34
+ with tempfile.TemporaryDirectory(prefix='attocode-restart-probe-') as tmp:
35
+ root = Path(tmp)
36
+ workloads = ['short_body', 'long_body']
37
+ source_sizes = {}
38
+ for number, (workload, mode) in enumerate((w, m) for w in workloads
39
+ for m in ['baseline', 'candidate', 'candidate', 'baseline']):
40
+ for scope in scopes:
41
+ scope['parse_file'] = ast_service.parse_file
42
+ project = root / str(number)
43
+ project.mkdir()
44
+ for i in range(160):
45
+ (project / f'file{i:04d}.go').write_text('package example\n' + ''.join(
46
+ f'// Helper{i}_{j} returns an adjusted value.\nfunc Helper{i}_{j}(value int) int {{\n'
47
+ + ' if value < 0 { return 0 }\n' * (1 if workload == 'short_body' else 12)
48
+ + ' return value + 1\n}\n' for j in range(32)))
49
+ source_sizes[workload] = sum(p.stat().st_size for p in project.iterdir())
50
+ assert source_sizes[workload] < 8 * 2**20
51
+ with patch.multiple(ast_service.ASTService, **(methods if mode == 'baseline' else original)):
52
+ first = ast_service.ASTService(str(project))
53
+ start = time.monotonic()
54
+ try:
55
+ first.initialize_skeleton(indexing_depth='eager')
56
+ cold = time.monotonic() - start
57
+ payload_bytes = len((first._store.get_meta(AST_SNAPSHOT_KEY) or '').encode())
58
+ finally:
59
+ first.stop_hydration()
60
+ first._store.close()
61
+ second = ast_service.ASTService(str(project))
62
+ try:
63
+ with (patch.object(ast_service, 'parse_file', wraps=ast_service.parse_file) as parse,
64
+ patch.object(codebase_ast, 'parse_file', parse)):
65
+ for scope in scopes:
66
+ scope['parse_file'] = parse
67
+ wall, cpu = time.monotonic(), time.thread_time()
68
+ state = second.initialize_skeleton()
69
+ restart, thread_cpu = time.monotonic()-wall, time.thread_time()-cpu
70
+ calls = parse.call_count
71
+ assert state.phase == 'ready' and state.parsed_files == 160
72
+ assert calls == (320 if mode == 'baseline' else 0)
73
+ summaries = {key: {**asdict(value), 'path': key} for key, value in second._ast_cache.items()}
74
+ evidence = {'asts': summaries, 'definitions': {
75
+ key: [asdict(v) for v in value] for key, value in second._index.definitions.items()},
76
+ 'stats': second._store.stats(), 'dependencies': {
77
+ key: sorted(value) for key, value in second._index.file_dependencies.items()}}
78
+ digest = hashlib.sha256(json.dumps(evidence, sort_keys=True).encode()).hexdigest()
79
+ observations.append({'mode': mode, 'workload': workload, 'cold_seconds': cold, 'restart_seconds': restart,
80
+ 'cold_plus_restart_seconds': cold+restart, 'restart_thread_cpu_seconds': thread_cpu,
81
+ 'restart_parse_calls': calls, 'cache_payload_bytes': payload_bytes,
82
+ 'evidence_sha256': digest})
83
+ finally:
84
+ second.stop_hydration()
85
+ second._store.close()
86
+ for workload in workloads:
87
+ assert len({row['evidence_sha256'] for row in observations if row['workload'] == workload}) == 1
88
+ disk_bytes = sum(p.stat().st_size for p in root.rglob('*') if p.is_file())
89
+ assert disk_bytes < 100 * 2**20
90
+ return {'scope': 'Generated 160-file/5120-function Go cold+restart; no Cockroach or cloud speed claim',
91
+ 'baseline_commit': BASELINE, 'baseline_source_sha256': hashlib.sha256(source).hexdigest(),
92
+ 'candidate_source_sha256': hashlib.sha256(Path(ast_service.__file__).read_bytes()).hexdigest(),
93
+ 'cache_source_sha256': hashlib.sha256(Path(ast_snapshot.__file__).read_bytes()).hexdigest(),
94
+ 'probe_sha256': hashlib.sha256(Path(__file__).read_bytes()).hexdigest(),
95
+ 'python': platform.python_version(), 'platform': platform.platform(),
96
+ 'source_bytes': source_sizes, 'final_owned_disk_bytes': disk_bytes,
97
+ 'observations': observations, 'cleanup_verified': not root.exists()}
98
+
99
+
100
+ if __name__ == '__main__':
101
+ print(json.dumps(run(), indent=2))
@@ -0,0 +1,101 @@
1
+ """Bounded generated body-work probe: no downloads, models or cloud resources.
2
+
3
+ This isolates document generation, using empty known spans (no AST parsing), not
4
+ an end-to-end repository benchmark. Compare identical terms/windows by digest.
5
+ """
6
+ from __future__ import annotations
7
+
8
+ import argparse
9
+ import ast
10
+ import hashlib
11
+ import inspect
12
+ import json
13
+ import platform
14
+ import subprocess
15
+ import tempfile
16
+ import time
17
+ from contextlib import nullcontext
18
+ from functools import partial
19
+ from pathlib import Path
20
+ from types import SimpleNamespace
21
+ from unittest.mock import patch
22
+
23
+ from attocode_intel._internal.integrations.context import index_probe as probe
24
+ from attocode_intel._internal.integrations.context import semantic_search as search
25
+
26
+ BASELINE = "3d7c41ca628e8dfd2f62cf7eff9c4ae3aadbbdc2"
27
+ SOURCE = "packages/code-intel/src/attocode_intel/_internal/integrations/context/semantic_search.py"
28
+
29
+
30
+ def baseline_body():
31
+ source = subprocess.check_output(["git", "show", f"{BASELINE}:{SOURCE}"], timeout=10)
32
+ cls = next(n for n in ast.parse(source).body if isinstance(n, ast.ClassDef) and n.name == "SemanticSearchManager")
33
+ method = next(n for n in cls.body if isinstance(n, ast.FunctionDef) and n.name == "_body_document")
34
+ method.decorator_list = []
35
+ scope = dict(vars(search))
36
+ exec(compile(ast.Module(body=[method], type_ignores=[]), "<frozen body>", "exec"), scope)
37
+ return scope[method.name], hashlib.sha256(source).hexdigest()
38
+
39
+
40
+ def fixture(root, unique=False):
41
+ paths = []
42
+ for i in range(8):
43
+ path = root / f'generated{i}.go'
44
+ path.write_text('package example\n' + ''.join(
45
+ f'// block {n if unique else n // 32}\nvalue_{n if unique else n % 64} = otherHTTPValue + processRow(value_{n if unique else n % 64})\n'
46
+ for n in range(2048)
47
+ ))
48
+ paths.append(path)
49
+ return paths
50
+
51
+
52
+ def run():
53
+ observations = []
54
+ legacy, baseline_hash = baseline_body()
55
+ source_bytes = {}
56
+ with tempfile.TemporaryDirectory(prefix='attocode-body-cost-') as tmp:
57
+ for workload in ('repeated', 'unique'):
58
+ root = Path(tmp) / workload
59
+ root.mkdir()
60
+ paths = fixture(root, unique=workload == 'unique')
61
+ source_bytes[workload] = sum(p.stat().st_size for p in paths)
62
+ assert source_bytes[workload] < 2 * 2**20
63
+ modes = ['baseline_off', 'off', 'all_calls', 'default']
64
+ for rotation in range(4):
65
+ for mode in modes[rotation:] + modes[:rotation]:
66
+ collector = None if mode in ('baseline_off', 'off') else probe.IndexProbe()
67
+ wrapping = (patch.object(search, 'instrument', lambda phase, fn:
68
+ partial(probe.measured_call, phase, fn))
69
+ if mode == 'all_calls' else nullcontext())
70
+ method = legacy if mode == 'baseline_off' else search.SemanticSearchManager._body_document
71
+ outputs = []
72
+ with wrapping, probe.activate(collector):
73
+ wall, cpu = time.monotonic(), time.thread_time()
74
+ for p in paths:
75
+ outputs.append(method(
76
+ p.name, str(p), SimpleNamespace(take=lambda *_: ([], [])),
77
+ include_file_terms=True,
78
+ ))
79
+ elapsed, used = time.monotonic()-wall, time.thread_time()-cpu
80
+ digest = hashlib.sha256(json.dumps(outputs, ensure_ascii=False).encode()).hexdigest()
81
+ observations.append({'workload': workload, 'mode': mode, 'rotation': rotation,
82
+ 'wall_seconds': elapsed, 'thread_cpu_seconds': used,
83
+ 'output_sha256': digest,
84
+ 'windows': sum(len(o[0]) for o in outputs),
85
+ 'profile': collector.snapshot() if collector else None})
86
+ assert len({o['output_sha256'] for o in observations if o['workload'] == workload}) == 1
87
+ return {'scope': 'Generated document generation, empty known spans; no parsing, SQL or cold-start claim',
88
+ 'baseline_commit': BASELINE, 'baseline_source_sha256': baseline_hash,
89
+ 'candidate_source_sha256': hashlib.sha256(Path(inspect.getfile(search)).read_bytes()).hexdigest(),
90
+ 'profiler_sha256': hashlib.sha256(Path(inspect.getfile(probe)).read_bytes()).hexdigest(),
91
+ 'probe_sha256': hashlib.sha256(Path(__file__).read_bytes()).hexdigest(),
92
+ 'python': platform.python_version(), 'platform': platform.platform(),
93
+ 'source_bytes': source_bytes, 'observations': observations,
94
+ 'cleanup_verified': not Path(tmp).exists()}
95
+
96
+
97
+ if __name__ == '__main__':
98
+ parser = argparse.ArgumentParser(description=__doc__)
99
+ parser.add_argument('--output', type=Path, required=True)
100
+ args = parser.parse_args()
101
+ args.output.write_text(json.dumps(run(), indent=2)+'\n')