roam-code 12.32__tar.gz → 12.33__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 (655) hide show
  1. {roam_code-12.32 → roam_code-12.33}/PKG-INFO +1 -1
  2. {roam_code-12.32 → roam_code-12.33}/pyproject.toml +1 -1
  3. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_describe.py +0 -1
  4. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_n1.py +1 -5
  5. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_orphan_routes.py +10 -7
  6. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/resolve.py +7 -5
  7. {roam_code-12.32 → roam_code-12.33}/src/roam/competitor_site_data.py +2 -2
  8. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/clone_detect.py +3 -13
  9. {roam_code-12.32 → roam_code-12.33}/src/roam/index/complexity.py +0 -7
  10. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/foxpro_lang.py +0 -2
  11. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/hcl_lang.py +6 -4
  12. {roam_code-12.32 → roam_code-12.33}/src/roam/mcp-server-card.json +1 -1
  13. {roam_code-12.32 → roam_code-12.33}/src/roam/retrieve/seeds.py +0 -2
  14. {roam_code-12.32 → roam_code-12.33}/src/roam/search/tfidf.py +0 -1
  15. {roam_code-12.32 → roam_code-12.33}/src/roam_code.egg-info/PKG-INFO +1 -1
  16. {roam_code-12.32 → roam_code-12.33}/tests/test_mcp_server.py +4 -3
  17. {roam_code-12.32 → roam_code-12.33}/LICENSE +0 -0
  18. {roam_code-12.32 → roam_code-12.33}/README.md +0 -0
  19. {roam_code-12.32 → roam_code-12.33}/setup.cfg +0 -0
  20. {roam_code-12.32 → roam_code-12.33}/src/roam/__init__.py +0 -0
  21. {roam_code-12.32 → roam_code-12.33}/src/roam/__main__.py +0 -0
  22. {roam_code-12.32 → roam_code-12.33}/src/roam/analysis/__init__.py +0 -0
  23. {roam_code-12.32 → roam_code-12.33}/src/roam/analysis/effects.py +0 -0
  24. {roam_code-12.32 → roam_code-12.33}/src/roam/analysis/taint.py +0 -0
  25. {roam_code-12.32 → roam_code-12.33}/src/roam/api.py +0 -0
  26. {roam_code-12.32 → roam_code-12.33}/src/roam/ask/__init__.py +0 -0
  27. {roam_code-12.32 → roam_code-12.33}/src/roam/ask/classifier.py +0 -0
  28. {roam_code-12.32 → roam_code-12.33}/src/roam/ask/recipes.py +0 -0
  29. {roam_code-12.32 → roam_code-12.33}/src/roam/ask/runner.py +0 -0
  30. {roam_code-12.32 → roam_code-12.33}/src/roam/ask/workflow.py +0 -0
  31. {roam_code-12.32 → roam_code-12.33}/src/roam/attest/__init__.py +0 -0
  32. {roam_code-12.32 → roam_code-12.33}/src/roam/attest/cga.py +0 -0
  33. {roam_code-12.32 → roam_code-12.33}/src/roam/bridges/__init__.py +0 -0
  34. {roam_code-12.32 → roam_code-12.33}/src/roam/bridges/base.py +0 -0
  35. {roam_code-12.32 → roam_code-12.33}/src/roam/bridges/bridge_config.py +0 -0
  36. {roam_code-12.32 → roam_code-12.33}/src/roam/bridges/bridge_django.py +0 -0
  37. {roam_code-12.32 → roam_code-12.33}/src/roam/bridges/bridge_protobuf.py +0 -0
  38. {roam_code-12.32 → roam_code-12.33}/src/roam/bridges/bridge_rest_api.py +0 -0
  39. {roam_code-12.32 → roam_code-12.33}/src/roam/bridges/bridge_salesforce.py +0 -0
  40. {roam_code-12.32 → roam_code-12.33}/src/roam/bridges/bridge_template.py +0 -0
  41. {roam_code-12.32 → roam_code-12.33}/src/roam/bridges/registry.py +0 -0
  42. {roam_code-12.32 → roam_code-12.33}/src/roam/catalog/__init__.py +0 -0
  43. {roam_code-12.32 → roam_code-12.33}/src/roam/catalog/detectors.py +0 -0
  44. {roam_code-12.32 → roam_code-12.33}/src/roam/catalog/fixes.py +0 -0
  45. {roam_code-12.32 → roam_code-12.33}/src/roam/catalog/python_idioms.py +0 -0
  46. {roam_code-12.32 → roam_code-12.33}/src/roam/catalog/smells.py +0 -0
  47. {roam_code-12.32 → roam_code-12.33}/src/roam/catalog/tasks.py +0 -0
  48. {roam_code-12.32 → roam_code-12.33}/src/roam/cli.py +0 -0
  49. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/__init__.py +0 -0
  50. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/audit_trail_helpers.py +0 -0
  51. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/changed_files.py +0 -0
  52. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_adrs.py +0 -0
  53. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_adversarial.py +0 -0
  54. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_affected.py +0 -0
  55. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_affected_tests.py +0 -0
  56. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_agent_context.py +0 -0
  57. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_agent_export.py +0 -0
  58. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_agent_plan.py +0 -0
  59. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_ai_ratio.py +0 -0
  60. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_ai_readiness.py +0 -0
  61. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_alerts.py +0 -0
  62. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_annotate.py +0 -0
  63. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_api.py +0 -0
  64. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_api_changes.py +0 -0
  65. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_api_drift.py +0 -0
  66. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_ask.py +0 -0
  67. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_attest.py +0 -0
  68. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_audit.py +0 -0
  69. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_audit_trail_conformance.py +0 -0
  70. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_audit_trail_export.py +0 -0
  71. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_audit_trail_verify.py +0 -0
  72. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_auth_gaps.py +0 -0
  73. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_bisect.py +0 -0
  74. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_breaking.py +0 -0
  75. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_budget.py +0 -0
  76. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_bus_factor.py +0 -0
  77. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_capsule.py +0 -0
  78. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_cga.py +0 -0
  79. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_changelog.py +0 -0
  80. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_check_rules.py +0 -0
  81. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_ci_setup.py +0 -0
  82. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_clean.py +0 -0
  83. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_clones.py +0 -0
  84. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_closure.py +0 -0
  85. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_clusters.py +0 -0
  86. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_codeowners.py +0 -0
  87. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_complexity.py +0 -0
  88. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_config.py +0 -0
  89. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_congestion.py +0 -0
  90. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_context.py +0 -0
  91. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_conventions.py +0 -0
  92. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_coupling.py +0 -0
  93. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_coverage_gaps.py +0 -0
  94. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_critique.py +0 -0
  95. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_cut.py +0 -0
  96. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_dark_matter.py +0 -0
  97. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_dashboard.py +0 -0
  98. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_dead.py +0 -0
  99. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_debt.py +0 -0
  100. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_deps.py +0 -0
  101. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_dev_profile.py +0 -0
  102. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_diagnose.py +0 -0
  103. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_diff.py +0 -0
  104. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_disambiguate.py +0 -0
  105. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_doc_staleness.py +0 -0
  106. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_docs_coverage.py +0 -0
  107. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_doctor.py +0 -0
  108. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_dogfood.py +0 -0
  109. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_drift.py +0 -0
  110. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_duplicates.py +0 -0
  111. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_effects.py +0 -0
  112. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_endpoints.py +0 -0
  113. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_entry_points.py +0 -0
  114. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_eval_retrieve.py +0 -0
  115. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_exit_codes.py +0 -0
  116. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_fan.py +0 -0
  117. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_file.py +0 -0
  118. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_fingerprint.py +0 -0
  119. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_fitness.py +0 -0
  120. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_flag_dead.py +0 -0
  121. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_fleet.py +0 -0
  122. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_fn_coupling.py +0 -0
  123. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_forecast.py +0 -0
  124. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_graph_export.py +0 -0
  125. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_graph_stats.py +0 -0
  126. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_grep.py +0 -0
  127. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_guard.py +0 -0
  128. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_health.py +0 -0
  129. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_help_search.py +0 -0
  130. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_hooks.py +0 -0
  131. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_hotspots.py +0 -0
  132. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_hover.py +0 -0
  133. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_impact.py +0 -0
  134. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_index.py +0 -0
  135. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_index_bundle.py +0 -0
  136. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_index_stats.py +0 -0
  137. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_ingest_trace.py +0 -0
  138. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_init.py +0 -0
  139. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_intent.py +0 -0
  140. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_invariants.py +0 -0
  141. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_layers.py +0 -0
  142. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_map.py +0 -0
  143. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_math.py +0 -0
  144. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_mcp_setup.py +0 -0
  145. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_mcp_status.py +0 -0
  146. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_metrics.py +0 -0
  147. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_metrics_push.py +0 -0
  148. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_migration_safety.py +0 -0
  149. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_minimap.py +0 -0
  150. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_missing_index.py +0 -0
  151. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_module.py +0 -0
  152. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_mutate.py +0 -0
  153. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_oracle.py +0 -0
  154. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_orchestrate.py +0 -0
  155. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_orphan_imports.py +0 -0
  156. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_over_fetch.py +0 -0
  157. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_owner.py +0 -0
  158. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_partition.py +0 -0
  159. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_path_coverage.py +0 -0
  160. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_patterns.py +0 -0
  161. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_plan.py +0 -0
  162. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_plan_refactor.py +0 -0
  163. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_plugins.py +0 -0
  164. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_pr_analyze.py +0 -0
  165. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_pr_comment_render.py +0 -0
  166. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_pr_diff.py +0 -0
  167. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_pr_prep.py +0 -0
  168. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_pr_risk.py +0 -0
  169. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_pre_commit.py +0 -0
  170. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_preflight.py +0 -0
  171. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_py_modern.py +0 -0
  172. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_py_types.py +0 -0
  173. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_pytest_fixtures.py +0 -0
  174. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_recipes.py +0 -0
  175. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_recommend.py +0 -0
  176. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_relate.py +0 -0
  177. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_report.py +0 -0
  178. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_reset.py +0 -0
  179. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_retrieve.py +0 -0
  180. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_risk.py +0 -0
  181. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_rules.py +0 -0
  182. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_rules_validate.py +0 -0
  183. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_safe_delete.py +0 -0
  184. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_safe_zones.py +0 -0
  185. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_sbom.py +0 -0
  186. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_schema.py +0 -0
  187. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_search.py +0 -0
  188. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_search_semantic.py +0 -0
  189. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_secrets.py +0 -0
  190. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_semantic_diff.py +0 -0
  191. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_simulate.py +0 -0
  192. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_simulate_departure.py +0 -0
  193. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_sketch.py +0 -0
  194. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_smells.py +0 -0
  195. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_spectral.py +0 -0
  196. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_split.py +0 -0
  197. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_stats.py +0 -0
  198. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_suggest_refactoring.py +0 -0
  199. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_suggest_reviewers.py +0 -0
  200. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_supply_chain.py +0 -0
  201. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_suppress.py +0 -0
  202. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_symbol.py +0 -0
  203. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_syntax_check.py +0 -0
  204. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_taint.py +0 -0
  205. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_telemetry.py +0 -0
  206. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_test_gaps.py +0 -0
  207. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_test_impact.py +0 -0
  208. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_test_pyramid.py +0 -0
  209. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_test_scaffold.py +0 -0
  210. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_testmap.py +0 -0
  211. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_timeline.py +0 -0
  212. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_tour.py +0 -0
  213. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_trace.py +0 -0
  214. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_trends.py +0 -0
  215. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_triage.py +0 -0
  216. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_understand.py +0 -0
  217. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_uses.py +0 -0
  218. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_verify.py +0 -0
  219. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_verify_imports.py +0 -0
  220. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_version.py +0 -0
  221. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_vibe_check.py +0 -0
  222. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_visualize.py +0 -0
  223. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_vuln_map.py +0 -0
  224. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_vuln_reach.py +0 -0
  225. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_vulns.py +0 -0
  226. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_watch.py +0 -0
  227. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_weather.py +0 -0
  228. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_why.py +0 -0
  229. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_why_fail.py +0 -0
  230. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_workflow.py +0 -0
  231. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_ws.py +0 -0
  232. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/cmd_xlang.py +0 -0
  233. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/codeowners_helpers.py +0 -0
  234. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/context_helpers.py +0 -0
  235. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/finding_suppress.py +0 -0
  236. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/gate_presets.py +0 -0
  237. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/git_helpers.py +0 -0
  238. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/graph_helpers.py +0 -0
  239. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/metrics_history.py +0 -0
  240. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/next_steps.py +0 -0
  241. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/pr_analyze/__init__.py +0 -0
  242. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/pr_analyze/audit_trail.py +0 -0
  243. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/pr_analyze/cache.py +0 -0
  244. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/pr_analyze/rules.py +0 -0
  245. {roam_code-12.32 → roam_code-12.33}/src/roam/commands/suppression.py +0 -0
  246. {roam_code-12.32 → roam_code-12.33}/src/roam/config.py +0 -0
  247. {roam_code-12.32 → roam_code-12.33}/src/roam/coverage_reports.py +0 -0
  248. {roam_code-12.32 → roam_code-12.33}/src/roam/critique/__init__.py +0 -0
  249. {roam_code-12.32 → roam_code-12.33}/src/roam/critique/aggregator.py +0 -0
  250. {roam_code-12.32 → roam_code-12.33}/src/roam/critique/checks.py +0 -0
  251. {roam_code-12.32 → roam_code-12.33}/src/roam/db/__init__.py +0 -0
  252. {roam_code-12.32 → roam_code-12.33}/src/roam/db/connection.py +0 -0
  253. {roam_code-12.32 → roam_code-12.33}/src/roam/db/queries.py +0 -0
  254. {roam_code-12.32 → roam_code-12.33}/src/roam/db/schema.py +0 -0
  255. {roam_code-12.32 → roam_code-12.33}/src/roam/eval/__init__.py +0 -0
  256. {roam_code-12.32 → roam_code-12.33}/src/roam/eval/harness.py +0 -0
  257. {roam_code-12.32 → roam_code-12.33}/src/roam/exit_codes.py +0 -0
  258. {roam_code-12.32 → roam_code-12.33}/src/roam/fleet/__init__.py +0 -0
  259. {roam_code-12.32 → roam_code-12.33}/src/roam/fleet/adapters.py +0 -0
  260. {roam_code-12.32 → roam_code-12.33}/src/roam/fleet/manifest.py +0 -0
  261. {roam_code-12.32 → roam_code-12.33}/src/roam/git_utils.py +0 -0
  262. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/__init__.py +0 -0
  263. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/anomaly.py +0 -0
  264. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/builder.py +0 -0
  265. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/clusters.py +0 -0
  266. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/cycles.py +0 -0
  267. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/dark_matter.py +0 -0
  268. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/diff.py +0 -0
  269. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/fingerprint.py +0 -0
  270. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/layers.py +0 -0
  271. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/pagerank.py +0 -0
  272. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/partition.py +0 -0
  273. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/pathfinding.py +0 -0
  274. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/propagation.py +0 -0
  275. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/simulate.py +0 -0
  276. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/spectral.py +0 -0
  277. {roam_code-12.32 → roam_code-12.33}/src/roam/graph/stats.py +0 -0
  278. {roam_code-12.32 → roam_code-12.33}/src/roam/index/__init__.py +0 -0
  279. {roam_code-12.32 → roam_code-12.33}/src/roam/index/discovery.py +0 -0
  280. {roam_code-12.32 → roam_code-12.33}/src/roam/index/django_post.py +0 -0
  281. {roam_code-12.32 → roam_code-12.33}/src/roam/index/file_roles.py +0 -0
  282. {roam_code-12.32 → roam_code-12.33}/src/roam/index/git_stats.py +0 -0
  283. {roam_code-12.32 → roam_code-12.33}/src/roam/index/gitignore.py +0 -0
  284. {roam_code-12.32 → roam_code-12.33}/src/roam/index/incremental.py +0 -0
  285. {roam_code-12.32 → roam_code-12.33}/src/roam/index/indexer.py +0 -0
  286. {roam_code-12.32 → roam_code-12.33}/src/roam/index/parser.py +0 -0
  287. {roam_code-12.32 → roam_code-12.33}/src/roam/index/pytest_fixtures.py +0 -0
  288. {roam_code-12.32 → roam_code-12.33}/src/roam/index/registry_dispatch.py +0 -0
  289. {roam_code-12.32 → roam_code-12.33}/src/roam/index/relations.py +0 -0
  290. {roam_code-12.32 → roam_code-12.33}/src/roam/index/symbols.py +0 -0
  291. {roam_code-12.32 → roam_code-12.33}/src/roam/index/test_conventions.py +0 -0
  292. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/__init__.py +0 -0
  293. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/apex_lang.py +0 -0
  294. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/aura_lang.py +0 -0
  295. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/base.py +0 -0
  296. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/c_lang.py +0 -0
  297. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/csharp_lang.py +0 -0
  298. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/extractor_schema.py +0 -0
  299. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/extractors/kotlin.yaml +0 -0
  300. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/generic_lang.py +0 -0
  301. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/go_lang.py +0 -0
  302. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/java_lang.py +0 -0
  303. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/javascript_lang.py +0 -0
  304. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/kotlin_lang.py +0 -0
  305. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/php_lang.py +0 -0
  306. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/python_lang.py +0 -0
  307. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/query_engine.py +0 -0
  308. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/registry.py +0 -0
  309. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/ruby_lang.py +0 -0
  310. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/rust_lang.py +0 -0
  311. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/scala_lang.py +0 -0
  312. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/sfxml_lang.py +0 -0
  313. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/sql_lang.py +0 -0
  314. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/swift_lang.py +0 -0
  315. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/typescript_lang.py +0 -0
  316. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/visualforce_lang.py +0 -0
  317. {roam_code-12.32 → roam_code-12.33}/src/roam/languages/yaml_lang.py +0 -0
  318. {roam_code-12.32 → roam_code-12.33}/src/roam/mcp_extras/__init__.py +0 -0
  319. {roam_code-12.32 → roam_code-12.33}/src/roam/mcp_extras/completions.py +0 -0
  320. {roam_code-12.32 → roam_code-12.33}/src/roam/mcp_extras/concurrency.py +0 -0
  321. {roam_code-12.32 → roam_code-12.33}/src/roam/mcp_extras/progress.py +0 -0
  322. {roam_code-12.32 → roam_code-12.33}/src/roam/mcp_extras/sampling.py +0 -0
  323. {roam_code-12.32 → roam_code-12.33}/src/roam/mcp_extras/session.py +0 -0
  324. {roam_code-12.32 → roam_code-12.33}/src/roam/mcp_extras/watcher.py +0 -0
  325. {roam_code-12.32 → roam_code-12.33}/src/roam/mcp_server.py +0 -0
  326. {roam_code-12.32 → roam_code-12.33}/src/roam/observability.py +0 -0
  327. {roam_code-12.32 → roam_code-12.33}/src/roam/output/__init__.py +0 -0
  328. {roam_code-12.32 → roam_code-12.33}/src/roam/output/confidence.py +0 -0
  329. {roam_code-12.32 → roam_code-12.33}/src/roam/output/errors.py +0 -0
  330. {roam_code-12.32 → roam_code-12.33}/src/roam/output/file_role_hints.py +0 -0
  331. {roam_code-12.32 → roam_code-12.33}/src/roam/output/formatter.py +0 -0
  332. {roam_code-12.32 → roam_code-12.33}/src/roam/output/framework_filter.py +0 -0
  333. {roam_code-12.32 → roam_code-12.33}/src/roam/output/mermaid.py +0 -0
  334. {roam_code-12.32 → roam_code-12.33}/src/roam/output/project_shape.py +0 -0
  335. {roam_code-12.32 → roam_code-12.33}/src/roam/output/sarif.py +0 -0
  336. {roam_code-12.32 → roam_code-12.33}/src/roam/output/schema_registry.py +0 -0
  337. {roam_code-12.32 → roam_code-12.33}/src/roam/plugins.py +0 -0
  338. {roam_code-12.32 → roam_code-12.33}/src/roam/refactor/__init__.py +0 -0
  339. {roam_code-12.32 → roam_code-12.33}/src/roam/refactor/codegen.py +0 -0
  340. {roam_code-12.32 → roam_code-12.33}/src/roam/refactor/transforms.py +0 -0
  341. {roam_code-12.32 → roam_code-12.33}/src/roam/retrieve/__init__.py +0 -0
  342. {roam_code-12.32 → roam_code-12.33}/src/roam/retrieve/learned_ranker.py +0 -0
  343. {roam_code-12.32 → roam_code-12.33}/src/roam/retrieve/pipeline.py +0 -0
  344. {roam_code-12.32 → roam_code-12.33}/src/roam/retrieve/rerank.py +0 -0
  345. {roam_code-12.32 → roam_code-12.33}/src/roam/retrieve/semantic.py +0 -0
  346. {roam_code-12.32 → roam_code-12.33}/src/roam/rules/__init__.py +0 -0
  347. {roam_code-12.32 → roam_code-12.33}/src/roam/rules/ast_match.py +0 -0
  348. {roam_code-12.32 → roam_code-12.33}/src/roam/rules/builtin.py +0 -0
  349. {roam_code-12.32 → roam_code-12.33}/src/roam/rules/dataflow.py +0 -0
  350. {roam_code-12.32 → roam_code-12.33}/src/roam/rules/engine.py +0 -0
  351. {roam_code-12.32 → roam_code-12.33}/src/roam/runtime/__init__.py +0 -0
  352. {roam_code-12.32 → roam_code-12.33}/src/roam/runtime/daemon.py +0 -0
  353. {roam_code-12.32 → roam_code-12.33}/src/roam/runtime/graph_backend.py +0 -0
  354. {roam_code-12.32 → roam_code-12.33}/src/roam/runtime/hotspots.py +0 -0
  355. {roam_code-12.32 → roam_code-12.33}/src/roam/runtime/lock_modes.py +0 -0
  356. {roam_code-12.32 → roam_code-12.33}/src/roam/runtime/lockmgr.py +0 -0
  357. {roam_code-12.32 → roam_code-12.33}/src/roam/runtime/trace_ingest.py +0 -0
  358. {roam_code-12.32 → roam_code-12.33}/src/roam/search/__init__.py +0 -0
  359. {roam_code-12.32 → roam_code-12.33}/src/roam/search/framework_packs.py +0 -0
  360. {roam_code-12.32 → roam_code-12.33}/src/roam/search/index_embeddings.py +0 -0
  361. {roam_code-12.32 → roam_code-12.33}/src/roam/search/onnx_embeddings.py +0 -0
  362. {roam_code-12.32 → roam_code-12.33}/src/roam/security/__init__.py +0 -0
  363. {roam_code-12.32 → roam_code-12.33}/src/roam/security/aibom_extension.py +0 -0
  364. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_classifier.py +0 -0
  365. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_engine.py +0 -0
  366. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_rules/api_error_leak.yaml +0 -0
  367. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_rules/java_fileupload_path_traversal.yaml +0 -0
  368. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_rules/js_insecure_jwt_decode.yaml +0 -0
  369. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_rules/js_localstorage_secrets.yaml +0 -0
  370. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_rules/js_prototype_pollution.yaml +0 -0
  371. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_rules/js_ssrf.yaml +0 -0
  372. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_rules/js_xss.yaml +0 -0
  373. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_rules/python_basic.yaml +0 -0
  374. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_rules/python_deserialization.yaml +0 -0
  375. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_rules/python_path_traversal.yaml +0 -0
  376. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_rules/python_socketio_remote_source.yaml +0 -0
  377. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_rules/python_sqli.yaml +0 -0
  378. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_rules/python_urllib_open_redirect.yaml +0 -0
  379. {roam_code-12.32 → roam_code-12.33}/src/roam/security/taint_rules/vue_v_html.yaml +0 -0
  380. {roam_code-12.32 → roam_code-12.33}/src/roam/security/vuln_reach.py +0 -0
  381. {roam_code-12.32 → roam_code-12.33}/src/roam/security/vuln_store.py +0 -0
  382. {roam_code-12.32 → roam_code-12.33}/src/roam/surface_counts.py +0 -0
  383. {roam_code-12.32 → roam_code-12.33}/src/roam/telemetry.py +0 -0
  384. {roam_code-12.32 → roam_code-12.33}/src/roam/templates/__init__.py +0 -0
  385. {roam_code-12.32 → roam_code-12.33}/src/roam/templates/ci/Jenkinsfile +0 -0
  386. {roam_code-12.32 → roam_code-12.33}/src/roam/templates/ci/__init__.py +0 -0
  387. {roam_code-12.32 → roam_code-12.33}/src/roam/templates/ci/agent-review.yml +0 -0
  388. {roam_code-12.32 → roam_code-12.33}/src/roam/templates/ci/azure-pipelines.yml +0 -0
  389. {roam_code-12.32 → roam_code-12.33}/src/roam/templates/ci/bitbucket-pipelines.yml +0 -0
  390. {roam_code-12.32 → roam_code-12.33}/src/roam/templates/ci/gitlab-ci.yml +0 -0
  391. {roam_code-12.32 → roam_code-12.33}/src/roam/workspace/__init__.py +0 -0
  392. {roam_code-12.32 → roam_code-12.33}/src/roam/workspace/aggregator.py +0 -0
  393. {roam_code-12.32 → roam_code-12.33}/src/roam/workspace/api_scanner.py +0 -0
  394. {roam_code-12.32 → roam_code-12.33}/src/roam/workspace/config.py +0 -0
  395. {roam_code-12.32 → roam_code-12.33}/src/roam/workspace/db.py +0 -0
  396. {roam_code-12.32 → roam_code-12.33}/src/roam_code.egg-info/SOURCES.txt +0 -0
  397. {roam_code-12.32 → roam_code-12.33}/src/roam_code.egg-info/dependency_links.txt +0 -0
  398. {roam_code-12.32 → roam_code-12.33}/src/roam_code.egg-info/entry_points.txt +0 -0
  399. {roam_code-12.32 → roam_code-12.33}/src/roam_code.egg-info/requires.txt +0 -0
  400. {roam_code-12.32 → roam_code-12.33}/src/roam_code.egg-info/top_level.txt +0 -0
  401. {roam_code-12.32 → roam_code-12.33}/tests/test_adrs.py +0 -0
  402. {roam_code-12.32 → roam_code-12.33}/tests/test_adversarial.py +0 -0
  403. {roam_code-12.32 → roam_code-12.33}/tests/test_affected.py +0 -0
  404. {roam_code-12.32 → roam_code-12.33}/tests/test_agent_export.py +0 -0
  405. {roam_code-12.32 → roam_code-12.33}/tests/test_agent_mode.py +0 -0
  406. {roam_code-12.32 → roam_code-12.33}/tests/test_agent_plan_context.py +0 -0
  407. {roam_code-12.32 → roam_code-12.33}/tests/test_ai_ratio.py +0 -0
  408. {roam_code-12.32 → roam_code-12.33}/tests/test_ai_readiness.py +0 -0
  409. {roam_code-12.32 → roam_code-12.33}/tests/test_alerts_cmd.py +0 -0
  410. {roam_code-12.32 → roam_code-12.33}/tests/test_annotations.py +0 -0
  411. {roam_code-12.32 → roam_code-12.33}/tests/test_anomaly.py +0 -0
  412. {roam_code-12.32 → roam_code-12.33}/tests/test_api_changes.py +0 -0
  413. {roam_code-12.32 → roam_code-12.33}/tests/test_api_drift.py +0 -0
  414. {roam_code-12.32 → roam_code-12.33}/tests/test_ask.py +0 -0
  415. {roam_code-12.32 → roam_code-12.33}/tests/test_attest.py +0 -0
  416. {roam_code-12.32 → roam_code-12.33}/tests/test_audit_trail_aggregate.py +0 -0
  417. {roam_code-12.32 → roam_code-12.33}/tests/test_audit_trail_conformance.py +0 -0
  418. {roam_code-12.32 → roam_code-12.33}/tests/test_audit_trail_sequence.py +0 -0
  419. {roam_code-12.32 → roam_code-12.33}/tests/test_audit_trail_verify.py +0 -0
  420. {roam_code-12.32 → roam_code-12.33}/tests/test_auth_gaps.py +0 -0
  421. {roam_code-12.32 → roam_code-12.33}/tests/test_backend_fixes_round2.py +0 -0
  422. {roam_code-12.32 → roam_code-12.33}/tests/test_backend_fixes_round3.py +0 -0
  423. {roam_code-12.32 → roam_code-12.33}/tests/test_basic.py +0 -0
  424. {roam_code-12.32 → roam_code-12.33}/tests/test_batch_mcp.py +0 -0
  425. {roam_code-12.32 → roam_code-12.33}/tests/test_bisect.py +0 -0
  426. {roam_code-12.32 → roam_code-12.33}/tests/test_bridge_django.py +0 -0
  427. {roam_code-12.32 → roam_code-12.33}/tests/test_bridges.py +0 -0
  428. {roam_code-12.32 → roam_code-12.33}/tests/test_bridges_extended.py +0 -0
  429. {roam_code-12.32 → roam_code-12.33}/tests/test_budget.py +0 -0
  430. {roam_code-12.32 → roam_code-12.33}/tests/test_budget_flag.py +0 -0
  431. {roam_code-12.32 → roam_code-12.33}/tests/test_budget_phase2.py +0 -0
  432. {roam_code-12.32 → roam_code-12.33}/tests/test_bus_factor.py +0 -0
  433. {roam_code-12.32 → roam_code-12.33}/tests/test_capsule.py +0 -0
  434. {roam_code-12.32 → roam_code-12.33}/tests/test_cga.py +0 -0
  435. {roam_code-12.32 → roam_code-12.33}/tests/test_check_rules.py +0 -0
  436. {roam_code-12.32 → roam_code-12.33}/tests/test_ci_gate_eval.py +0 -0
  437. {roam_code-12.32 → roam_code-12.33}/tests/test_ci_sarif_guard.py +0 -0
  438. {roam_code-12.32 → roam_code-12.33}/tests/test_ci_setup.py +0 -0
  439. {roam_code-12.32 → roam_code-12.33}/tests/test_clones.py +0 -0
  440. {roam_code-12.32 → roam_code-12.33}/tests/test_closure.py +0 -0
  441. {roam_code-12.32 → roam_code-12.33}/tests/test_codeowners.py +0 -0
  442. {roam_code-12.32 → roam_code-12.33}/tests/test_commands_architecture.py +0 -0
  443. {roam_code-12.32 → roam_code-12.33}/tests/test_commands_exploration.py +0 -0
  444. {roam_code-12.32 → roam_code-12.33}/tests/test_commands_health.py +0 -0
  445. {roam_code-12.32 → roam_code-12.33}/tests/test_commands_refactoring.py +0 -0
  446. {roam_code-12.32 → roam_code-12.33}/tests/test_commands_workflow.py +0 -0
  447. {roam_code-12.32 → roam_code-12.33}/tests/test_competitor_site_data.py +0 -0
  448. {roam_code-12.32 → roam_code-12.33}/tests/test_comprehensive.py +0 -0
  449. {roam_code-12.32 → roam_code-12.33}/tests/test_config.py +0 -0
  450. {roam_code-12.32 → roam_code-12.33}/tests/test_congestion.py +0 -0
  451. {roam_code-12.32 → roam_code-12.33}/tests/test_context_propagation.py +0 -0
  452. {roam_code-12.32 → roam_code-12.33}/tests/test_conventions_cmd.py +0 -0
  453. {roam_code-12.32 → roam_code-12.33}/tests/test_coverage_gaps_cmd.py +0 -0
  454. {roam_code-12.32 → roam_code-12.33}/tests/test_coverage_ingestion.py +0 -0
  455. {roam_code-12.32 → roam_code-12.33}/tests/test_critique.py +0 -0
  456. {roam_code-12.32 → roam_code-12.33}/tests/test_cut.py +0 -0
  457. {roam_code-12.32 → roam_code-12.33}/tests/test_dark_matter.py +0 -0
  458. {roam_code-12.32 → roam_code-12.33}/tests/test_dark_matter_helpers.py +0 -0
  459. {roam_code-12.32 → roam_code-12.33}/tests/test_dashboard.py +0 -0
  460. {roam_code-12.32 → roam_code-12.33}/tests/test_dataflow_dead.py +0 -0
  461. {roam_code-12.32 → roam_code-12.33}/tests/test_dead_aging.py +0 -0
  462. {roam_code-12.32 → roam_code-12.33}/tests/test_defer_loading.py +0 -0
  463. {roam_code-12.32 → roam_code-12.33}/tests/test_demo_gif_asset.py +0 -0
  464. {roam_code-12.32 → roam_code-12.33}/tests/test_describe.py +0 -0
  465. {roam_code-12.32 → roam_code-12.33}/tests/test_detail_flag_hints.py +0 -0
  466. {roam_code-12.32 → roam_code-12.33}/tests/test_detector_precision.py +0 -0
  467. {roam_code-12.32 → roam_code-12.33}/tests/test_deterministic_output.py +0 -0
  468. {roam_code-12.32 → roam_code-12.33}/tests/test_dev_profile.py +0 -0
  469. {roam_code-12.32 → roam_code-12.33}/tests/test_difficulty_scoring.py +0 -0
  470. {roam_code-12.32 → roam_code-12.33}/tests/test_doc_consistency.py +0 -0
  471. {roam_code-12.32 → roam_code-12.33}/tests/test_doc_staleness.py +0 -0
  472. {roam_code-12.32 → roam_code-12.33}/tests/test_docker_assets.py +0 -0
  473. {roam_code-12.32 → roam_code-12.33}/tests/test_docs_coverage.py +0 -0
  474. {roam_code-12.32 → roam_code-12.33}/tests/test_docs_site_quality.py +0 -0
  475. {roam_code-12.32 → roam_code-12.33}/tests/test_doctor.py +0 -0
  476. {roam_code-12.32 → roam_code-12.33}/tests/test_dogfood.py +0 -0
  477. {roam_code-12.32 → roam_code-12.33}/tests/test_drift.py +0 -0
  478. {roam_code-12.32 → roam_code-12.33}/tests/test_drift_by_team.py +0 -0
  479. {roam_code-12.32 → roam_code-12.33}/tests/test_duplicates.py +0 -0
  480. {roam_code-12.32 → roam_code-12.33}/tests/test_effects.py +0 -0
  481. {roam_code-12.32 → roam_code-12.33}/tests/test_effects_propagation.py +0 -0
  482. {roam_code-12.32 → roam_code-12.33}/tests/test_endpoints.py +0 -0
  483. {roam_code-12.32 → roam_code-12.33}/tests/test_entry_points_cmd.py +0 -0
  484. {roam_code-12.32 → roam_code-12.33}/tests/test_eval_retrieve.py +0 -0
  485. {roam_code-12.32 → roam_code-12.33}/tests/test_except_pass_narrow.py +0 -0
  486. {roam_code-12.32 → roam_code-12.33}/tests/test_exclude_patterns.py +0 -0
  487. {roam_code-12.32 → roam_code-12.33}/tests/test_exit_codes.py +0 -0
  488. {roam_code-12.32 → roam_code-12.33}/tests/test_extractor_grammar_drift.py +0 -0
  489. {roam_code-12.32 → roam_code-12.33}/tests/test_fallback_contracts.py +0 -0
  490. {roam_code-12.32 → roam_code-12.33}/tests/test_file_roles.py +0 -0
  491. {roam_code-12.32 → roam_code-12.33}/tests/test_finding_suppress.py +0 -0
  492. {roam_code-12.32 → roam_code-12.33}/tests/test_fingerprint.py +0 -0
  493. {roam_code-12.32 → roam_code-12.33}/tests/test_fixes.py +0 -0
  494. {roam_code-12.32 → roam_code-12.33}/tests/test_flag_dead.py +0 -0
  495. {roam_code-12.32 → roam_code-12.33}/tests/test_fleet.py +0 -0
  496. {roam_code-12.32 → roam_code-12.33}/tests/test_fn_coupling.py +0 -0
  497. {roam_code-12.32 → roam_code-12.33}/tests/test_forecast.py +0 -0
  498. {roam_code-12.32 → roam_code-12.33}/tests/test_formatters.py +0 -0
  499. {roam_code-12.32 → roam_code-12.33}/tests/test_foxpro.py +0 -0
  500. {roam_code-12.32 → roam_code-12.33}/tests/test_framework_detection.py +0 -0
  501. {roam_code-12.32 → roam_code-12.33}/tests/test_gate_presets.py +0 -0
  502. {roam_code-12.32 → roam_code-12.33}/tests/test_git_helpers.py +0 -0
  503. {roam_code-12.32 → roam_code-12.33}/tests/test_git_utils.py +0 -0
  504. {roam_code-12.32 → roam_code-12.33}/tests/test_guard.py +0 -0
  505. {roam_code-12.32 → roam_code-12.33}/tests/test_health_gate.py +0 -0
  506. {roam_code-12.32 → roam_code-12.33}/tests/test_hooks.py +0 -0
  507. {roam_code-12.32 → roam_code-12.33}/tests/test_hotspots.py +0 -0
  508. {roam_code-12.32 → roam_code-12.33}/tests/test_hover.py +0 -0
  509. {roam_code-12.32 → roam_code-12.33}/tests/test_index.py +0 -0
  510. {roam_code-12.32 → roam_code-12.33}/tests/test_index_bundle.py +0 -0
  511. {roam_code-12.32 → roam_code-12.33}/tests/test_init_cmd.py +0 -0
  512. {roam_code-12.32 → roam_code-12.33}/tests/test_install_check.py +0 -0
  513. {roam_code-12.32 → roam_code-12.33}/tests/test_intent.py +0 -0
  514. {roam_code-12.32 → roam_code-12.33}/tests/test_invariants.py +0 -0
  515. {roam_code-12.32 → roam_code-12.33}/tests/test_json_contracts.py +0 -0
  516. {roam_code-12.32 → roam_code-12.33}/tests/test_json_error_envelope.py +0 -0
  517. {roam_code-12.32 → roam_code-12.33}/tests/test_kotlin_swift_extractors.py +0 -0
  518. {roam_code-12.32 → roam_code-12.33}/tests/test_language_corpus.py +0 -0
  519. {roam_code-12.32 → roam_code-12.33}/tests/test_languages.py +0 -0
  520. {roam_code-12.32 → roam_code-12.33}/tests/test_laravel_fp_fixes.py +0 -0
  521. {roam_code-12.32 → roam_code-12.33}/tests/test_library_api.py +0 -0
  522. {roam_code-12.32 → roam_code-12.33}/tests/test_math.py +0 -0
  523. {roam_code-12.32 → roam_code-12.33}/tests/test_math_fp_fixes.py +0 -0
  524. {roam_code-12.32 → roam_code-12.33}/tests/test_math_tips.py +0 -0
  525. {roam_code-12.32 → roam_code-12.33}/tests/test_mcp_extras.py +0 -0
  526. {roam_code-12.32 → roam_code-12.33}/tests/test_mcp_setup.py +0 -0
  527. {roam_code-12.32 → roam_code-12.33}/tests/test_mermaid.py +0 -0
  528. {roam_code-12.32 → roam_code-12.33}/tests/test_metrics_cmd.py +0 -0
  529. {roam_code-12.32 → roam_code-12.33}/tests/test_metrics_push.py +0 -0
  530. {roam_code-12.32 → roam_code-12.33}/tests/test_migration_safety.py +0 -0
  531. {roam_code-12.32 → roam_code-12.33}/tests/test_minimap.py +0 -0
  532. {roam_code-12.32 → roam_code-12.33}/tests/test_missing_index.py +0 -0
  533. {roam_code-12.32 → roam_code-12.33}/tests/test_mutate.py +0 -0
  534. {roam_code-12.32 → roam_code-12.33}/tests/test_n1.py +0 -0
  535. {roam_code-12.32 → roam_code-12.33}/tests/test_next_steps.py +0 -0
  536. {roam_code-12.32 → roam_code-12.33}/tests/test_onboard.py +0 -0
  537. {roam_code-12.32 → roam_code-12.33}/tests/test_oracle.py +0 -0
  538. {roam_code-12.32 → roam_code-12.33}/tests/test_orchestrate.py +0 -0
  539. {roam_code-12.32 → roam_code-12.33}/tests/test_orphan_routes.py +0 -0
  540. {roam_code-12.32 → roam_code-12.33}/tests/test_oss_bench_harness.py +0 -0
  541. {roam_code-12.32 → roam_code-12.33}/tests/test_over_fetch.py +0 -0
  542. {roam_code-12.32 → roam_code-12.33}/tests/test_pagerank_truncation.py +0 -0
  543. {roam_code-12.32 → roam_code-12.33}/tests/test_partition.py +0 -0
  544. {roam_code-12.32 → roam_code-12.33}/tests/test_path_coverage.py +0 -0
  545. {roam_code-12.32 → roam_code-12.33}/tests/test_patterns_cmd.py +0 -0
  546. {roam_code-12.32 → roam_code-12.33}/tests/test_performance.py +0 -0
  547. {roam_code-12.32 → roam_code-12.33}/tests/test_personalized_pagerank.py +0 -0
  548. {roam_code-12.32 → roam_code-12.33}/tests/test_plan.py +0 -0
  549. {roam_code-12.32 → roam_code-12.33}/tests/test_plugin_discovery.py +0 -0
  550. {roam_code-12.32 → roam_code-12.33}/tests/test_pr_analyze.py +0 -0
  551. {roam_code-12.32 → roam_code-12.33}/tests/test_pr_analyze_cache.py +0 -0
  552. {roam_code-12.32 → roam_code-12.33}/tests/test_pr_analyze_edge_cases.py +0 -0
  553. {roam_code-12.32 → roam_code-12.33}/tests/test_pr_analyze_helpers.py +0 -0
  554. {roam_code-12.32 → roam_code-12.33}/tests/test_pr_analyze_v2_signals.py +0 -0
  555. {roam_code-12.32 → roam_code-12.33}/tests/test_pr_comment_render.py +0 -0
  556. {roam_code-12.32 → roam_code-12.33}/tests/test_pr_comment_script.py +0 -0
  557. {roam_code-12.32 → roam_code-12.33}/tests/test_pr_diff.py +0 -0
  558. {roam_code-12.32 → roam_code-12.33}/tests/test_pr_risk_author.py +0 -0
  559. {roam_code-12.32 → roam_code-12.33}/tests/test_progress.py +0 -0
  560. {roam_code-12.32 → roam_code-12.33}/tests/test_progressive_disclosure.py +0 -0
  561. {roam_code-12.32 → roam_code-12.33}/tests/test_properties.py +0 -0
  562. {roam_code-12.32 → roam_code-12.33}/tests/test_pytest_fixtures.py +0 -0
  563. {roam_code-12.32 → roam_code-12.33}/tests/test_python_extractor_v2.py +0 -0
  564. {roam_code-12.32 → roam_code-12.33}/tests/test_python_idioms_e2e.py +0 -0
  565. {roam_code-12.32 → roam_code-12.33}/tests/test_python_pivot.py +0 -0
  566. {roam_code-12.32 → roam_code-12.33}/tests/test_readme_surface_consistency.py +0 -0
  567. {roam_code-12.32 → roam_code-12.33}/tests/test_realworld_feedback.py +0 -0
  568. {roam_code-12.32 → roam_code-12.33}/tests/test_refactoring_intelligence.py +0 -0
  569. {roam_code-12.32 → roam_code-12.33}/tests/test_registry_dispatch.py +0 -0
  570. {roam_code-12.32 → roam_code-12.33}/tests/test_regression_fp_corpus.py +0 -0
  571. {roam_code-12.32 → roam_code-12.33}/tests/test_relate.py +0 -0
  572. {roam_code-12.32 → roam_code-12.33}/tests/test_report.py +0 -0
  573. {roam_code-12.32 → roam_code-12.33}/tests/test_reset_clean.py +0 -0
  574. {roam_code-12.32 → roam_code-12.33}/tests/test_resolve.py +0 -0
  575. {roam_code-12.32 → roam_code-12.33}/tests/test_retrieve.py +0 -0
  576. {roam_code-12.32 → roam_code-12.33}/tests/test_retrieve_cross_repo.py +0 -0
  577. {roam_code-12.32 → roam_code-12.33}/tests/test_retrieve_seeds.py +0 -0
  578. {roam_code-12.32 → roam_code-12.33}/tests/test_risk.py +0 -0
  579. {roam_code-12.32 → roam_code-12.33}/tests/test_ruby.py +0 -0
  580. {roam_code-12.32 → roam_code-12.33}/tests/test_rule_profiles.py +0 -0
  581. {roam_code-12.32 → roam_code-12.33}/tests/test_rules.py +0 -0
  582. {roam_code-12.32 → roam_code-12.33}/tests/test_rules_ast_match.py +0 -0
  583. {roam_code-12.32 → roam_code-12.33}/tests/test_rules_community_pack.py +0 -0
  584. {roam_code-12.32 → roam_code-12.33}/tests/test_rules_dataflow.py +0 -0
  585. {roam_code-12.32 → roam_code-12.33}/tests/test_rules_symbol_requirements.py +0 -0
  586. {roam_code-12.32 → roam_code-12.33}/tests/test_rules_validate.py +0 -0
  587. {roam_code-12.32 → roam_code-12.33}/tests/test_runtime.py +0 -0
  588. {roam_code-12.32 → roam_code-12.33}/tests/test_runtime_score.py +0 -0
  589. {roam_code-12.32 → roam_code-12.33}/tests/test_salesforce.py +0 -0
  590. {roam_code-12.32 → roam_code-12.33}/tests/test_sarif_flag.py +0 -0
  591. {roam_code-12.32 → roam_code-12.33}/tests/test_sbom.py +0 -0
  592. {roam_code-12.32 → roam_code-12.33}/tests/test_scala.py +0 -0
  593. {roam_code-12.32 → roam_code-12.33}/tests/test_schema_versioning.py +0 -0
  594. {roam_code-12.32 → roam_code-12.33}/tests/test_search_explain.py +0 -0
  595. {roam_code-12.32 → roam_code-12.33}/tests/test_secrets.py +0 -0
  596. {roam_code-12.32 → roam_code-12.33}/tests/test_secrets_v2.py +0 -0
  597. {roam_code-12.32 → roam_code-12.33}/tests/test_semantic_diff.py +0 -0
  598. {roam_code-12.32 → roam_code-12.33}/tests/test_semantic_onnx.py +0 -0
  599. {roam_code-12.32 → roam_code-12.33}/tests/test_semantic_search.py +0 -0
  600. {roam_code-12.32 → roam_code-12.33}/tests/test_simulate.py +0 -0
  601. {roam_code-12.32 → roam_code-12.33}/tests/test_simulate_departure.py +0 -0
  602. {roam_code-12.32 → roam_code-12.33}/tests/test_sketch.py +0 -0
  603. {roam_code-12.32 → roam_code-12.33}/tests/test_smells.py +0 -0
  604. {roam_code-12.32 → roam_code-12.33}/tests/test_smoke.py +0 -0
  605. {roam_code-12.32 → roam_code-12.33}/tests/test_sna_metrics.py +0 -0
  606. {roam_code-12.32 → roam_code-12.33}/tests/test_spectral.py +0 -0
  607. {roam_code-12.32 → roam_code-12.33}/tests/test_split_cmd.py +0 -0
  608. {roam_code-12.32 → roam_code-12.33}/tests/test_sql.py +0 -0
  609. {roam_code-12.32 → roam_code-12.33}/tests/test_suggest_reviewers.py +0 -0
  610. {roam_code-12.32 → roam_code-12.33}/tests/test_supply_chain.py +0 -0
  611. {roam_code-12.32 → roam_code-12.33}/tests/test_surface_counts.py +0 -0
  612. {roam_code-12.32 → roam_code-12.33}/tests/test_syntax_check.py +0 -0
  613. {roam_code-12.32 → roam_code-12.33}/tests/test_taint.py +0 -0
  614. {roam_code-12.32 → roam_code-12.33}/tests/test_taint_analysis.py +0 -0
  615. {roam_code-12.32 → roam_code-12.33}/tests/test_taint_classifier.py +0 -0
  616. {roam_code-12.32 → roam_code-12.33}/tests/test_taint_intraprocedural.py +0 -0
  617. {roam_code-12.32 → roam_code-12.33}/tests/test_test_conventions.py +0 -0
  618. {roam_code-12.32 → roam_code-12.33}/tests/test_test_gaps.py +0 -0
  619. {roam_code-12.32 → roam_code-12.33}/tests/test_test_scaffold.py +0 -0
  620. {roam_code-12.32 → roam_code-12.33}/tests/test_testmap.py +0 -0
  621. {roam_code-12.32 → roam_code-12.33}/tests/test_top_flag_consistency.py +0 -0
  622. {roam_code-12.32 → roam_code-12.33}/tests/test_tour_cmd.py +0 -0
  623. {roam_code-12.32 → roam_code-12.33}/tests/test_trends.py +0 -0
  624. {roam_code-12.32 → roam_code-12.33}/tests/test_trends_cohort.py +0 -0
  625. {roam_code-12.32 → roam_code-12.33}/tests/test_triage.py +0 -0
  626. {roam_code-12.32 → roam_code-12.33}/tests/test_uses_cmd.py +0 -0
  627. {roam_code-12.32 → roam_code-12.33}/tests/test_v1215_passes.py +0 -0
  628. {roam_code-12.32 → roam_code-12.33}/tests/test_v1216_passes.py +0 -0
  629. {roam_code-12.32 → roam_code-12.33}/tests/test_v1216_passes_41_50.py +0 -0
  630. {roam_code-12.32 → roam_code-12.33}/tests/test_v1216_passes_51_60.py +0 -0
  631. {roam_code-12.32 → roam_code-12.33}/tests/test_v1217_passes_61_80.py +0 -0
  632. {roam_code-12.32 → roam_code-12.33}/tests/test_v1218_passes_81_90.py +0 -0
  633. {roam_code-12.32 → roam_code-12.33}/tests/test_v1219_passes_91_100.py +0 -0
  634. {roam_code-12.32 → roam_code-12.33}/tests/test_v1220_passes_101_110.py +0 -0
  635. {roam_code-12.32 → roam_code-12.33}/tests/test_v1221_query_timeout.py +0 -0
  636. {roam_code-12.32 → roam_code-12.33}/tests/test_v1221_untested_commands.py +0 -0
  637. {roam_code-12.32 → roam_code-12.33}/tests/test_v12_2.py +0 -0
  638. {roam_code-12.32 → roam_code-12.33}/tests/test_v2_edge_cases.py +0 -0
  639. {roam_code-12.32 → roam_code-12.33}/tests/test_v2_integration.py +0 -0
  640. {roam_code-12.32 → roam_code-12.33}/tests/test_v6_features.py +0 -0
  641. {roam_code-12.32 → roam_code-12.33}/tests/test_v71_features.py +0 -0
  642. {roam_code-12.32 → roam_code-12.33}/tests/test_v7_features.py +0 -0
  643. {roam_code-12.32 → roam_code-12.33}/tests/test_v82_features.py +0 -0
  644. {roam_code-12.32 → roam_code-12.33}/tests/test_verify.py +0 -0
  645. {roam_code-12.32 → roam_code-12.33}/tests/test_verify_imports.py +0 -0
  646. {roam_code-12.32 → roam_code-12.33}/tests/test_vibe_check.py +0 -0
  647. {roam_code-12.32 → roam_code-12.33}/tests/test_visualize.py +0 -0
  648. {roam_code-12.32 → roam_code-12.33}/tests/test_vuln.py +0 -0
  649. {roam_code-12.32 → roam_code-12.33}/tests/test_vulns_cmd.py +0 -0
  650. {roam_code-12.32 → roam_code-12.33}/tests/test_watch.py +0 -0
  651. {roam_code-12.32 → roam_code-12.33}/tests/test_why.py +0 -0
  652. {roam_code-12.32 → roam_code-12.33}/tests/test_workspace.py +0 -0
  653. {roam_code-12.32 → roam_code-12.33}/tests/test_ws_resolve_fixes.py +0 -0
  654. {roam_code-12.32 → roam_code-12.33}/tests/test_xlang.py +0 -0
  655. {roam_code-12.32 → roam_code-12.33}/tests/test_yaml_hcl.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: roam-code
3
- Version: 12.32
3
+ Version: 12.33
4
4
  Summary: Instant codebase comprehension for AI coding agents
5
5
  Author: CosmoHac
6
6
  License-Expression: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "roam-code"
7
- version = "12.32"
7
+ version = "12.33"
8
8
  description = "Instant codebase comprehension for AI coding agents"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -353,7 +353,6 @@ _DOMAIN_STOP_WORDS = frozenset(
353
353
  "context",
354
354
  "hook",
355
355
  # DOM events / UI interactions
356
- "click",
357
356
  "focus",
358
357
  "blur",
359
358
  "hover",
@@ -39,13 +39,11 @@ from roam.output.formatter import json_envelope, loc, to_json
39
39
 
40
40
  # Patterns that identify ORM model classes by parent class or trait
41
41
  _MODEL_PARENTS = {
42
- # Laravel / Eloquent
42
+ # Laravel / Eloquent / Django (both use bare "Model" — single membership)
43
43
  "Model",
44
44
  "Eloquent",
45
45
  "Authenticatable",
46
- # Django
47
46
  "models.Model",
48
- "Model",
49
47
  # Rails / ActiveRecord
50
48
  "ApplicationRecord",
51
49
  "ActiveRecord::Base",
@@ -129,7 +127,6 @@ _RELATIONSHIP_CALLS = {
129
127
  "load",
130
128
  "fetch",
131
129
  "findOrFail",
132
- "find",
133
130
  }
134
131
 
135
132
  # I/O operations that indicate a DB query or network call
@@ -154,7 +151,6 @@ _IO_INDICATORS = {
154
151
  # HTTP
155
152
  "fetch",
156
153
  "request",
157
- "get",
158
154
  "post",
159
155
  "put",
160
156
  # File
@@ -468,17 +468,20 @@ def _analyse_orphan_routes(project_root: Path, conn, limit: int) -> dict:
468
468
  # Deduplicate
469
469
  all_matching = list(set(all_matching))
470
470
 
471
- # Remove the route files themselves and the controller file from matches
471
+ # Remove the route files themselves and the controller file from matches.
472
+ # `_ctrl` and `_route_files` are bound as defaults so the closure
473
+ # captures THIS iteration's values (per-loop B023 fix).
472
474
  controller_name = route.get("controller") or ""
473
475
 
474
- def _is_self_reference(file_path: str) -> bool:
476
+ def _is_self_reference(
477
+ file_path: str,
478
+ _ctrl: str = controller_name,
479
+ _route_files: set = route_file_prefixes,
480
+ ) -> bool:
475
481
  norm = file_path.replace("\\", "/")
476
- # Exclude the route definition files
477
- if norm in route_file_prefixes:
482
+ if norm in _route_files:
478
483
  return True
479
- # Exclude the controller file itself
480
- if controller_name and controller_name.lower() in norm.lower():
481
- # Check it actually looks like a controller path
484
+ if _ctrl and _ctrl.lower() in norm.lower():
482
485
  if "controller" in norm.lower() or "http" in norm.lower():
483
486
  return True
484
487
  return False
@@ -414,12 +414,14 @@ def find_symbol_with_alternatives(conn: sqlite3.Connection, name: str) -> tuple[
414
414
 
415
415
  signals = _ambiguity_signals(conn, rows)
416
416
 
417
- def _score(r):
417
+ # Bind `signals` as default so the closure captures THIS iteration's
418
+ # value (avoids the late-binding-loop closure pitfall flagged by B023).
419
+ def _score(r, _sig=signals):
418
420
  return (
419
- signals["ref"].get(r["id"], 0),
420
- signals["pr"].get(r["id"], 0),
421
- signals["cc"].get(r["id"], 0),
422
- signals["churn"].get(r["file_id"], 0) if "file_id" in r.keys() else 0,
421
+ _sig["ref"].get(r["id"], 0),
422
+ _sig["pr"].get(r["id"], 0),
423
+ _sig["cc"].get(r["id"], 0),
424
+ _sig["churn"].get(r["file_id"], 0) if "file_id" in r.keys() else 0,
423
425
  _path_rank(r["file_path"]),
424
426
  -r["id"],
425
427
  )
@@ -1362,8 +1362,8 @@ MAP_METADATA: dict[str, dict[str, object]] = {
1362
1362
  "relationship": "self",
1363
1363
  "peer": True,
1364
1364
  "graph": "PageRank + Tarjan + Louvain + layers",
1365
- "note": "Graph algorithms (PageRank, SCC, Louvain, Fiedler) on tree-sitter ASTs fused with git history in SQLite. 136 MCP tools, 187 CLI commands. 19 Python idiom detectors (v12.7+). 54 algo detectors (12.32).",
1366
- "version_evaluated": "12.32",
1365
+ "note": "Graph algorithms (PageRank, SCC, Louvain, Fiedler) on tree-sitter ASTs fused with git history in SQLite. 136 MCP tools, 187 CLI commands. 19 Python idiom detectors (v12.7+). 54 algo detectors (12.33).",
1366
+ "version_evaluated": "12.33",
1367
1367
  "repo_url": "https://github.com/Cranot/roam-code",
1368
1368
  },
1369
1369
  "CKB/CodeMCP": {
@@ -158,29 +158,19 @@ def _jaccard_bags(a: Counter, b: Counter) -> float:
158
158
 
159
159
  _FUNCTION_NODE_TYPES = frozenset(
160
160
  {
161
- # Python
161
+ # Python / C / C++ all share `function_definition`
162
162
  "function_definition",
163
- # JS/TS
163
+ # JS/TS / Swift share `function_declaration`
164
164
  "function_declaration",
165
165
  "method_definition",
166
166
  "arrow_function",
167
- # Java/C#/Kotlin/Scala
167
+ # Java/C#/Kotlin/Scala / Go / PHP all share `method_declaration`
168
168
  "method_declaration",
169
169
  "constructor_declaration",
170
- # Go
171
- "function_declaration",
172
- "method_declaration",
173
170
  # Rust
174
171
  "function_item",
175
- # C/C++
176
- "function_definition",
177
172
  # Ruby
178
173
  "method",
179
- # PHP
180
- "function_definition",
181
- "method_declaration",
182
- # Swift
183
- "function_declaration",
184
174
  }
185
175
  )
186
176
 
@@ -28,20 +28,13 @@ _CONTROL_FLOW = {
28
28
  "with_statement",
29
29
  "match_statement",
30
30
  # JS/TS
31
- "if_statement",
32
- "for_statement",
33
31
  "for_in_statement",
34
- "while_statement",
35
32
  "do_statement",
36
33
  "switch_statement",
37
- "try_statement",
38
34
  "catch_clause",
39
35
  # Java/C#/Go/Rust
40
- "for_statement",
41
36
  "enhanced_for_statement",
42
37
  "foreach_statement",
43
- "while_statement",
44
- "do_statement",
45
38
  "if_expression",
46
39
  "match_expression",
47
40
  # General
@@ -329,8 +329,6 @@ _VFP_BUILTINS = frozenset(
329
329
  "TRIM",
330
330
  "UPPER",
331
331
  # ── Date / Time ──
332
- "CDOW",
333
- "CMONTH",
334
332
  "CTOD",
335
333
  "CTOT",
336
334
  "DATE",
@@ -359,16 +359,18 @@ class HclExtractor(LanguageExtractor):
359
359
  if mb:
360
360
  current_block = mb.group(2)
361
361
 
362
- def _add(target: str):
363
- key = (target, str(ln))
362
+ # B023: bind ln + current_block as defaults so the closure
363
+ # captures THIS iteration's values (loop-variable late-binding fix).
364
+ def _add(target: str, _ln: int = ln, _cur: str | None = current_block):
365
+ key = (target, str(_ln))
364
366
  if key not in seen:
365
367
  seen.add(key)
366
368
  refs.append(
367
369
  self._make_reference(
368
370
  target_name=target,
369
371
  kind="call",
370
- line=ln,
371
- source_name=current_block,
372
+ line=_ln,
373
+ source_name=_cur,
372
374
  )
373
375
  )
374
376
 
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://schemas.modelcontextprotocol.io/server-card/v1",
3
3
  "name": "roam-code",
4
4
  "display_name": "roam — instant codebase intelligence",
5
- "version": "12.32",
5
+ "version": "12.33",
6
6
  "description": "Architectural sight for AI agents before they edit. Pre-indexes symbols, call graphs, dependencies, architecture layers, and git history into a local SQLite DB. 136 MCP tools, 10 resources, 5 prompts, 27 languages. 100% local, zero API keys.",
7
7
  "vendor": {
8
8
  "name": "Cranot",
@@ -306,8 +306,6 @@ _NL_EXTRA_STOPWORDS = frozenset(
306
306
  "often",
307
307
  "actually",
308
308
  "though",
309
- "until",
310
- "while",
311
309
  }
312
310
  )
313
311
 
@@ -71,7 +71,6 @@ _STOPWORDS = frozenset(
71
71
  "self",
72
72
  "return",
73
73
  "import",
74
- "from",
75
74
  "def",
76
75
  "class",
77
76
  "function",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: roam-code
3
- Version: 12.32
3
+ Version: 12.33
4
4
  Summary: Instant codebase comprehension for AI coding agents
5
5
  Author: CosmoHac
6
6
  License-Expression: Apache-2.0
@@ -450,9 +450,10 @@ class TestExpandToolset:
450
450
  from roam.mcp_server import expand_toolset
451
451
 
452
452
  result = expand_toolset(preset="core")
453
- # v12.0=27, v12.1=33 (+5 oracles +taint_classify), v12.6=35 (+py-pivot 2),
454
- # v12.16=36 (+roam_catalog).
455
- assert result["tool_count"] == 41
453
+ # v12.0=27, v12.1=33 (+5 oracles +taint_classify), v12.6=35
454
+ # (+py-pivot 2), v12.16=36 (+roam_catalog), v12.19=41
455
+ # (+5 agent wrappers), v12.28=49 (+8 Agent Review v2 tools).
456
+ assert result["tool_count"] == 49
456
457
 
457
458
  def test_invalid_preset(self):
458
459
  from roam.mcp_server import expand_toolset
File without changes
File without changes
File without changes
File without changes
File without changes